configure 63.7 KB
Newer Older
F
Fabrice Bellard 已提交
1
#!/bin/sh
2
#
F
Fabrice Bellard 已提交
3
# ffmpeg configure script (c) 2000, 2001, 2002 Fabrice Bellard
4
#
5

6
# make sure we are running under a compatible shell
M
Måns Rullgård 已提交
7 8
unset foo
(: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null
9 10 11 12 13 14 15 16 17 18 19 20
if test "$?" != 0; then
    if test "x$FFMPEG_CONFIGURE_EXEC" = x; then
        FFMPEG_CONFIGURE_EXEC=1
        export FFMPEG_CONFIGURE_EXEC
        exec bash "$0" "$@"
        exec ksh "$0" "$@"
        exec /usr/xpg4/bin/sh "$0" "$@"
    fi
    echo "No compatible shell script interpreter found."
    exit 1
fi

21 22 23 24 25 26
show_help(){
  echo "Usage: configure [options]"
  echo "Options: [defaults in brackets after descriptions]"
  echo
  echo "Standard options:"
  echo "  --help                   print this message"
27
  echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
28
  echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
29
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
30
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
31 32 33
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
  echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
  echo "  --enable-mp3lame         enable MP3 encoding via libmp3lame [default=no]"
34
  echo "  --enable-libnut          enable NUT support via libnut [default=no]"
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
  echo "  --enable-libogg          enable Ogg support via libogg [default=no]"
  echo "  --enable-vorbis          enable Vorbis support via libvorbis [default=no]"
  echo "  --enable-faad            enable FAAD support via libfaad [default=no]"
  echo "  --enable-faadbin         build FAAD support with runtime linking [default=no]"
  echo "  --enable-faac            enable FAAC support via libfaac [default=no]"
  echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
  echo "  --enable-xvid            enable XviD support via xvidcore [default=no]"
  echo "  --enable-x264            enable H.264 encoding via x264 [default=no]"
  echo "  --enable-mingw32         enable MinGW native/cross Windows compile"
  echo "  --enable-mingwce         enable MinGW native/cross WinCE compile"
  echo "  --enable-a52             enable GPLed A52 support [default=no]"
  echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
  echo "  --enable-dts             enable GPLed DTS support [default=no]"
  echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
  echo "  --enable-static          build static libraries [default=yes]"
  echo "  --disable-static         do not build static libraries [default=no]"
  echo "  --enable-shared          build shared libraries [default=no]"
  echo "  --disable-shared         do not build shared libraries [default=yes]"
  echo "  --enable-amr_nb          enable amr_nb float audio codec"
  echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
  echo "  --enable-amr_wb          enable amr_wb float audio codec"
  echo "  --enable-amr_if2         enable amr_wb IF2 audio codec"
  echo "  --enable-sunmlib         use Sun medialib [default=no]"
  echo "  --enable-pthreads        use pthreads [default=no]"
  echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
  echo "                           and libraw1394 [default=no]"
L
Luca Abeni 已提交
61
  echo "  --enable-swscaler        software scaler support [default=no]"
62
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
63 64 65 66 67 68
  echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
  echo "                           and ffmpeg will be under GPL [default=no]"
  echo ""
  echo "Advanced options (experts only):"
  echo "  --source-path=PATH       path to source code [$source_path]"
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
69
  echo "  --cross-compile          assume a cross-compiler is used"
70 71 72 73 74 75
  echo "  --cc=CC                  use C compiler CC [$cc]"
  echo "  --make=MAKE              use specified make [$make]"
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
76
  echo "  --arch=ARCH              select architecture  [$arch]"
77 78
  echo "  --cpu=CPU                selects the minimum cpu required (affects
                                   instruction selection, may crash on older CPUs)"
79 80 81
  echo "  --powerpc-perf-enable    enable performance report on PPC"
  echo "                           (requires enabling PMC)"
  echo "  --disable-mmx            disable MMX usage"
82
  echo "  --disable-armv5te        disable armv5te usage"
83 84 85 86 87 88 89 90 91
  echo "  --disable-iwmmxt         disable iwmmxt usage"
  echo "  --disable-altivec        disable AltiVec usage"
  echo "  --disable-audio-oss      disable OSS audio support [default=no]"
  echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
  echo "  --disable-v4l            disable video4linux grabbing [default=no]"
  echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
  echo "  --disable-bktr           disable bktr video grabbing [default=no]"
  echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
  echo "  --disable-network        disable network support [default=no]"
92
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
93 94 95 96 97 98
  echo "  --disable-zlib           disable zlib [default=no]"
  echo "  --disable-simple_idct    disable simple IDCT routines [default=no]"
  echo "  --disable-vhook          disable video hooking support"
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
  echo "  --disable-debug          disable debugging symbols"
  echo "  --disable-opts           disable compiler optimizations"
99
  echo "  --enable-extra-warnings  enable more compiler warnings"
100 101 102
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
  echo "                           MPEG audio decoding [default=no]"
  echo "  --disable-protocols      disable I/O protocols support [default=no]"
103
  echo "  --disable-ffmpeg         disable ffmpeg build"
104 105 106 107 108 109 110 111 112 113 114
  echo "  --disable-ffserver       disable ffserver build"
  echo "  --disable-ffplay         disable ffplay build"
  echo "  --enable-small           optimize for size instead of speed"
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
  echo "  --disable-strip          disable stripping of executables and shared libraries"
  echo "  --disable-encoder=NAME   disables encoder NAME"
  echo "  --enable-encoder=NAME    enables encoder NAME"
  echo "  --disable-decoder=NAME   disables decoder NAME"
  echo "  --enable-decoder=NAME    enables decoder NAME"
  echo "  --disable-encoders       disables all encoders"
  echo "  --disable-decoders       disables all decoders"
115 116
  echo "  --disable-muxer=NAME     disables muxer NAME"
  echo "  --enable-muxer=NAME      enables muxer NAME"
117
  echo "  --disable-muxers         disables all muxers"
118 119
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
120
  echo "  --disable-demuxers       disables all demuxers"
121 122 123
  echo "  --enable-parser=NAME     enables parser NAME"
  echo "  --disable-parser=NAME    disables parser NAME"
  echo "  --disable-parsers        disables all parsers"
124 125 126 127
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
128

129 130 131 132
log(){
    echo "$@" >>$logfile
}

133
log_file(){
M
Måns Rullgård 已提交
134 135 136 137 138
    log BEGIN $1
    cat -n $1 >>$logfile
    log END $1
}

139
echolog(){
M
Måns Rullgård 已提交
140
    log "$@"
141
    echo "$@"
142 143 144 145 146 147 148 149 150
}

die(){
    echolog "$@"
    cat <<EOF
If you think configure made a mistake, make sure you are using the latest
version from SVN.  If the latest version fails, report the problem to the
ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
EOF
151
    if enabled logging; then
152 153 154 155 156 157 158 159 160 161
        cat <<EOF
Include the log file "$logfile" produced by configure as this will help
solving the problem.
EOF
    else
cat <<EOF
Rerun configure with logging enabled (do not use --log=no), and include the
log this produces with your report.
EOF
    fi
162 163 164 165 166 167 168 169 170 171 172 173
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
    exit 1
}

enabled(){
    eval test "\$$1" = "yes"
}

flags_saved(){
    (: ${SAVE_CFLAGS?}) 2>/dev/null
}

174
save_flags(){
175
    flags_saved && return
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
    CFLAGS="$SAVE_CFLAGS"
    LDFLAGS="$SAVE_LDFLAGS"
    extralibs="$SAVE_extralibs"
    unset SAVE_CFLAGS
    unset SAVE_LDFLAGS
    unset SAVE_extralibs
}

temp_cflags(){
    save_flags
    CFLAGS="$CFLAGS $*"
}

temp_ldflags(){
    save_flags
    LDFLAGS="$LDFLAGS $*"
}

temp_extralibs(){
    save_flags
    extralibs="$extralibs $*"
}

205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
append(){
    var=$1
    shift
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
    eval "$var=\"\$$var $*\""
}

add_cflags(){
    append CFLAGS "$@"
}

add_ldflags(){
    append LDFLAGS "$@"
}

add_extralibs(){
    append extralibs "$@"
}

224
check_cmd(){
M
Måns Rullgård 已提交
225
    log "$@"
226
    "$@" >>$logfile 2>&1
227 228
}

229
check_cc(){
230 231
    log check_cc "$@"
    cat >$TMPC
232
    log_file $TMPC
233
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
234 235 236 237
}

check_cpp(){
    log check_cpp "$@"
238
    cat >$TMPC
239
    log_file $TMPC
240
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
241 242 243
}

check_ld(){
244
    log check_ld "$@"
245
    check_cc || return
246
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
247 248 249
}

check_cflags(){
250 251
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
252 253 254 255 256
int x;
EOF
}

check_ldflags(){
257 258 259 260 261
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
int main(){
    return 0;
}
262 263 264 265
EOF
}

check_header(){
266
    log check_header "$@"
267 268
    header=$1
    shift
269
    check_cpp "$@" <<EOF
270 271 272 273 274 275
#include <$header>
int x;
EOF
}

check_func(){
276
    log check_func "$@"
277 278 279 280 281 282 283 284 285 286
    func=$1
    shift
    check_ld "$@" <<EOF
extern int $func();
int main(){
    $func();
}
EOF
}

287 288 289 290 291 292 293 294 295 296 297 298
check_lib(){
    log check_lib "$@"
    header="$1"
    func="$2"
    shift 2
    temp_extralibs "$@"
    check_header $header && check_func $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
}

299
check_exec(){
300
    check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
301 302 303 304 305 306 307 308
}

require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
309 310
}

M
Måns Rullgård 已提交
311 312 313 314 315 316
filter_out(){
    pattern="$1"
    shift
    echo "$@" | sed "s%\\<$pattern\\>%%g"
}

317
# set temporary file name
Z
Zdenek Kabelac 已提交
318
if test ! -z "$TMPDIR" ; then
319
    TMPDIR1="${TMPDIR}"
Z
Zdenek Kabelac 已提交
320
elif test ! -z "$TEMPDIR" ; then
321
    TMPDIR1="${TEMPDIR}"
N
Nick Kurshev 已提交
322
else
323
    TMPDIR1="/tmp"
N
Nick Kurshev 已提交
324 325
fi

326 327
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
328
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
329 330 331
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

F
Fabrice Bellard 已提交
332
# default parameters
333
logging="yes"
334
logfile="config.err"
335 336
PREFIX="/usr/local"
libdir='${PREFIX}/lib'
337
shlibdir="$libdir"
338 339 340
incdir='${PREFIX}/include/ffmpeg'
mandir='${PREFIX}/man'
bindir='${PREFIX}/bin'
341
cross_prefix=""
342
cross_compile="no"
F
Fabrice Bellard 已提交
343 344
cc="gcc"
ar="ar"
M
Michael Niedermayer 已提交
345
ranlib="ranlib"
346
make="make"
347
strip="strip"
348
arch=`uname -m`
349
cpu="generic"
350
powerpc_perf="no"
351
mmx="default"
352
cmov="no"
353
cmov_is_fast="no"
354
armv5te="default"
355
iwmmxt="default"
356
altivec="default"
357
dcbzl="no"
358
mmi="default"
359
case "$arch" in
360
  i386|i486|i586|i686|i86pc|BePC)
361
    arch="x86_32"
F
Fabrice Bellard 已提交
362
  ;;
363
  x86_64|amd64)
D
typo  
Diego Biurrun 已提交
364
    arch="x86_32"
365
    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
366 367
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
368
        arch="x86_64"
369
      fi
370 371
    fi
  ;;
D
Diego Biurrun 已提交
372 373
  # armv4l is a subset of armv[567]*l
  arm|armv[4567]*l)
374
    arch="armv4l"
375
  ;;
376
  alpha)
377
    arch="alpha"
378
  ;;
379
  "Power Macintosh"|ppc|ppc64|powerpc)
380
    arch="powerpc"
381
  ;;
382
  mips|mipsel|IP*)
383
    arch="mips"
384
  ;;
385
  sun4u|sparc64)
386
    arch="sparc64"
387
  ;;
388
  sparc)
389
    arch="sparc"
390
  ;;
A
Alex Beregszaszi 已提交
391
  sh4)
392
    arch="sh4"
A
Alex Beregszaszi 已提交
393
  ;;
394
  parisc|parisc64)
395
    arch="parisc"
396 397
  ;;
  s390|s390x)
398
    arch="s390"
399 400
  ;;
  m68k)
401
    arch="m68k"
402 403
  ;;
  ia64)
404
    arch="ia64"
405
  ;;
M
Michael Benjamin 已提交
406
  bfin)
407
    arch="bfin"
M
Michael Benjamin 已提交
408
  ;;
F
Fabrice Bellard 已提交
409
  *)
410
    arch="unknown"
F
Fabrice Bellard 已提交
411 412 413
  ;;
esac
gprof="no"
F
Fabrice Bellard 已提交
414
v4l="yes"
L
Luca Abeni 已提交
415
v4l2="yes"
416
bktr="no"
F
Fabrice Bellard 已提交
417
audio_oss="yes"
418
audio_beos="no"
419
dv1394="yes"
420
dc1394="no"
F
Fabrice Bellard 已提交
421
network="yes"
422
ipv6="yes"
423
zlib="yes"
424
libgsm="no"
425
mp3lame="no"
426
libnut="no"
427
libogg="no"
428
vorbis="no"
429 430
faad="no"
faadbin="no"
431
faac="no"
432
xvid="no"
433
x264="no"
434
a52="no"
Z
Zdenek Kabelac 已提交
435
a52bin="no"
436
dts="no"
437
pp="no"
438
mingw32="no"
G
Gildas Bazin 已提交
439
mingwce="no"
440
os2="no"
441
lstatic="yes"
442
lshared="no"
443 444
optimize="yes"
debug="yes"
445
extrawarnings="no"
446
dostrip="yes"
447
installstrip="-s"
448
extralibs="-lm"
449
simpleidct="yes"
450
bigendian="no"
451
inttypes="yes"
452
emu_fast_int="no"
453
vhook="default"
454
avisynth="no"
455 456
dlfcn="no"
dlopen="no"
457
mpegaudio_hp="yes"
458
SHFLAGS='-shared -Wl,-soname,$@'
459
VHOOKSHFLAGS='$(SHFLAGS)'
460
netserver="no"
461
need_inet_aton="no"
462
protocols="yes"
463
ffmpeg="yes"
464
ffserver="yes"
465
ffplay="yes"
466
LIBOBJFLAGS=""
467
FFLDFLAGS=-Wl,--warn-common
468
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
469
FFSERVERLDFLAGS=-Wl,-E
470
LDCONFIG="ldconfig"
471 472
LIBPREF="lib"
LIBSUF=".a"
473
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
474 475
SLIBPREF="lib"
SLIBSUF=".so"
476
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
477 478
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
F
Fabrice Bellard 已提交
479
EXESUF=""
480
BUILDSUF=""
481
amr_nb="no"
482
amr_wb="no"
Z
Zdenek Kabelac 已提交
483
amr_nb_fixed="no"
484
amr_if2="no"
485
sunmlib="no"
486
pthreads="no"
L
Luca Abeni 已提交
487
swscaler="no"
488
gpl="no"
489
memalignhack="no"
490
asmalign_pot="unknown"
491
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
492 493 494 495 496

# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
497
PREFIX="/boot/home/config"
498
# helps building libavcodec
499
add_cflags "-DPIC -fomit-frame-pointer"
500
# 3 gcc releases known for BeOS, each with ugly bugs
501
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
502 503 504 505 506
case "$gcc_version" in
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
mmx="no"
;;
*20010315*) echo "BeBits gcc"
507
add_cflags "-fno-expensive-optimizations"
508 509
;;
esac
510
SHFLAGS=-nostart
D
Diego Biurrun 已提交
511
# disable Linux things
512
audio_oss="no"
F
Fabrice Bellard 已提交
513
v4l="no"
L
Luca Abeni 已提交
514
v4l2="no"
515
dv1394="no"
D
Diego Biurrun 已提交
516
# enable BeOS things
517
audio_beos="yes"
518 519 520 521 522
# no need for libm, but the inet stuff
# Check for BONE
if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
extralibs="-lbind -lsocket"
else
523
netserver="yes"
524
need_inet_aton="yes"
525
extralibs="-lnet"
526
fi ;;
527 528
SunOS)
v4l="no"
L
Luca Abeni 已提交
529
v4l2="no"
530
audio_oss="no"
531
dv1394="no"
532
make="gmake"
533
FFLDFLAGS=""
534
FFSERVERLDFLAGS=""
535
SHFLAGS="-shared -Wl,-h,\$@"
536
need_inet_aton="yes"
537
add_extralibs "-lsocket -lnsl"
538
;;
539 540
NetBSD)
v4l="no"
L
Luca Abeni 已提交
541
v4l2="no"
542
bktr="yes"
543 544 545
audio_oss="yes"
dv1394="no"
make="gmake"
546
add_extralibs "-lossaudio"
547
;;
548 549
OpenBSD)
v4l="no"
L
Luca Abeni 已提交
550
v4l2="no"
551
bktr="yes"
552 553 554
audio_oss="yes"
dv1394="no"
make="gmake"
555
LIBOBJFLAGS="\$(PIC)"
556
LDCONFIG="ldconfig -m \$(shlibdir)"
557
add_extralibs "-lossaudio"
558
;;
559 560
FreeBSD)
v4l="no"
L
Luca Abeni 已提交
561
v4l2="no"
562
bktr="yes"
563
audio_oss="yes"
564
dv1394="no"
565
make="gmake"
566
add_cflags "-pthread"
567
;;
568 569 570 571 572 573
GNU/kFreeBSD)
v4l="no"
v4l2="no"
bktr="yes"
audio_oss="yes"
dv1394="no"
574
add_cflags "-pthread"
575
;;
576
BSD/OS)
F
Fabrice Bellard 已提交
577
v4l="no"
L
Luca Abeni 已提交
578
v4l2="no"
579
bktr="yes"
F
Fabrice Bellard 已提交
580
audio_oss="yes"
581
dv1394="no"
582 583
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
584 585
strip="strip -d"
installstrip=""
586
;;
587
Darwin)
588
cc="cc"
589
v4l="no"
L
Luca Abeni 已提交
590
v4l2="no"
591
audio_oss="no"
592
dv1394="no"
593
SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
594
VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
595
extralibs=""
596
strip="strip -x"
597
installstrip=""
598
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
599
SLIBSUF=".dylib"
600 601
SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
602
FFSERVERLDFLAGS=-Wl,-bind_at_load
603
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
604
;;
605
MINGW32*)
F
Fabrice Bellard 已提交
606
# Note: the rest of the mingw32 config is done afterwards as mingw32
D
Diego Biurrun 已提交
607
# can be forced on the command line for Linux cross compilation.
608 609
mingw32="yes"
;;
610
CYGWIN*)
611
targetos=CYGWIN
612
shlibdir='${PREFIX}/bin'
613
v4l="no"
L
Luca Abeni 已提交
614
v4l2="no"
615
audio_oss="yes"
616
dv1394="no"
D
Diego Biurrun 已提交
617
VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
618
VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
619
extralibs=""
620
EXESUF=".exe"
621 622 623 624 625
SLIBPREF="cyg"
SLIBSUF=".dll"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
626
;;
627
Linux)
628
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
629
;;
630
IRIX*)
631
targetos=IRIX
632 633
ranlib="echo ignoring ranlib"
v4l="no"
L
Luca Abeni 已提交
634
v4l2="no"
635 636 637
audio_oss="no"
make="gmake"
;;
638 639
OS/2)
TMPE=$TMPE".exe"
640
ar="emxomfar -p128"
641 642
ranlib="echo ignoring ranlib"
strip="echo ignoring strip"
643
add_cflags "-Zomf"
644
FFLDFLAGS="-Zomf -Zstack 16384 -s"
645
SHFLAGS="-Zdll -Zomf"
646
FFSERVERLDFLAGS=""
647 648 649 650
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
F
Fabrice Bellard 已提交
651
EXESUF=".exe"
652
extralibs=""
653
pkg_requires=""
654
v4l="no"
L
Luca Abeni 已提交
655
v4l2="no"
656
audio_oss="no"
657
dv1394="no"
658
ffserver="no"
659
vhook="no"
660
os2="yes"
661

662
;;
663 664 665
*)
targetos="${targetos}-UNKNOWN"
;;
666
esac
F
Fabrice Bellard 已提交
667

668
# find source path
669
source_path="`dirname \"$0\"`"
670 671
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
672
    source_path="`pwd`"
673
    source_path_used="no"
674 675
else
    source_path="`cd \"$source_path\"; pwd`"
676 677
    echo "$source_path" | grep -q '[[:blank:]]' &&
      die "Out of tree builds are impossible with whitespace in source path."
F
Fabrice Bellard 已提交
678 679
fi

680 681 682 683
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
    show_help
fi

684 685 686 687 688
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

689 690 691 692 693
ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
MUXER_LIST=`grep 'av_register_output_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
694

F
Fabrice Bellard 已提交
695
for opt do
M
Måns Rullgård 已提交
696
  optval="${opt#*=}"
F
Fabrice Bellard 已提交
697
  case "$opt" in
698 699
  --log)
  ;;
M
Måns Rullgård 已提交
700
  --log=*) logging="$optval"
701
  ;;
702
  --prefix=*) PREFIX="$optval"; force_prefix=yes
F
Fabrice Bellard 已提交
703
  ;;
M
Måns Rullgård 已提交
704
  --libdir=*) libdir="$optval"; force_libdir=yes
705
  ;;
706 707
  --shlibdir=*) shlibdir="$optval"
  ;;
M
Måns Rullgård 已提交
708
  --incdir=*) incdir="$optval"
D
Diego Biurrun 已提交
709
  ;;
M
Måns Rullgård 已提交
710
  --mandir=*) mandir="$optval"
F
Fabrice Bellard 已提交
711
  ;;
M
Måns Rullgård 已提交
712
  --source-path=*) source_path="$optval"
713
  ;;
M
Måns Rullgård 已提交
714
  --cross-prefix=*) cross_prefix="$optval"
715
  ;;
716 717
  --cross-compile) cross_compile=yes
  ;;
M
Måns Rullgård 已提交
718
  --cc=*) cc="$optval"
F
Fabrice Bellard 已提交
719
  ;;
M
Måns Rullgård 已提交
720
  --make=*) make="$optval"
721
  ;;
722
  --extra-cflags=*) add_cflags "$optval"
723
  ;;
724
  --extra-ldflags=*) add_ldflags "$optval"
725
  ;;
726
  --extra-libs=*) add_extralibs "$optval"
727
  ;;
M
Måns Rullgård 已提交
728
  --build-suffix=*) BUILDSUF="$optval"
729
  ;;
730
  --arch=*) arch="$optval"
F
Fabrice Bellard 已提交
731
  ;;
732
  --cpu=*) cpu="$optval"
733
  ;;
734 735
  --powerpc-perf-enable) powerpc_perf="yes"
  ;;
F
Fabrice Bellard 已提交
736 737
  --disable-mmx) mmx="no"
  ;;
738 739
  --disable-armv5te) armv5te="no"
  ;;
740 741
  --disable-iwmmxt) iwmmxt="no"
  ;;
742 743
  --disable-altivec) altivec="no"
  ;;
F
Fabrice Bellard 已提交
744 745
  --enable-gprof) gprof="yes"
  ;;
F
Fabrice Bellard 已提交
746 747
  --disable-v4l) v4l="no"
  ;;
L
Luca Abeni 已提交
748 749
  --disable-v4l2) v4l2="no"
  ;;
750 751
  --disable-bktr) bktr="no"
  ;;
F
Fabrice Bellard 已提交
752 753
  --disable-audio-oss) audio_oss="no"
  ;;
754 755
  --disable-audio-beos) audio_beos="no"
  ;;
756 757
  --disable-dv1394) dv1394="no"
  ;;
758
  --disable-network) network="no"; ffserver="no"
F
Fabrice Bellard 已提交
759
  ;;
760 761
  --disable-ipv6) ipv6="no";
  ;;
762 763
  --disable-zlib) zlib="no"
  ;;
764
  --enable-a52) a52="yes"
765
  ;;
M
Michael Niedermayer 已提交
766
  --enable-a52bin) a52bin="yes"
Z
Zdenek Kabelac 已提交
767
  ;;
768
  --enable-dts) dts="yes"
769
  ;;
770
  --enable-pp) pp="yes"
771
  ;;
772 773
  --enable-libgsm) libgsm="yes"
  ;;
774
  --enable-mp3lame) mp3lame="yes"
775
  ;;
776 777
  --enable-libnut) libnut="yes"
  ;;
778
  --enable-libogg) libogg="yes"
779
    pkg_requires="$pkg_requires ogg >= 1.1"
N
Nilesh Bansal 已提交
780
  ;;
781
  --enable-vorbis) vorbis="yes"
782
    pkg_requires="$pkg_requires vorbis vorbisenc"
783
  ;;
Z
Zdenek Kabelac 已提交
784 785 786 787
  --enable-faad) faad="yes"
  ;;
  --enable-faadbin) faadbin="yes"
  ;;
788
  --enable-faac) faac="yes"
789
  ;;
790 791
  --enable-xvid) xvid="yes"
  ;;
792
  --enable-x264) x264="yes"
793
  ;;
794 795
  --enable-avisynth) avisynth="yes";
  ;;
796
  --enable-dc1394) dc1394="yes"
797
    pkg_requires="$pkg_requires libraw1394"
798
  ;;
799 800
  --disable-vhook) vhook="no"
  ;;
801
  --disable-simple_idct) simpleidct="no"
802
  ;;
803 804
  --enable-mingw32) mingw32="yes"
  ;;
G
Gildas Bazin 已提交
805 806
  --enable-mingwce) mingwce="yes"
  ;;
807 808 809 810
  --enable-static) lstatic="yes"
  ;;
  --disable-static) lstatic="no"
  ;;
811
  --enable-shared) lshared="yes"
N
Nick Kurshev 已提交
812
  ;;
813 814
  --disable-shared) lshared="no"
  ;;
815 816 817 818
  --disable-debug) debug="no"
  ;;
  --disable-opts) optimize="no"
  ;;
819 820
  --enable-extra-warnings) extrawarnings="yes"
  ;;
821 822
  --disable-mpegaudio-hp) mpegaudio_hp="no"
  ;;
823 824
  --disable-protocols) protocols="no"; network="no"; ffserver="no"
  ;;
825 826
  --disable-ffmpeg) ffmpeg="no"
  ;;
827 828
  --disable-ffserver) ffserver="no"
  ;;
829 830
  --disable-ffplay) ffplay="no"
  ;;
831
  --enable-small) optimize="small"
832
  ;;
D
Diego Biurrun 已提交
833
  --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
834
  ;;
D
Diego Biurrun 已提交
835
  --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
Z
Zdenek Kabelac 已提交
836
  ;;
D
Diego Biurrun 已提交
837
  --enable-amr_wb) amr="yes"; amr_wb="yes"
838
  ;;
D
Diego Biurrun 已提交
839
  --enable-amr_if2) amr="yes"; amr_if2="yes"
840
  ;;
841 842
  --enable-sunmlib) sunmlib="yes"
  ;;
843 844
  --enable-pthreads) pthreads="yes"
  ;;
L
Luca Abeni 已提交
845 846
  --enable-swscaler) swscaler="yes"
  ;;
847 848
  --enable-gpl) gpl="yes"
  ;;
849 850
  --enable-memalign-hack) memalignhack="yes"
  ;;
851 852
  --disable-strip) dostrip="no"
  ;;
M
Måns Rullgård 已提交
853
  --enable-encoder=*) ENCODER_LIST="$ENCODER_LIST ${optval}_encoder"
854
  ;;
M
Måns Rullgård 已提交
855
  --enable-decoder=*) DECODER_LIST="$DECODER_LIST ${optval}_decoder"
856
  ;;
M
Måns Rullgård 已提交
857
  --disable-encoder=*) ENCODER_LIST="`filter_out ${optval}_encoder $ENCODER_LIST`"
858
  ;;
M
Måns Rullgård 已提交
859
  --disable-decoder=*) DECODER_LIST="`filter_out ${optval}_decoder $DECODER_LIST`"
860
  ;;
861
  --disable-encoders) ENCODER_LIST=""
862
  ;;
863
  --disable-decoders) DECODER_LIST=""
864
  ;;
M
Måns Rullgård 已提交
865
  --enable-muxer=*) MUXER_LIST="$MUXER_LIST ${optval}_muxer"
866
  ;;
M
Måns Rullgård 已提交
867
  --disable-muxer=*) MUXER_LIST="`filter_out ${optval}_muxer $MUXER_LIST`"
868 869 870
  ;;
  --disable-muxers) MUXER_LIST=""; ffserver="no"
  ;;
M
Måns Rullgård 已提交
871
  --enable-demuxer=*) DEMUXER_LIST="$DEMUXER_LIST ${optval}_demuxer"
872
  ;;
M
Måns Rullgård 已提交
873
  --disable-demuxer=*) DEMUXER_LIST="`filter_out ${optval}_demuxer $DEMUXER_LIST`"
874 875
  ;;
  --disable-demuxers) DEMUXER_LIST=""
876
  ;;
M
Måns Rullgård 已提交
877
  --enable-parser=*) PARSER_LIST="$PARSER_LIST ${optval}_parser"
878
  ;;
M
Måns Rullgård 已提交
879
  --disable-parser=*) PARSER_LIST="`filter_out ${optval}_parser $PARSER_LIST`"
880 881 882
  ;;
  --disable-parsers) PARSER_LIST=""
  ;;
883 884
  --help) show_help
  ;;
885 886 887 888 889
  *)
  echo "Unknown option \"$opt\"."
  echo "See $0 --help for available options."
  exit 1
  ;;
F
Fabrice Bellard 已提交
890 891 892
  esac
done

893 894
if test "$logging" != no; then
    test "$logging" = yes || logfile="$logging"
895 896
    echo "# $0 $@" >$logfile
    set >>$logfile
897 898
else
    logfile=/dev/null
899
fi
900

901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
    if test "$lshared" = "yes" && test "$lstatic" = "yes" ; then
        cat <<EOF
You can only build one library type at once on MinGW.
Specify --disable-static --enable-shared to only build
the shared libraries. To build only the static libraries
you do not need to pass additional options.
EOF
        exit 1
    fi
    v4l="no"
    v4l2="no"
    bktr="no"
    audio_oss="no"
    dv1394="no"
    dc1394="no"
    ffserver="no"
    network="no"
    if test "$mingwce" = "yes"; then
        protocols="no"
    fi
    SLIBPREF=""
    SLIBSUF=".dll"
    EXESUF=".exe"
925 926
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
927
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
928
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
929
    if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
930 931
    if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
    shlibdir='${PREFIX}'
932 933
fi

934 935
# Combine FFLDFLAGS and the LDFLAGS environment variable.
LDFLAGS="$FFLDFLAGS $LDFLAGS"
936

937
test -n "$cross_prefix" && cross_compile=yes
938 939 940 941 942
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

943 944 945 946 947 948 949 950 951 952 953
# we need to build at least one lib type
if test "$lstatic" = "no" && test "$lshared" = "no" ; then
    cat <<EOF
At least one library type must be built.
Specify --enable-static to build the static libraries or --enable-shared to
build the shared libraries as well. To only build the shared libraries specify
--disable-static in addition to --enable-shared.
EOF
    exit 1;
fi

N
Nilesh Bansal 已提交
954
if test "$vorbis" = "yes" ; then
955
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
956
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
957 958 959 960
        fail="yes"
    fi
fi

961
if test "$gpl" != "yes"; then
962
    if test "$pp" != "no"; then
D
Diego Biurrun 已提交
963
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
964 965 966 967
        fail="yes"
    fi

    if test "$a52" != "no" -o "$a52bin" != "no"; then
D
Diego Biurrun 已提交
968
        echo "liba52 is under GPL and --enable-gpl is not specified."
969 970
        fail="yes"
    fi
971

972
    if test "$xvid" != "no"; then
D
Diego Biurrun 已提交
973
        echo "libxvidcore is under GPL and --enable-gpl is not specified."
974 975 976
        fail="yes"
    fi

977
    if test "$x264" != "no"; then
D
Diego Biurrun 已提交
978
        echo "x264 is under GPL and --enable-gpl is not specified."
979 980 981
        fail="yes"
    fi

982
    if test "$dts" != "no"; then
D
Diego Biurrun 已提交
983
        echo "libdts is under GPL and --enable-gpl is not specified."
984 985
        fail="yes"
    fi
986

987
    if test "$faad" != "no" -o "$faadbin" != "no"; then
988 989
        if check_header faad.h; then
            check_cc << EOF
990 991 992 993 994 995
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
996
            if test $? = 0 ; then
D
Diego Biurrun 已提交
997
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
998 999 1000 1001 1002
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
D
Diego Biurrun 已提交
1003
            echo "FAAD test failed."
1004 1005
        fi
    fi
1006

L
Luca Abeni 已提交
1007 1008 1009 1010
    if test "$swscaler" != "no"; then
        echo "The software scaler is under GPL and --enable-gpl is not specified."
        fail="yes"
    fi
1011
fi
1012

1013 1014
if test "$fail" = "yes"; then
    exit 1
1015 1016
fi

D
Diego Biurrun 已提交
1017
# compute MMX state
1018
if test $mmx = "default"; then
1019
    if test $arch = "x86_32" -o $arch = "x86_64"; then
1020 1021 1022 1023 1024 1025
        mmx="yes"
    else
        mmx="no"
    fi
fi

1026
#Darwin CC versions
1027
needmdynamicnopic="no"
1028
if test $targetos = Darwin; then
1029
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1030
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1031
    else
1032 1033 1034
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
        case "$gcc_version" in
            *2.95*)
1035
                add_cflags "-no-cpp-precomp -pipe"
1036 1037
                ;;
            *[34].*)
1038
                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1039 1040 1041 1042 1043
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
            *)
1044
                add_cflags "-no-cpp-precomp -pipe"
1045 1046 1047 1048 1049
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
        esac
1050
    fi
1051 1052 1053 1054
fi

if test $optimize != "no"; then
    add_cflags "-fomit-frame-pointer"
1055 1056
fi

1057 1058
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
1059
    if test $arch = "powerpc"; then
1060 1061 1062 1063 1064 1065
        altivec="yes"
    else
        altivec="no"
    fi
fi

1066 1067
# Add processor-specific flags
TUNECPU="generic"
1068
POWERPCMODE="32bits"
1069 1070
if test $cpu != "generic"; then
    case $cpu in
1071
        601|ppc601|PowerPC601)
1072
            add_cflags "-mcpu=601"
1073 1074 1075 1076 1077 1078
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
            fi
            TUNECPU=ppc601
        ;;
        603*|ppc603*|PowerPC603*)
1079
            add_cflags "-mcpu=603"
1080 1081 1082 1083 1084 1085
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
            fi
            TUNECPU=ppc603
        ;;
        604*|ppc604*|PowerPC604*)
1086
            add_cflags "-mcpu=604"
1087 1088 1089 1090 1091 1092
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
            fi
            TUNECPU=ppc604
        ;;
        G3|g3|75*|ppc75*|PowerPC75*)
1093
            add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1094 1095 1096 1097 1098 1099
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
            fi
            TUNECPU=ppc750
        ;;
        G4|g4|745*|ppc745*|PowerPC745*)
1100
            add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1101 1102 1103 1104 1105 1106
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
            fi
            TUNECPU=ppc7450
        ;;
        74*|ppc74*|PowerPC74*)
1107
            add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1108 1109 1110 1111 1112 1113
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
            fi
            TUNECPU=ppc7400
        ;;
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1114
            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1115 1116 1117 1118
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
            fi
            TUNECPU=ppc970
1119
            POWERPCMODE="64bits"
1120
        ;;
1121 1122
        # targets that do NOT support conditional mov (cmov)
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1123
            add_cflags "-march=$cpu"
1124 1125 1126
            cmov="no"
        ;;
        # targets that do support conditional mov (cmov)
1127
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
1128
            add_cflags "-march=$cpu"
1129
            cmov="yes"
1130 1131 1132 1133 1134 1135 1136
            cmov_is_fast="yes"
        ;;
        # targets that do support conditional mov but on which it's slow
        pentium4|prescott|nocona)
            add_cflags "-march=$cpu"
            cmov="yes"
            cmov_is_fast="no"
1137
        ;;
1138
        sparc64)
1139
            add_cflags "-mcpu=v9"
1140
        ;;
1141
        *)
1142
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
1143
        ;;
1144 1145 1146
    esac
fi

1147 1148 1149 1150 1151 1152 1153 1154
# make sure we can execute files in $TMPDIR
cat >$TMPE 2>>$logfile <<EOF
#! /bin/sh
EOF
chmod +x $TMPE >>$logfile 2>&1
if ! $TMPE >>$logfile 2>&1; then
    cat <<EOF
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1155 1156
variable to another directory and make sure that $TMPDIR1 is not mounted
noexec.
1157 1158 1159
EOF
    die "Sanity test failed."
fi
1160
rm $TMPE
1161

M
Måns Rullgård 已提交
1162 1163 1164 1165 1166 1167 1168 1169 1170 1171
# compiler sanity check
check_exec <<EOF
int main(){
    return 0;
}
EOF
if test "$?" != 0; then
    echo "$cc is unable to create an executable file."
    if test -z "$cross_prefix" -a "$cross_compile" = no; then
        echo "If $cc is a cross-compiler, use the --cross-compile option."
1172
        echo "Only do this if you know what cross compiling means."
M
Måns Rullgård 已提交
1173 1174 1175 1176
    fi
    die "C compiler test failed."
fi

1177 1178
# check for assembler specific support

1179
if test $arch = "powerpc"; then
1180 1181 1182 1183 1184 1185 1186 1187 1188 1189
check_cc <<EOF && dcbzl=yes
int main(void) {
    register long zero = 0;
    char data[1024];
    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
return 0;
}
EOF
fi

1190 1191
# check for SIMD availability

1192
# AltiVec flags: The FSF version of GCC differs from the Apple version
1193
if test $arch = "powerpc"; then
1194
    if test $altivec = "yes"; then
1195
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1196
            add_cflags "-faltivec"
1197
        else
1198
            add_cflags "-maltivec -mabi=altivec"
1199 1200 1201 1202
        fi
    fi
fi

1203
check_header altivec.h && _altivec_h=yes || _altivec_h=no
1204

D
Diego Biurrun 已提交
1205
# check if our compiler supports Motorola AltiVec C API
1206
if test $altivec = "yes"; then
M
Måns Rullgård 已提交
1207 1208 1209 1210 1211 1212
    if test $_altivec_h = "yes"; then
        inc_altivec_h="#include <altivec.h>"
    else
        inc_altivec_h=
    fi
    check_cc <<EOF || altivec=no
1213
$inc_altivec_h
1214 1215 1216 1217 1218 1219 1220
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
1221

1222
# check armv5te instructions support
1223
if test $armv5te = "default" -a $arch = "armv4l"; then
1224 1225 1226 1227 1228 1229 1230 1231 1232
    armv5te=no
    check_cc <<EOF && armv5te=yes
        int main(void) {
        __asm__ __volatile__ ("qadd r0, r0, r0");
        }
EOF
fi

# check iwmmxt support
1233
if test $iwmmxt = "default" -a $arch = "armv4l"; then
1234 1235 1236 1237 1238 1239 1240 1241
    iwmmxt=no
    check_cc <<EOF && iwmmxt=yes
        int main(void) {
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
        }
EOF
fi

D
Diego Biurrun 已提交
1242
# mmi only available on mips
1243
if test $mmi = "default"; then
1244
    if test $arch = "mips"; then
1245 1246 1247 1248 1249 1250
        mmi="yes"
    else
        mmi="no"
    fi
fi

D
Diego Biurrun 已提交
1251
# check if our compiler supports mmi
1252
enabled mmi && check_cc <<EOF || mmi="no"
1253 1254 1255 1256 1257
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
1258 1259 1260

# ---
# big/little-endian test
1261
if test "$cross_compile" = "no"; then
1262
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1263 1264
#include <inttypes.h>
int main(int argc, char ** argv){
1265 1266
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
1267 1268
}
EOF
F
Fabrice Bellard 已提交
1269
else
M
Måns Rullgård 已提交
1270
    # programs cannot be launched if cross compiling, so make a static guess
1271
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
M
Måns Rullgård 已提交
1272 1273
        bigendian="yes"
    fi
F
Fabrice Bellard 已提交
1274 1275
fi

1276 1277
# ---
# *inttypes.h* test
1278
check_header inttypes.h || inttypes=no
1279

1280 1281
# ---
# *int_fast* test
1282
check_cc <<EOF || emu_fast_int=yes
1283 1284
#include <inttypes.h>
int main(int argc, char ** argv){
1285 1286
        volatile uint_fast64_t i=0x01234567;
        return 0;
1287 1288 1289
}
EOF

N
Nick Kurshev 已提交
1290 1291 1292 1293 1294
# ---
# check availability of some header files

_memalign=no
_malloc_h=no
1295 1296 1297 1298
if check_header malloc.h; then
    _malloc_h=yes
    _memalign=yes
    check_func memalign || _memalign="no"
N
Nick Kurshev 已提交
1299 1300
fi

1301
if test "$_memalign" = "no" -a "$mmx" = "yes" -a \
1302 1303
        "$memalignhack" != "yes" -a "$targetos" != "Darwin" -a \
        "$targetos" != "FreeBSD" ; then
1304
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1305 1306
fi

M
Måns Rullgård 已提交
1307 1308
check_header byteswap.h && byteswap_h=yes || byteswap_h=no

1309
check_func localtime_r && localtime_r=yes || localtime_r=no
1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"

# check for some common methods of building with pthread support
# do this before the optional library checks as some of them require pthreads
if enabled pthreads; then
    { check_cflags -pthread && check_ldflags -pthread; } ||
    { check_cflags -pthreads && check_ldflags -pthreads; } ||
    check_lib pthread.h pthread_create -lpthread ||
    check_func pthread_create ||
    die "ERROR: can't find pthreads library"
fi

# these are off by default, so fail if requested and not available
1323
enabled dts     && require libdts dts.h dts_init -ldts -lm
1324
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1325
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
M
Måns Rullgård 已提交
1326
enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1327
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1328
enabled libnut  && require libnut nut.h nut_demuxer_init -lnut
1329 1330 1331 1332
enabled xvid    && require XviD xvid.h xvid_global -lxvidcore
enabled x264    && require x264 x264.h x264_encoder_open -lx264
enabled dc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
enabled sunmlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1333

1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350
# Ugh, faac uses stdcall calling convention on win32 so we can't use
# the generic test functions
if enabled faac; then
    save_flags
    temp_extralibs -lfaac
    check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
#include <stdint.h>
#include <faac.h>
int main(){
    char *id, *cpr;
    faacEncGetVersion(&id, &cpr);
    return 0;
}
EOF
    restore_flags
fi

1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365
# Ugh, recent faad2 versions have renamed all functions and #define the
# old names in faad.h.  Generic tests won't work.
if enabled faad; then
    save_flags
    temp_extralibs -lfaad
    check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
#include <faad.h>
int main(){
    faacDecOpen();
    return 0;
}
EOF
    restore_flags
fi

1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381
# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
if enabled avisynth; then
    save_flags
    temp_extralibs -lvfw32
    check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
#include <windows.h>
#include <vfw.h>
int main(){
    AVIFileInit();
    return 0;
}
EOF
    restore_flags
fi


1382
# test for lrintf in math.h
1383
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
1384 1385 1386 1387 1388
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

F
Falk Hüffner 已提交
1389 1390
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
1391
    check_cc <<EOF && _restrict=$restrict_keyword && break
1392 1393
void foo(char * $restrict_keyword p);
EOF
F
Falk Hüffner 已提交
1394 1395
done

1396 1397
# dlopen/dlfcn.h probing

1398
check_header dlfcn.h && dlfcn=yes
1399

1400 1401 1402 1403
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1404
fi
1405
restore_flags
1406

1407 1408 1409
if check_func dlopen; then
    dlopen=yes
    ldl=
1410 1411
fi

M
Måns Rullgård 已提交
1412 1413
if test "$vhook" = "default"; then
    vhook="$dlopen"
1414 1415
fi

M
Michael Niedermayer 已提交
1416
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
1417
    add_extralibs $ldl
M
Michael Niedermayer 已提交
1418 1419
fi

1420 1421 1422 1423 1424 1425 1426 1427
if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
    vhook="no"
    echo
    echo "At the moment vhooks don't work on Cygwin static builds."
    echo "Patches welcome."
    echo
fi

1428 1429 1430 1431
if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi
M
Michael Niedermayer 已提交
1432

1433
##########################################
D
Diego Biurrun 已提交
1434
# imlib check
1435

1436 1437
temp_extralibs -lImlib2
check_ld <<EOF && imlib2=yes || imlib2=no
1438 1439 1440 1441
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF
1442
restore_flags
1443

1444
##########################################
D
Diego Biurrun 已提交
1445
# FreeType check
1446

1447
freetype2=no
1448
if test "x$targetos" != "xBeOS"; then
1449
  if (freetype-config --version) >/dev/null 2>&1 ; then
1450 1451 1452 1453 1454 1455 1456
      temp_cflags `freetype-config --cflags`
      temp_extralibs `freetype-config --libs`
      check_ld <<EOF && freetype2=yes
#include <ft2build.h>
int main( void ) { return (int) FT_Init_FreeType(0); }
EOF
      restore_flags
1457
  fi
1458 1459
fi

1460
##########################################
D
Diego Biurrun 已提交
1461
# SDL check
1462 1463 1464

sdl_too_old=no
sdl=no
1465 1466
SDL_CONFIG="${cross_prefix}sdl-config"
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1467 1468 1469 1470 1471 1472 1473 1474 1475
    temp_cflags `"${SDL_CONFIG}" --cflags`
    temp_extralibs `"${SDL_CONFIG}" --libs`
    check_ld <<EOF
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
    if test $? = 0; then
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1476
        if test "$_sdlversion" -lt 121 ; then
1477 1478 1479
            sdl_too_old=yes
        else
            sdl=yes
1480 1481 1482 1483 1484 1485 1486 1487
            check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
#include <SDL.h>
int main(void){
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
    int w = vi->current_w;
    return 0;
}
EOF
1488 1489
        fi
    fi
1490
    restore_flags
M
Michael Niedermayer 已提交
1491
fi
1492

1493 1494
enabled sdl || ffplay=no

1495
##########################################
D
Diego Biurrun 已提交
1496
# texi2html check
1497 1498

texi2html=no
1499
if (texi2html -version) >/dev/null 2>&1; then
1500 1501 1502
texi2html=yes
fi

1503
##########################################
D
Diego Biurrun 已提交
1504
# IPv6 check
1505

1506
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1507 1508 1509 1510 1511 1512 1513 1514 1515
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main( void ) {
  struct sockaddr_storage saddr;
  struct ipv6_mreq mreq6;
  getaddrinfo(0,0,0,0);
  getnameinfo(0,0,0,0,0,0,0);
1516
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1517 1518 1519
}
EOF

1520
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1521
enabled v4l2 && check_cc <<EOF || v4l2="no"
1522
#include <sys/time.h>
1523 1524
#include <asm/types.h>
#include <linux/videodev2.h>
1525
int dummy = V4L2_PIX_FMT_YUV420;
1526
struct v4l2_buffer dummy1;
1527 1528
EOF

1529 1530 1531 1532
enabled debug && add_cflags -g

# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
1533 1534
check_cflags -Wall
check_cflags -Wno-switch
M
Michael Niedermayer 已提交
1535 1536 1537
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
1538
enabled extrawarnings && check_cflags -Winline
1539

1540
# add some linker flags
1541
check_ldflags $LDLATEFLAGS
F
Fabrice Bellard 已提交
1542

1543 1544
# not all compilers support -Os
test "$optimize" = "small" && check_cflags -Os
1545

1546
if enabled optimize; then
1547
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1548 1549
        add_cflags  "-O5"
        add_ldflags "-O5"
1550
    else
1551
        add_cflags "-O3"
1552
    fi
1553 1554
fi

1555 1556
# PIC flags for shared library objects where they are needed
if test "$lshared" = "yes" ; then
M
Måns Rullgård 已提交
1557 1558
    # LIBOBJFLAGS may have already been set in the OS configuration
    if test -z "$LIBOBJFLAGS" ; then
1559
        case "$arch" in
1560 1561
            x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
        esac
1562 1563 1564
    fi
fi

1565
if test "$gprof" = "yes" ; then
1566 1567
    add_cflags  "-p"
    add_ldflags "-p"
1568 1569
fi

1570 1571 1572 1573 1574 1575
# find if .align arg is power-of-two or not
if test $asmalign_pot = "unknown"; then
    asmalign_pot="no"
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
fi

1576
echo "install prefix   $PREFIX"
D
Diego Biurrun 已提交
1577
echo "source path      $source_path"
F
Fabrice Bellard 已提交
1578
echo "C compiler       $cc"
1579
echo "make             $make"
1580
echo "ARCH             $arch ($cpu)"
1581
if test "$BUILDSUF" != ""; then
M
Måns Rullgård 已提交
1582
    echo "build suffix     $BUILDSUF"
1583
fi
D
Diego Biurrun 已提交
1584
echo "big-endian       $bigendian"
1585
echo "inttypes.h       $inttypes"
1586
echo "broken inttypes.h $emu_fast_int"
1587
if test $arch = "x86_32" -o $arch = "x86_64"; then
M
Måns Rullgård 已提交
1588
    echo "MMX enabled      $mmx"
1589
    echo "CMOV enabled     $cmov"
1590
    echo "CMOV is fast     $cmov_is_fast"
F
Fabrice Bellard 已提交
1591
fi
1592
if test $arch = "armv4l"; then
1593
    echo "ARMv5TE enabled  $armv5te"
M
Måns Rullgård 已提交
1594
    echo "IWMMXT enabled   $iwmmxt"
1595
fi
1596
if test $arch = "mips"; then
M
Måns Rullgård 已提交
1597
    echo "MMI enabled      $mmi"
F
Fabrice Bellard 已提交
1598
fi
1599
if test $arch = "powerpc"; then
M
Måns Rullgård 已提交
1600
    echo "AltiVec enabled  $altivec"
1601
    echo "dcbzl available  $dcbzl"
F
Fabrice Bellard 已提交
1602
fi
F
Fabrice Bellard 已提交
1603
echo "gprof enabled    $gprof"
1604
echo "zlib enabled     $zlib"
1605
echo "libgsm enabled   $libgsm"
1606
echo "mp3lame enabled  $mp3lame"
1607
echo "libnut enabled   $libnut"
1608
echo "libogg enabled   $libogg"
D
Diego Biurrun 已提交
1609 1610
echo "Vorbis enabled   $vorbis"
echo "FAAD enabled     $faad"
Z
Zdenek Kabelac 已提交
1611
echo "faadbin enabled  $faadbin"
D
Diego Biurrun 已提交
1612 1613
echo "FAAC enabled     $faac"
echo "XviD enabled     $xvid"
1614
echo "x264 enabled     $x264"
F
Fabrice Bellard 已提交
1615
echo "a52 support      $a52"
Z
Zdenek Kabelac 已提交
1616
echo "a52 dlopened     $a52bin"
D
Diego Biurrun 已提交
1617
echo "DTS support      $dts"
1618
echo "pp support       $pp"
L
Luca Abeni 已提交
1619
echo "Software Scaler enabled $swscaler"
1620
echo "AVISynth enabled $avisynth"
1621
echo "debug symbols    $debug"
1622
echo "strip symbols    $dostrip"
1623
echo "optimize         $optimize"
1624
echo "static           $lstatic"
D
typo  
Diego Biurrun 已提交
1625
echo "shared           $lshared"
D
Diego Biurrun 已提交
1626
echo "video hooking    $vhook"
1627 1628
echo "SDL support      $sdl"
if test $sdl_too_old = "yes"; then
M
Måns Rullgård 已提交
1629
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1630
fi
1631

M
Måns Rullgård 已提交
1632 1633 1634
if test "$vhook" = "yes"; then
    echo "Imlib2 support   $imlib2"
    echo "FreeType support $freetype2"
1635
fi
1636
echo "Sun medialib support"  $sunmlib
1637
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
1638 1639
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
1640
echo "AMR-WB float support"  $amr_wb
1641
echo "AMR-WB IF2 support"    $amr_if2
1642 1643
echo "network support      $network"
if test "$network" = "yes" ; then
M
Måns Rullgård 已提交
1644
    echo "IPv6 support         $ipv6"
1645
fi
1646
echo ".align is power-of-two" $asmalign_pot
1647
if test "$gpl" = "no" ; then
M
Måns Rullgård 已提交
1648
    echo "License: LGPL"
1649
else
M
Måns Rullgård 已提交
1650
    echo "License: GPL"
1651
fi
F
Fabrice Bellard 已提交
1652

D
Diego Biurrun 已提交
1653
echo "Creating config.mak and config.h..."
F
Fabrice Bellard 已提交
1654

1655 1656
date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
D
Diego Biurrun 已提交
1657 1658
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1659
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
F
Fabrice Bellard 已提交
1660

1661 1662
echo "PREFIX=$PREFIX" >> config.mak
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1663
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1664
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
D
Diego Biurrun 已提交
1665
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1666 1667
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1668
echo "MAKE=$make" >> config.mak
1669 1670
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
1671
echo "RANLIB=$ranlib" >> config.mak
1672
if test "$dostrip" = "yes" ; then
M
Måns Rullgård 已提交
1673 1674
    echo "STRIP=$strip" >> config.mak
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1675
else
M
Måns Rullgård 已提交
1676 1677
    echo "STRIP=echo ignoring strip" >> config.mak
    echo "INSTALLSTRIP=" >> config.mak
1678
fi
1679

1680
VHOOKCFLAGS="-fPIC $CFLAGS"
1681
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1682

N
Nick Kurshev 已提交
1683
echo "OPTFLAGS=$CFLAGS" >> config.mak
1684
echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1685
echo "LDFLAGS=$LDFLAGS" >> config.mak
1686
echo "LDCONFIG=$LDCONFIG" >> config.mak
1687
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1688
echo "SHFLAGS=$SHFLAGS" >> config.mak
1689
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1690
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1691
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1692
echo "BUILD_STATIC=$lstatic" >> config.mak
1693
echo "BUILDSUF=$BUILDSUF" >> config.mak
1694
echo "LIBPREF=$LIBPREF" >> config.mak
1695
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1696 1697
if test "$lstatic" = "yes" ; then
  echo "LIB=$LIB" >> config.mak
1698 1699
else # Some Make complain if this variable does not exist.
  echo "LIB=" >> config.mak
1700
fi
1701
echo "SLIBPREF=$SLIBPREF" >> config.mak
1702 1703
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1704
echo "TARGET_OS=$targetos" >> config.mak
1705
if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1706
  echo "TARGET_ARCH_X86=yes" >> config.mak
1707
  echo "#define ARCH_X86 1" >> $TMPH
1708 1709 1710 1711
fi
if test "$arch" = "x86_32" ; then
  echo "TARGET_ARCH_X86_32=yes" >> config.mak
  echo "#define ARCH_X86_32 1" >> $TMPH
1712
elif test "$arch" = "x86_64" ; then
1713 1714
  echo "TARGET_ARCH_X86_64=yes" >> config.mak
  echo "#define ARCH_X86_64 1" >> $TMPH
1715
elif test "$arch" = "armv4l" ; then
1716
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1717
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1718
elif test "$arch" = "alpha" ; then
1719
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1720
  echo "#define ARCH_ALPHA 1" >> $TMPH
1721
elif test "$arch" = "sparc64" ; then
1722 1723
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
  echo "#define ARCH_SPARC64 1" >> $TMPH
1724 1725
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
1726
elif test "$arch" = "sparc" ; then
1727 1728
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
1729
elif test "$arch" = "powerpc" ; then
1730 1731
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
  echo "#define ARCH_POWERPC 1" >> $TMPH
1732 1733 1734 1735 1736
  if test $POWERPCMODE = "32bits"; then
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
  else
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
  fi
1737 1738 1739
  if test "$powerpc_perf" = "yes"; then
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
  fi
1740
elif test "$arch" = "mips" ; then
1741 1742
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
  echo "#define ARCH_MIPS 1" >> $TMPH
1743
elif test "$arch" = "sh4" ; then
A
Alex Beregszaszi 已提交
1744 1745
  echo "TARGET_ARCH_SH4=yes" >> config.mak
  echo "#define ARCH_SH4 1" >> $TMPH
1746
elif test "$arch" = "parisc" ; then
1747 1748
  echo "TARGET_ARCH_PARISC=yes" >> config.mak
  echo "#define ARCH_PARISC 1" >> $TMPH
1749
elif test "$arch" = "s390" ; then
1750 1751
  echo "TARGET_ARCH_S390=yes" >> config.mak
  echo "#define ARCH_S390 1" >> $TMPH
1752
elif test "$arch" = "m68k" ; then
1753 1754
  echo "TARGET_ARCH_M68K=yes" >> config.mak
  echo "#define ARCH_M68K 1" >> $TMPH
1755
elif test "$arch" = "ia64" ; then
1756 1757
  echo "TARGET_ARCH_IA64=yes" >> config.mak
  echo "#define ARCH_IA64 1" >> $TMPH
1758
elif test "$arch" = "bfin" ; then
M
Michael Benjamin 已提交
1759 1760
  echo "TARGET_ARCH_BFIN=yes" >> config.mak
  echo "#define ARCH_BFIN 1" >> $TMPH
A
Alex Beregszaszi 已提交
1761
fi
1762
echo "#define TUNECPU $TUNECPU" >> $TMPH
1763 1764 1765
if test "$bigendian" = "yes" ; then
  echo "WORDS_BIGENDIAN=yes" >> config.mak
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1766
fi
1767 1768
if test "$inttypes" != "yes" ; then
  echo "#define EMULATE_INTTYPES 1" >> $TMPH
1769
fi
1770
if test "$emu_fast_int" = "yes" ; then
1771
  echo "#define EMULATE_FAST_INT 1" >> $TMPH
1772
fi
Z
Zdenek Kabelac 已提交
1773
if test "$mmx" = "yes" ; then
1774
  echo "TARGET_MMX=yes" >> config.mak
1775
  echo "#define HAVE_MMX 1" >> $TMPH
M
Michael Niedermayer 已提交
1776
  echo "#define __CPU__ 586" >> $TMPH
F
Fabrice Bellard 已提交
1777
fi
1778 1779 1780 1781
if test "$cmov" = "yes" ; then
  echo "TARGET_CMOV=yes" >> config.mak
  echo "#define HAVE_CMOV 1" >> $TMPH
fi
1782 1783 1784 1785
if test "$cmov_is_fast" = "yes" ; then
  echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
  echo "#define CMOV_IS_FAST 1" >> $TMPH
fi
1786 1787 1788 1789
if test "$armv5te" = "yes" ; then
  echo "TARGET_ARMV5TE=yes" >> config.mak
  echo "#define HAVE_ARMV5TE 1" >> $TMPH
fi
1790 1791 1792 1793
if test "$iwmmxt" = "yes" ; then
  echo "TARGET_IWMMXT=yes" >> config.mak
  echo "#define HAVE_IWMMXT 1" >> $TMPH
fi
1794 1795 1796 1797
if test "$mmi" = "yes" ; then
  echo "TARGET_MMI=yes" >> config.mak
  echo "#define HAVE_MMI 1" >> $TMPH
fi
1798 1799 1800 1801 1802 1803 1804

if test "$dcbzl" = "yes" ; then
  echo "#define HAVE_DCBZL 1" >> $TMPH
else
  echo "#undef HAVE_DCBZL" >> $TMPH
fi

1805 1806 1807
if test "$altivec" = "yes" ; then
  echo "TARGET_ALTIVEC=yes" >> config.mak
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1808 1809 1810
  if test "$_altivec_h" = "yes" ; then
    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
  else
A
1l  
Alex Beregszaszi 已提交
1811
    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
1812
  fi
1813
fi
Z
Zdenek Kabelac 已提交
1814
if test "$gprof" = "yes" ; then
1815
  echo "#define HAVE_GPROF 1" >> $TMPH
F
Fabrice Bellard 已提交
1816
fi
1817 1818 1819
if test "$localtime_r" = "yes" ; then
  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
fi
1820 1821 1822
if test "$imlib2" = "yes" ; then
  echo "HAVE_IMLIB2=yes" >> config.mak
fi
1823 1824 1825
if test "$freetype2" = "yes" ; then
  echo "HAVE_FREETYPE2=yes" >> config.mak
fi
1826 1827 1828 1829
if test "$sunmlib" = "yes" ; then
  echo "HAVE_MLIB=yes" >> config.mak
  echo "#define HAVE_MLIB 1" >> $TMPH
fi
1830 1831 1832
if test "$pthreads" = "yes" ; then
  echo "HAVE_PTHREADS=yes" >> config.mak
  echo "#define HAVE_PTHREADS 1" >> $TMPH
1833
  echo "#define HAVE_THREADS 1" >> $TMPH
1834
fi
1835
if test "$sdl" = "yes" ; then
M
Måns Rullgård 已提交
1836
  echo "HAVE_SDL=yes" >> config.mak
1837 1838
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1839 1840 1841
  if test "$sdl_video_size" = "yes"; then
    echo "#define HAVE_SDL_VIDEO_SIZE 1" >> $TMPH
  fi
1842
fi
1843 1844 1845
if test "$texi2html" = "yes"; then
  echo "BUILD_DOC=yes" >> config.mak
fi
1846 1847 1848
if test "$have_lrintf" = "yes" ; then
  echo "#define HAVE_LRINTF 1" >> $TMPH
fi
1849
if test "$vhook" = "yes" ; then
1850 1851
  echo "CONFIG_VHOOK=yes" >> config.mak
  echo "#define CONFIG_VHOOK 1" >> $TMPH
1852
fi
L
Luca Barbato 已提交
1853

L
Luca Abeni 已提交
1854
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1855
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
L
Luca Barbato 已提交
1856 1857 1858 1859 1860 1861
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`



Z
Zdenek Kabelac 已提交
1862
if test "$lshared" = "yes" ; then
1863
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
N
Nick Kurshev 已提交
1864
  echo "BUILD_SHARED=yes" >> config.mak
1865
  echo "PIC=-fPIC -DPIC" >> config.mak
1866
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1867
  echo "SPPVERSION=$lavc_version" >> config.mak
1868
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1869
  echo "LAVCVERSION=$lavc_version" >> config.mak
1870
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1871
  echo "LAVFVERSION=$lavf_version" >> config.mak
1872
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1873
  echo "LAVUVERSION=$lavu_version" >> config.mak
L
Luca Abeni 已提交
1874 1875
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
  echo "SWSVERSION=$sws_version" >> config.mak
1876
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1877 1878
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1879
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
N
Nick Kurshev 已提交
1880
fi
1881
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1882
echo "EXTRALIBS=$extralibs" >> config.mak
1883

D
Diego Biurrun 已提交
1884
# If you do not want to use encoders, disable them.
1885
if echo "$ENCODER_LIST" | grep -q encoder; then
1886 1887 1888
    echo "#define CONFIG_ENCODERS 1" >> $TMPH
    echo "CONFIG_ENCODERS=yes" >> config.mak
fi
1889

D
Diego Biurrun 已提交
1890
# If you do not want to use decoders, disable them.
1891
if echo "$DECODER_LIST" | grep -q decoder; then
1892 1893 1894
    echo "#define CONFIG_DECODERS 1" >> $TMPH
    echo "CONFIG_DECODERS=yes" >> config.mak
fi
1895

1896
# muxers
1897
if echo "$MUXER_LIST" | grep -q muxer; then
1898 1899 1900 1901 1902
  echo "#define CONFIG_MUXERS 1" >> $TMPH
  echo "CONFIG_MUXERS=yes" >> config.mak
fi

# demuxers
1903
if echo "$DEMUXER_LIST" | grep -q demuxer; then
1904 1905 1906 1907
  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
  echo "CONFIG_DEMUXERS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1908 1909 1910 1911
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1912

F
Fabrice Bellard 已提交
1913 1914 1915 1916 1917 1918
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1919 1920 1921 1922 1923 1924
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1925 1926 1927 1928 1929 1930
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

L
Luca Abeni 已提交
1931 1932 1933 1934 1935
if test "$swscaler" = "yes" ; then
  echo "#define CONFIG_SWSCALER 1" >> $TMPH
  echo "CONFIG_SWSCALER=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1936
# MPEG audio high precision mode
1937 1938 1939 1940
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1941 1942 1943 1944 1945
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

L
Luca Abeni 已提交
1946 1947 1948 1949 1950
if test "$v4l2" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1951 1952 1953 1954 1955
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1956 1957 1958 1959 1960
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1961 1962 1963 1964 1965
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1966 1967 1968 1969 1970 1971 1972 1973
if test "$dlopen" = "yes" ; then
  echo "#define CONFIG_HAVE_DLOPEN 1" >> $TMPH
fi

if test "$dlfcn" = "yes" ; then
  echo "#define CONFIG_HAVE_DLFCN 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1974 1975 1976
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1977 1978
fi

1979 1980 1981 1982 1983
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1984 1985 1986
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1987
fi
1988

1989 1990 1991 1992
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

1993 1994 1995 1996 1997
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

1998 1999 2000 2001 2002
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2003
if test "$mp3lame" = "yes" ; then
2004
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
2005 2006 2007
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

2008 2009 2010 2011 2012
if test "$libnut" = "yes" ; then
  echo "#define CONFIG_LIBNUT 1" >> $TMPH
  echo "CONFIG_LIBNUT=yes" >> config.mak
fi

2013
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
2014 2015 2016 2017
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

2018
if test "$vorbis" = "yes" ; then
N
Nilesh Bansal 已提交
2019 2020 2021 2022
  echo "#define CONFIG_LIBVORBIS 1" >> $TMPH
  echo "CONFIG_LIBVORBIS=yes" >> config.mak
fi

2023 2024 2025 2026 2027 2028 2029
if test "$faad" = "yes" ; then
  echo "#define CONFIG_FAAD 1" >> $TMPH
  echo "CONFIG_FAAD=yes" >> config.mak
fi

if test "$faadbin" = "yes" ; then
  echo "#define CONFIG_FAADBIN 1" >> $TMPH
Z
Zdenek Kabelac 已提交
2030
  echo "CONFIG_FAADBIN=yes" >> config.mak
2031 2032
fi

2033 2034 2035 2036 2037
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

2038 2039 2040 2041 2042
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

2043 2044 2045 2046 2047
if test "$x264" = "yes" ; then
  echo "#define CONFIG_X264 1" >> $TMPH
  echo "CONFIG_X264=yes" >> config.mak
fi

2048 2049 2050 2051 2052
if test "$avisynth" = "yes" ; then
  echo "#define CONFIG_AVISYNTH 1" >> $TMPH
  echo "CONFIG_AVISYNTH=yes" >> config.mak
fi

2053
if test "$mingw32" = "yes" ; then
2054
  echo "CONFIG_MINGW=yes" >> config.mak
2055 2056
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
2057
  echo "#define HAVE_THREADS 1" >> $TMPH
2058
  echo "#ifndef __MINGW32__" >> $TMPH
2059
  echo "#define __MINGW32__ 1" >> $TMPH
2060
  echo "#endif" >> $TMPH
2061 2062
fi

G
Gildas Bazin 已提交
2063
if test "$mingwce" = "yes" ; then
2064
  echo "CONFIG_MINGW=yes" >> config.mak
G
Gildas Bazin 已提交
2065 2066 2067 2068 2069 2070 2071
  echo "#define CONFIG_WINCE 1" >> $TMPH
  echo "CONFIG_WINCE=yes" >> config.mak
  echo "#ifndef __MINGW32__" >> $TMPH
  echo "#define __MINGW32__ 1" >> $TMPH
  echo "#endif" >> $TMPH
fi

2072 2073 2074
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
2075 2076 2077
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
2078 2079
fi

2080
if test "$targetos" = "SunOS" ; then
2081 2082 2083
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

2084
if test "$targetos" = "BeOS" ; then
2085 2086 2087 2088 2089
  echo "HAVE_BEOSTHREADS=yes" >> config.mak
  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
fi

2090
if test "$targetos" = "Darwin"; then
2091 2092 2093 2094
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2095
if test "$_malloc_h" = "yes" ; then
2096
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
2097
else
2098
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
2099 2100
fi

Z
Zdenek Kabelac 已提交
2101
if test "$_memalign" = "yes" ; then
2102 2103 2104 2105 2106
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

2107 2108 2109 2110
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi

M
Måns Rullgård 已提交
2111 2112 2113
if test "$byteswap_h" = "yes"; then
  echo "#define HAVE_BYTESWAP_H 1" >> $TMPH
fi
2114

2115 2116 2117 2118 2119
if test "$netserver" = "yes" ; then
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

2120 2121 2122 2123
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2124
if test "$simpleidct" = "yes" ; then
2125 2126 2127
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

2128 2129 2130 2131 2132
if test "$protocols" = "yes" ; then
  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
  echo "CONFIG_PROTOCOLS=yes" >> config.mak
fi

2133 2134 2135 2136 2137
if test "$ffmpeg" = "yes" ; then
  echo "#define CONFIG_FFMPEG 1" >> $TMPH
  echo "CONFIG_FFMPEG=yes" >> config.mak
fi

2138 2139 2140 2141 2142
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

2143 2144 2145 2146
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

2147 2148 2149 2150 2151
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

F
Falk Hüffner 已提交
2152 2153
echo "#define restrict $_restrict" >> $TMPH

2154 2155
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
2156
  echo "#define CONFIG_SMALL 1" >> $TMPH
2157 2158
fi

2159 2160
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
2161 2162 2163 2164 2165 2166
    DIRS="\
         doc \
         libavformat \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
2167
         libavcodec/bfin \
2168 2169 2170 2171 2172
         libavcodec/i386 \
         libavcodec/sparc \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/liba52 \
2173
         libpostproc \
2174
         libavutil \
L
Luca Abeni 已提交
2175
         libswscale \
2176 2177 2178 2179 2180
         tests \
         vhook \
         "
    FILES="\
          Makefile \
2181
          common.mak \
2182 2183
          libavformat/Makefile \
          libavcodec/Makefile \
2184
          libpostproc/Makefile \
2185
          libavutil/Makefile \
L
Luca Abeni 已提交
2186
          libswscale/Makefile \
2187 2188 2189 2190 2191
          tests/Makefile \
          vhook/Makefile \
          doc/Makefile \
          doc/texi2pod.pl \
          "
2192 2193 2194 2195
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
M
Michael Niedermayer 已提交
2196
        ln -sf "$source_path/$f" $f
2197 2198
    done
fi
2199 2200 2201
echo "SRC_PATH=\"$source_path\"" >> config.mak
echo "SRC_PATH_BARE=$source_path" >> config.mak
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2202

D
Diego Biurrun 已提交
2203
if test "$amr" = "yes" ; then
2204 2205
  echo "#define CONFIG_AMR 1" >> $TMPH
  echo "CONFIG_AMR=yes" >> config.mak
D
Diego Biurrun 已提交
2206 2207
fi

2208
if test "$amr_wb" = "yes" ; then
2209 2210
  echo "#define CONFIG_AMR_WB 1" >> $TMPH
  echo "CONFIG_AMR_WB=yes" >> config.mak
2211 2212 2213 2214 2215 2216 2217
  echo
  echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
  echo "V5.1.0 from "
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
  echo "and extracted the source to libavcodec/amrwb_float"
fi

2218
if test "$amr_nb" = "yes" ; then
2219 2220
  echo "#define CONFIG_AMR_NB 1" >> $TMPH
  echo "CONFIG_AMR_NB=yes" >> config.mak
2221
  echo
2222 2223
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
D
Diego Biurrun 已提交
2224
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
2225 2226 2227 2228
  echo "and extracted the source to libavcodec/amr_float"
  echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
fi

Z
Zdenek Kabelac 已提交
2229
if test "$amr_nb_fixed" = "yes" ; then
2230 2231
  echo "#define CONFIG_AMR_NB_FIXED 1" >> $TMPH
  echo "CONFIG_AMR_NB_FIXED=yes" >> config.mak
D
Diego Biurrun 已提交
2232
  echo
Z
Zdenek Kabelac 已提交
2233 2234
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
D
Diego Biurrun 已提交
2235
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
2236
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
2237 2238
  echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
  echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
2239 2240
fi

2241 2242 2243 2244
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

2245
# Apparently it's not possible to portably echo a backslash.
2246
if test "$asmalign_pot" = "yes" ; then
2247
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2248
else
2249
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2250 2251
fi

Z
Zdenek Kabelac 已提交
2252

2253
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
2254
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2255 2256
    echo "#define CONFIG_`echo $codec | tr '[a-z]' '[A-Z]'` 1" >> $TMPH
    echo "CONFIG_`echo $codec | tr '[a-z]' '[A-Z]'`=yes" >> config.mak
2257 2258
done

2259 2260
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
2261
if test "$?" != "0" ; then
2262 2263 2264 2265
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
2266

2267
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2268 2269


D
Diego Biurrun 已提交
2270
# build pkg-config files libav*.pc and libpostproc.pc
2271 2272
# libavutil.pc
cat <<EOF >libavutil.pc
2273
prefix=$PREFIX
2274
exec_prefix=\${prefix}
2275
libdir=\${exec_prefix}/lib
2276
includedir=\${prefix}/include
2277 2278 2279 2280

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2281
Requires:
2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295
Conflicts:
Libs: -L\${libdir} -lavutil
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
EOF

cat <<EOF >libavutil-uninstalled.pc
prefix=
exec_prefix=
libdir=\${pcfiledir}/libavutil
includedir=\${pcfiledir}/libavutil

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2296
Requires:
2297 2298 2299 2300
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
2301 2302 2303

# libavcodec.pc
cat <<EOF >libavcodec.pc
2304
prefix=$PREFIX
2305
exec_prefix=\${prefix}
2306
libdir=\${exec_prefix}/lib
2307
includedir=\${prefix}/include
2308 2309 2310

Name: libavcodec
Description: FFmpeg codec library
2311
Version: $lavc_version
2312
Requires: $pkg_requires libavutil = $lavu_version
2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325
Conflicts:
Libs: -L\${libdir} -lavcodec $extralibs
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
EOF

cat <<EOF >libavcodec-uninstalled.pc
prefix=
exec_prefix=
libdir=\${pcfiledir}/libavcodec
includedir=\${pcfiledir}/libavcodec

Name: libavcodec
Description: FFmpeg codec library
2326
Version: $lavc_version
2327
Requires: $pkg_requires libavutil = $lavu_version
2328 2329 2330 2331 2332 2333 2334
Conflicts:
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF

# libavformat.pc
cat <<EOF >libavformat.pc
2335
prefix=$PREFIX
2336
exec_prefix=\${prefix}
2337
libdir=\${exec_prefix}/lib
2338
includedir=\${prefix}/include
2339 2340 2341

Name: libavformat
Description: FFmpeg container format library
2342
Version: $lavf_version
2343
Requires: $pkg_requires libavcodec = $lavc_version
2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356
Conflicts:
Libs: -L\${libdir} -lavformat $extralibs
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
EOF

cat <<EOF >libavformat-uninstalled.pc
prefix=
exec_prefix=
libdir=\${pcfiledir}/libavformat
includedir=\${pcfiledir}/libavformat

Name: libavformat
Description: FFmpeg container format library
2357
Version: $lavf_version
2358
Requires: $pkg_requires libavcodec = $lavc_version
2359 2360 2361 2362 2363 2364 2365 2366
Conflicts:
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF


# libpostproc.pc
cat <<EOF >libpostproc.pc
2367
prefix=$PREFIX
2368
exec_prefix=\${prefix}
2369
libdir=\${exec_prefix}/lib
2370
includedir=\${prefix}/include
2371 2372 2373

Name: libpostproc
Description: FFmpeg post processing library
2374
Version: $lavc_version
2375
Requires:
2376 2377 2378 2379 2380 2381 2382 2383
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

cat <<EOF >libpostproc-uninstalled.pc
prefix=
exec_prefix=
2384 2385
libdir=\${pcfiledir}/libpostproc
includedir=\${pcfiledir}/libpostproc
2386 2387 2388

Name: libpostproc
Description: FFmpeg post processing library
2389
Version: $lavc_version
2390
Requires:
2391 2392 2393 2394
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF
L
Luca Abeni 已提交
2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425

# libswscale.pc
cat <<EOF >libswscale.pc
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: libswscale
Description: FFmpeg image rescaling library
Version: $sws_version
Requires: $pkg_requires libavutil = $lavu_version
Conflicts:
Libs: -L\${libdir} -lswscale
Cflags: -I\${includedir} -I\${includedir}/swscale
EOF

cat <<EOF >libswscale-uninstalled.pc
prefix=
exec_prefix=
libdir=\${pcfiledir}/libswscale
includedir=\${pcfiledir}/libswscale

Name: libswscale
Description: FFmpeg image rescaling library
Version: $sws_version
Requires: $pkg_requires libavutil = $lavu_version
Conflicts:
Libs: \${libdir}/${LIBPREF}swscale${LIBSUF}
Cflags: -I\${includedir}
EOF