configure 56.2 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 7 8 9 10 11
show_help(){
  echo "Usage: configure [options]"
  echo "Options: [defaults in brackets after descriptions]"
  echo
  echo "Standard options:"
  echo "  --help                   print this message"
12
  echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
  echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
  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]"
  echo "  --enable-libogg          enable Ogg support via libogg [default=no]"
  echo "  --enable-vorbis          enable Vorbis support via libvorbis [default=no]"
  echo "  --enable-theora          enable Theora support via libtheora [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]"
  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]"
  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 []"
  echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
  echo "  --tune=CPU               tune code for a particular CPU"
  echo "                           (may fail or perform badly on other CPUs)"
  echo "  --powerpc-perf-enable    enable performance report on PPC"
  echo "                           (requires enabling PMC)"
  echo "  --disable-mmx            disable MMX usage"
  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]"
  echo "  --disable-zlib           disable zlib [default=no]"
  echo "  --disable-lzo            disable lzo [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"
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
  echo "                           MPEG audio decoding [default=no]"
  echo "  --disable-protocols      disable I/O protocols support [default=no]"
  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"
  echo "  --disable-muxers         disables all muxers"
  echo "  --disable-demuxers       disables all demuxers"
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
99

100 101 102 103
log(){
    echo "$@" >>$logfile
}

M
Måns Rullgård 已提交
104 105 106 107 108 109
logfile(){
    log BEGIN $1
    cat -n $1 >>$logfile
    log END $1
}

110
echolog(){
M
Måns Rullgård 已提交
111
    log "$@"
112
    echo "$@"
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
}

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
    if enabled log; then
        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
133 134 135 136 137 138 139 140 141 142 143 144
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
    exit 1
}

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

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

145
save_flags(){
146
    flags_saved && return
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
    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 $*"
}

176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
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 "$@"
}

195
check_cc(){
196 197
    log check_cc "$@"
    cat >$TMPC
M
Måns Rullgård 已提交
198
    logfile $TMPC
199 200 201 202 203 204
    log $cc $CFLAGS "$@" -c -o $TMPO $TMPC
    $cc $CFLAGS "$@" -c -o $TMPO $TMPC >>$logfile 2>&1
}

check_cpp(){
    log check_cpp "$@"
205
    cat >$TMPC
M
Måns Rullgård 已提交
206
    logfile $TMPC
207 208
    log $cc $CFLAGS "$@" -E -o $TMPO $TMPC
    $cc $CFLAGS "$@" -E -o $TMPO $TMPC >>$logfile 2>&1
209 210 211
}

check_ld(){
212
    log check_ld "$@"
213
    cat >$TMPC
M
Måns Rullgård 已提交
214
    logfile $TMPC
215
    log $cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs
M
Måns Rullgård 已提交
216
    $cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs >>$logfile 2>&1
217 218 219
}

check_cflags(){
220 221
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
222 223 224 225 226
int x;
EOF
}

check_ldflags(){
227 228 229 230 231
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
int main(){
    return 0;
}
232 233 234 235
EOF
}

check_header(){
236
    log check_header "$@"
237 238
    header=$1
    shift
239
    check_cpp "$@" <<EOF
240 241 242 243 244 245
#include <$header>
int x;
EOF
}

check_func(){
246
    log check_func "$@"
247 248 249 250 251 252 253 254 255 256
    func=$1
    shift
    check_ld "$@" <<EOF
extern int $func();
int main(){
    $func();
}
EOF
}

257 258 259 260 261 262 263 264 265 266 267 268
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
}

269
check_exec(){
270
    check_ld "$@" && { test -n "$cross_prefix" || $TMPE 2>&1 >>$logfile; }
271 272 273 274 275 276 277 278
}

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

281 282
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
    show_help
283 284
fi

285
# set temporary file name
Z
Zdenek Kabelac 已提交
286
if test ! -z "$TMPDIR" ; then
287
    TMPDIR1="${TMPDIR}"
Z
Zdenek Kabelac 已提交
288
elif test ! -z "$TEMPDIR" ; then
289
    TMPDIR1="${TEMPDIR}"
N
Nick Kurshev 已提交
290
else
291
    TMPDIR1="/tmp"
N
Nick Kurshev 已提交
292 293
fi

294 295
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
296
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
297 298 299
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

F
Fabrice Bellard 已提交
300
# default parameters
301 302
log="yes"
logfile="config.err"
F
Fabrice Bellard 已提交
303
prefix="/usr/local"
304
libdir=""
D
Diego Biurrun 已提交
305
incdir=""
F
Fabrice Bellard 已提交
306
mandir=""
F
Fabrice Bellard 已提交
307
bindir=""
308
cross_prefix=""
F
Fabrice Bellard 已提交
309 310
cc="gcc"
ar="ar"
M
Michael Niedermayer 已提交
311
ranlib="ranlib"
312
make="make"
313
strip="strip"
F
Fabrice Bellard 已提交
314
cpu=`uname -m`
315
tune="generic"
316
powerpc_perf="no"
317
mmx="default"
318
iwmmxt="default"
319
altivec="default"
320
mmi="default"
F
Fabrice Bellard 已提交
321
case "$cpu" in
322
  i386|i486|i586|i686|i86pc|BePC)
F
Fabrice Bellard 已提交
323 324
    cpu="x86"
  ;;
325 326 327 328 329 330 331
  x86_64|amd64)
    cpu="x86"
    canon_arch="`cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
        cpu="x86_64"
      fi
332 333
    fi
  ;;
334 335
  # armv4l is a subset of armv5tel
  armv4l|armv5tel)
336 337
    cpu="armv4l"
  ;;
338 339 340
  alpha)
    cpu="alpha"
  ;;
A
Alex Beregszaszi 已提交
341
  "Power Macintosh"|ppc|powerpc)
342 343
    cpu="powerpc"
  ;;
344
  mips|mipsel|IP*)
345 346
    cpu="mips"
  ;;
347
  sun4u|sparc64)
348 349
    cpu="sparc64"
  ;;
350 351 352
  sparc)
    cpu="sparc"
  ;;
A
Alex Beregszaszi 已提交
353 354 355
  sh4)
    cpu="sh4"
  ;;
356 357 358 359 360 361 362 363 364 365 366 367
  parisc|parisc64)
    cpu="parisc"
  ;;
  s390|s390x)
    cpu="s390"
  ;;
  m68k)
    cpu="m68k"
  ;;
  ia64)
    cpu="ia64"
  ;;
F
Fabrice Bellard 已提交
368
  *)
369
    cpu="unknown"
F
Fabrice Bellard 已提交
370 371 372
  ;;
esac
gprof="no"
F
Fabrice Bellard 已提交
373
v4l="yes"
L
Luca Abeni 已提交
374
v4l2="yes"
375
bktr="no"
F
Fabrice Bellard 已提交
376
audio_oss="yes"
377
audio_beos="no"
378
dv1394="yes"
379
dc1394="no"
F
Fabrice Bellard 已提交
380
network="yes"
381
zlib="yes"
382
lzo="yes"
383
libgsm="no"
384
mp3lame="no"
385
libogg="no"
386
vorbis="no"
N
Nilesh Bansal 已提交
387
theora="no"
388 389
faad="no"
faadbin="no"
390
faac="no"
391
xvid="no"
392
x264="no"
393
a52="no"
Z
Zdenek Kabelac 已提交
394
a52bin="no"
395
dts="no"
396
pp="no"
397
mingw32="no"
G
Gildas Bazin 已提交
398
mingwce="no"
399
cygwin="no"
400
os2="no"
401
lstatic="yes"
402
lshared="no"
403 404
optimize="yes"
debug="yes"
405
dostrip="yes"
406
installstrip="-s"
407
extralibs="-lm"
408
simpleidct="yes"
409
bigendian="no"
410
inttypes="yes"
411
emu_fast_int="no"
412
vhook="default"
413 414
dlfcn="no"
dlopen="no"
415
mpegaudio_hp="yes"
416
SHFLAGS='-shared -Wl,-soname,$@'
417
netserver="no"
418
need_inet_aton="no"
419
protocols="yes"
420
ffserver="yes"
421
ffplay="yes"
422
LIBOBJFLAGS=""
423
FFLDFLAGS=-Wl,--warn-common
424
FFSLDFLAGS=-Wl,-E
425
LDCONFIG="ldconfig"
426 427
LIBPREF="lib"
LIBSUF=".a"
428
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
429 430
SLIBPREF="lib"
SLIBSUF=".so"
431
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
432 433
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
F
Fabrice Bellard 已提交
434
EXESUF=""
435
BUILDSUF=""
436
amr_nb="no"
437
amr_wb="no"
Z
Zdenek Kabelac 已提交
438
amr_nb_fixed="no"
439
amr_if2="no"
440
sunmlib="no"
441
pthreads="no"
442
gpl="no"
443
memalignhack="no"
444 445
muxers="yes"
demuxers="yes"
446 447 448 449 450 451 452

# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
prefix="/boot/home/config"
# helps building libavcodec
453
CFLAGS="$CFLAGS -DPIC -fomit-frame-pointer"
454
# 3 gcc releases known for BeOS, each with ugly bugs
455
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
456 457 458 459 460 461 462 463
case "$gcc_version" in
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
mmx="no"
;;
*20010315*) echo "BeBits gcc"
CFLAGS="$CFLAGS -fno-expensive-optimizations"
;;
esac
464
SHFLAGS=-nostart
D
Diego Biurrun 已提交
465
# disable Linux things
466
audio_oss="no"
F
Fabrice Bellard 已提交
467
v4l="no"
L
Luca Abeni 已提交
468
v4l2="no"
469
dv1394="no"
D
Diego Biurrun 已提交
470
# enable BeOS things
471
audio_beos="yes"
472 473 474 475 476
# 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
477
netserver="yes"
478
need_inet_aton="yes"
479
extralibs="-lnet"
480
fi ;;
481 482
SunOS)
v4l="no"
L
Luca Abeni 已提交
483
v4l2="no"
484
audio_oss="no"
485
dv1394="no"
486
make="gmake"
487
FFLDFLAGS=""
488 489 490 491
FFSLDFLAGS=""
need_inet_aton="yes"
extralibs="$extralibs -lsocket -lnsl"
;;
492 493
NetBSD)
v4l="no"
L
Luca Abeni 已提交
494
v4l2="no"
495
bktr="yes"
496 497 498
audio_oss="yes"
dv1394="no"
make="gmake"
499
extralibs="$extralibs -lossaudio"
500
;;
501 502
OpenBSD)
v4l="no"
L
Luca Abeni 已提交
503
v4l2="no"
504
bktr="yes"
505 506 507
audio_oss="yes"
dv1394="no"
make="gmake"
508
LIBOBJFLAGS="\$(PIC)"
509
LDCONFIG="ldconfig -m \$(libdir)"
510 511
extralibs="$extralibs -lossaudio"
;;
512 513
FreeBSD)
v4l="no"
L
Luca Abeni 已提交
514
v4l2="no"
515
bktr="yes"
516
audio_oss="yes"
517
dv1394="no"
518
make="gmake"
519
CFLAGS="$CFLAGS -pthread"
520
;;
521 522 523 524 525 526 527 528
GNU/kFreeBSD)
v4l="no"
v4l2="no"
bktr="yes"
audio_oss="yes"
dv1394="no"
CFLAGS="$CFLAGS -pthread"
;;
529
BSD/OS)
F
Fabrice Bellard 已提交
530
v4l="no"
L
Luca Abeni 已提交
531
v4l2="no"
532
bktr="yes"
F
Fabrice Bellard 已提交
533
audio_oss="yes"
534
dv1394="no"
535 536
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
537 538
strip="strip -d"
installstrip=""
539
;;
540
Darwin)
541
cc="cc"
542
v4l="no"
L
Luca Abeni 已提交
543
v4l2="no"
544
audio_oss="no"
545
dv1394="no"
546
SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(libdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
547
extralibs=""
548
darwin="yes"
549
strip="strip -x"
550
installstrip=""
551
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
552
SLIBSUF=".dylib"
553 554
SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
555
FFSLDFLAGS=-Wl,-bind_at_load
556
;;
557
MINGW32*)
F
Fabrice Bellard 已提交
558
# Note: the rest of the mingw32 config is done afterwards as mingw32
D
Diego Biurrun 已提交
559
# can be forced on the command line for Linux cross compilation.
560 561
mingw32="yes"
;;
562 563
CYGWIN*)
v4l="no"
L
Luca Abeni 已提交
564
v4l2="no"
565
audio_oss="yes"
566
dv1394="no"
567
vhook="no"
568 569
extralibs=""
cygwin="yes"
570
EXESUF=".exe"
571
;;
572 573
Linux)
;;
574 575 576
IRIX*)
ranlib="echo ignoring ranlib"
v4l="no"
L
Luca Abeni 已提交
577
v4l2="no"
578 579 580
audio_oss="no"
make="gmake"
;;
581 582
OS/2)
TMPE=$TMPE".exe"
583
ar="emxomfar -p128"
584 585
ranlib="echo ignoring ranlib"
strip="echo ignoring strip"
586
CFLAGS="$CFLAGS -Zomf"
587
FFLDFLAGS="-Zomf -Zstack 16384 -s"
588
SHFLAGS="-Zdll -Zomf"
589 590 591 592 593
FFSLDFLAGS=""
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
F
Fabrice Bellard 已提交
594
EXESUF=".exe"
595
extralibs=""
596
pkg_requires=""
597
v4l="no"
L
Luca Abeni 已提交
598
v4l2="no"
599
audio_oss="no"
600
dv1394="no"
601
ffserver="no"
602
vhook="no"
603
os2="yes"
604

605
;;
606 607
*) ;;
esac
F
Fabrice Bellard 已提交
608

D
Diego Biurrun 已提交
609
# From MPlayer configure. We need TARGET_OS available
610
# to the Makefile, so it can distinguish between flavors
D
Diego Biurrun 已提交
611
# of AltiVec on PowerPC.
612 613
TARGET_OS=`( uname -s ) 2>&1`
  case "$TARGET_OS" in
A
Alex Beregszaszi 已提交
614
  Linux|FreeBSD|NetBSD|BSD/OS|OpenBSD|SunOS|QNX|Darwin|GNU|BeOS|MorphOS)
615 616 617 618 619 620 621 622 623 624 625 626 627 628 629
    ;;
  IRIX*)
    TARGET_OS=IRIX
    ;;
  HP-UX*)
    TARGET_OS=HP-UX
    ;;
  [cC][yY][gG][wW][iI][nN]*)
    TARGET_OS=CYGWIN
    ;;
  *)
    TARGET_OS="$TARGET_OS-UNKNOWN"
    ;;
  esac

630
# find source path
631
source_path="`dirname $0`"
632 633 634 635
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
    source_path=`pwd`
    source_path_used="no"
636 637
else
    source_path="`cd \"$source_path\"; pwd`"
F
Fabrice Bellard 已提交
638 639
fi

640 641 642 643 644
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

645
CODEC_LIST=`grep 'register_avcodec(&[a-z]' $source_path/libavcodec/allcodecs.c  | sed 's/.*&\(.*\)).*/\1/'`
646

F
Fabrice Bellard 已提交
647 648
for opt do
  case "$opt" in
649 650
  --log)
  ;;
651
  --log=*) log="${opt#*=}"
652
  ;;
653
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`; force_prefix=yes
F
Fabrice Bellard 已提交
654
  ;;
655
  --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`; force_libdir=yes
656
  ;;
D
Diego Biurrun 已提交
657 658
  --incdir=*) incdir=`echo $opt | cut -d '=' -f 2`;
  ;;
F
Fabrice Bellard 已提交
659 660
  --mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
  ;;
661 662 663 664
  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
  ;;
  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
  ;;
665
  --cc=*) cc=`echo $opt | cut -d '=' -f 2-`
F
Fabrice Bellard 已提交
666
  ;;
667 668
  --make=*) make=`echo $opt | cut -d '=' -f 2`
  ;;
669
  --extra-cflags=*) CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
670
  ;;
671
  --extra-ldflags=*) FFLDFLAGS="$FFLDFLAGS ${opt#--extra-ldflags=}"
672 673 674
  ;;
  --extra-libs=*) extralibs=${opt#--extra-libs=}
  ;;
675 676
  --build-suffix=*) BUILDSUF=${opt#--build-suffix=}
  ;;
F
Fabrice Bellard 已提交
677 678
  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
  ;;
679 680
  --tune=*) tune=`echo $opt | cut -d '=' -f 2`
  ;;
681 682
  --powerpc-perf-enable) powerpc_perf="yes"
  ;;
F
Fabrice Bellard 已提交
683 684
  --disable-mmx) mmx="no"
  ;;
685 686
  --disable-iwmmxt) iwmmxt="no"
  ;;
687 688
  --disable-altivec) altivec="no"
  ;;
F
Fabrice Bellard 已提交
689 690
  --enable-gprof) gprof="yes"
  ;;
F
Fabrice Bellard 已提交
691 692
  --disable-v4l) v4l="no"
  ;;
L
Luca Abeni 已提交
693 694
  --disable-v4l2) v4l2="no"
  ;;
695 696
  --disable-bktr) bktr="no"
  ;;
F
Fabrice Bellard 已提交
697 698
  --disable-audio-oss) audio_oss="no"
  ;;
699 700
  --disable-audio-beos) audio_beos="no"
  ;;
701 702
  --disable-dv1394) dv1394="no"
  ;;
703
  --disable-network) network="no"; ffserver="no"
F
Fabrice Bellard 已提交
704
  ;;
705 706
  --disable-zlib) zlib="no"
  ;;
707 708
  --disable-lzo) lzo="no"
  ;;
709
  --enable-a52) a52="yes"
710
  ;;
M
Michael Niedermayer 已提交
711
  --enable-a52bin) a52bin="yes"
Z
Zdenek Kabelac 已提交
712
  ;;
713
  --enable-dts) dts="yes"
714
  ;;
715
  --enable-pp) pp="yes"
716
  ;;
717 718
  --enable-libgsm) libgsm="yes"
  ;;
719
  --enable-mp3lame) mp3lame="yes"
720
  ;;
721
  --enable-libogg) libogg="yes"
722
    pkg_requires="$pkg_requires ogg >= 1.1"
N
Nilesh Bansal 已提交
723
  ;;
724
  --enable-vorbis) vorbis="yes"
725
    pkg_requires="$pkg_requires vorbis vorbisenc"
726
  ;;
N
Nilesh Bansal 已提交
727
  --enable-theora) theora="yes"
728
    pkg_requires="$pkg_requires theora"
N
Nilesh Bansal 已提交
729
  ;;
Z
Zdenek Kabelac 已提交
730 731 732 733
  --enable-faad) faad="yes"
  ;;
  --enable-faadbin) faadbin="yes"
  ;;
734
  --enable-faac) faac="yes"
735
  ;;
736 737
  --enable-xvid) xvid="yes"
  ;;
738
  --enable-x264) x264="yes"
739
  ;;
740
  --enable-dc1394) dc1394="yes"
741
    pkg_requires="$pkg_requires libraw1394"
742
  ;;
743 744
  --disable-vhook) vhook="no"
  ;;
745
  --disable-simple_idct) simpleidct="no"
746
  ;;
747 748
  --enable-mingw32) mingw32="yes"
  ;;
G
Gildas Bazin 已提交
749 750
  --enable-mingwce) mingwce="yes"
  ;;
751 752 753 754
  --enable-static) lstatic="yes"
  ;;
  --disable-static) lstatic="no"
  ;;
755
  --enable-shared) lshared="yes"
N
Nick Kurshev 已提交
756
  ;;
757 758
  --disable-shared) lshared="no"
  ;;
759 760 761 762
  --disable-debug) debug="no"
  ;;
  --disable-opts) optimize="no"
  ;;
763 764
  --disable-mpegaudio-hp) mpegaudio_hp="no"
  ;;
765 766
  --disable-protocols) protocols="no"; network="no"; ffserver="no"
  ;;
767 768
  --disable-ffserver) ffserver="no"
  ;;
769 770
  --disable-ffplay) ffplay="no"
  ;;
771
  --enable-small) optimize="small"
772
  ;;
D
Diego Biurrun 已提交
773
  --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
774
  ;;
D
Diego Biurrun 已提交
775
  --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
Z
Zdenek Kabelac 已提交
776
  ;;
D
Diego Biurrun 已提交
777
  --enable-amr_wb) amr="yes"; amr_wb="yes"
778
  ;;
D
Diego Biurrun 已提交
779
  --enable-amr_if2) amr="yes"; amr_if2="yes"
780
  ;;
781 782
  --enable-sunmlib) sunmlib="yes"
  ;;
783 784
  --enable-pthreads) pthreads="yes"
  ;;
785 786
  --enable-gpl) gpl="yes"
  ;;
787 788
  --enable-memalign-hack) memalignhack="yes"
  ;;
789 790
  --disable-strip) dostrip="no"
  ;;
791
  --enable-encoder=*) CODEC_LIST="$CODEC_LIST ${opt#--enable-encoder=}_encoder"
792
  ;;
793 794 795 796 797
  --enable-decoder=*) CODEC_LIST="$CODEC_LIST ${opt#--enable-decoder=}_decoder"
  ;;
  --disable-encoder=*) CODEC_LIST="`echo $CODEC_LIST | sed -e \"s#${opt#--disable-encoder=}_encoder##\"`"
  ;;
  --disable-decoder=*) CODEC_LIST="`echo $CODEC_LIST | sed -e \"s#${opt#--disable-decoder=}_decoder##\"`"
798 799 800
  ;;
  --disable-encoders) CODEC_LIST="`echo $CODEC_LIST | sed 's/[-_a-zA-Z0-9]*encoder//g'`"
  ;;
801 802
  --disable-decoders) CODEC_LIST="`echo $CODEC_LIST | sed 's/[-_a-zA-Z0-9]*decoder//g'`"
  ;;
803
  --disable-muxers) muxers="no"; ffserver="no"
804 805 806
  ;;
  --disable-demuxers) demuxers="no"
  ;;
807 808
  --help) show_help
  ;;
809 810 811 812 813
  *)
  echo "Unknown option \"$opt\"."
  echo "See $0 --help for available options."
  exit 1
  ;;
F
Fabrice Bellard 已提交
814 815 816
  esac
done

817 818
if test "$log" != no; then
    test "$log" = yes || logfile="$log"
819 820
    echo "# $0 $@" >$logfile
    set >>$logfile
821 822
else
    logfile=/dev/null
823
fi
824 825 826 827

# Combine FFLDFLAGS and the LDFLAGS environment variable
LDFLAGS="$FFLDFLAGS $LDFLAGS"

828 829 830 831 832
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

833 834 835 836 837 838 839 840 841 842 843
# 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 已提交
844
if test "$theora" = "yes" ; then
845
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
846
        echo "libogg must be enabled to enable Theora."
N
Nilesh Bansal 已提交
847 848 849 850 851 852
        fail="yes"
        theora="no"
    fi
fi

if test "$vorbis" = "yes" ; then
853
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
854
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
855 856 857 858 859
        fail="yes"
        vorbis="no"
    fi
fi

860
if test "$gpl" != "yes"; then
861
    if test "$pp" != "no"; then
D
Diego Biurrun 已提交
862
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
863 864 865 866
        fail="yes"
    fi

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

871
    if test "$xvid" != "no"; then
D
Diego Biurrun 已提交
872
        echo "libxvidcore is under GPL and --enable-gpl is not specified."
873 874 875
        fail="yes"
    fi

876
    if test "$x264" != "no"; then
D
Diego Biurrun 已提交
877
        echo "x264 is under GPL and --enable-gpl is not specified."
878 879 880
        fail="yes"
    fi

881
    if test "$dts" != "no"; then
D
Diego Biurrun 已提交
882
        echo "libdts is under GPL and --enable-gpl is not specified."
883 884
        fail="yes"
    fi
885

886
    if test "$faad" != "no" -o "$faadbin" != "no"; then
887 888
        if check_header faad.h; then
            check_cc << EOF
889 890 891 892 893 894
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
895
            if test $? = 0 ; then
D
Diego Biurrun 已提交
896
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
897 898 899 900 901
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
D
Diego Biurrun 已提交
902
            echo "FAAD test failed."
903 904
        fi
    fi
905

906

M
10l  
Michael Niedermayer 已提交
907
    if test "$fail" = "yes"; then
908 909 910 911
        exit 1
    fi
fi

D
Diego Biurrun 已提交
912
# compute MMX state
913
if test $mmx = "default"; then
914
    if test $cpu = "x86" -o $cpu = "x86_64"; then
915 916 917 918 919 920
        mmx="yes"
    else
        mmx="no"
    fi
fi

921 922
# check iwmmxt support
if test $iwmmxt = "default" -a $cpu = "armv4l"; then
923 924
    iwmmxt=no
    check_cc <<EOF && iwmmxt=yes
925
        int main(void) {
926 927 928 929 930
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
        }
EOF
fi

931
#Darwin CC versions
932
needmdynamicnopic="no"
933
if test $targetos = Darwin; then
934
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
935
        CFLAGS="$CFLAGS -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
936
    else
937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
        case "$gcc_version" in
            *2.95*)
                CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer"
                ;;
            *[34].*)
                CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer -force_cpusubtype_ALL -Wno-sign-compare"
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
            *)
                CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer"
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
        esac
955 956 957
    fi
fi

958 959 960 961 962 963 964 965 966
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
    if test $cpu = "powerpc"; then
        altivec="yes"
    else
        altivec="no"
    fi
fi

967 968
# Add processor-specific flags
TUNECPU="generic"
969
POWERPCMODE="32bits"
970 971
if test $tune != "generic"; then
    case $tune in
972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019
        601|ppc601|PowerPC601)
            CFLAGS="$CFLAGS -mcpu=601"
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
            fi
            TUNECPU=ppc601
        ;;
        603*|ppc603*|PowerPC603*)
            CFLAGS="$CFLAGS -mcpu=603"
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
            fi
            TUNECPU=ppc603
        ;;
        604*|ppc604*|PowerPC604*)
            CFLAGS="$CFLAGS -mcpu=604"
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
            fi
            TUNECPU=ppc604
        ;;
        G3|g3|75*|ppc75*|PowerPC75*)
            CFLAGS="$CFLAGS -mcpu=750 -mtune=750 -mpowerpc-gfxopt"
            if test $altivec = "yes"; then
                echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
            fi
            TUNECPU=ppc750
        ;;
        G4|g4|745*|ppc745*|PowerPC745*)
            CFLAGS="$CFLAGS -mcpu=7450 -mtune=7450 -mpowerpc-gfxopt"
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
            fi
            TUNECPU=ppc7450
        ;;
        74*|ppc74*|PowerPC74*)
            CFLAGS="$CFLAGS -mcpu=7400 -mtune=7400 -mpowerpc-gfxopt"
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
            fi
            TUNECPU=ppc7400
        ;;
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
            CFLAGS="$CFLAGS -mcpu=970 -mtune=970 -mpowerpc-gfxopt -mpowerpc64"
            if test $altivec = "no"; then
                echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
            fi
            TUNECPU=ppc970
1020
            POWERPCMODE="64bits"
1021 1022 1023 1024 1025 1026 1027
        ;;
        i[3456]86|pentium|pentiumpro|pentium-mmx|pentium[234]|prescott|k6|k6-[23]|athlon|athlon-tbird|athlon-4|athlon-[mx]p|winchip-c6|winchip2|c3|nocona|athlon64|k8|opteron|athlon-fx)
            CFLAGS="$CFLAGS -march=$tune"
        ;;
        *)
        echo "WARNING: Unknown CPU \"$tune\", ignored."
        ;;
1028 1029 1030
    esac
fi

1031 1032
# check for SIMD availability

1033
# AltiVec flags: The FSF version of GCC differs from the Apple version
1034 1035
if test $cpu = "powerpc"; then
    if test $altivec = "yes"; then
1036
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
S
Steven M. Schultz 已提交
1037
            CFLAGS="$CFLAGS -faltivec"
1038 1039 1040 1041 1042 1043
        else
            CFLAGS="$CFLAGS -maltivec -mabi=altivec"
        fi
    fi
fi

1044
check_header altivec.h && _altivec_h=yes || _altivec_h=no
1045

D
Diego Biurrun 已提交
1046
# check if our compiler supports Motorola AltiVec C API
1047
if test $altivec = "yes"; then
M
Måns Rullgård 已提交
1048 1049 1050 1051 1052 1053
    if test $_altivec_h = "yes"; then
        inc_altivec_h="#include <altivec.h>"
    else
        inc_altivec_h=
    fi
    check_cc <<EOF || altivec=no
1054
$inc_altivec_h
1055 1056 1057 1058 1059 1060 1061
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
1062

D
Diego Biurrun 已提交
1063
# mmi only available on mips
1064 1065 1066 1067 1068 1069 1070 1071
if test $mmi = "default"; then
    if test $cpu = "mips"; then
        mmi="yes"
    else
        mmi="no"
    fi
fi

D
Diego Biurrun 已提交
1072
# check if our compiler supports mmi
1073
enabled mmi && check_cc <<EOF || mmi="no"
1074 1075 1076 1077 1078
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103

# test gcc version to see if vector builtins can be used
# currently only used on i386 for MMX builtins
check_cc -msse <<EOF && builtin_vector=yes || builtin_vector=no
#include <xmmintrin.h>
int main(void) {
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
return 0;
#else
#error no vector builtins
#endif
}
EOF

# test for mm3dnow.h
test "$cpu" = "x86_64" && march=k8 || march=athlon
check_cc -march=$march <<EOF && mm3dnow=yes || mm3dnow=no
#include <mm3dnow.h>
int main(void) {
__m64 b1;
b1 = _m_pswapd(b1);
_m_femms();
return 0;
}
EOF
1104

G
Gildas Bazin 已提交
1105
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
1106 1107 1108 1109 1110
    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
1111
you do not need to pass additional options.
1112 1113 1114
EOF
        exit 1
    fi
1115
    v4l="no"
L
Luca Abeni 已提交
1116
    v4l2="no"
1117
    bktr="no"
1118
    audio_oss="no"
1119
    dv1394="no"
1120
    dc1394="no"
F
Fabrice Bellard 已提交
1121
    ffserver="no"
1122
    network="no"
M
Måns Rullgård 已提交
1123 1124 1125
    if test "$mingwce" = "yes"; then
        protocols="no"
    fi
F
Fabrice Bellard 已提交
1126 1127 1128
    SLIBPREF=""
    SLIBSUF=".dll"
    EXESUF=".exe"
1129
    if test "$force_prefix" != yes; then prefix="$PROGRAMFILES/FFmpeg"; fi
1130
    if test "$force_libdir" != yes; then bindir="$prefix"; fi
1131 1132
fi

1133 1134
# ---
# big/little-endian test
F
Fabrice Bellard 已提交
1135
if test -z "$cross_prefix" ; then
1136
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1137 1138
#include <inttypes.h>
int main(int argc, char ** argv){
1139 1140
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
1141 1142
}
EOF
F
Fabrice Bellard 已提交
1143
else
M
Måns Rullgård 已提交
1144 1145 1146 1147
    # programs cannot be launched if cross compiling, so make a static guess
    if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
        bigendian="yes"
    fi
F
Fabrice Bellard 已提交
1148 1149
fi

1150 1151
# ---
# *inttypes.h* test
1152
check_header inttypes.h || inttypes=no
1153

1154 1155
# ---
# *int_fast* test
1156
check_cc <<EOF || emu_fast_int=yes
1157 1158
#include <inttypes.h>
int main(int argc, char ** argv){
1159 1160
        volatile uint_fast64_t i=0x01234567;
        return 0;
1161 1162 1163
}
EOF

N
Nick Kurshev 已提交
1164 1165 1166 1167 1168
# ---
# check availability of some header files

_memalign=no
_malloc_h=no
1169 1170 1171 1172
if check_header malloc.h; then
    _malloc_h=yes
    _memalign=yes
    check_func memalign || _memalign="no"
N
Nick Kurshev 已提交
1173 1174
fi

1175
if test "$_memalign" = "no" -a "$mmx" = "yes" -a "$memalignhack" != "yes"; then
1176
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1177 1178
fi

1179
check_func localtime_r && localtime_r=yes || localtime_r=no
1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
enabled lzo && enabled gpl && check_lib lzo1x.h lzo_version -llzo || lzo="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
enabled dts     && require libdts dts.h dts_init -ldts
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame
enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc
1198
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1199 1200 1201 1202 1203
enabled theora  && require libtheora theora/theora.h theora_info_init -ltheora
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
1204

1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221
# 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

1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236
# 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

1237
# test for lrintf in math.h
1238
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
1239 1240 1241 1242 1243
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

F
Falk Hüffner 已提交
1244 1245
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
1246
    check_cc <<EOF && _restrict=$restrict_keyword && break
1247 1248
void foo(char * $restrict_keyword p);
EOF
F
Falk Hüffner 已提交
1249 1250
done

1251 1252
# dlopen/dlfcn.h probing

1253
check_header dlfcn.h && dlfcn=yes
1254

1255 1256 1257 1258
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1259
fi
1260
restore_flags
1261

1262 1263 1264
if check_func dlopen; then
    dlopen=yes
    ldl=
1265 1266
fi

M
Måns Rullgård 已提交
1267 1268
if test "$vhook" = "default"; then
    vhook="$dlopen"
1269 1270
fi

M
Michael Niedermayer 已提交
1271
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
1272
    add_extralibs $ldl
M
Michael Niedermayer 已提交
1273 1274
fi

1275 1276 1277 1278
if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi
M
Michael Niedermayer 已提交
1279

1280
##########################################
D
Diego Biurrun 已提交
1281
# imlib check
1282

1283 1284
temp_extralibs -lImlib2
check_ld <<EOF && imlib2=yes || imlib2=no
1285 1286 1287 1288
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF
1289
restore_flags
1290

1291
##########################################
D
Diego Biurrun 已提交
1292
# FreeType check
1293

1294
freetype2=no
1295
if test "x$targetos" != "xBeOS"; then
1296
  if (freetype-config --version) >/dev/null 2>&1 ; then
1297 1298 1299 1300 1301 1302 1303
      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
1304
  fi
1305 1306
fi

1307
##########################################
D
Diego Biurrun 已提交
1308
# SDL check
1309 1310 1311

sdl_too_old=no
sdl=no
1312 1313
SDL_CONFIG="${cross_prefix}sdl-config"
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1314 1315 1316 1317 1318 1319 1320 1321 1322
    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'`
1323
        if test "$_sdlversion" -lt 121 ; then
1324 1325 1326
            sdl_too_old=yes
        else
            sdl=yes
1327 1328 1329 1330 1331 1332 1333 1334
            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
1335 1336
        fi
    fi
1337
    restore_flags
M
Michael Niedermayer 已提交
1338
fi
1339

1340 1341
enabled sdl || ffplay=no

1342
##########################################
D
Diego Biurrun 已提交
1343
# texi2html check
1344 1345

texi2html=no
1346
if (texi2html -version) >/dev/null 2>&1; then
1347 1348 1349
texi2html=yes
fi

1350
##########################################
D
Diego Biurrun 已提交
1351
# IPv6 check
1352

1353
enabled network && check_ld <<EOF && ipv6=yes || ipv6=no
1354 1355 1356 1357 1358 1359 1360 1361 1362
#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);
1363
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1364 1365 1366
}
EOF

1367
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1368
enabled v4l2 && check_cc <<EOF || v4l2="no"
1369
#include <sys/time.h>
1370 1371
#include <asm/types.h>
#include <linux/videodev2.h>
1372
int dummy = V4L2_PIX_FMT_YUV420;
1373
struct v4l2_buffer dummy1;
1374 1375
EOF

1376 1377 1378 1379
enabled debug && add_cflags -g

# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
1380 1381
check_cflags -Wall
check_cflags -Wno-switch
1382

1383 1384
# add some linker flags
check_ldflags '-Wl,--as-needed' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavformat' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
F
Fabrice Bellard 已提交
1385

1386 1387
# not all compilers support -Os
test "$optimize" = "small" && check_cflags -Os
1388

1389
if enabled optimize; then
1390
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1391 1392
        CFLAGS="$CFLAGS -O5"
        LDFLAGS="$LDFLAGS -O5"
1393
    else
1394
        CFLAGS="-O3 $CFLAGS"
1395
    fi
1396 1397
fi

1398 1399
# PIC flags for shared library objects where they are needed
if test "$lshared" = "yes" ; then
M
Måns Rullgård 已提交
1400 1401 1402 1403 1404
    # LIBOBJFLAGS may have already been set in the OS configuration
    if test -z "$LIBOBJFLAGS" ; then
        if test "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "alpha" ; then
            LIBOBJFLAGS="\$(PIC)"
        fi
1405 1406 1407
    fi
fi

F
Fabrice Bellard 已提交
1408
if test x"$bindir" = x""; then
M
Måns Rullgård 已提交
1409
    bindir="${prefix}/bin"
F
Fabrice Bellard 已提交
1410 1411
fi

1412
if test x"$libdir" = x""; then
M
Måns Rullgård 已提交
1413
    libdir="${prefix}/lib"
1414 1415
fi

D
Diego Biurrun 已提交
1416
if test x"$incdir" = x""; then
M
Måns Rullgård 已提交
1417
    incdir="${prefix}/include/ffmpeg"
D
Diego Biurrun 已提交
1418 1419
fi

F
Fabrice Bellard 已提交
1420
if test x"$mandir" = x""; then
M
Måns Rullgård 已提交
1421
    mandir="${prefix}/man"
F
Fabrice Bellard 已提交
1422 1423
fi

D
Diego Biurrun 已提交
1424 1425
echo "install prefix   $prefix"
echo "source path      $source_path"
F
Fabrice Bellard 已提交
1426
echo "C compiler       $cc"
1427
echo "make             $make"
1428
echo "CPU              $cpu ($tune)"
1429
if test "$BUILDSUF" != ""; then
M
Måns Rullgård 已提交
1430
    echo "build suffix     $BUILDSUF"
1431
fi
D
Diego Biurrun 已提交
1432
echo "big-endian       $bigendian"
1433
echo "inttypes.h       $inttypes"
1434
echo "broken inttypes.h $emu_fast_int"
1435
if test $cpu = "x86" -o $cpu = "x86_64"; then
M
Måns Rullgård 已提交
1436 1437 1438
    echo "MMX enabled      $mmx"
    echo "Vector Builtins  $builtin_vector"
    echo "3DNow! Builtins  $mm3dnow"
F
Fabrice Bellard 已提交
1439
fi
1440
if test $cpu = "armv4l"; then
M
Måns Rullgård 已提交
1441
    echo "IWMMXT enabled   $iwmmxt"
1442
fi
F
Fabrice Bellard 已提交
1443
if test $cpu = "mips"; then
M
Måns Rullgård 已提交
1444
    echo "MMI enabled      $mmi"
F
Fabrice Bellard 已提交
1445 1446
fi
if test $cpu = "powerpc"; then
M
Måns Rullgård 已提交
1447
    echo "AltiVec enabled  $altivec"
F
Fabrice Bellard 已提交
1448
fi
F
Fabrice Bellard 已提交
1449
echo "gprof enabled    $gprof"
1450
echo "zlib enabled     $zlib"
1451
echo "lzo enabled      $lzo"
1452
echo "libgsm enabled   $libgsm"
1453
echo "mp3lame enabled  $mp3lame"
1454
echo "libogg enabled   $libogg"
D
Diego Biurrun 已提交
1455 1456 1457
echo "Vorbis enabled   $vorbis"
echo "Theora enabled   $theora"
echo "FAAD enabled     $faad"
Z
Zdenek Kabelac 已提交
1458
echo "faadbin enabled  $faadbin"
D
Diego Biurrun 已提交
1459 1460
echo "FAAC enabled     $faac"
echo "XviD enabled     $xvid"
1461
echo "x264 enabled     $x264"
F
Fabrice Bellard 已提交
1462
echo "a52 support      $a52"
Z
Zdenek Kabelac 已提交
1463
echo "a52 dlopened     $a52bin"
D
Diego Biurrun 已提交
1464
echo "DTS support      $dts"
1465
echo "pp support       $pp"
1466
echo "debug symbols    $debug"
1467
echo "strip symbols    $dostrip"
1468
echo "optimize         $optimize"
1469
echo "static           $lstatic"
D
typo  
Diego Biurrun 已提交
1470
echo "shared           $lshared"
D
Diego Biurrun 已提交
1471
echo "video hooking    $vhook"
1472 1473
echo "SDL support      $sdl"
if test $sdl_too_old = "yes"; then
M
Måns Rullgård 已提交
1474
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1475
fi
1476

M
Måns Rullgård 已提交
1477 1478 1479
if test "$vhook" = "yes"; then
    echo "Imlib2 support   $imlib2"
    echo "FreeType support $freetype2"
1480
fi
1481
echo "Sun medialib support"  $sunmlib
1482
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
1483 1484
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
1485
echo "AMR-WB float support"  $amr_wb
1486
echo "AMR-WB IF2 support"    $amr_if2
1487 1488
echo "network support      $network"
if test "$network" = "yes" ; then
M
Måns Rullgård 已提交
1489
    echo "IPv6 support         $ipv6"
1490
fi
1491
if test "$gpl" = "no" ; then
M
Måns Rullgård 已提交
1492
    echo "License: LGPL"
1493
else
M
Måns Rullgård 已提交
1494
    echo "License: GPL"
1495
fi
F
Fabrice Bellard 已提交
1496

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

1499 1500
date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
D
Diego Biurrun 已提交
1501 1502
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1503
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
F
Fabrice Bellard 已提交
1504

1505 1506
echo "prefix=\$(DESTDIR)$prefix" >> config.mak
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
D
Diego Biurrun 已提交
1507
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1508 1509
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1510
echo "MAKE=$make" >> config.mak
1511 1512
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
1513
echo "RANLIB=$ranlib" >> config.mak
1514
if test "$dostrip" = "yes" ; then
M
Måns Rullgård 已提交
1515 1516
    echo "STRIP=$strip" >> config.mak
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1517
else
M
Måns Rullgård 已提交
1518 1519
    echo "STRIP=echo ignoring strip" >> config.mak
    echo "INSTALLSTRIP=" >> config.mak
1520
fi
1521

D
Diego Biurrun 已提交
1522
# SHCFLAGS is a copy of CFLAGS without -mdynamic-no-pic, used when building
1523
# shared modules on OS/X (vhook/Makefile).
1524 1525
SHCFLAGS="$CFLAGS"
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1526

N
Nick Kurshev 已提交
1527
echo "OPTFLAGS=$CFLAGS" >> config.mak
1528
echo "SHCFLAGS=$SHCFLAGS">>config.mak
1529
echo "LDFLAGS=$LDFLAGS" >> config.mak
1530
echo "LDCONFIG=$LDCONFIG" >> config.mak
1531
echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
1532
echo "SHFLAGS=$SHFLAGS" >> config.mak
1533
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1534
echo "BUILD_STATIC=$lstatic" >> config.mak
1535
echo "BUILDSUF=$BUILDSUF" >> config.mak
1536
echo "LIBPREF=$LIBPREF" >> config.mak
1537
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1538 1539
if test "$lstatic" = "yes" ; then
  echo "LIB=$LIB" >> config.mak
1540 1541
else # Some Make complain if this variable does not exist.
  echo "LIB=" >> config.mak
1542
fi
1543
echo "SLIBPREF=$SLIBPREF" >> config.mak
1544 1545
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1546
echo "TARGET_OS=$TARGET_OS" >> config.mak
Z
Zdenek Kabelac 已提交
1547
if test "$cpu" = "x86" ; then
1548
  echo "TARGET_ARCH_X86=yes" >> config.mak
1549
  echo "#define ARCH_X86 1" >> $TMPH
1550 1551 1552
elif test "$cpu" = "x86_64" ; then
  echo "TARGET_ARCH_X86_64=yes" >> config.mak
  echo "#define ARCH_X86_64 1" >> $TMPH
1553
elif test "$cpu" = "armv4l" ; then
1554
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1555
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1556
elif test "$cpu" = "alpha" ; then
1557
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1558
  echo "#define ARCH_ALPHA 1" >> $TMPH
1559 1560 1561
elif test "$cpu" = "sparc64" ; then
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
  echo "#define ARCH_SPARC64 1" >> $TMPH
1562 1563 1564 1565 1566
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
elif test "$cpu" = "sparc" ; then
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
1567 1568 1569
elif test "$cpu" = "powerpc" ; then
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
  echo "#define ARCH_POWERPC 1" >> $TMPH
1570 1571 1572 1573 1574
  if test $POWERPCMODE = "32bits"; then
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
  else
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
  fi
1575 1576 1577
  if test "$powerpc_perf" = "yes"; then
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
  fi
1578 1579 1580
elif test "$cpu" = "mips" ; then
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
  echo "#define ARCH_MIPS 1" >> $TMPH
A
Alex Beregszaszi 已提交
1581 1582 1583
elif test "$cpu" = "sh4" ; then
  echo "TARGET_ARCH_SH4=yes" >> config.mak
  echo "#define ARCH_SH4 1" >> $TMPH
1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595
elif test "$cpu" = "parisc" ; then
  echo "TARGET_ARCH_PARISC=yes" >> config.mak
  echo "#define ARCH_PARISC 1" >> $TMPH
elif test "$cpu" = "s390" ; then
  echo "TARGET_ARCH_S390=yes" >> config.mak
  echo "#define ARCH_S390 1" >> $TMPH
elif test "$cpu" = "m68k" ; then
  echo "TARGET_ARCH_M68K=yes" >> config.mak
  echo "#define ARCH_M68K 1" >> $TMPH
elif test "$cpu" = "ia64" ; then
  echo "TARGET_ARCH_IA64=yes" >> config.mak
  echo "#define ARCH_IA64 1" >> $TMPH
A
Alex Beregszaszi 已提交
1596
fi
1597
echo "#define TUNECPU $TUNECPU" >> $TMPH
1598 1599 1600
if test "$bigendian" = "yes" ; then
  echo "WORDS_BIGENDIAN=yes" >> config.mak
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1601
fi
1602 1603
if test "$inttypes" != "yes" ; then
  echo "#define EMULATE_INTTYPES 1" >> $TMPH
1604
fi
1605
if test "$emu_fast_int" = "yes" ; then
1606
  echo "#define EMULATE_FAST_INT 1" >> $TMPH
1607
fi
Z
Zdenek Kabelac 已提交
1608
if test "$mmx" = "yes" ; then
1609
  echo "TARGET_MMX=yes" >> config.mak
1610
  echo "#define HAVE_MMX 1" >> $TMPH
M
Michael Niedermayer 已提交
1611
  echo "#define __CPU__ 586" >> $TMPH
F
Fabrice Bellard 已提交
1612
fi
1613 1614 1615 1616
if test "$builtin_vector" = "yes" ; then
  echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
  echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
fi
1617 1618 1619 1620
if test "$mm3dnow" = "yes" ; then
  echo "TARGET_BUILTIN_3DNOW=yes" >> config.mak
  echo "#define HAVE_MM3DNOW 1" >> $TMPH
fi
1621 1622 1623 1624
if test "$iwmmxt" = "yes" ; then
  echo "TARGET_IWMMXT=yes" >> config.mak
  echo "#define HAVE_IWMMXT 1" >> $TMPH
fi
1625 1626 1627 1628
if test "$mmi" = "yes" ; then
  echo "TARGET_MMI=yes" >> config.mak
  echo "#define HAVE_MMI 1" >> $TMPH
fi
1629 1630 1631
if test "$altivec" = "yes" ; then
  echo "TARGET_ALTIVEC=yes" >> config.mak
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1632 1633
  echo "// Enable the next line to use the reference C code instead of AltiVec" >> $TMPH
  echo "// #define ALTIVEC_USE_REFERENCE_C_CODE 1" >> $TMPH
1634 1635 1636
  if test "$_altivec_h" = "yes" ; then
    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
  else
A
1l  
Alex Beregszaszi 已提交
1637
    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
1638
  fi
1639
fi
Z
Zdenek Kabelac 已提交
1640
if test "$gprof" = "yes" ; then
1641
  echo "TARGET_GPROF=yes" >> config.mak
1642
  echo "#define HAVE_GPROF 1" >> $TMPH
F
Fabrice Bellard 已提交
1643
fi
1644 1645 1646
if test "$localtime_r" = "yes" ; then
  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
fi
1647 1648 1649
if test "$imlib2" = "yes" ; then
  echo "HAVE_IMLIB2=yes" >> config.mak
fi
1650 1651 1652
if test "$freetype2" = "yes" ; then
  echo "HAVE_FREETYPE2=yes" >> config.mak
fi
1653 1654 1655 1656
if test "$sunmlib" = "yes" ; then
  echo "HAVE_MLIB=yes" >> config.mak
  echo "#define HAVE_MLIB 1" >> $TMPH
fi
1657 1658 1659
if test "$pthreads" = "yes" ; then
  echo "HAVE_PTHREADS=yes" >> config.mak
  echo "#define HAVE_PTHREADS 1" >> $TMPH
1660
  echo "#define HAVE_THREADS 1" >> $TMPH
1661
fi
1662 1663
if test "$sdl" = "yes" ; then
  echo "CONFIG_SDL=yes" >> config.mak
1664 1665
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1666 1667 1668
  if test "$sdl_video_size" = "yes"; then
    echo "#define HAVE_SDL_VIDEO_SIZE 1" >> $TMPH
  fi
1669
fi
1670 1671 1672
if test "$texi2html" = "yes"; then
  echo "BUILD_DOC=yes" >> config.mak
fi
1673 1674 1675
if test "$have_lrintf" = "yes" ; then
  echo "#define HAVE_LRINTF 1" >> $TMPH
fi
1676 1677 1678 1679
if test "$vhook" = "yes" ; then
  echo "BUILD_VHOOK=yes" >> config.mak
  echo "#define HAVE_VHOOK 1" >> $TMPH
fi
L
Luca Barbato 已提交
1680

1681
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
L
Luca Barbato 已提交
1682 1683 1684 1685 1686 1687
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 已提交
1688
if test "$lshared" = "yes" ; then
1689
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
N
Nick Kurshev 已提交
1690
  echo "BUILD_SHARED=yes" >> config.mak
1691
  echo "PIC=-fPIC -DPIC" >> config.mak
1692
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1693
  echo "SPPVERSION=$lavc_version" >> config.mak
1694
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1695
  echo "LAVCVERSION=$lavc_version" >> config.mak
1696
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1697
  echo "LAVFVERSION=$lavf_version" >> config.mak
1698
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1699
  echo "LAVUVERSION=$lavu_version" >> config.mak
1700
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1701 1702
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
N
Nick Kurshev 已提交
1703
fi
1704
echo "EXTRALIBS=$extralibs" >> config.mak
1705

D
Diego Biurrun 已提交
1706
# If you do not want to use encoders, disable them.
1707
echo "#define CONFIG_ENCODERS 1" >> $TMPH
1708 1709
echo "CONFIG_ENCODERS=yes" >> config.mak

D
Diego Biurrun 已提交
1710
# If you do not want to use decoders, disable them.
1711
echo "#define CONFIG_DECODERS 1" >> $TMPH
1712 1713
echo "CONFIG_DECODERS=yes" >> config.mak

1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725
# muxers
if test "$muxers" = "yes" ; then
  echo "#define CONFIG_MUXERS 1" >> $TMPH
  echo "CONFIG_MUXERS=yes" >> config.mak
fi

# demuxers
if test "$demuxers" = "yes" ; then
  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
  echo "CONFIG_DEMUXERS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1726 1727 1728 1729
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1730

F
Fabrice Bellard 已提交
1731 1732 1733 1734 1735 1736
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1737 1738 1739 1740 1741 1742
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1743 1744 1745 1746 1747 1748
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1749
# MPEG audio high precision mode
1750 1751 1752 1753
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1754 1755 1756 1757 1758
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

L
Luca Abeni 已提交
1759 1760 1761 1762 1763
if test "$v4l2" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1764 1765 1766 1767 1768
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1769 1770 1771 1772 1773
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1774 1775 1776 1777 1778
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1779 1780 1781 1782 1783 1784 1785 1786
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 已提交
1787 1788 1789
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1790 1791
fi

1792 1793 1794 1795 1796
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1797 1798 1799
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1800
fi
1801

1802 1803 1804 1805
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

1806 1807 1808 1809 1810
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

1811 1812 1813 1814 1815
if test "$lzo" = "yes" ; then
  echo "#define CONFIG_LZO 1" >> $TMPH
  echo "CONFIG_LZO=yes" >> config.mak
fi

1816 1817 1818 1819 1820
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1821
if test "$mp3lame" = "yes" ; then
1822
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
1823 1824 1825
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

1826
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
1827 1828 1829 1830
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

1831
if test "$vorbis" = "yes" ; then
N
Nilesh Bansal 已提交
1832 1833 1834 1835 1836 1837 1838
  echo "#define CONFIG_LIBVORBIS 1" >> $TMPH
  echo "CONFIG_LIBVORBIS=yes" >> config.mak
fi

if test "$theora" = "yes" ; then
  echo "#define CONFIG_LIBTHEORA 1" >> $TMPH
  echo "CONFIG_LIBTHEORA=yes" >> config.mak
1839 1840
fi

1841 1842 1843 1844 1845 1846 1847
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 已提交
1848
  echo "CONFIG_FAADBIN=yes" >> config.mak
1849 1850
fi

1851 1852 1853 1854 1855
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

1856 1857 1858 1859 1860
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

1861 1862 1863 1864 1865
if test "$x264" = "yes" ; then
  echo "#define CONFIG_X264 1" >> $TMPH
  echo "CONFIG_X264=yes" >> config.mak
fi

1866 1867 1868
if test "$mingw32" = "yes" ; then
  echo "#define CONFIG_WIN32 1" >> $TMPH
  echo "CONFIG_WIN32=yes" >> config.mak
1869 1870
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
1871
  echo "#define HAVE_THREADS 1" >> $TMPH
1872
  echo "#ifndef __MINGW32__" >> $TMPH
1873
  echo "#define __MINGW32__ 1" >> $TMPH
1874
  echo "#endif" >> $TMPH
1875 1876
fi

G
Gildas Bazin 已提交
1877 1878 1879 1880 1881 1882 1883 1884 1885 1886
if test "$mingwce" = "yes" ; then
  echo "#define CONFIG_WIN32 1" >> $TMPH
  echo "CONFIG_WIN32=yes" >> config.mak
  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

1887 1888 1889
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
1890 1891 1892
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
1893 1894
fi

1895 1896 1897 1898
if test "$TARGET_OS" = "SunOS" ; then
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

1899 1900 1901 1902 1903 1904
if test "$TARGET_OS" = "BeOS" ; then
  echo "HAVE_BEOSTHREADS=yes" >> config.mak
  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
fi

1905 1906 1907 1908 1909
if test "$darwin" = "yes"; then
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1910
if test "$_malloc_h" = "yes" ; then
1911
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
1912
else
1913
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
1914 1915
fi

Z
Zdenek Kabelac 已提交
1916
if test "$_memalign" = "yes" ; then
1917 1918 1919 1920 1921
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

1922 1923 1924 1925 1926
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi


1927 1928 1929 1930 1931
if test "$netserver" = "yes" ; then
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

1932 1933 1934 1935
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1936
if test "$simpleidct" = "yes" ; then
1937 1938 1939
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

1940 1941 1942 1943 1944
if test "$protocols" = "yes" ; then
  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
  echo "CONFIG_PROTOCOLS=yes" >> config.mak
fi

1945 1946 1947 1948 1949
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

1950 1951 1952 1953
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

1954 1955 1956 1957 1958
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

1961 1962 1963 1964
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
fi

1965 1966
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977
    DIRS="\
         doc \
         libavformat \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
         libavcodec/i386 \
         libavcodec/sparc \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/liba52 \
1978
         libpostproc \
1979 1980 1981 1982 1983 1984 1985 1986
         libavutil \
         tests \
         vhook \
         "
    FILES="\
          Makefile \
          libavformat/Makefile \
          libavcodec/Makefile \
1987
          libpostproc/Makefile \
1988 1989 1990 1991 1992 1993
          libavutil/Makefile \
          tests/Makefile \
          vhook/Makefile \
          doc/Makefile \
          doc/texi2pod.pl \
          "
1994 1995 1996 1997
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
M
Michael Niedermayer 已提交
1998
        ln -sf "$source_path/$f" $f
1999 2000
    done
fi
2001
echo "SRC_PATH=$source_path" >> config.mak
2002
echo "BUILD_ROOT=$PWD" >> config.mak
2003

D
Diego Biurrun 已提交
2004 2005 2006 2007 2008
if test "$amr" = "yes" ; then
  echo "#define AMR 1" >> $TMPH
  echo "AMR=yes" >> config.mak
fi

2009 2010 2011 2012 2013 2014 2015 2016 2017 2018
if test "$amr_wb" = "yes" ; then
  echo "#define AMR_WB 1" >> $TMPH
  echo "AMR_WB=yes" >> config.mak
  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

2019 2020 2021 2022
if test "$amr_nb" = "yes" ; then
  echo "#define AMR_NB 1" >> $TMPH
  echo "AMR_NB=yes" >> config.mak
  echo
2023 2024
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
D
Diego Biurrun 已提交
2025
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
2026 2027 2028 2029
  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 已提交
2030 2031
if test "$amr_nb_fixed" = "yes" ; then
  echo "#define AMR_NB_FIXED 1" >> $TMPH
D
Diego Biurrun 已提交
2032
  echo "AMR_NB_FIXED=yes" >> config.mak
D
Diego Biurrun 已提交
2033
  echo
Z
Zdenek Kabelac 已提交
2034 2035
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
D
Diego Biurrun 已提交
2036
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
2037
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
2038 2039
  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"
2040 2041
fi

2042 2043 2044 2045
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2046

2047
for codec in $CODEC_LIST ; do
2048 2049
    echo "#define CONFIG_`echo $codec | tr a-z A-Z` 1" >> $TMPH
    echo "CONFIG_`echo $codec | tr a-z A-Z`=yes" >> config.mak
2050 2051
done

2052 2053
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
2054
if test "$?" != "0" ; then
2055 2056 2057 2058
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
2059

2060
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2061 2062


D
Diego Biurrun 已提交
2063
# build pkg-config files libav*.pc and libpostproc.pc
2064 2065 2066 2067 2068 2069 2070 2071 2072 2073
# libavutil.pc
cat <<EOF >libavutil.pc
prefix=$prefix
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2074
Requires:
2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088
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
2089
Requires:
2090 2091 2092 2093
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
2094 2095 2096 2097 2098 2099 2100 2101 2102 2103

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

Name: libavcodec
Description: FFmpeg codec library
2104
Version: $lavc_version
2105
Requires: $pkg_requires libavutil = $lavu_version
2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118
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
2119
Version: $lavc_version
2120
Requires: $pkg_requires libavutil = $lavu_version
2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134
Conflicts:
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF

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

Name: libavformat
Description: FFmpeg container format library
2135
Version: $lavf_version
2136
Requires: $pkg_requires libavcodec = $lavc_version
2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149
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
2150
Version: $lavf_version
2151
Requires: $pkg_requires libavcodec = $lavc_version
2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166
Conflicts:
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF


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

Name: libpostproc
Description: FFmpeg post processing library
2167
Version: $lavc_version
2168
Requires:
2169 2170 2171 2172 2173 2174 2175 2176
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

cat <<EOF >libpostproc-uninstalled.pc
prefix=
exec_prefix=
2177 2178
libdir=\${pcfiledir}/libpostproc
includedir=\${pcfiledir}/libpostproc
2179 2180 2181

Name: libpostproc
Description: FFmpeg post processing library
2182
Version: $lavc_version
2183
Requires:
2184 2185 2186 2187
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF