]> git.sesse.net Git - ffmpeg/blobdiff - configure
fate: exit with error immediately if test command fails
[ffmpeg] / configure
index 0b4968148b089eca0d72383dc2e90827ac9dad84..091f9078ed3a2fe96f466973e8f2a4e76bca6911 100755 (executable)
--- a/configure
+++ b/configure
@@ -510,6 +510,15 @@ print_config(){
     done
 }
 
+print_enabled(){
+    test "$1" = -n && end=" " && shift || end="\n"
+    suf=$1
+    shift
+    for v; do
+        enabled $v && printf "%s$end" ${v%$suf};
+    done
+}
+
 append(){
     var=$1
     shift
@@ -1387,6 +1396,96 @@ ffserver_extralibs='$ldl'
 
 doc_deps="texi2html"
 
+# tests
+
+test_deps(){
+    suf1=$1
+    suf2=$2
+    shift 2
+    for v; do
+        dep=${v%=*}
+        tests=${v#*=}
+        for name in ${tests}; do
+            eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'"
+        done
+    done
+}
+
+test_deps _encoder _decoder                                             \
+    ac3                                                                 \
+    adpcm_g726=g726                                                     \
+    adpcm_ima_qt                                                        \
+    adpcm_ima_wav                                                       \
+    adpcm_ms                                                            \
+    adpcm_swf                                                           \
+    adpcm_yamaha=adpcm_yam                                              \
+    alac                                                                \
+    asv1                                                                \
+    asv2                                                                \
+    bmp                                                                 \
+    dnxhd="hdxhd_1080i dnxhd_720p dnxhd_720p_rd"                        \
+    dvvideo="dv dv50"                                                   \
+    ffv1                                                                \
+    flac                                                                \
+    flashsv                                                             \
+    flv                                                                 \
+    gif                                                                 \
+    h261                                                                \
+    h263="h263 h263p"                                                   \
+    huffyuv                                                             \
+    jpegls                                                              \
+    mjpeg="jpg mjpeg ljpeg"                                             \
+    mp2                                                                 \
+    mpeg1video="mpeg mpeg1b"                                            \
+    mpeg2video="mpeg2 mpeg2thread"                                      \
+    mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc"                 \
+    msmpeg4v1=msmpeg4                                                   \
+    msmpeg4v2                                                           \
+    pbm=pbmpipe                                                         \
+    pcx                                                                 \
+    pgm="pgm pgmpipe"                                                   \
+    ppm="ppm ppmpipe"                                                   \
+    rawvideo="rgb yuv"                                                  \
+    roq                                                                 \
+    rv10                                                                \
+    rv20                                                                \
+    sgi                                                                 \
+    snow="snow snowll"                                                  \
+    svq1                                                                \
+    targa=tga                                                           \
+    tiff                                                                \
+    wmav1                                                               \
+    wmav2                                                               \
+    wmv1                                                                \
+    wmv2                                                                \
+
+test_deps _muxer _demuxer                                               \
+    aiff                                                                \
+    pcm_alaw=alaw                                                       \
+    asf                                                                 \
+    au                                                                  \
+    avi                                                                 \
+    dv=dv_fmt                                                           \
+    ffm                                                                 \
+    flv=flv_fmt                                                         \
+    gxf                                                                 \
+    matroska=mkv                                                        \
+    mmf                                                                 \
+    mov                                                                 \
+    pcm_mulaw=mulaw                                                     \
+    mxf                                                                 \
+    nut                                                                 \
+    ogg                                                                 \
+    rawvideo=pixfmt                                                     \
+    rm                                                                  \
+    swf                                                                 \
+    mpegts=ts                                                           \
+    voc                                                                 \
+    wav                                                                 \
+    yuv4mpegpipe=yuv4mpeg                                               \
+
+mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
+
 # default parameters
 
 logfile="config.log"
@@ -1512,13 +1611,23 @@ INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
 FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
 
+find_tests(){
+    map 'echo ${v}_test' $(ls "$source_path"/tests/ref/$1)
+}
+
+ACODEC_TESTS=$(find_tests acodec)
+VCODEC_TESTS=$(find_tests vsynth1)
+LAVF_TESTS=$(find_tests lavf)
+
+pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
+
 for n in $COMPONENT_LIST; do
     v=$(toupper ${n%s})_LIST
     eval enable \$$v
     eval ${n}_if_any="\$$v"
 done
 
-enable $ARCH_EXT_LIST
+enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS
 
 die_unknown(){
     echo "Unknown option \"$1\"."
@@ -2744,6 +2853,9 @@ check_deps $CONFIG_LIST       \
            $INDEV_LIST        \
            $OUTDEV_LIST       \
            $PROTOCOL_LIST     \
+           $ACODEC_TESTS      \
+           $VCODEC_TESTS      \
+           $LAVF_TESTS        \
 
 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
 
@@ -2829,9 +2941,7 @@ echo
 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
     echo "Enabled ${type}s:"
     eval list=\$$(toupper $type)_LIST
-    for part in $list; do
-        enabled $part && echo ${part%_*}
-    done | sort | pr -3 -t
+    print_enabled '_*' $list | sort | pr -3 -t
     echo
 done
 
@@ -3016,6 +3126,12 @@ print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
                                       $INDEV_LIST        \
                                       $OUTDEV_LIST       \
 
+cat >>config.mak <<EOF
+ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
+VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
+LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
+EOF
+
 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak