~ubuntu-branches/ubuntu/jaunty/xvidcap/jaunty-proposed

« back to all changes in this revision

Viewing changes to ffmpeg/configure

  • Committer: Bazaar Package Importer
  • Author(s): Lionel Le Folgoc, Andrew Starr-Bochicchio, Lionel Le Folgoc
  • Date: 2008-12-26 00:10:06 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20081226001006-2040ls9680bd1blt
Tags: 1.1.7-0.2ubuntu1
[ Andrew Starr-Bochicchio ]
* Merge from debian-multimedia (LP: #298547), Ubuntu Changes:
 - For ffmpeg-related build-deps, fix versionized dependencies
   as the ubuntu versioning is different than debian-multimedia's.

[ Lionel Le Folgoc ]
* LP: #311412 is fixed since the 1.1.7~rc1-0.1 revision.
* debian/patches/03_ffmpeg.diff: updated to fix FTBFS due to libswscale API
  change (cherry-pick from Gentoo #234383).

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
  echo
57
57
  echo "Standard options:"
58
58
  echo "  --help                   print this message"
59
 
  echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
60
 
  echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
 
59
  echo "  --logfile=FILE           log tests and output to FILE [config.err]"
 
60
  echo "  --disable-logging        do not log configure debug information"
 
61
  echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
61
62
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
62
63
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
63
 
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
64
 
  echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
65
 
  echo "  --enable-mingwce         enable MinGW native/cross WinCE compile"
 
64
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include]"
 
65
  echo "  --mandir=DIR             install man page in DIR [PREFIX/share/man]"
66
66
  echo "  --enable-static          build static libraries [default=yes]"
67
67
  echo "  --disable-static         do not build static libraries [default=no]"
68
68
  echo "  --enable-shared          build shared libraries [default=no]"
69
69
  echo "  --disable-shared         do not build shared libraries [default=yes]"
70
70
  echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
71
71
  echo "                           and ffmpeg will be under GPL [default=no]"
72
 
  echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
73
 
  echo "  --enable-swscaler        software scaler support [default=no]"
 
72
  echo "  --enable-nonfree         allow use of nonfree code, the resulting libav*"
 
73
  echo "                           and ffmpeg will be unredistributable [default=no]"
 
74
  echo "  --enable-postproc        enable GPLed postprocessing support [default=no]"
 
75
  echo "  --enable-swscale         software scaler support [default=no]"
 
76
  echo "  --enable-avfilter        video filter support (replaces vhook) [default=no]"
 
77
  echo "  --enable-avfilter-lavf   video filters dependant on avformat [default=no]"
74
78
  echo "  --enable-beosthreads     use BeOS threads [default=no]"
75
79
  echo "  --enable-os2threads      use OS/2 threads [default=no]"
76
80
  echo "  --enable-pthreads        use pthreads [default=no]"
78
82
  echo "  --enable-x11grab         enable X11 grabbing [default=no]"
79
83
  echo
80
84
  echo "External library support:"
81
 
  echo "  --enable-sunmlib         use Sun medialib [default=no]"
82
 
  echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
83
 
  echo "                           and libraw1394 [default=no]"
 
85
  echo "  --enable-mlib            use Sun medialib [default=no]"
84
86
  echo "  --enable-liba52          enable GPLed liba52 support [default=no]"
85
87
  echo "  --enable-liba52bin       open liba52.so.0 at runtime [default=no]"
86
88
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
87
 
  echo "  --enable-libdts          enable GPLed libdts support [default=no]"
 
89
  echo "  --enable-libamr-nb       enable libamr-nb floating point audio codec"
 
90
  echo "  --enable-libamr-wb       enable libamr-wb floating point audio codec"
 
91
  echo "  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394"
 
92
  echo "                           and libraw1394 [default=no]"
88
93
  echo "  --enable-libfaac         enable FAAC support via libfaac [default=no]"
89
94
  echo "  --enable-libfaad         enable FAAD support via libfaad [default=no]"
90
 
  echo "  --enable-libfaadbin      build FAAD support with runtime linking [default=no]"
 
95
  echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [default=no]"
91
96
  echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
92
97
  echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [default=no]"
93
98
  echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
94
99
  echo "                           native demuxer exists [default=no]"
95
 
  echo "  --enable-libogg          enable Ogg muxing via libogg [default=no]"
96
100
  echo "  --enable-libtheora       enable Theora encoding via libtheora [default=no]"
97
 
  echo "  --enable-libvorbis       enable Vorbis en/decoding via libvorbis,"
98
 
  echo "                           native implementations exist [default=no]"
99
 
  echo "  --enable-x264            enable H.264 encoding via x264 [default=no]"
100
 
  echo "  --enable-xvid            enable Xvid encoding via xvidcore,"
 
101
  echo "  --enable-libvorbis       enable Vorbis encoding via libvorbis,"
 
102
  echo "                           native implementation exists [default=no]"
 
103
  echo "  --enable-libx264         enable H.264 encoding via x264 [default=no]"
 
104
  echo "  --enable-libxvid         enable Xvid encoding via xvidcore,"
101
105
  echo "                           native MPEG-4/Xvid encoder exists [default=no]"
102
 
  echo "  --enable-amr_nb          enable amr_nb float audio codec"
103
 
  echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
104
 
  echo "  --enable-amr_wb          enable amr_wb float audio codec"
105
 
  echo "  --enable-amr_if2         enable amr_wb IF2 audio codec"
106
106
  echo ""
107
107
  echo "Advanced options (experts only):"
108
108
  echo "  --source-path=PATH       path to source code [$source_path]"
109
109
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
110
 
  echo "  --cross-compile          assume a cross-compiler is used"
111
 
  echo "  --target-os=OS           compiler targets OS [$targetos]"
 
110
  echo "  --enable-cross-compile   assume a cross-compiler is used"
 
111
  echo "  --target-os=OS           compiler targets OS [$target_os]"
112
112
  echo "  --cc=CC                  use C compiler CC [$cc]"
113
 
  echo "  --make=MAKE              use specified make [$make]"
114
113
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
115
114
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
116
115
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
121
120
  echo "  --enable-powerpc-perf    enable performance report on PPC"
122
121
  echo "                           (requires enabling PMC)"
123
122
  echo "  --disable-mmx            disable MMX usage"
 
123
  echo "  --disable-mmx2           disable MMX2 usage"
 
124
  echo "  --disable-ssse3          disable SSSE3 usage"
124
125
  echo "  --disable-armv5te        disable armv5te usage"
125
126
  echo "  --disable-armv6          disable armv6 usage"
 
127
  echo "  --disable-armvfp         disable ARM VFP usage"
126
128
  echo "  --disable-iwmmxt         disable iwmmxt usage"
127
129
  echo "  --disable-altivec        disable AltiVec usage"
128
 
  echo "  --disable-audio-oss      disable OSS audio support [default=no]"
129
 
  echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
130
 
  echo "  --disable-v4l            disable video4linux grabbing [default=no]"
131
 
  echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
132
 
  echo "  --disable-bktr           disable bktr video grabbing [default=no]"
133
 
  echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
134
130
  echo "  --disable-network        disable network support [default=no]"
135
131
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
136
132
  echo "  --disable-zlib           disable zlib [default=no]"
138
134
  echo "  --disable-debug          disable debugging symbols"
139
135
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
140
136
  echo "                           MPEG audio decoding [default=no]"
141
 
  echo "  --disable-protocols      disable I/O protocols support [default=no]"
 
137
  echo "  --enable-gray            enable full grayscale support (slower color)"
142
138
  echo "  --disable-ffmpeg         disable ffmpeg build"
143
139
  echo "  --disable-ffserver       disable ffserver build"
144
140
  echo "  --disable-ffplay         disable ffplay build"
145
141
  echo "  --enable-small           optimize for size instead of speed"
 
142
  echo "  --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
146
143
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
147
144
  echo "  --disable-encoder=NAME   disables encoder NAME"
148
145
  echo "  --enable-encoder=NAME    enables encoder NAME"
159
156
  echo "  --enable-parser=NAME     enables parser NAME"
160
157
  echo "  --disable-parser=NAME    disables parser NAME"
161
158
  echo "  --disable-parsers        disables all parsers"
 
159
  echo "  --enable-bsf=NAME        enables bitstream filter NAME"
 
160
  echo "  --disable-bsf=NAME       disables bitstream filter NAME"
 
161
  echo "  --disable-bsfs           disables all bitstream filters"
 
162
  echo "  --enable-protocol=NAME   enables protocol NAME"
 
163
  echo "  --disable-protocol=NAME  disables protocol NAME"
 
164
  echo "  --disable-protocols      disables all protocols"
 
165
  echo "  --disable-devices        disables all devices"
 
166
  echo "  --list-decoders          show all available decoders"
 
167
  echo "  --list-encoders          show all available encoders"
 
168
  echo "  --list-muxers            show all available muxers"
 
169
  echo "  --list-demuxers          show all available demuxers"
 
170
  echo "  --list-parsers           show all available parsers"
 
171
  echo "  --list-protocols         show all available protocols"
 
172
  echo "  --list-bsfs              show all available bitstream filters"
 
173
  echo "  --list-indevs            show all available input devices"
 
174
  echo "  --list-outdevs           show all available output devices"
162
175
  echo
163
176
  echo "Developer options (useful when working on FFmpeg itself):"
164
177
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
165
 
  echo "  --disable-opts           disable compiler optimizations"
 
178
  echo "  --disable-optimizations  disable compiler optimizations"
166
179
  echo "  --enable-extra-warnings  enable more compiler warnings"
167
 
  echo "  --disable-strip          disable stripping of executables and shared libraries"
 
180
  echo "  --disable-stripping      disable stripping of executables and shared libraries"
168
181
  echo ""
169
182
  echo "NOTE: Object files are built at the place where configure is launched."
170
183
  exit 1
176
189
 
177
190
log_file(){
178
191
    log BEGIN $1
179
 
    cat -n $1 >>$logfile
 
192
    pr -n -t $1 >>$logfile
180
193
    log END $1
181
194
}
182
195
 
190
203
    cat <<EOF
191
204
If you think configure made a mistake, make sure you are using the latest
192
205
version from SVN.  If the latest version fails, report the problem to the
193
 
ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
 
206
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
194
207
EOF
195
 
    if enabled logging; then
 
208
    if disabled logging; then
196
209
        cat <<EOF
 
210
Rerun configure with logging enabled (do not use --disable-logging), and
 
211
include the log this produces with your report.
 
212
EOF
 
213
    else
 
214
cat <<EOF
197
215
Include the log file "$logfile" produced by configure as this will help
198
216
solving the problem.
199
217
EOF
200
 
    else
201
 
cat <<EOF
202
 
Rerun configure with logging enabled (do not use --log=no), and include the
203
 
log this produces with your report.
204
 
EOF
205
218
    fi
206
 
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
 
219
    rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
207
220
    exit 1
208
221
}
209
222
 
210
 
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
 
223
# Avoid locale weirdness, besides we really just want to translate ASCII.
211
224
toupper(){
212
 
    echo "$@" | tr '[a-z]' '[A-Z]'
 
225
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
213
226
}
214
227
 
215
228
tolower(){
216
 
    echo "$@" | tr '[A-Z]' '[a-z]'
 
229
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
217
230
}
218
231
 
219
232
set_all(){
283
296
    done
284
297
}
285
298
 
 
299
is_in(){
 
300
    value=$1
 
301
    shift
 
302
    for var in $*; do
 
303
        [ $var = $value ] && return 0
 
304
    done
 
305
    return 1
 
306
}
 
307
 
286
308
check_deps(){
287
309
    for cfg; do
288
310
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
299
321
        enabled_all $dep_all || disable $cfg
300
322
        enabled_any $dep_any || disable $cfg
301
323
 
 
324
        if enabled $cfg; then
 
325
            eval dep_extralibs="\$${cfg}_extralibs"
 
326
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
 
327
        fi
 
328
 
302
329
        disable ${cfg}_checking
303
330
    done
304
331
}
309
336
    makefile=$3
310
337
    shift 3
311
338
    for cfg; do
 
339
        ucname="`toupper $cfg`"
312
340
        if enabled $cfg; then
313
 
            ucname="${pfx}`toupper $cfg`"
314
 
            echo "#define ${ucname} 1" >> $header
315
 
            echo "${ucname}=yes" >> $makefile
 
341
            echo "#define ${pfx}${ucname} 1" >> $header
 
342
            echo "#define ENABLE_${ucname} 1" >> $header
 
343
            echo "${pfx}${ucname}=yes" >> $makefile
 
344
        else
 
345
            echo "#define ENABLE_${ucname} 0" >> $header
316
346
        fi
317
347
    done
318
348
}
391
421
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
392
422
}
393
423
 
 
424
check_asm(){
 
425
    log check_asm "$@"
 
426
    name="$1"
 
427
    asm="$2"
 
428
    shift 2
 
429
    check_cc "$@" <<EOF && enable $name || disable $name
 
430
int foo(void){ asm volatile($asm); }
 
431
EOF
 
432
}
 
433
 
394
434
check_ld(){
395
435
    log check_ld "$@"
396
436
    check_cc || return
397
 
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
 
437
    flags=''
 
438
    libs=''
 
439
    for f; do
 
440
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
 
441
    done
 
442
    check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
398
443
}
399
444
 
400
445
check_cflags(){
407
452
check_ldflags(){
408
453
    log check_ldflags "$@"
409
454
    check_ld "$@" <<EOF && add_ldflags "$@"
410
 
int main(){
411
 
    return 0;
412
 
}
 
455
int main(void){ return 0; }
413
456
EOF
414
457
}
415
458
 
432
475
    disable $func
433
476
    check_ld "$@" <<EOF && enable $func
434
477
extern int $func();
435
 
int main(){
436
 
    $func();
437
 
}
 
478
int main(void){ $func(); }
438
479
EOF
439
480
}
440
481
 
451
492
    done
452
493
    check_ld "$@" <<EOF && enable $func
453
494
$incs
454
 
int main(){
 
495
int main(int argc, char **argv){
455
496
    (void) $func;
456
497
    return 0;
457
498
}
486
527
    check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
487
528
}
488
529
 
 
530
check_exec_crash(){
 
531
    code=`cat`
 
532
 
 
533
    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
 
534
    # are safe but may not be available everywhere.  Thus we use
 
535
    # raise(SIGTERM) instead.  The check is run in a subshell so we
 
536
    # can redirect the "Terminated" message from the shell.  SIGBUS
 
537
    # is not defined by standard C so it is used conditionally.
 
538
 
 
539
    (check_exec "$@") >>$logfile 2>&1 <<EOF
 
540
#include <signal.h>
 
541
static void sighandler(int sig){
 
542
    raise(SIGTERM);
 
543
}
 
544
int main(void){
 
545
    signal(SIGILL, sighandler);
 
546
    signal(SIGFPE, sighandler);
 
547
    signal(SIGSEGV, sighandler);
 
548
#ifdef SIGBUS
 
549
    signal(SIGBUS, sighandler);
 
550
#endif
 
551
    { $code }
 
552
}
 
553
EOF
 
554
}
 
555
 
 
556
check_type(){
 
557
    log check_type "$@"
 
558
    headers=$1
 
559
    type=$2
 
560
    shift 2
 
561
    disable $type
 
562
    incs=""
 
563
    for hdr in $headers; do
 
564
        incs="$incs
 
565
#include <$hdr>"
 
566
    done
 
567
    check_cc "$@" <<EOF && enable $type
 
568
$incs
 
569
$type v;
 
570
EOF
 
571
}
 
572
 
489
573
require(){
490
574
    name="$1"
491
575
    header="$2"
525
609
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
526
610
}
527
611
 
528
 
CONFIG_LIST='
 
612
COMPONENT_LIST="
 
613
    bsfs
 
614
    decoders
 
615
    demuxers
529
616
    encoders
530
 
    decoders
 
617
    filters
 
618
    indevs
 
619
    muxers
 
620
    outdevs
531
621
    parsers
532
 
    muxers
533
 
    demuxers
534
 
    amr
535
 
    amr_nb
536
 
    amr_nb_fixed
537
 
    amr_wb
538
 
    audio_beos
539
 
    audio_oss
 
622
    protocols
 
623
"
 
624
 
 
625
CONFIG_LIST="
 
626
    $COMPONENT_LIST
 
627
    avfilter
 
628
    avfilter_lavf
540
629
    avisynth
541
630
    beos_netserver
542
 
    bktr
543
 
    dc1394
544
 
    dv1394
545
631
    ffmpeg
546
632
    ffplay
547
633
    ffserver
548
634
    gpl
549
635
    gprof
 
636
    gray
 
637
    hardcoded_tables
550
638
    ipv6
551
639
    liba52
552
640
    liba52bin
553
 
    libdts
 
641
    libamr_nb
 
642
    libamr_wb
 
643
    libdc1394
554
644
    libfaac
555
645
    libfaad
556
646
    libfaadbin
557
647
    libgsm
558
648
    libmp3lame
559
649
    libnut
560
 
    libogg
561
650
    libtheora
562
651
    libvorbis
 
652
    libx264
 
653
    libxvid
563
654
    memalign_hack
 
655
    mlib
564
656
    mpegaudio_hp
565
657
    network
 
658
    nonfree
 
659
    postproc
566
660
    powerpc_perf
567
 
    pp
568
 
    protocols
569
 
    swscaler
 
661
    small
 
662
    swscale
570
663
    vhook
571
 
    v4l
572
 
    v4l2
573
 
    wince
574
664
    x11grab
575
 
    x264
576
 
    xvid
577
665
    zlib
578
 
'
 
666
"
579
667
 
580
668
THREADS_LIST='
581
669
    beosthreads
584
672
    w32threads
585
673
'
586
674
 
 
675
ARCH_LIST='
 
676
    alpha
 
677
    armv4l
 
678
    bfin
 
679
    ia64
 
680
    m68k
 
681
    mips
 
682
    parisc
 
683
    powerpc
 
684
    s390
 
685
    sh4
 
686
    sparc
 
687
    sparc64
 
688
    x86
 
689
    x86_32
 
690
    x86_64
 
691
'
 
692
 
 
693
ARCH_EXT_LIST='
 
694
    altivec
 
695
    armv5te
 
696
    armv6
 
697
    armvfp
 
698
    iwmmxt
 
699
    mmi
 
700
    mmx
 
701
    mmx2
 
702
    ssse3
 
703
    vis
 
704
'
 
705
 
587
706
HAVE_LIST="
 
707
    $ARCH_EXT_LIST
588
708
    $THREADS_LIST
589
 
    altivec
590
709
    altivec_h
591
 
    armv5te
592
 
    armv6
 
710
    arpa_inet_h
 
711
    bswap
593
712
    byteswap_h
 
713
    closesocket
594
714
    cmov
 
715
    conio_h
595
716
    dcbzl
596
717
    dev_bktr_ioctl_bt848_h
597
718
    dev_bktr_ioctl_meteor_h
600
721
    dev_video_bktr_ioctl_bt848_h
601
722
    dlfcn_h
602
723
    dlopen
 
724
    ebp_available
 
725
    ebx_available
603
726
    fast_64bit
604
727
    fast_cmov
 
728
    fast_unaligned
 
729
    fork
605
730
    freetype2
 
731
    gethrtime
 
732
    GetProcessTimes
 
733
    getrusage
606
734
    imlib2
607
735
    inet_aton
608
 
    iwmmxt
609
 
    localtime_r
 
736
    inline_asm
 
737
    libdc1394_1
 
738
    libdc1394_2
 
739
    llrint
 
740
    lrint
610
741
    lrintf
611
742
    machine_ioctl_bt848_h
612
743
    machine_ioctl_meteor_h
613
744
    malloc_h
614
745
    memalign
615
 
    mlib
616
 
    mmi
617
 
    mmx
618
 
    os2
 
746
    mkstemp
 
747
    pld
 
748
    ppc64
 
749
    round
 
750
    roundf
619
751
    sdl
620
752
    sdl_video_size
 
753
    socklen_t
621
754
    soundcard_h
622
 
    sys_poll_h
 
755
    poll_h
 
756
    sys_mman_h
 
757
    sys_select_h
623
758
    sys_soundcard_h
 
759
    termios_h
624
760
    threads
 
761
    winsock2_h
625
762
"
626
763
 
627
 
TARGET_LIST='
628
 
    altivec
629
 
    armv5te
630
 
    armv6
631
 
    iwmmxt
632
 
    mmi
633
 
    mmx
634
 
'
635
 
 
636
764
CMDLINE_SELECT="
 
765
    $ARCH_EXT_LIST
637
766
    $CONFIG_LIST
638
 
    $TARGET_LIST
639
767
    $THREADS_LIST
640
 
    amr_if2
 
768
    cross_compile
641
769
    debug
642
770
    extra_warnings
 
771
    logging
 
772
    optimizations
643
773
    shared
644
774
    static
 
775
    stripping
645
776
"
646
 
 
 
777
CMDLINE_SET='
 
778
    arch
 
779
    build_suffix
 
780
    cc
 
781
    cpu
 
782
    cross_prefix
 
783
    incdir
 
784
    libdir
 
785
    logfile
 
786
    mandir
 
787
    prefix
 
788
    shlibdir
 
789
    source_path
 
790
    target_os
 
791
'
 
792
 
 
793
# code dependency declarations
 
794
 
 
795
# architecture extensions
 
796
altivec_deps="powerpc"
 
797
armv5te_deps="armv4l"
 
798
armv6_deps="armv4l"
 
799
armvfp_deps="armv4l"
 
800
iwmmxt_deps="armv4l"
 
801
mmi_deps="mips"
 
802
mmx_deps="x86"
 
803
mmx2_deps="x86 mmx"
 
804
ssse3_deps="x86"
 
805
vis_deps="sparc"
 
806
 
 
807
# decoders / encoders
 
808
ac3_decoder_deps="gpl"
 
809
dxa_decoder_deps="zlib"
647
810
flashsv_decoder_deps="zlib"
648
811
flashsv_encoder_deps="zlib"
649
812
mpeg_xvmc_decoder_deps="xvmc"
650
813
png_decoder_deps="zlib"
651
814
png_encoder_deps="zlib"
652
 
x264_encoder_deps="x264"
653
 
xvid_encoder_deps="xvid"
654
815
zmbv_decoder_deps="zlib"
655
816
zmbv_encoder_deps="zlib"
656
817
 
657
 
aac_decoder_deps="libfaad"
658
 
mpeg4aac_decoder_deps="libfaad"
659
 
amr_nb_decoder_deps_any="amr_nb amr_nb_fixed"
660
 
amr_nb_encoder_deps_any="amr_nb amr_nb_fixed"
661
 
amr_wb_decoder_deps="amr_wb"
662
 
amr_wb_encoder_deps="amr_wb"
663
 
dts_decoder_deps="libdts"
664
 
faac_encoder_deps="libfaac"
 
818
# external libraries
665
819
liba52_decoder_deps="liba52"
 
820
liba52bin_decoder_extralibs='$ldl'
 
821
libamr_nb_decoder_deps="libamr_nb"
 
822
libamr_nb_encoder_deps="libamr_nb"
 
823
libamr_wb_decoder_deps="libamr_wb"
 
824
libamr_wb_encoder_deps="libamr_wb"
 
825
libfaac_encoder_deps="libfaac"
 
826
libfaad_decoder_deps="libfaad"
 
827
libfaadbin_decoder_extralibs='$ldl'
666
828
libgsm_decoder_deps="libgsm"
667
829
libgsm_encoder_deps="libgsm"
668
830
libgsm_ms_decoder_deps="libgsm"
669
831
libgsm_ms_encoder_deps="libgsm"
 
832
libmp3lame_encoder_deps="libmp3lame"
670
833
libtheora_encoder_deps="libtheora"
671
 
mp3lame_encoder_deps="libmp3lame"
672
 
oggvorbis_decoder_deps="libvorbis"
673
 
oggvorbis_encoder_deps="libvorbis"
 
834
libvorbis_encoder_deps="libvorbis"
 
835
libx264_encoder_deps="libx264"
 
836
libxvid_encoder_deps="libxvid"
 
837
mpeg4aac_decoder_deps="libfaad"
674
838
 
675
 
audio_demuxer_deps_any="audio_oss audio_beos"
676
 
audio_muxer_deps_any="audio_oss audio_beos"
677
 
dc1394_demuxer_deps="dc1394"
678
 
dv1394_demuxer_deps="dv1394"
679
 
gxf_muxer_deps="gpl"
 
839
# demuxers / muxers
 
840
ac3_demuxer_deps="ac3_parser"
 
841
audio_beos_demuxer_deps="audio_beos"
 
842
audio_beos_demuxer_extralibs="-lmedia -lbe"
 
843
audio_beos_muxer_deps="audio_beos"
 
844
audio_beos_muxer_extralibs="-lmedia -lbe"
 
845
avisynth_demuxer_deps="avisynth"
 
846
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
 
847
dv1394_demuxer_deps="dv1394 dv_demuxer"
 
848
libdc1394_demuxer_deps="libdc1394"
680
849
libnut_demuxer_deps="libnut"
681
850
libnut_muxer_deps="libnut"
682
 
ogg_muxer_deps="libogg"
 
851
mp3_demuxer_deps="mpegaudio_parser"
 
852
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
 
853
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
683
854
redir_demuxer_deps="network"
684
 
rtp_muxer_deps="network"
685
 
rtsp_demuxer_deps="network"
686
 
sdp_demuxer_deps="network"
687
 
v4l2_demuxer_deps="v4l2"
688
 
video_grab_device_demuxer_deps_any="v4l bktr"
689
 
x11_grab_device_demuxer_deps="x11grab"
690
 
 
 
855
rtp_muxer_deps="network rtp_protocol"
 
856
rtsp_demuxer_deps="sdp_demuxer"
 
857
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
 
858
v4l_demuxer_deps="linux_videodev_h"
 
859
v4l2_demuxer_deps="linux_videodev2_h"
 
860
vfwcap_demuxer_deps="capCreateCaptureWindow"
 
861
vfwcap_demuxer_extralibs="-lvfw32"
 
862
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
 
863
x11_grab_device_demuxer_extralibs="-lX11 -lXext"
 
864
 
 
865
# protocols
 
866
http_protocol_deps="network"
 
867
rtp_protocol_deps="udp_protocol"
 
868
tcp_protocol_deps="network"
 
869
udp_protocol_deps="network"
 
870
 
 
871
# filters
 
872
movie_filter_deps="avfilter_lavf"
 
873
 
 
874
# programs
691
875
ffplay_deps="sdl"
692
 
ffserver_deps="network protocols muxers"
693
 
network_deps="protocols"
694
 
 
695
 
# set temporary file name
696
 
if test ! -z "$TMPDIR" ; then
697
 
    TMPDIR1="${TMPDIR}"
698
 
elif test ! -z "$TEMPDIR" ; then
699
 
    TMPDIR1="${TEMPDIR}"
700
 
else
701
 
    TMPDIR1="/tmp"
702
 
fi
703
 
 
704
 
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
705
 
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
706
 
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
707
 
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
708
 
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
 
876
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
 
877
ffserver_extralibs='$ldl'
 
878
vhook_extralibs='$ldl'
 
879
 
709
880
 
710
881
# default parameters
711
882
 
712
 
logging="yes"
713
883
logfile="config.err"
714
884
 
715
885
# installation paths
716
 
PREFIX="/usr/local"
717
 
libdir='${PREFIX}/lib'
 
886
prefix="/usr/local"
 
887
libdir='$(PREFIX)/lib'
718
888
shlibdir="$libdir"
719
 
incdir='${PREFIX}/include/ffmpeg'
720
 
mandir='${PREFIX}/man'
721
 
bindir='${PREFIX}/bin'
 
889
incdir='$(PREFIX)/include'
 
890
mandir='$(PREFIX)/share/man'
 
891
bindir='$(PREFIX)/bin'
722
892
 
723
893
# toolchain
724
 
cross_prefix=""
725
 
cross_compile="no"
726
894
cc="gcc"
727
895
ar="ar"
 
896
nm="nm"
728
897
ranlib="ranlib"
729
 
make="make"
730
898
strip="strip"
731
899
asmalign_pot="unknown"
 
900
ln_s="ln -sf"
732
901
 
733
902
# machine
734
903
arch=`uname -m`
735
904
cpu="generic"
736
 
powerpc_perf="no"
737
 
mmx="default"
738
 
cmov="no"
739
 
fast_cmov="no"
740
 
armv5te="default"
741
 
armv6="default"
742
 
iwmmxt="default"
743
 
altivec="default"
744
 
dcbzl="no"
745
 
mmi="default"
746
 
bigendian="no"
747
905
 
748
906
# OS
749
 
targetos=`uname -s`
750
 
beos_netserver="no"
751
 
os2="no"
752
 
wince="no"
753
 
 
754
 
# non-library system interfaces
755
 
audio_beos="default"
756
 
audio_oss="yes"
757
 
bktr="yes"
758
 
dv1394="yes"
759
 
v4l2="yes"
760
 
v4l="yes"
 
907
target_os=$(tolower $(uname -s))
761
908
 
762
909
# libraries
763
 
amr_if2="no"
764
 
amr_nb="no"
765
 
amr_nb_fixed="no"
766
 
amr_wb="no"
767
 
avisynth="no"
768
 
dc1394="no"
769
 
dlfcn_h="no"
770
 
dlopen="no"
771
 
liba52="no"
772
 
liba52bin="no"
773
 
libdts="no"
774
 
libfaac="no"
775
 
libfaad2="no"
776
 
libfaad="no"
777
 
libfaadbin="no"
778
 
libgsm="no"
779
 
libmp3lame="no"
780
 
libnut="no"
781
 
libogg="no"
782
 
libtheora="no"
783
 
libvorbis="no"
784
 
mlib="no"
785
 
x11grab="no"
786
 
x264="no"
787
 
xvid="no"
788
 
zlib="yes"
 
910
enable zlib
789
911
 
790
912
# configurable options
791
 
debug="yes"
792
 
dostrip="yes"
793
 
extra_warnings="no"
794
 
ffmpeg="yes"
795
 
ffplay="yes"
796
 
ffserver="yes"
797
 
gpl="no"
798
 
gprof="no"
799
 
ipv6="yes"
800
 
shared="no"
801
 
static="yes"
802
 
memalign_hack="no"
803
 
mpegaudio_hp="yes"
804
 
network="yes"
805
 
optimize="yes"
806
 
pp="no"
807
 
protocols="yes"
808
 
swscaler="no"
 
913
enable debug
 
914
enable ffmpeg
 
915
enable ffplay
 
916
enable ffserver
 
917
enable ipv6
 
918
enable mpegaudio_hp
 
919
enable network
 
920
enable optimizations
 
921
enable protocols
 
922
enable static
 
923
enable stripping
809
924
vhook="default"
810
925
 
811
 
# threading
812
 
beosthreads="no"
813
 
os2threads="no"
814
 
pthreads="no"
815
 
w32threads="no"
816
 
thread_type="no"
817
 
 
818
926
# build settings
819
 
SHFLAGS='-shared -Wl,-soname,$@'
 
927
SHFLAGS='-shared -Wl,-soname,$$(@F)'
820
928
VHOOKSHFLAGS='$(SHFLAGS)'
821
 
LIBOBJFLAGS=""
822
 
FFLDFLAGS=-Wl,--warn-common
823
929
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
824
930
FFSERVERLDFLAGS=-Wl,-E
825
 
LDCONFIG="ldconfig"
826
931
LIBPREF="lib"
827
932
LIBSUF=".a"
828
 
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
 
933
FULLNAME='$(NAME)$(BUILDSUF)'
 
934
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
829
935
SLIBPREF="lib"
830
936
SLIBSUF=".so"
831
 
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
 
937
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
832
938
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
833
939
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
834
 
EXESUF=""
835
 
BUILDSUF=""
836
 
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
 
940
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
 
941
 
 
942
# gcc stupidly only outputs the basename of targets with -MM
 
943
DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed "1s,^,$(@D)/,"'
837
944
 
838
945
# find source path
839
946
source_path="`dirname \"$0\"`"
840
 
source_path_used="yes"
 
947
enable source_path_used
841
948
if test -z "$source_path" -o "$source_path" = "." ; then
842
949
    source_path="`pwd`"
843
 
    source_path_used="no"
 
950
    disable source_path_used
844
951
else
845
952
    source_path="`cd \"$source_path\"; pwd`"
846
953
    echo "$source_path" | grep -q '[[:blank:]]' &&
847
 
      die "Out of tree builds are impossible with whitespace in source path."
848
 
fi
849
 
 
850
 
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
851
 
    show_help
 
954
        die "Out of tree builds are impossible with whitespace in source path."
852
955
fi
853
956
 
854
957
FFMPEG_CONFIGURATION="$@"
855
958
 
856
 
ENCODER_LIST=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
857
 
DECODER_LIST=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
858
 
PARSER_LIST=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
859
 
MUXER_LIST=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
860
 
DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
861
 
 
862
 
enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
 
959
find_things(){
 
960
    thing=$1
 
961
    pattern=$2
 
962
    file=$source_path/$3
 
963
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
 
964
}
 
965
 
 
966
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
 
967
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
 
968
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
 
969
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
 
970
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
 
971
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
 
972
OUTDEV_LIST=$(find_things   muxer    _MUX     libavdevice/alldevices.c)
 
973
INDEV_LIST=$(find_things    demuxer  DEMUX    libavdevice/alldevices.c)
 
974
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
 
975
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
 
976
 
 
977
enable $ARCH_EXT_LIST \
 
978
       $DECODER_LIST \
 
979
       $ENCODER_LIST \
 
980
       $PARSER_LIST \
 
981
       $BSF_LIST \
 
982
       $DEMUXER_LIST \
 
983
       $MUXER_LIST \
 
984
       $FILTER_LIST \
 
985
       $PROTOCOL_LIST \
 
986
       $INDEV_LIST \
 
987
       $OUTDEV_LIST \
863
988
 
864
989
die_unknown(){
865
990
    echo "Unknown option \"$1\"."
867
992
    exit 1
868
993
}
869
994
 
 
995
show_list() {
 
996
    suffix=_$1
 
997
    shift
 
998
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
 
999
    exit 0
 
1000
}
 
1001
 
870
1002
for opt do
871
 
  optval="${opt#*=}"
872
 
  case "$opt" in
873
 
  --log)
874
 
  ;;
875
 
  --log=*) logging="$optval"
876
 
  ;;
877
 
  --prefix=*) PREFIX="$optval"
878
 
  ;;
879
 
  --libdir=*) libdir="$optval"
880
 
  ;;
881
 
  --shlibdir=*) shlibdir="$optval"
882
 
  ;;
883
 
  --incdir=*) incdir="$optval"
884
 
  ;;
885
 
  --mandir=*) mandir="$optval"
886
 
  ;;
887
 
  --source-path=*) source_path="$optval"
888
 
  ;;
889
 
  --cross-prefix=*) cross_prefix="$optval"
890
 
  ;;
891
 
  --cross-compile) cross_compile="yes"
892
 
  ;;
893
 
  --target-os=*) targetos="$optval"
894
 
  ;;
895
 
  --cc=*) cc="$optval"
896
 
  ;;
897
 
  --make=*) make="$optval"
898
 
  ;;
899
 
  --extra-cflags=*) add_cflags "$optval"
900
 
  ;;
901
 
  --extra-ldflags=*) add_ldflags "$optval"
902
 
  ;;
903
 
  --extra-libs=*) add_extralibs "$optval"
904
 
  ;;
905
 
  --build-suffix=*) BUILDSUF="$optval"
906
 
  ;;
907
 
  --arch=*) arch="$optval"
908
 
  ;;
909
 
  --cpu=*) cpu="$optval"
910
 
  ;;
911
 
  --enable-mingwce) wince="yes"
912
 
  ;;
913
 
  --disable-opts) optimize="no"
914
 
  ;;
915
 
  --enable-small) optimize="small"
916
 
  ;;
917
 
  --enable-sunmlib) mlib="yes"
918
 
  ;;
919
 
  --disable-strip) dostrip="no"
920
 
  ;;
921
 
  --disable-encoders) disable $ENCODER_LIST
922
 
  ;;
923
 
  --disable-decoders) disable $DECODER_LIST
924
 
  ;;
925
 
  --disable-muxers) disable $MUXER_LIST
926
 
  ;;
927
 
  --disable-demuxers) disable $DEMUXER_LIST
928
 
  ;;
929
 
  --disable-parsers) disable $PARSER_LIST
930
 
  ;;
931
 
  --enable-*=*|--disable-*=*)
932
 
  eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
933
 
  case "$thing" in
934
 
      encoder|decoder|muxer|demuxer|parser) $action ${optval}_${thing} ;;
935
 
      *) die_unknown "$opt" ;;
936
 
  esac
937
 
  ;;
938
 
  --enable-?*|--disable-?*)
939
 
  eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
940
 
  echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
941
 
  $action $option
942
 
  ;;
943
 
  --help) show_help
944
 
  ;;
945
 
  *)
946
 
  die_unknown $opt
947
 
  ;;
948
 
  esac
 
1003
    optval="${opt#*=}"
 
1004
    case "$opt" in
 
1005
    --extra-cflags=*) add_cflags "$optval"
 
1006
    ;;
 
1007
    --extra-ldflags=*) add_ldflags "$optval"
 
1008
    ;;
 
1009
    --extra-libs=*) add_extralibs "$optval"
 
1010
    ;;
 
1011
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
 
1012
    ;;
 
1013
    --enable-debug=*) debuglevel="$optval"
 
1014
    ;;
 
1015
    --enable-*=*|--disable-*=*)
 
1016
    eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
 
1017
    case "$thing" in
 
1018
        encoder|decoder|muxer|demuxer|parser|bsf|protocol|filter) $action ${optval}_${thing} ;;
 
1019
        *) die_unknown "$opt" ;;
 
1020
    esac
 
1021
    ;;
 
1022
    --enable-?*|--disable-?*)
 
1023
    eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
 
1024
    if is_in $option $COMPONENT_LIST; then
 
1025
        eval $action \$$(toupper ${option%s})_LIST
 
1026
    elif is_in $option $CMDLINE_SELECT; then
 
1027
        $action $option
 
1028
    else
 
1029
        die_unknown $opt
 
1030
    fi
 
1031
    ;;
 
1032
    --list-*)
 
1033
        NAME="${opt#--list-}"
 
1034
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
 
1035
        NAME=${NAME%s}
 
1036
        eval show_list $NAME \$$(toupper $NAME)_LIST
 
1037
    ;;
 
1038
    --help|-h) show_help
 
1039
    ;;
 
1040
    *)
 
1041
    optname="${opt%=*}"
 
1042
    optname="${optname#--}"
 
1043
    optname=$(echo "$optname" | sed 's/-/_/g')
 
1044
    is_in $optname $CMDLINE_SET || die_unknown $opt
 
1045
    eval $optname='$optval'
 
1046
    ;;
 
1047
    esac
949
1048
done
950
1049
 
951
 
case "$arch" in
952
 
  i386|i486|i586|i686|i86pc|BePC)
953
 
    arch="x86_32"
954
 
  ;;
955
 
  x86_64|amd64)
956
 
    arch="x86_32"
957
 
    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
958
 
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
959
 
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
960
 
        arch="x86_64"
961
 
        enable fast_64bit
962
 
      fi
963
 
    fi
964
 
  ;;
965
 
  # armv4l is a subset of armv[567]*l
966
 
  arm|armv[4567]*l)
967
 
    arch="armv4l"
968
 
  ;;
969
 
  alpha)
970
 
    arch="alpha"
971
 
    enable fast_64bit
972
 
  ;;
973
 
  "Power Macintosh"|ppc|powerpc)
974
 
    arch="powerpc"
975
 
  ;;
976
 
  ppc64)
977
 
    arch="powerpc"
978
 
    enable fast_64bit
979
 
  ;;
980
 
  mips|mipsel|IP*)
981
 
    arch="mips"
982
 
  ;;
983
 
  sun4u|sparc64)
984
 
    arch="sparc64"
985
 
    enable fast_64bit
986
 
  ;;
987
 
  sparc)
988
 
    arch="sparc"
989
 
  ;;
990
 
  sh4)
991
 
    arch="sh4"
992
 
  ;;
993
 
  parisc)
994
 
    arch="parisc"
995
 
  ;;
996
 
  parisc64)
997
 
    arch="parisc"
998
 
    enable fast_64bit
999
 
  ;;
1000
 
  s390|s390x)
1001
 
    arch="s390"
1002
 
  ;;
1003
 
  m68k)
1004
 
    arch="m68k"
1005
 
  ;;
1006
 
  ia64)
1007
 
    arch="ia64"
1008
 
    enable fast_64bit
1009
 
  ;;
1010
 
  bfin)
1011
 
    arch="bfin"
1012
 
  ;;
1013
 
  *)
1014
 
    arch="unknown"
1015
 
  ;;
1016
 
esac
1017
 
 
1018
1050
# OS specific
1019
 
osextralibs="-lm"
1020
 
case `tolower $targetos` in
1021
 
  beos|haiku|zeta)
1022
 
    PREFIX="$HOME/config"
1023
 
    # helps building libavcodec
1024
 
    add_cflags "-DPIC -fomit-frame-pointer"
1025
 
    # 3 gcc releases known for BeOS, each with ugly bugs
1026
 
    gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1027
 
    case "$gcc_version" in
1028
 
      2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1029
 
        mmx="no"
1030
 
        ;;
1031
 
      *20010315*) echo "BeBits gcc"
1032
 
        add_cflags "-fno-expensive-optimizations"
1033
 
        ;;
1034
 
    esac
1035
 
    LDCONFIG="echo ignoring ldconfig"
1036
 
    SHFLAGS=-nostart
1037
 
    # disable Linux things
1038
 
    dv1394="no"
1039
 
    # enable BeOS things
1040
 
    disabled audio_beos || enable_audio_beos
1041
 
    # no need for libm, but the inet stuff
1042
 
    # Check for BONE
1043
 
    # XXX: actually should check for NOT net_server
1044
 
    if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
1045
 
        osextralibs="-lbind -lsocket"
1046
 
    else
1047
 
        beos_netserver="yes"
1048
 
        osextralibs="-lnet"
1049
 
    fi ;;
1050
 
  sunos)
1051
 
    dv1394="no"
1052
 
    FFLDFLAGS=""
1053
 
    FFSERVERLDFLAGS=""
1054
 
    SHFLAGS="-shared -Wl,-h,\$@"
1055
 
    add_extralibs "-lsocket -lnsl"
1056
 
    ;;
1057
 
  netbsd)
1058
 
    dv1394="no"
1059
 
    add_extralibs "-lossaudio"
1060
 
    ;;
1061
 
  openbsd)
1062
 
    dv1394="no"
1063
 
    need_memalign="no"
1064
 
    LIBOBJFLAGS="\$(PIC)"
1065
 
    LDCONFIG="ldconfig -m \$(shlibdir)"
1066
 
    SHFLAGS='-shared'
1067
 
    SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
1068
 
    SLIBNAME_WITH_VERSION='$(SLIBNAME)'
1069
 
    SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
1070
 
    add_extralibs "-lossaudio"
1071
 
    ;;
1072
 
  freebsd)
1073
 
    dv1394="no"
1074
 
    need_memalign="no"
1075
 
    add_cflags "-pthread"
1076
 
    ;;
1077
 
  gnu/kfreebsd)
1078
 
    dv1394="no"
1079
 
    add_cflags "-pthread"
1080
 
    ;;
1081
 
  bsd/os)
1082
 
    dv1394="no"
1083
 
    osextralibs="-lpoll -lgnugetopt -lm"
1084
 
    strip="strip -d"
1085
 
    ;;
1086
 
  darwin)
1087
 
    cc="cc"
1088
 
    dv1394="no"
1089
 
    need_memalign="no"
1090
 
    SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
1091
 
    VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
1092
 
    osextralibs=""
1093
 
    strip="strip -x"
1094
 
    FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1095
 
    SLIBSUF=".dylib"
1096
 
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
1097
 
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
1098
 
    FFSERVERLDFLAGS=-Wl,-bind_at_load
1099
 
    ;;
1100
 
  mingw32*)
1101
 
    if enabled_all shared static; then
1102
 
        cat <<EOF
1103
 
You can only build one library type at once on MinGW.
1104
 
Specify --disable-static --enable-shared to only build
1105
 
the shared libraries. To build only the static libraries
1106
 
you do not need to pass additional options.
1107
 
EOF
1108
 
        exit 1
1109
 
    fi
1110
 
    dv1394="no"
1111
 
    ffserver="no"
1112
 
    network="no"
1113
 
    if enabled wince; then
1114
 
        protocols="no"
1115
 
    fi
1116
 
    SLIBPREF=""
1117
 
    SLIBSUF=".dll"
1118
 
    EXESUF=".exe"
1119
 
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1120
 
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1121
 
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
1122
 
    SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
1123
 
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc"
1124
 
    add_extralibs -lws2_32
1125
 
    ;;
1126
 
  cygwin*)
1127
 
    targetos=CYGWIN
1128
 
    shlibdir="$bindir"
1129
 
    dv1394="no"
1130
 
    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil'
1131
 
    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lswscale$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1132
 
    osextralibs=""
1133
 
    EXESUF=".exe"
1134
 
    SLIBPREF="cyg"
1135
 
    SLIBSUF=".dll"
1136
 
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1137
 
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1138
 
    SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
1139
 
    ;;
1140
 
  linux)
1141
 
    LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
1142
 
    ;;
1143
 
  irix*)
1144
 
    targetos=IRIX
1145
 
    ranlib="echo ignoring ranlib"
1146
 
    ;;
1147
 
  os/2)
1148
 
    TMPE=$TMPE".exe"
1149
 
    ar="emxomfar -p128"
1150
 
    ranlib="echo ignoring ranlib"
1151
 
    strip="echo ignoring strip"
1152
 
    add_cflags "-Zomf"
1153
 
    FFLDFLAGS="-Zomf -Zstack 16384 -s"
1154
 
    SHFLAGS="-Zdll -Zomf"
1155
 
    FFSERVERLDFLAGS=""
1156
 
    LIBPREF=""
1157
 
    LIBSUF=".lib"
1158
 
    SLIBPREF=""
1159
 
    SLIBSUF=".dll"
1160
 
    EXESUF=".exe"
1161
 
    osextralibs=""
1162
 
    pkg_requires=""
1163
 
    dv1394="no"
1164
 
    ffserver="no"
1165
 
    vhook="no"
1166
 
    os2="yes"
1167
 
    ;;
1168
 
  *)
1169
 
    targetos="${targetos}-UNKNOWN"
1170
 
    ;;
 
1051
case $target_os in
 
1052
    beos|haiku|zeta)
 
1053
        prefix="$HOME/config"
 
1054
        # helps building libavcodec
 
1055
        add_cflags "-DPIC -fomit-frame-pointer"
 
1056
        # 3 gcc releases known for BeOS, each with ugly bugs
 
1057
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
 
1058
        case "$gcc_version" in
 
1059
          2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
 
1060
            disable mmx
 
1061
            ;;
 
1062
          *20010315*) echo "BeBits gcc"
 
1063
            add_cflags "-fno-expensive-optimizations"
 
1064
            ;;
 
1065
        esac
 
1066
        SHFLAGS=-nostart
 
1067
        # enable BeOS things
 
1068
        enable audio_beos
 
1069
        # no need for libm, but the inet stuff
 
1070
        # Check for BONE
 
1071
        # XXX: actually should check for NOT net_server
 
1072
        if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
 
1073
            network_extralibs="-lbind -lsocket"
 
1074
        else
 
1075
            enable beos_netserver
 
1076
            network_extralibs="-lnet"
 
1077
        fi ;;
 
1078
    sunos)
 
1079
        FFSERVERLDFLAGS=""
 
1080
        SHFLAGS='-shared -Wl,-h,$$(@F)'
 
1081
        network_extralibs="-lsocket -lnsl"
 
1082
        ;;
 
1083
    netbsd)
 
1084
        oss_demuxer_extralibs="-lossaudio"
 
1085
        oss_muxer_extralibs="-lossaudio"
 
1086
        ;;
 
1087
    openbsd)
 
1088
        disable need_memalign
 
1089
        LIBOBJFLAGS='$(PIC)'
 
1090
        SHFLAGS='-shared'
 
1091
        SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
 
1092
        SLIBNAME_WITH_VERSION='$(SLIBNAME)'
 
1093
        SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
 
1094
        oss_demuxer_extralibs="-lossaudio"
 
1095
        oss_muxer_extralibs="-lossaudio"
 
1096
        ;;
 
1097
    freebsd)
 
1098
        disable need_memalign
 
1099
        ;;
 
1100
    bsd/os)
 
1101
        osextralibs="-lpoll -lgnugetopt"
 
1102
        strip="strip -d"
 
1103
        ;;
 
1104
    darwin)
 
1105
        disable need_memalign
 
1106
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
 
1107
        VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$$(@F)'
 
1108
        strip="strip -x"
 
1109
        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
 
1110
        SLIBSUF=".dylib"
 
1111
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
 
1112
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
 
1113
        FFSERVERLDFLAGS=-Wl,-bind_at_load
 
1114
        ;;
 
1115
    mingw32*)
 
1116
        target_os=mingw32
 
1117
        shlibdir="$bindir"
 
1118
        VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
 
1119
        VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
 
1120
        if enabled swscale; then
 
1121
            VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
 
1122
            VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
 
1123
        fi
 
1124
        disable ffserver
 
1125
        SLIBPREF=""
 
1126
        SLIBSUF=".dll"
 
1127
        EXESUF=".exe"
 
1128
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
 
1129
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
 
1130
        SLIB_EXTRA_CMD='-lib /machine:i386 /def:$$(@:$(SLIBSUF)=.def)'
 
1131
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
 
1132
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
 
1133
        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
 
1134
        ;;
 
1135
    cygwin*)
 
1136
        target_os=cygwin
 
1137
        shlibdir="$bindir"
 
1138
        VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
 
1139
        VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
 
1140
        if enabled swscale; then
 
1141
            VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
 
1142
            VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
 
1143
        fi
 
1144
        EXESUF=".exe"
 
1145
        SLIBPREF="cyg"
 
1146
        SLIBSUF=".dll"
 
1147
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
 
1148
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
 
1149
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
 
1150
        ;;
 
1151
    *-dos|freedos|opendos)
 
1152
        disable ffplay ffserver vhook
 
1153
        disable $INDEV_LIST $OUTDEV_LIST
 
1154
        network_extralibs="-lsocket"
 
1155
        EXESUF=".exe"
 
1156
        ;;
 
1157
    linux)
 
1158
        LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
 
1159
        enable dv1394
 
1160
        ;;
 
1161
    irix*)
 
1162
        target_os=irix
 
1163
        ranlib="echo ignoring ranlib"
 
1164
        ;;
 
1165
    os/2*)
 
1166
        strip="lxlite"
 
1167
        ln_s="cp -f"
 
1168
        EXESUF=".exe"
 
1169
        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
 
1170
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
 
1171
        FFSERVERLDFLAGS=""
 
1172
        LIBSUF="_s.a"
 
1173
        SLIBPREF=""
 
1174
        SLIBSUF=".dll"
 
1175
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
 
1176
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
 
1177
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
 
1178
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
 
1179
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
 
1180
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
 
1181
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
 
1182
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
 
1183
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
 
1184
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
 
1185
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
 
1186
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
 
1187
        disable vhook
 
1188
        ;;
 
1189
    interix)
 
1190
        disable vhook
 
1191
        ;;
 
1192
 
 
1193
    *)
 
1194
        target_os="${target_os}-UNKNOWN"
 
1195
        ;;
1171
1196
esac
1172
1197
 
 
1198
# set temporary file name
 
1199
if test ! -z "$TMPDIR" ; then
 
1200
    TMPDIR1="${TMPDIR}"
 
1201
elif test ! -z "$TEMPDIR" ; then
 
1202
    TMPDIR1="${TEMPDIR}"
 
1203
else
 
1204
    TMPDIR1="/tmp"
 
1205
fi
 
1206
 
 
1207
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
 
1208
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}"
 
1209
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
 
1210
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
 
1211
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
 
1212
TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
 
1213
 
 
1214
 
1173
1215
add_extralibs $osextralibs
1174
1216
 
1175
 
if ! disabled logging ; then
1176
 
    enabled logging || logfile="$logging"
1177
 
    echo "# $0 $@" >$logfile
1178
 
    set >>$logfile
1179
 
else
1180
 
    logfile=/dev/null
1181
 
fi
 
1217
disabled logging && logfile=/dev/null
 
1218
 
 
1219
echo "# $0 $@" >$logfile
 
1220
set >>$logfile
 
1221
 
 
1222
case "$arch" in
 
1223
    i386|i486|i586|i686|i86pc|BePC)
 
1224
        arch="x86_32"
 
1225
        enable fast_unaligned
 
1226
    ;;
 
1227
    x86_64|amd64)
 
1228
        arch="x86_32"
 
1229
        enable fast_unaligned
 
1230
        check_cc <<EOF && enable fast_64bit && arch="x86_64"
 
1231
        int test[sizeof(char*) - 7];
 
1232
EOF
 
1233
    ;;
 
1234
    # armv4l is a subset of armv[567]*l
 
1235
    arm|armv[4567]*l)
 
1236
        arch="armv4l"
 
1237
    ;;
 
1238
    alpha)
 
1239
        arch="alpha"
 
1240
        enable fast_64bit
 
1241
    ;;
 
1242
    "Power Macintosh"|ppc|powerpc)
 
1243
        arch="powerpc"
 
1244
    ;;
 
1245
    ppc64)
 
1246
        arch="powerpc"
 
1247
        enable fast_64bit
 
1248
    ;;
 
1249
    mips|mipsel|IP*)
 
1250
        arch="mips"
 
1251
    ;;
 
1252
    sun4u|sparc64)
 
1253
        arch="sparc64"
 
1254
        enable fast_64bit
 
1255
    ;;
 
1256
    sparc)
 
1257
        arch="sparc"
 
1258
    ;;
 
1259
    sh4)
 
1260
        arch="sh4"
 
1261
    ;;
 
1262
    parisc)
 
1263
        arch="parisc"
 
1264
    ;;
 
1265
    parisc64)
 
1266
        arch="parisc"
 
1267
        enable fast_64bit
 
1268
    ;;
 
1269
    s390|s390x)
 
1270
        arch="s390"
 
1271
    ;;
 
1272
    m68k)
 
1273
        arch="m68k"
 
1274
    ;;
 
1275
    ia64)
 
1276
        arch="ia64"
 
1277
        enable fast_64bit
 
1278
    ;;
 
1279
    bfin)
 
1280
        arch="bfin"
 
1281
    ;;
 
1282
    *)
 
1283
        arch="unknown"
 
1284
    ;;
 
1285
esac
 
1286
 
 
1287
enable $arch
 
1288
enabled_any x86_32 x86_64 && enable x86
 
1289
enabled     sparc64       && enable sparc
1182
1290
 
1183
1291
# Combine FFLDFLAGS and the LDFLAGS environment variable.
1184
1292
LDFLAGS="$FFLDFLAGS $LDFLAGS"
1185
1293
 
1186
 
test -n "$cross_prefix" && cross_compile=yes
 
1294
test -n "$cross_prefix" && enable cross_compile
1187
1295
cc="${cross_prefix}${cc}"
1188
1296
ar="${cross_prefix}${ar}"
 
1297
nm="${cross_prefix}${nm}"
1189
1298
ranlib="${cross_prefix}${ranlib}"
1190
1299
strip="${cross_prefix}${strip}"
1191
1300
 
1192
1301
# we need to build at least one lib type
1193
 
if disabled_all static shared; then
 
1302
if ! enabled_any static shared; then
1194
1303
    cat <<EOF
1195
1304
At least one library type must be built.
1196
1305
Specify --enable-static to build the static libraries or --enable-shared to
1200
1309
    exit 1;
1201
1310
fi
1202
1311
 
1203
 
if disabled libogg; then
1204
 
    enabled libtheora && die "libogg must be enabled to enable libtheora."
1205
 
    enabled libvorbis && die "libogg must be enabled to enable libvorbis."
1206
 
fi
 
1312
disabled static && LIBNAME=""
1207
1313
 
1208
1314
if enabled_any libfaad libfaadbin ; then
1209
1315
    if check_header faad.h; then
1212
1318
#ifndef FAAD2_VERSION
1213
1319
ok faad1
1214
1320
#endif
1215
 
int main( void ) { return 0; }
 
1321
int main(void) { return 0; }
1216
1322
EOF
1217
1323
        test $? = 0 && enable libfaad2
1218
1324
    else
1221
1327
fi
1222
1328
 
1223
1329
 
1224
 
if disabled gpl ; then
 
1330
if ! enabled gpl; then
1225
1331
    die_gpl_disabled(){
1226
1332
        name=$1
1227
1333
        shift
1228
1334
        enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1229
1335
    }
1230
 
    die_gpl_disabled "The Postprocessing code" pp
 
1336
    die_gpl_disabled "The Postprocessing code" postproc
1231
1337
    die_gpl_disabled "liba52"                  liba52
1232
 
    die_gpl_disabled "libxvidcore"             xvid
1233
 
    die_gpl_disabled "x264"                    x264
1234
 
    die_gpl_disabled "libdts"                  libdts
 
1338
    die_gpl_disabled "libx264"                 libx264
 
1339
    die_gpl_disabled "libxvidcore"             libxvid
1235
1340
    die_gpl_disabled "FAAD2"                   libfaad2
1236
1341
    die_gpl_disabled "The X11 grabber"         x11grab
1237
 
    die_gpl_disabled "The software scaler"     swscaler
1238
 
fi
1239
 
 
1240
 
# compute MMX state
1241
 
if test $mmx = "default"; then
1242
 
    if test $arch = "x86_32" -o $arch = "x86_64"; then
1243
 
        mmx="yes"
1244
 
    else
1245
 
        mmx="no"
1246
 
    fi
1247
 
fi
 
1342
    die_gpl_disabled "The software scaler"     swscale
 
1343
fi
 
1344
 
 
1345
if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
 
1346
    die "libamr is nonfree and --enable-nonfree is not specified."
 
1347
fi
 
1348
 
 
1349
check_deps $ARCH_EXT_LIST
1248
1350
 
1249
1351
test -z "$need_memalign" && need_memalign="$mmx"
1250
1352
 
1251
1353
#Darwin CC versions
1252
 
needmdynamicnopic="no"
1253
 
if test $targetos = Darwin; then
1254
 
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
 
1354
if test $target_os = darwin; then
 
1355
    if $cc -v 2>&1 | grep -q xlc; then
1255
1356
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1256
1357
    else
1257
 
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1258
 
        case "$gcc_version" in
1259
 
            *2.95*)
1260
 
                add_cflags "-no-cpp-precomp -pipe"
1261
 
                ;;
1262
 
            *[34].*)
1263
 
                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1264
 
                if disabled shared; then
1265
 
                   needmdynamicnopic="yes"
1266
 
                fi
1267
 
                ;;
1268
 
            *)
1269
 
                add_cflags "-no-cpp-precomp -pipe"
1270
 
                if disabled shared; then
1271
 
                   needmdynamicnopic="yes"
1272
 
                fi
1273
 
                ;;
1274
 
        esac
1275
 
    fi
1276
 
fi
1277
 
 
1278
 
disabled optimize || add_cflags -fomit-frame-pointer
1279
 
 
1280
 
# Can only do AltiVec on PowerPC
1281
 
if test $altivec = "default"; then
1282
 
    if test $arch = "powerpc"; then
1283
 
        altivec="yes"
1284
 
    else
1285
 
        altivec="no"
1286
 
    fi
1287
 
fi
 
1358
        add_cflags "-pipe"
 
1359
        check_cflags "-force_cpusubtype_ALL"
 
1360
        check_cflags "-Wno-sign-compare"
 
1361
        enabled shared || check_cflags -mdynamic-no-pic
 
1362
    fi
 
1363
fi
 
1364
 
 
1365
disabled optimizations || add_cflags -fomit-frame-pointer
1288
1366
 
1289
1367
# Add processor-specific flags
1290
 
POWERPCMODE="32bits"
1291
1368
if test $cpu != "generic"; then
1292
1369
    warn_altivec(){
1293
1370
        $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1320
1397
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1321
1398
            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1322
1399
            warn_altivec disabled PPC970
1323
 
            POWERPCMODE="64bits"
 
1400
            enable ppc64
 
1401
        ;;
 
1402
        Cell|CELL|cell)
 
1403
            add_cflags "-mcpu=cell"
 
1404
            warn_altivec disabled Cell
 
1405
            enable ppc64
1324
1406
        ;;
1325
1407
        # targets that do NOT support conditional mov (cmov)
1326
1408
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1327
1409
            add_cflags "-march=$cpu"
1328
 
            cmov="no"
 
1410
            disable cmov
1329
1411
        ;;
1330
1412
        # targets that do support conditional mov (cmov)
1331
1413
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1332
1414
            add_cflags "-march=$cpu"
1333
 
            cmov="yes"
1334
 
            fast_cmov="yes"
 
1415
            enable cmov
 
1416
            enable fast_cmov
1335
1417
        ;;
1336
1418
        # targets that do support conditional mov but on which it's slow
1337
 
        pentium4|prescott|nocona)
 
1419
        pentium4|pentium4m|prescott|nocona)
1338
1420
            add_cflags "-march=$cpu"
1339
 
            cmov="yes"
1340
 
            fast_cmov="no"
 
1421
            enable cmov
 
1422
            disable fast_cmov
1341
1423
        ;;
1342
1424
        sparc64)
1343
1425
            add_cflags "-mcpu=v9"
1344
1426
        ;;
1345
 
        bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
1346
 
            add_cflags "-mfdpic"
1347
 
            add_ldflags "-mfdpic -Wl,--defsym,__stacksize=0x40000"
 
1427
        arm*)
 
1428
            add_cflags "-mcpu=$cpu"
1348
1429
        ;;
1349
1430
        *)
1350
 
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
 
1431
            echo "WARNING: Unknown CPU \"$cpu\", ignored."
1351
1432
        ;;
1352
1433
    esac
1353
1434
fi
1354
1435
 
1355
 
gnu_make(){
1356
 
    $1 --version 2>&1 | grep -q GNU
1357
 
}
1358
 
 
1359
 
if ! gnu_make $make; then
1360
 
    gnu_make gmake && make=gmake || die "GNU make not found."
1361
 
fi
1362
 
 
1363
1436
# make sure we can execute files in $TMPDIR
1364
 
cat >$TMPE 2>>$logfile <<EOF
 
1437
cat >$TMPSH 2>>$logfile <<EOF
1365
1438
#! /bin/sh
1366
1439
EOF
1367
 
chmod +x $TMPE >>$logfile 2>&1
1368
 
if ! $TMPE >>$logfile 2>&1; then
 
1440
chmod +x $TMPSH >>$logfile 2>&1
 
1441
if ! $TMPSH >>$logfile 2>&1; then
1369
1442
    cat <<EOF
1370
1443
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1371
1444
variable to another directory and make sure that $TMPDIR1 is not mounted
1373
1446
EOF
1374
1447
    die "Sanity test failed."
1375
1448
fi
1376
 
rm $TMPE
 
1449
rm $TMPSH
1377
1450
 
1378
1451
# compiler sanity check
1379
1452
check_exec <<EOF
1380
 
int main(){
1381
 
    return 0;
1382
 
}
 
1453
int main(void){ return 0; }
1383
1454
EOF
1384
1455
if test "$?" != 0; then
1385
1456
    echo "$cc is unable to create an executable file."
1386
 
    if test -z "$cross_prefix" && disabled cross_compile ; then
1387
 
        echo "If $cc is a cross-compiler, use the --cross-compile option."
 
1457
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
 
1458
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1388
1459
        echo "Only do this if you know what cross compiling means."
1389
1460
    fi
1390
1461
    die "C compiler test failed."
1391
1462
fi
1392
1463
 
 
1464
check_cc <<EOF || die "Symbol mangling check failed."
 
1465
int ff_extern;
 
1466
EOF
 
1467
sym=$($nm -P -g $TMPO)
 
1468
extern_prefix=${sym%%ff_extern*}
 
1469
 
 
1470
check_asm inline_asm '""'
 
1471
 
 
1472
if enabled x86; then
 
1473
    # check whether EBP is available on x86
 
1474
    # As 'i' is stored on the stack, this program will crash
 
1475
    # if the base pointer is used to access it because the
 
1476
    # base pointer is cleared in the inline assembly code.
 
1477
    check_exec_crash <<EOF && enable ebp_available
 
1478
    volatile int i=0;
 
1479
    asm volatile (
 
1480
        "xorl %%ebp, %%ebp"
 
1481
    ::: "%ebp");
 
1482
    return i;
 
1483
EOF
 
1484
 
 
1485
    # check wether EBX is available on x86
 
1486
    check_asm ebx_available '"":::"%ebx"'
 
1487
 
 
1488
    # check whether binutils is new enough to compile SSSE3/MMX2
 
1489
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
 
1490
    enabled mmx2  && check_asm mmx2  '"movss %xmm0, %xmm0"'
 
1491
 
 
1492
    check_asm bswap '"bswap %%eax" ::: "%eax"'
 
1493
fi
 
1494
 
1393
1495
# check for assembler specific support
1394
1496
 
1395
1497
if test $arch = "powerpc"; then
1396
 
check_cc <<EOF && dcbzl=yes
 
1498
check_cc <<EOF && enable dcbzl
1397
1499
int main(void) {
1398
1500
    register long zero = 0;
1399
1501
    char data[1024];
1406
1508
# check for SIMD availability
1407
1509
 
1408
1510
# AltiVec flags: The FSF version of GCC differs from the Apple version
1409
 
if test $arch = "powerpc"; then
1410
 
    if enabled altivec; then
1411
 
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1412
 
            add_cflags "-faltivec"
1413
 
        else
1414
 
            add_cflags "-maltivec -mabi=altivec"
1415
 
        fi
1416
 
    fi
1417
 
fi
1418
 
 
1419
 
check_header altivec.h
1420
 
 
1421
 
# check if our compiler supports Motorola AltiVec C API
1422
1511
if enabled altivec; then
1423
 
    if enabled altivec_h; then
1424
 
        inc_altivec_h="#include <altivec.h>"
1425
 
    else
 
1512
    check_cflags -maltivec -mabi=altivec &&
 
1513
        check_header altivec.h ||
 
1514
        check_cflags -faltivec
 
1515
 
 
1516
    # check if our compiler supports Motorola AltiVec C API
 
1517
    enabled altivec_h &&
 
1518
        inc_altivec_h="#include <altivec.h>" ||
1426
1519
        inc_altivec_h=
1427
 
    fi
1428
 
    check_cc <<EOF || altivec=no
 
1520
    check_cc <<EOF || disable altivec
1429
1521
$inc_altivec_h
1430
1522
int main(void) {
1431
1523
    vector signed int v1, v2, v3;
1435
1527
EOF
1436
1528
fi
1437
1529
 
1438
 
# check armv5te instructions support
1439
 
if test $armv5te = "default" -a $arch = "armv4l"; then
1440
 
    armv5te=no
1441
 
    check_cc <<EOF && armv5te=yes
1442
 
        int main(void) {
1443
 
        __asm__ __volatile__ ("qadd r0, r0, r0");
1444
 
        }
1445
 
EOF
1446
 
fi
1447
 
 
1448
 
if test $armv6 = "default" -a $arch = "armv4l"; then
1449
 
    check_cc <<EOF && armv6=yes || armv6=no
1450
 
int main(void) {
1451
 
    __asm__ __volatile__ ("sadd16 r0, r0, r0");
1452
 
}
1453
 
EOF
1454
 
fi
1455
 
 
1456
 
# check iwmmxt support
1457
 
if test $iwmmxt = "default" -a $arch = "armv4l"; then
1458
 
    iwmmxt=no
1459
 
    check_cc <<EOF && iwmmxt=yes
1460
 
        int main(void) {
1461
 
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
1462
 
        }
1463
 
EOF
1464
 
fi
1465
 
 
1466
 
# mmi only available on mips
1467
 
if test $mmi = "default"; then
1468
 
    if test $arch = "mips"; then
1469
 
        mmi="yes"
1470
 
    else
1471
 
        mmi="no"
1472
 
    fi
1473
 
fi
1474
 
 
1475
 
# check if our compiler supports mmi
1476
 
enabled mmi && check_cc <<EOF || mmi="no"
1477
 
int main(void) {
1478
 
    __asm__ ("lq \$2, 0(\$2)");
1479
 
    return 0;
1480
 
}
1481
 
EOF
 
1530
# We have to check if pld is a nop and disable it.
 
1531
enabled armv4l  && check_asm pld     '"pld [r0]"'
 
1532
enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
 
1533
enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
 
1534
enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
 
1535
enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
 
1536
enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
 
1537
enabled vis     && check_asm vis     '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
 
1538
 
 
1539
enabled vis && add_cflags "-mcpu=ultrasparc -mtune=ultrasparc"
1482
1540
 
1483
1541
# ---
1484
1542
# big/little-endian test
1485
 
if disabled cross_compile; then
1486
 
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1487
 
#include <inttypes.h>
1488
 
int main(int argc, char ** argv){
1489
 
        volatile uint32_t i=0x01234567;
1490
 
        return (*((uint8_t*)(&i))) == 0x67;
1491
 
}
 
1543
check_cc <<EOF || die "endian test failed"
 
1544
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
1492
1545
EOF
1493
 
else
1494
 
    # programs cannot be launched if cross compiling, so make a static guess
1495
 
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1496
 
        bigendian="yes"
1497
 
    fi
1498
 
fi
 
1546
od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
1499
1547
 
1500
1548
# ---
1501
1549
# check availability of some header files
1502
1550
 
 
1551
if check_func dlopen; then
 
1552
    ldl=
 
1553
elif check_func dlopen -ldl; then
 
1554
    ldl=-ldl
 
1555
fi
 
1556
 
 
1557
check_func  fork
 
1558
check_func  gethrtime
 
1559
check_func  getrusage
 
1560
check_func  inet_aton $network_extralibs
 
1561
check_func  memalign
 
1562
check_func  mkstemp
 
1563
check_func2 windows.h GetProcessTimes
 
1564
 
 
1565
check_header byteswap.h
 
1566
check_header conio.h
 
1567
check_header dlfcn.h
1503
1568
check_header malloc.h
1504
 
check_func memalign
 
1569
check_header sys/mman.h
 
1570
check_header termios.h
1505
1571
 
1506
 
if disabled_all memalign memalign_hack && enabled need_memalign ; then
 
1572
if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
1507
1573
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1508
1574
fi
1509
1575
 
1510
 
check_header byteswap.h
1511
 
 
1512
 
check_func inet_aton
1513
 
check_func localtime_r
1514
 
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
 
1576
enabled zlib && check_lib zlib.h zlibVersion -lz || disable zlib
1515
1577
 
1516
1578
# ffserver uses poll(),
1517
1579
# if it's not found we can emulate it using select().
1518
1580
if enabled ffserver; then
1519
 
    check_header sys/poll.h
 
1581
    check_header poll.h
 
1582
    check_header sys/select.h
1520
1583
fi
1521
1584
 
1522
1585
# check for some common methods of building with pthread support
1526
1589
        :
1527
1590
    elif check_func pthread_create -pthread; then
1528
1591
        add_cflags -pthread
1529
 
        add_ldflags -pthread
 
1592
        add_extralibs -pthread
1530
1593
    elif check_func pthread_create -pthreads; then
1531
1594
        add_cflags -pthreads
1532
 
        add_ldflags -pthreads
 
1595
        add_extralibs -pthreads
 
1596
    elif check_func pthread_create -lpthreadGC2; then
 
1597
        add_extralibs -lpthreadGC2
1533
1598
    elif ! check_lib pthread.h pthread_create -lpthread; then
1534
1599
        die "ERROR: can't find pthreads library"
1535
1600
    fi
1537
1602
 
1538
1603
for thread in $THREADS_LIST; do
1539
1604
    if enabled $thread; then
1540
 
        if ! disabled thread_type ; then
1541
 
            die "ERROR: Only one thread type must be selected."
1542
 
        else
 
1605
        test -n "$thread_type" &&
 
1606
            die "ERROR: Only one thread type must be selected." ||
1543
1607
            thread_type="$thread"
1544
 
        fi
1545
1608
    fi
1546
1609
done
1547
1610
 
1548
 
enabled_any amr_nb amr_nb_fixed amr_wb amr_if2 && enable amr
1549
 
enabled_all amr_nb amr_nb_fixed &&
1550
 
    die "Only one of amr_nb and amr_nb_fixed may be enabled."
 
1611
check_lib math.h sin -lm
 
1612
 
 
1613
# test for C99 functions in math.h
 
1614
for func in llrint lrint lrintf round roundf; do
 
1615
    check_exec <<EOF && enable $func || disable $func
 
1616
#define _ISOC9X_SOURCE  1
 
1617
#include <math.h>
 
1618
int main(void) { return ($func(3.999f) > 0)?0:1; }
 
1619
EOF
 
1620
done
1551
1621
 
1552
1622
# these are off by default, so fail if requested and not available
1553
 
enabled liba52     && require liba52 a52dec/a52.h a52_init -la52
1554
 
enabled libdts     && require libdts dts.h dts_init -ldts -lm
1555
 
enabled libgsm     && require libgsm gsm.h gsm_create -lgsm
1556
 
enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1557
 
enabled libtheora  && require libtheora theora/theora.h theora_info_init -ltheora -logg
1558
 
enabled libvorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1559
 
enabled libogg     && require libogg ogg/ogg.h ogg_sync_init -logg
1560
 
enabled libnut     && require libnut libnut.h nut_demuxer_init -lnut
1561
 
enabled xvid       && require XviD xvid.h xvid_global -lxvidcore
1562
 
enabled x264       && require x264 x264.h x264_encoder_open -lx264
1563
 
enabled dc1394     && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1564
 
enabled mlib       && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
 
1623
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
 
1624
enabled liba52     && require  liba52 a52dec/a52.h a52_init -la52
 
1625
enabled libamr_nb  && require  libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
 
1626
enabled libamr_wb  && require  libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1565
1627
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1566
1628
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
1567
 
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
1568
 
 
1569
 
# test for lrintf in math.h
1570
 
check_exec <<EOF && lrintf=yes || lrintf=no
1571
 
#define _ISOC9X_SOURCE  1
1572
 
#include <math.h>
1573
 
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1574
 
EOF
 
1629
enabled libgsm     && require  libgsm gsm.h gsm_create -lgsm
 
1630
enabled libmp3lame && require  LAME lame/lame.h lame_init -lmp3lame -lm
 
1631
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
 
1632
enabled libtheora  && require  libtheora theora/theora.h theora_info_init -ltheora -logg
 
1633
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
 
1634
enabled libx264    && require  x264 x264.h x264_encoder_open -lx264 -lm
 
1635
enabled libxvid    && require  Xvid xvid.h xvid_global -lxvidcore
 
1636
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
 
1637
 
 
1638
# disable the native AC-3 decoder if liba52 is enabled
 
1639
enabled liba52 && disable ac3_decoder
 
1640
 
 
1641
# libdc1394 check
 
1642
if enabled libdc1394; then
 
1643
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
 
1644
        enable libdc1394_2; } ||
 
1645
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
 
1646
        enable libdc1394_1; } ||
 
1647
    die "ERROR: No version of libdc1394 found "
 
1648
fi
 
1649
 
1575
1650
 
1576
1651
_restrict=
1577
1652
for restrict_keyword in restrict __restrict__ __restrict; do
1580
1655
EOF
1581
1656
done
1582
1657
 
1583
 
# dlopen/dlfcn.h probing
1584
 
 
1585
 
check_header dlfcn.h
1586
 
 
1587
 
if check_func dlopen; then
1588
 
    ldl=
1589
 
elif check_func dlopen -ldl; then
1590
 
    ldl=-ldl
1591
 
fi
1592
 
 
1593
1658
test "$vhook" = "default" && vhook="$dlopen"
1594
1659
 
1595
 
enabled_any vhook liba52bin libfaadbin ffserver && add_extralibs $ldl
1596
 
 
1597
 
if test "$targetos" = "CYGWIN" && enabled static ; then
1598
 
    vhook="no"
 
1660
if test "$target_os" = cygwin -o "$target_os" = mingw32 && enabled_all static vhook ; then
 
1661
    disable vhook
1599
1662
    echo
1600
 
    echo "At the moment vhooks don't work on Cygwin static builds."
 
1663
    echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
1601
1664
    echo "Patches welcome."
1602
1665
    echo
1603
1666
fi
1607
1670
    check_ldflags -export-dynamic
1608
1671
fi
1609
1672
 
1610
 
enabled audio_beos && add_extralibs "-lmedia -lbe"
1611
 
 
1612
1673
check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1613
1674
check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
1614
1675
 
1615
1676
##########################################
1616
1677
# SDL check
1617
1678
 
1618
 
sdl_too_old=no
1619
 
sdl=no
 
1679
disable sdl_too_old
 
1680
disable sdl
1620
1681
SDL_CONFIG="${cross_prefix}sdl-config"
1621
1682
if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
1622
1683
    sdl_cflags=`"${SDL_CONFIG}" --cflags`
1623
1684
    temp_cflags $sdl_cflags
1624
1685
    temp_extralibs `"${SDL_CONFIG}" --libs`
1625
 
    if check_lib SDL.h SDL_Init; then
 
1686
    if check_lib2 SDL.h SDL_Init; then
1626
1687
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1627
1688
        if test "$_sdlversion" -lt 121 ; then
1628
 
            sdl_too_old=yes
 
1689
            enable sdl_too_old
1629
1690
        else
1630
 
            sdl=yes
 
1691
            enable sdl
1631
1692
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
1632
1693
#include <SDL.h>
1633
 
int main(void){
 
1694
int main(int argc, char **argv){
1634
1695
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1635
1696
    int w = vi->current_w;
1636
1697
    return 0;
1643
1704
 
1644
1705
texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
1645
1706
 
 
1707
check_type sys/socket.h socklen_t
 
1708
 
 
1709
##########################################
 
1710
# Network check
 
1711
 
 
1712
if enabled network; then
 
1713
    # Prefer arpa/inet.h over winsock2
 
1714
    if check_header arpa/inet.h ; then
 
1715
        check_func closesocket
 
1716
    elif check_header winsock2.h ; then
 
1717
        network_extralibs="-lws2_32"
 
1718
        check_type ws2tcpip.h socklen_t
 
1719
        check_func2 winsock2.h closesocket
 
1720
    fi
 
1721
fi
 
1722
 
1646
1723
##########################################
1647
1724
# IPv6 check
1648
1725
 
1649
 
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
 
1726
enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
1650
1727
#include <sys/types.h>
1651
1728
#include <sys/socket.h>
1652
1729
#include <netinet/in.h>
1653
1730
#include <netdb.h>
1654
 
int main( void ) {
1655
 
  struct sockaddr_storage saddr;
1656
 
  struct ipv6_mreq mreq6;
1657
 
  getaddrinfo(0,0,0,0);
1658
 
  getnameinfo(0,0,0,0,0,0,0);
1659
 
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
 
1731
int main(void) {
 
1732
    struct sockaddr_storage saddr;
 
1733
    struct ipv6_mreq mreq6;
 
1734
    getaddrinfo(0,0,0,0);
 
1735
    getnameinfo(0,0,0,0,0,0,0);
 
1736
    IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1660
1737
}
1661
1738
EOF
1662
1739
 
1663
 
enabled v4l  && check_header linux/videodev.h  || disable v4l
1664
 
enabled v4l2 && check_header linux/videodev2.h || disable v4l2
 
1740
check_header linux/videodev.h
 
1741
check_header linux/videodev2.h
 
1742
 
 
1743
check_func2 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
1665
1744
 
1666
1745
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1667
 
if enabled bktr; then
1668
 
    { check_header dev/bktr/ioctl_meteor.h &&
1669
 
      check_header dev/bktr/ioctl_bt848.h; } ||
1670
 
    { check_header machine/ioctl_meteor.h &&
1671
 
      check_header machine/ioctl_bt848.h; } ||
1672
 
    { check_header dev/video/meteor/ioctl_meteor.h &&
1673
 
      check_header dev/video/bktr/ioctl_bt848.h; } ||
1674
 
    check_header dev/ic/bt8xx.h ||
1675
 
    disable bktr
1676
 
fi
1677
 
 
1678
 
enabled audio_oss &&
1679
 
    check_header sys/soundcard.h ||
1680
 
    check_header soundcard.h ||
1681
 
    disable audio_oss
1682
 
 
1683
 
# Deal with the x11 frame grabber
 
1746
{ check_header dev/bktr/ioctl_meteor.h &&
 
1747
  check_header dev/bktr/ioctl_bt848.h; } ||
 
1748
{ check_header machine/ioctl_meteor.h &&
 
1749
  check_header machine/ioctl_bt848.h; } ||
 
1750
{ check_header dev/video/meteor/ioctl_meteor.h &&
 
1751
  check_header dev/video/bktr/ioctl_bt848.h; } ||
 
1752
check_header dev/ic/bt8xx.h
 
1753
 
 
1754
check_header sys/soundcard.h
 
1755
check_header soundcard.h
 
1756
 
 
1757
# deal with the X11 frame grabber
1684
1758
enabled x11grab                         &&
1685
 
enabled gpl                             &&
1686
 
enabled x11_grab_device_demuxer         &&
1687
1759
check_header X11/Xlib.h                 &&
1688
1760
check_header X11/extensions/XShm.h      &&
1689
1761
check_func XOpenDisplay -lX11           &&
1690
 
check_func XShmCreateImage -lX11 -lXext &&
1691
 
add_extralibs -lX11 -lXext              ||
1692
 
disable x11_grab_device_demuxer
 
1762
check_func XShmCreateImage -lX11 -lXext
1693
1763
 
1694
 
enabled debug && add_cflags -g
 
1764
enabled debug && add_cflags -g"$debuglevel"
1695
1765
 
1696
1766
# add some useful compiler flags if supported
1697
1767
check_cflags -Wdeclaration-after-statement
1701
1771
check_cflags -Wpointer-arith
1702
1772
check_cflags -Wredundant-decls
1703
1773
check_cflags -Wno-pointer-sign
 
1774
check_cflags -Wcast-qual
 
1775
check_cflags -Wwrite-strings
 
1776
check_cflags -Wtype-limits
1704
1777
enabled extra_warnings && check_cflags -Winline
1705
1778
 
1706
1779
# add some linker flags
 
1780
check_ldflags -Wl,--warn-common
1707
1781
check_ldflags $LDLATEFLAGS
1708
 
 
1709
 
# not all compilers support -Os
1710
 
test "$optimize" = "small" && check_cflags -Os
1711
 
 
1712
 
if enabled optimize; then
1713
 
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
 
1782
check_ldflags -Wl,-Bsymbolic
 
1783
 
 
1784
if enabled small; then
 
1785
    check_cflags -Os            # not all compilers support -Os
 
1786
    optimizations="small"
 
1787
elif enabled optimizations; then
 
1788
    if $cc -v 2>&1 | grep -q xlc; then
1714
1789
        add_cflags  "-O5"
1715
1790
        add_ldflags "-O5"
1716
1791
    else
1717
1792
        add_cflags "-O3"
1718
1793
    fi
1719
1794
fi
 
1795
check_cflags -fno-math-errno
 
1796
check_cflags -fno-signed-zeros
1720
1797
 
1721
1798
# PIC flags for shared library objects where they are needed
1722
1799
if enabled shared; then
1723
1800
    # LIBOBJFLAGS may have already been set in the OS configuration
1724
1801
    if test -z "$LIBOBJFLAGS" ; then
1725
1802
        case "$arch" in
1726
 
            x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS="\$(PIC)" ;;
 
1803
            x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS='$(PIC)' ;;
1727
1804
        esac
1728
1805
    fi
1729
1806
fi
1733
1810
    add_ldflags "-p"
1734
1811
fi
1735
1812
 
1736
 
VHOOKCFLAGS="-fPIC $CFLAGS"
1737
 
enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
 
1813
VHOOKCFLAGS="-fPIC"
1738
1814
 
1739
 
# find if .align arg is power-of-two or not
 
1815
# Find out if the .align argument is a power of two or not.
1740
1816
if test $asmalign_pot = "unknown"; then
1741
 
    asmalign_pot="no"
1742
 
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
 
1817
    disable asmalign_pot
 
1818
    echo 'asm (".align 3");' | check_cc && enable asmalign_pot
1743
1819
fi
1744
1820
 
1745
 
enabled_any $ENCODER_LIST && enable encoders
1746
 
enabled_any $DECODER_LIST && enable decoders
1747
 
enabled_any $MUXER_LIST   && enable muxers
1748
 
enabled_any $DEMUXER_LIST && enable demuxers
1749
 
 
1750
 
enabled_any $THREADS_LIST && enable threads
1751
 
 
1752
 
check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
1753
 
    $DEMUXER_LIST $MUXER_LIST
1754
 
 
1755
 
enabled libogg    && append pkg_requires "ogg >= 1.1"
 
1821
enabled_any $DECODER_LIST      && enable decoders
 
1822
enabled_any $ENCODER_LIST      && enable encoders
 
1823
enabled_any $BSF_LIST          && enable bsfs
 
1824
enabled_any $DEMUXER_LIST      && enable demuxers
 
1825
enabled_any $MUXER_LIST        && enable muxers
 
1826
enabled_any $FILTER_LIST       && enable filters
 
1827
enabled_any $INDEV_LIST        && enable demuxers
 
1828
enabled_any $OUTDEV_LIST       && enable muxers
 
1829
enabled_any $PROTOCOL_LIST     && enable protocols
 
1830
 
 
1831
enabled_any $THREADS_LIST      && enable threads
 
1832
 
 
1833
check_deps $CONFIG_LIST       \
 
1834
           $HAVE_LIST         \
 
1835
           $DECODER_LIST      \
 
1836
           $ENCODER_LIST      \
 
1837
           $PARSER_LIST       \
 
1838
           $BSF_LIST          \
 
1839
           $DEMUXER_LIST      \
 
1840
           $MUXER_LIST        \
 
1841
           $FILTER_LIST       \
 
1842
           $INDEV_LIST        \
 
1843
           $OUTDEV_LIST       \
 
1844
           $PROTOCOL_LIST     \
 
1845
 
 
1846
enabled libdc1394 && append pkg_requires "libraw1394"
1756
1847
enabled libtheora && append pkg_requires "theora"
1757
 
enabled libvorbis && append pkg_requires "vorbis vorbisenc"
1758
 
enabled dc1394    && append pkg_requires "libraw1394"
 
1848
enabled libvorbis && append pkg_requires "vorbisenc"
1759
1849
 
1760
 
echo "install prefix            $PREFIX"
 
1850
echo "install prefix            $prefix"
1761
1851
echo "source path               $source_path"
1762
1852
echo "C compiler                $cc"
1763
 
echo "make                      $make"
1764
1853
echo ".align is power-of-two    $asmalign_pot"
1765
1854
echo "ARCH                      $arch ($cpu)"
1766
 
if test "$BUILDSUF" != ""; then
1767
 
    echo "build suffix              $BUILDSUF"
 
1855
if test "$build_suffix" != ""; then
 
1856
    echo "build suffix              $build_suffix"
1768
1857
fi
1769
 
echo "big-endian                $bigendian"
 
1858
echo "big-endian                ${bigendian-no}"
1770
1859
if test $arch = "x86_32" -o $arch = "x86_64"; then
1771
 
    echo "MMX enabled               $mmx"
1772
 
    echo "CMOV enabled              $cmov"
1773
 
    echo "CMOV is fast              $fast_cmov"
 
1860
    echo "MMX enabled               ${mmx-no}"
 
1861
    echo "CMOV enabled              ${cmov-no}"
 
1862
    echo "CMOV is fast              ${fast_cmov-no}"
 
1863
    echo "EBX available             ${ebx_available-no}"
 
1864
    echo "EBP available             ${ebp_available-no}"
1774
1865
fi
1775
1866
if test $arch = "armv4l"; then
1776
 
    echo "ARMv5TE enabled           $armv5te"
1777
 
    echo "ARMv6 enabled             $armv6"
1778
 
    echo "IWMMXT enabled            $iwmmxt"
 
1867
    echo "ARMv5TE enabled           ${armv5te-no}"
 
1868
    echo "ARMv6 enabled             ${armv6-no}"
 
1869
    echo "ARM VFP enabled           ${armvfp-no}"
 
1870
    echo "IWMMXT enabled            ${iwmmxt-no}"
1779
1871
fi
1780
1872
if test $arch = "mips"; then
1781
 
    echo "MMI enabled               $mmi"
 
1873
    echo "MMI enabled               ${mmi-no}"
1782
1874
fi
1783
1875
if test $arch = "powerpc"; then
1784
 
    echo "AltiVec enabled           $altivec"
1785
 
    echo "dcbzl available           $dcbzl"
 
1876
    echo "AltiVec enabled           ${altivec-no}"
 
1877
    echo "dcbzl available           ${dcbzl-no}"
1786
1878
fi
1787
 
echo "gprof enabled             $gprof"
1788
 
echo "debug symbols             $debug"
1789
 
echo "strip symbols             $dostrip"
1790
 
echo "optimize                  $optimize"
1791
 
echo "static                    $static"
1792
 
echo "shared                    $shared"
1793
 
echo "postprocessing support    $pp"
1794
 
echo "software scaler enabled   $swscaler"
1795
 
echo "video hooking             $vhook"
 
1879
echo "gprof enabled             ${gprof-no}"
 
1880
echo "debug symbols             ${debug-no}"
 
1881
echo "strip symbols             ${stripping-no}"
 
1882
echo "optimizations             ${optimizations-no}"
 
1883
echo "static                    ${static-no}"
 
1884
echo "shared                    ${shared-no}"
 
1885
echo "postprocessing support    ${postproc-no}"
 
1886
echo "software scaler enabled   ${swscale-no}"
 
1887
echo "new filter support        ${avfilter-no}"
 
1888
echo "filters using lavformat   ${avfilter_lavf-no}"
 
1889
echo "video hooking             ${vhook-no}"
1796
1890
if enabled vhook; then
1797
 
    echo "Imlib2 support            $imlib2"
1798
 
    echo "FreeType support          $freetype2"
 
1891
    echo "Imlib2 support            ${imlib2-no}"
 
1892
    echo "FreeType support          ${freetype2-no}"
1799
1893
fi
1800
 
echo "network support           $network"
 
1894
echo "network support           ${network-no}"
1801
1895
if enabled network; then
1802
 
    echo "IPv6 support              $ipv6"
 
1896
    echo "IPv6 support              ${ipv6-no}"
1803
1897
fi
1804
 
echo "threading support         $thread_type"
1805
 
echo "SDL support               $sdl"
 
1898
echo "threading support         ${thread_type-no}"
 
1899
echo "SDL support               ${sdl-no}"
1806
1900
if enabled sdl_too_old; then
1807
1901
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1808
1902
fi
1809
 
echo "Sun medialib support      $mlib"
1810
 
echo "AVISynth enabled          $avisynth"
1811
 
echo "liba52 support            $liba52"
1812
 
echo "liba52 dlopened           $liba52bin"
1813
 
echo "libdts support            $libdts"
1814
 
echo "libfaac enabled           $libfaac"
1815
 
echo "libfaad enabled           $libfaad"
1816
 
echo "faadbin enabled           $libfaadbin"
1817
 
echo "libgsm enabled            $libgsm"
1818
 
echo "libmp3lame enabled        $libmp3lame"
1819
 
echo "libnut enabled            $libnut"
1820
 
echo "libogg enabled            $libogg"
1821
 
echo "libtheora enabled         $libtheora"
1822
 
echo "libvorbis enabled         $libvorbis"
1823
 
echo "x264 enabled              $x264"
1824
 
echo "XviD enabled              $xvid"
1825
 
echo "zlib enabled              $zlib"
1826
 
echo "AMR-NB float support      $amr_nb"
1827
 
echo "AMR-NB fixed support      $amr_nb_fixed"
1828
 
echo "AMR-WB float support      $amr_wb"
1829
 
echo "AMR-WB IF2 support        $amr_if2"
1830
 
if disabled gpl; then
1831
 
    echo "License: LGPL"
1832
 
else
1833
 
    echo "License: GPL"
1834
 
fi
 
1903
echo "Sun medialib support      ${mlib-no}"
 
1904
echo "AVISynth enabled          ${avisynth-no}"
 
1905
echo "liba52 support            ${liba52-no}"
 
1906
echo "liba52 dlopened           ${liba52bin-no}"
 
1907
echo "libamr-nb support         ${libamr_nb-no}"
 
1908
echo "libamr-wb support         ${libamr_wb-no}"
 
1909
echo "libdc1394 support         ${libdc1394-no}"
 
1910
echo "libfaac enabled           ${libfaac-no}"
 
1911
echo "libfaad enabled           ${libfaad-no}"
 
1912
echo "libfaad dlopened          ${libfaadbin-no}"
 
1913
echo "libgsm enabled            ${libgsm-no}"
 
1914
echo "libmp3lame enabled        ${libmp3lame-no}"
 
1915
echo "libnut enabled            ${libnut-no}"
 
1916
echo "libtheora enabled         ${libtheora-no}"
 
1917
echo "libvorbis enabled         ${libvorbis-no}"
 
1918
echo "x264 enabled              ${libx264-no}"
 
1919
echo "XviD enabled              ${libxvid-no}"
 
1920
echo "zlib enabled              ${zlib-no}"
 
1921
echo
 
1922
 
 
1923
for type in decoder encoder parser demuxer muxer protocol filter bsf indev outdev; do
 
1924
    echo "Enabled ${type}s:"
 
1925
    eval list=\$$(toupper $type)_LIST
 
1926
    for part in $list; do
 
1927
        enabled $part && echo ${part%_*}
 
1928
    done | sort | pr -3 -t
 
1929
    echo
 
1930
done
 
1931
 
 
1932
enabled nonfree &&
 
1933
    echo "License: unredistributable" ||
 
1934
    (enabled gpl &&
 
1935
        echo "License: GPL" ||
 
1936
        echo "License: LGPL")
1835
1937
 
1836
1938
echo "Creating config.mak and config.h..."
1837
1939
 
1838
1940
echo "# Automatically generated by configure - do not modify!" > config.mak
1839
1941
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
 
1942
echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
 
1943
echo "#define FFMPEG_CONFIG_H" >> $TMPH
1840
1944
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
1841
1945
 
1842
 
echo "PREFIX=$PREFIX" >> config.mak
1843
 
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1844
 
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1845
 
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1846
 
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1847
 
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1848
 
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1849
 
echo "MAKE=$make" >> config.mak
 
1946
echo "PREFIX=$prefix" >> config.mak
 
1947
echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
 
1948
echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
 
1949
echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
 
1950
echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
 
1951
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
 
1952
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
1850
1953
echo "CC=$cc" >> config.mak
1851
1954
echo "AR=$ar" >> config.mak
1852
1955
echo "RANLIB=$ranlib" >> config.mak
1853
 
if enabled dostrip; then
1854
 
    echo "STRIP=$strip" >> config.mak
1855
 
else
 
1956
echo "LN_S=$ln_s" >> config.mak
 
1957
enabled stripping &&
 
1958
    echo "STRIP=$strip" >> config.mak ||
1856
1959
    echo "STRIP=echo ignoring strip" >> config.mak
1857
 
fi
1858
1960
 
1859
1961
echo "OPTFLAGS=$CFLAGS" >> config.mak
1860
1962
echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1861
1963
echo "LDFLAGS=$LDFLAGS" >> config.mak
1862
 
echo "LDCONFIG=$LDCONFIG" >> config.mak
1863
1964
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1864
1965
echo "SHFLAGS=$SHFLAGS" >> config.mak
1865
1966
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1866
1967
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1867
1968
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1868
1969
echo "BUILD_STATIC=$static" >> config.mak
1869
 
echo "BUILDSUF=$BUILDSUF" >> config.mak
 
1970
echo "BUILDSUF=$build_suffix" >> config.mak
 
1971
echo "FULLNAME=$FULLNAME" >> config.mak
1870
1972
echo "LIBPREF=$LIBPREF" >> config.mak
1871
 
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1872
 
if enabled static; then
1873
 
  echo "LIB=$LIB" >> config.mak
1874
 
else # Some Make complain if this variable does not exist.
1875
 
  echo "LIB=" >> config.mak
1876
 
fi
 
1973
echo "LIBSUF=$LIBSUF" >> config.mak
 
1974
echo "LIBNAME=$LIBNAME" >> config.mak
1877
1975
echo "SLIBPREF=$SLIBPREF" >> config.mak
1878
 
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1879
 
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1880
 
 
1881
 
ucarch=`toupper $arch`
1882
 
echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1883
 
echo "#define ARCH_${ucarch} 1" >> $TMPH
1884
 
 
1885
 
# special cases
1886
 
case "$arch" in
1887
 
    x86_32|x86_64)
1888
 
        echo "TARGET_ARCH_X86=yes" >> config.mak
1889
 
        echo "#define ARCH_X86 1" >> $TMPH
1890
 
        ;;
1891
 
    powerpc)
1892
 
        if test "$POWERPCMODE" = "64bits"; then
1893
 
            echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1894
 
        fi
1895
 
        ;;
1896
 
    sparc64)
1897
 
        echo "TARGET_ARCH_SPARC=yes" >> config.mak
1898
 
        echo "#define ARCH_SPARC 1" >> $TMPH
1899
 
        ;;
1900
 
esac
 
1976
echo "SLIBSUF=$SLIBSUF" >> config.mak
 
1977
echo "EXESUF=$EXESUF" >> config.mak
 
1978
echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak
1901
1979
 
1902
1980
if enabled bigendian; then
1903
 
  echo "WORDS_BIGENDIAN=yes" >> config.mak
1904
 
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1905
 
fi
1906
 
if enabled mmx; then
1907
 
  echo "#define __CPU__ 586" >> $TMPH
 
1981
    echo "WORDS_BIGENDIAN=yes" >> config.mak
 
1982
    echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1908
1983
fi
1909
1984
 
1910
1985
if enabled sdl; then
1911
 
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1912
 
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
 
1986
    echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
 
1987
    echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1913
1988
fi
1914
1989
if enabled texi2html; then
1915
 
  echo "BUILD_DOC=yes" >> config.mak
 
1990
    echo "BUILD_DOC=yes" >> config.mak
1916
1991
fi
1917
1992
 
1918
 
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1919
 
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1920
 
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1921
 
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1922
 
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1923
 
 
1924
 
 
 
1993
get_version(){
 
1994
    name=$1
 
1995
    file=$source_path/$2
 
1996
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
 
1997
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
 
1998
    lcname=$(tolower $name)
 
1999
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
 
2000
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
 
2001
}
 
2002
 
 
2003
get_version LIBSWSCALE  libswscale/swscale.h
 
2004
get_version LIBPOSTPROC libpostproc/postprocess.h
 
2005
get_version LIBAVCODEC  libavcodec/avcodec.h
 
2006
get_version LIBAVDEVICE libavdevice/avdevice.h
 
2007
get_version LIBAVFORMAT libavformat/avformat.h
 
2008
get_version LIBAVUTIL   libavutil/avutil.h
 
2009
get_version LIBAVFILTER libavfilter/avfilter.h
1925
2010
 
1926
2011
if enabled shared; then
1927
 
  echo "BUILD_SHARED=yes" >> config.mak
1928
 
  echo "PIC=-fPIC -DPIC" >> config.mak
1929
 
  echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
1930
 
  echo "SPPVERSION=$pp_version" >> config.mak
1931
 
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1932
 
  echo "LAVCVERSION=$lavc_version" >> config.mak
1933
 
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1934
 
  echo "LAVFVERSION=$lavf_version" >> config.mak
1935
 
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1936
 
  echo "LAVUVERSION=$lavu_version" >> config.mak
1937
 
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1938
 
  echo "SWSVERSION=$sws_version" >> config.mak
1939
 
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1940
 
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1941
 
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1942
 
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1943
 
  echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
 
2012
    echo "BUILD_SHARED=yes" >> config.mak
 
2013
    echo "PIC=-fPIC -DPIC" >> config.mak
 
2014
    echo "SLIBNAME=${SLIBNAME}" >> config.mak
 
2015
    echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
 
2016
    echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
 
2017
    echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
 
2018
    echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
 
2019
    echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
 
2020
    echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
1944
2021
fi
1945
2022
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1946
2023
echo "EXTRALIBS=$extralibs" >> config.mak
1947
2024
 
 
2025
print_config ARCH_   $TMPH config.mak $ARCH_LIST
1948
2026
print_config HAVE_   $TMPH config.mak $HAVE_LIST
1949
 
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1950
 
print_config TARGET_ $TMPH config.mak $TARGET_LIST
1951
 
 
1952
 
if test "$targetos" = "Darwin"; then
1953
 
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
1954
 
fi
 
2027
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
 
2028
                                      $DECODER_LIST      \
 
2029
                                      $ENCODER_LIST      \
 
2030
                                      $PARSER_LIST       \
 
2031
                                      $BSF_LIST          \
 
2032
                                      $DEMUXER_LIST      \
 
2033
                                      $MUXER_LIST        \
 
2034
                                      $FILTER_LIST       \
 
2035
                                      $PROTOCOL_LIST     \
 
2036
                                      $INDEV_LIST        \
 
2037
                                      $OUTDEV_LIST       \
1955
2038
 
1956
2039
echo "#define restrict $_restrict" >> $TMPH
1957
2040
 
1958
 
if test "$optimize" = "small"; then
1959
 
  echo "#define always_inline"  >> $TMPH
1960
 
  echo "#define CONFIG_SMALL 1" >> $TMPH
 
2041
if enabled small; then
 
2042
    echo "#define av_always_inline"  >> $TMPH
1961
2043
fi
1962
2044
 
1963
2045
echo "SRC_PATH=\"$source_path\"" >> config.mak
1964
2046
echo "SRC_PATH_BARE=$source_path" >> config.mak
1965
2047
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
1966
2048
 
1967
 
if enabled amr_if2; then
1968
 
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
1969
 
fi
1970
 
 
1971
2049
# Apparently it's not possible to portably echo a backslash.
1972
 
if enabled asmalign_pot; then
1973
 
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
1974
 
else
1975
 
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
1976
 
fi
1977
 
 
1978
 
 
1979
 
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
1980
 
    ucname="`toupper $codec`"
1981
 
    config_name="CONFIG_$ucname"
1982
 
    enabled_name="ENABLE_$ucname"
1983
 
    if enabled $codec; then
1984
 
        echo "#define $config_name 1" >> $TMPH
1985
 
        echo "#define $enabled_name 1" >> $TMPH
1986
 
        echo "$config_name=yes" >> config.mak
1987
 
    else
1988
 
        echo "#define $enabled_name 0" >> $TMPH
1989
 
    fi
1990
 
done
1991
 
 
1992
 
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
1993
 
if ! cmp -s $TMPH config.h; then
1994
 
        mv -f $TMPH config.h
1995
 
else
1996
 
        echo "config.h is unchanged"
1997
 
fi
1998
 
 
1999
 
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
 
2050
enabled asmalign_pot &&
 
2051
    printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
 
2052
    printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
 
2053
 
 
2054
echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
 
2055
 
 
2056
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
 
2057
 
 
2058
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
 
2059
cmp -s $TMPH config.h &&
 
2060
    echo "config.h is unchanged" ||
 
2061
    mv -f $TMPH config.h
 
2062
 
 
2063
rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
2000
2064
 
2001
2065
# build tree in object directory if source path is different from current one
2002
2066
if enabled source_path_used; then
2003
2067
    DIRS="\
2004
 
         doc \
2005
 
         libavformat \
2006
 
         libavcodec \
2007
 
         libavcodec/alpha \
2008
 
         libavcodec/armv4l \
2009
 
         libavcodec/bfin \
2010
 
         libavcodec/i386 \
2011
 
         libavcodec/sparc \
2012
 
         libavcodec/mlib \
2013
 
         libavcodec/ppc \
2014
 
         libavcodec/amr \
2015
 
         libavcodec/amr_float \
2016
 
         libavcodec/amrwb_float \
2017
 
         libpostproc \
2018
 
         libavutil \
2019
 
         libswscale \
2020
 
         tests \
2021
 
         vhook \
2022
 
         "
 
2068
        doc               \
 
2069
        libavcodec        \
 
2070
        libavcodec/alpha  \
 
2071
        libavcodec/armv4l \
 
2072
        libavcodec/bfin   \
 
2073
        libavcodec/i386   \
 
2074
        libavcodec/mlib   \
 
2075
        libavcodec/ppc    \
 
2076
        libavcodec/sh4    \
 
2077
        libavcodec/sparc  \
 
2078
        libavdevice       \
 
2079
        libavfilter       \
 
2080
        libavformat       \
 
2081
        libavutil         \
 
2082
        libpostproc       \
 
2083
        libswscale        \
 
2084
        tests             \
 
2085
        tools             \
 
2086
        vhook             \
 
2087
        "
2023
2088
    FILES="\
2024
 
          Makefile \
2025
 
          common.mak \
2026
 
          libavformat/Makefile \
2027
 
          libavcodec/Makefile \
2028
 
          libpostproc/Makefile \
2029
 
          libavutil/Makefile \
2030
 
          libswscale/Makefile \
2031
 
          tests/Makefile \
2032
 
          vhook/Makefile \
2033
 
          doc/Makefile \
2034
 
          doc/texi2pod.pl \
2035
 
          "
 
2089
        Makefile             \
 
2090
        common.mak           \
 
2091
        subdir.mak           \
 
2092
        doc/texi2pod.pl      \
 
2093
        libavcodec/Makefile  \
 
2094
        libavdevice/Makefile \
 
2095
        libavfilter/Makefile \
 
2096
        libavformat/Makefile \
 
2097
        libavutil/Makefile   \
 
2098
        libpostproc/Makefile \
 
2099
        libswscale/Makefile  \
 
2100
        "
2036
2101
    for dir in $DIRS ; do
2037
 
            mkdir -p $dir
 
2102
        mkdir -p $dir
2038
2103
    done
2039
2104
    for f in $FILES ; do
2040
 
        ln -sf "$source_path/$f" $f
 
2105
        $ln_s "$source_path/$f" $f
2041
2106
    done
2042
2107
fi
2043
2108
 
2044
2109
 
2045
2110
# build pkg-config files
2046
 
# FIXME: libdir and includedir are hardcoded and may differ from the real path.
2047
2111
 
2048
2112
pkgconfig_generate(){
2049
2113
name=$1
2051
2115
version=$3
2052
2116
libs=$4
2053
2117
requires=$5
2054
 
include=$6
2055
2118
cat <<EOF >$name.pc
2056
 
prefix=$PREFIX
 
2119
prefix=$prefix
2057
2120
exec_prefix=\${prefix}
2058
 
libdir=\${exec_prefix}/lib
2059
 
includedir=\${prefix}/include
 
2121
libdir=$libdir
 
2122
includedir=$incdir
2060
2123
 
2061
2124
Name: $name
2062
2125
Description: $comment
2064
2127
Requires: $requires
2065
2128
Conflicts:
2066
2129
Libs: -L\${libdir} $libs
2067
 
Cflags: -I\${includedir} -I\${includedir}/$include
 
2130
Cflags: -I\${includedir}
2068
2131
EOF
2069
2132
}
2070
2133
 
2079
2142
prefix=
2080
2143
exec_prefix=
2081
2144
libdir=\${pcfiledir}/$name
2082
 
includedir=\${pcfiledir}/$name
 
2145
includedir=\${pcfiledir}
2083
2146
 
2084
2147
Name: $name
2085
2148
Description: $comment
2091
2154
EOF
2092
2155
}
2093
2156
 
2094
 
pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
2095
 
pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
2096
 
 
2097
 
pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2098
 
pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
2099
 
 
2100
 
pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2101
 
pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
2102
 
 
2103
 
if enabled pp; then
2104
 
  pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2105
 
  pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
 
2157
pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" -lavutil ""
 
2158
pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
 
2159
 
 
2160
pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "-lavcodec $extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION"
 
2161
pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION"
 
2162
 
 
2163
pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "-lavformat $extralibs" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
 
2164
pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
 
2165
 
 
2166
pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "-lavdevice $extralibs" "$pkg_requires libavformat = $LIBAVFORMAT_VERSION"
 
2167
pkgconfig_generate_uninstalled libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$pkg_requires libavformat = $LIBAVFORMAT_VERSION"
 
2168
if enabled postproc; then
 
2169
    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" -lpostproc ""
 
2170
    pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
2106
2171
fi
2107
2172
 
2108
 
if enabled swscaler; then
2109
 
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale
2110
 
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
 
2173
if enabled swscale; then
 
2174
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" -lswscale "libavutil = $LIBAVUTIL_VERSION"
 
2175
    pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
2111
2176
else
2112
 
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale
2113
 
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
2114
 
  apply libswscale.pc sed s/^Libs:.*$/Libs:/
2115
 
  apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
 
2177
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
 
2178
    pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
 
2179
    apply libswscale.pc sed s/^Libs:.*$/Libs:/
 
2180
    apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
 
2181
fi
 
2182
 
 
2183
if enabled avfilter; then
 
2184
  pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "-lavfilter $extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION" ffmpeg
 
2185
  pkgconfig_generate_uninstalled libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION"
2116
2186
fi