configure 52.8 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 12 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
show_help(){
  echo "Usage: configure [options]"
  echo "Options: [defaults in brackets after descriptions]"
  echo
  echo "Standard options:"
  echo "  --help                   print this message"
  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
}
98

99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 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_flags(){
    (:${SAVE_CFLAGS?}) 2>/dev/null && return
    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 $*"
}

check_cc(){
    cat >$TMPC
    ${cross_prefix}$cc $CFLAGS "$@" -c -o $TMPO $TMPC >/dev/null 2>&1
}

check_ld(){
    cat >$TMPC
    ${cross_prefix}$cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs >/dev/null 2>&1
}

check_cflags(){
    check_cc "$@" <<EOF && CFLAGS="$CFLAGS $*"
int x;
EOF
}

check_ldflags(){
    check_ld "$@" <<EOF && LDFLAGS="$LDFLAGS $*"
int x;
EOF
}

check_header(){
    header=$1
    shift
    check_cc "$@" <<EOF
#include <$header>
int x;
EOF
}

check_func(){
    func=$1
    shift
    check_ld "$@" <<EOF
extern int $func();
int main(){
    $func();
}
EOF
}

check_exec(){
    check_ld "$@" && (test -z "$cross_prefix" && $TMPE || true)
}

176 177
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
    show_help
178 179
fi

180
# set temporary file name
Z
Zdenek Kabelac 已提交
181
if test ! -z "$TMPDIR" ; then
182
    TMPDIR1="${TMPDIR}"
Z
Zdenek Kabelac 已提交
183
elif test ! -z "$TEMPDIR" ; then
184
    TMPDIR1="${TEMPDIR}"
N
Nick Kurshev 已提交
185
else
186
    TMPDIR1="/tmp"
N
Nick Kurshev 已提交
187 188
fi

189 190
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
191
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
192 193 194
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

F
Fabrice Bellard 已提交
195 196
# default parameters
prefix="/usr/local"
197
libdir=""
D
Diego Biurrun 已提交
198
incdir=""
F
Fabrice Bellard 已提交
199
mandir=""
F
Fabrice Bellard 已提交
200
bindir=""
201
cross_prefix=""
F
Fabrice Bellard 已提交
202 203
cc="gcc"
ar="ar"
M
Michael Niedermayer 已提交
204
ranlib="ranlib"
205
make="make"
206
strip="strip"
F
Fabrice Bellard 已提交
207
cpu=`uname -m`
208
tune="generic"
209
powerpc_perf="no"
210
mmx="default"
211
iwmmxt="default"
212
altivec="default"
213
mmi="default"
F
Fabrice Bellard 已提交
214
case "$cpu" in
215
  i386|i486|i586|i686|i86pc|BePC)
F
Fabrice Bellard 已提交
216 217
    cpu="x86"
  ;;
218 219 220 221 222 223 224
  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
225 226
    fi
  ;;
227 228
  # armv4l is a subset of armv5tel
  armv4l|armv5tel)
229 230
    cpu="armv4l"
  ;;
231 232 233
  alpha)
    cpu="alpha"
  ;;
A
Alex Beregszaszi 已提交
234
  "Power Macintosh"|ppc|powerpc)
235 236
    cpu="powerpc"
  ;;
237
  mips|mipsel)
238 239
    cpu="mips"
  ;;
240
  sun4u|sparc64)
241 242
    cpu="sparc64"
  ;;
243 244 245
  sparc)
    cpu="sparc"
  ;;
A
Alex Beregszaszi 已提交
246 247 248
  sh4)
    cpu="sh4"
  ;;
249 250 251 252 253 254 255 256 257 258 259 260
  parisc|parisc64)
    cpu="parisc"
  ;;
  s390|s390x)
    cpu="s390"
  ;;
  m68k)
    cpu="m68k"
  ;;
  ia64)
    cpu="ia64"
  ;;
F
Fabrice Bellard 已提交
261
  *)
262
    cpu="unknown"
F
Fabrice Bellard 已提交
263 264 265
  ;;
esac
gprof="no"
F
Fabrice Bellard 已提交
266
v4l="yes"
L
Luca Abeni 已提交
267
v4l2="yes"
268
bktr="no"
F
Fabrice Bellard 已提交
269
audio_oss="yes"
270
audio_beos="no"
271
dv1394="yes"
272
dc1394="no"
F
Fabrice Bellard 已提交
273
network="yes"
274
zlib="yes"
275
lzo="yes"
276
libgsm="no"
277
mp3lame="no"
278
libogg="no"
279
vorbis="no"
N
Nilesh Bansal 已提交
280
theora="no"
281 282
faad="no"
faadbin="no"
283
faac="no"
284
xvid="no"
285
x264="no"
286
a52="no"
Z
Zdenek Kabelac 已提交
287
a52bin="no"
288
dts="no"
289
pp="no"
290
mingw32="no"
G
Gildas Bazin 已提交
291
mingwce="no"
292
cygwin="no"
293
os2="no"
294
lstatic="yes"
295
lshared="no"
296 297
optimize="yes"
debug="yes"
298
dostrip="yes"
299
installstrip="-s"
300
extralibs="-lm"
301
simpleidct="yes"
302
bigendian="no"
303
inttypes="yes"
304
emu_fast_int="no"
305
vhook="default"
306 307
dlfcn="no"
dlopen="no"
308
mpegaudio_hp="yes"
309
SHFLAGS='-shared -Wl,-soname,$@'
310
netserver="no"
311
need_inet_aton="no"
312
protocols="yes"
313
ffserver="yes"
314
ffplay="yes"
315
LIBOBJFLAGS=""
316
FFLDFLAGS=-Wl,--warn-common
317
FFSLDFLAGS=-Wl,-E
318
LDCONFIG="ldconfig"
319 320
LIBPREF="lib"
LIBSUF=".a"
321
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
322 323
SLIBPREF="lib"
SLIBSUF=".so"
324
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
325 326
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
F
Fabrice Bellard 已提交
327
EXESUF=""
328
BUILDSUF=""
329
amr_nb="no"
330
amr_wb="no"
Z
Zdenek Kabelac 已提交
331
amr_nb_fixed="no"
332
amr_if2="no"
333
sunmlib="no"
334
pthreads="no"
335
gpl="no"
336
memalignhack="no"
337 338
muxers="yes"
demuxers="yes"
339 340 341 342 343 344 345

# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
prefix="/boot/home/config"
# helps building libavcodec
346
CFLAGS="$CFLAGS -DPIC -fomit-frame-pointer"
347
# 3 gcc releases known for BeOS, each with ugly bugs
348
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
349 350 351 352 353 354 355 356
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
357
SHFLAGS=-nostart
D
Diego Biurrun 已提交
358
# disable Linux things
359
audio_oss="no"
F
Fabrice Bellard 已提交
360
v4l="no"
L
Luca Abeni 已提交
361
v4l2="no"
362
dv1394="no"
D
Diego Biurrun 已提交
363
# enable BeOS things
364
audio_beos="yes"
365 366 367 368 369
# 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
370
netserver="yes"
371
need_inet_aton="yes"
372
extralibs="-lnet"
373
fi ;;
374 375
SunOS)
v4l="no"
L
Luca Abeni 已提交
376
v4l2="no"
377
audio_oss="no"
378
dv1394="no"
379
make="gmake"
380
FFLDFLAGS=""
381 382 383 384
FFSLDFLAGS=""
need_inet_aton="yes"
extralibs="$extralibs -lsocket -lnsl"
;;
385 386
NetBSD)
v4l="no"
L
Luca Abeni 已提交
387
v4l2="no"
388
bktr="yes"
389 390 391
audio_oss="yes"
dv1394="no"
make="gmake"
392
FFLDFLAGS="$FFLDFLAGS -export-dynamic"
393
extralibs="$extralibs -lossaudio"
394
;;
395 396
OpenBSD)
v4l="no"
L
Luca Abeni 已提交
397
v4l2="no"
398
bktr="yes"
399 400 401
audio_oss="yes"
dv1394="no"
make="gmake"
402
LIBOBJFLAGS="\$(PIC)"
403
FFLDFLAGS="$FFLDFLAGS -export-dynamic -pthread"
404
LDCONFIG="ldconfig -m \$(libdir)"
405 406
extralibs="$extralibs -lossaudio"
;;
407 408
FreeBSD)
v4l="no"
L
Luca Abeni 已提交
409
v4l2="no"
410
bktr="yes"
411
audio_oss="yes"
412
dv1394="no"
413
make="gmake"
414
CFLAGS="$CFLAGS -pthread"
415
FFLDFLAGS="$FFLDFLAGS -export-dynamic -pthread"
416
;;
417
BSD/OS)
F
Fabrice Bellard 已提交
418
v4l="no"
L
Luca Abeni 已提交
419
v4l2="no"
420
bktr="yes"
F
Fabrice Bellard 已提交
421
audio_oss="yes"
422
dv1394="no"
423 424
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
425 426
strip="strip -d"
installstrip=""
427
;;
428
Darwin)
429
cc="cc"
430
v4l="no"
L
Luca Abeni 已提交
431
v4l2="no"
432
audio_oss="no"
433
dv1394="no"
434
SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(libdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
435
extralibs=""
436
darwin="yes"
437
strip="strip -x"
438
installstrip=""
439
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
440
SLIBSUF=".dylib"
441 442
SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
443
FFSLDFLAGS=-Wl,-bind_at_load
444
;;
445
MINGW32*)
F
Fabrice Bellard 已提交
446
# Note: the rest of the mingw32 config is done afterwards as mingw32
D
Diego Biurrun 已提交
447
# can be forced on the command line for Linux cross compilation.
448 449
mingw32="yes"
;;
450 451
CYGWIN*)
v4l="no"
L
Luca Abeni 已提交
452
v4l2="no"
453
audio_oss="yes"
454
dv1394="no"
455
vhook="no"
456 457
extralibs=""
cygwin="yes"
458
EXESUF=".exe"
459
;;
460
Linux)
461
FFLDFLAGS="$FFLDFLAGS -rdynamic -Wl,--as-needed -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil"
462
;;
463 464 465
IRIX*)
ranlib="echo ignoring ranlib"
v4l="no"
L
Luca Abeni 已提交
466
v4l2="no"
467 468 469
audio_oss="no"
make="gmake"
;;
470 471
OS/2)
TMPE=$TMPE".exe"
472
ar="emxomfar -p128"
473 474
ranlib="echo ignoring ranlib"
strip="echo ignoring strip"
475
CFLAGS="$CFLAGS -Zomf"
476
FFLDFLAGS="-Zomf -Zstack 16384 -s"
477
SHFLAGS="-Zdll -Zomf"
478 479 480 481 482
FFSLDFLAGS=""
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
F
Fabrice Bellard 已提交
483
EXESUF=".exe"
484
extralibs=""
485
pkg_requires=""
486
v4l="no"
L
Luca Abeni 已提交
487
v4l2="no"
488
audio_oss="no"
489
dv1394="no"
490
ffserver="no"
491
vhook="no"
492
os2="yes"
493

494
;;
495 496
*) ;;
esac
F
Fabrice Bellard 已提交
497

D
Diego Biurrun 已提交
498
# From MPlayer configure. We need TARGET_OS available
499
# to the Makefile, so it can distinguish between flavors
D
Diego Biurrun 已提交
500
# of AltiVec on PowerPC.
501 502
TARGET_OS=`( uname -s ) 2>&1`
  case "$TARGET_OS" in
A
Alex Beregszaszi 已提交
503
  Linux|FreeBSD|NetBSD|BSD/OS|OpenBSD|SunOS|QNX|Darwin|GNU|BeOS|MorphOS)
504 505 506 507 508 509 510 511 512 513 514 515 516 517 518
    ;;
  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

519
# find source path
520
source_path="`dirname $0`"
521 522 523 524
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
    source_path=`pwd`
    source_path_used="no"
525 526
else
    source_path="`cd \"$source_path\"; pwd`"
F
Fabrice Bellard 已提交
527 528
fi

529 530 531 532 533
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

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

F
Fabrice Bellard 已提交
536 537
for opt do
  case "$opt" in
538
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`; force_prefix=yes
F
Fabrice Bellard 已提交
539
  ;;
540
  --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`; force_libdir=yes
541
  ;;
D
Diego Biurrun 已提交
542 543
  --incdir=*) incdir=`echo $opt | cut -d '=' -f 2`;
  ;;
F
Fabrice Bellard 已提交
544 545
  --mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
  ;;
546 547 548 549
  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
  ;;
  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
  ;;
550
  --cc=*) cc=`echo $opt | cut -d '=' -f 2-`
F
Fabrice Bellard 已提交
551
  ;;
552 553
  --make=*) make=`echo $opt | cut -d '=' -f 2`
  ;;
554
  --extra-cflags=*) CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
555
  ;;
556
  --extra-ldflags=*) FFLDFLAGS="$FFLDFLAGS ${opt#--extra-ldflags=}"
557 558 559
  ;;
  --extra-libs=*) extralibs=${opt#--extra-libs=}
  ;;
560 561
  --build-suffix=*) BUILDSUF=${opt#--build-suffix=}
  ;;
F
Fabrice Bellard 已提交
562 563
  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
  ;;
564 565
  --tune=*) tune=`echo $opt | cut -d '=' -f 2`
  ;;
566 567
  --powerpc-perf-enable) powerpc_perf="yes"
  ;;
F
Fabrice Bellard 已提交
568 569
  --disable-mmx) mmx="no"
  ;;
570 571
  --disable-iwmmxt) iwmmxt="no"
  ;;
572 573
  --disable-altivec) altivec="no"
  ;;
F
Fabrice Bellard 已提交
574 575
  --enable-gprof) gprof="yes"
  ;;
F
Fabrice Bellard 已提交
576 577
  --disable-v4l) v4l="no"
  ;;
L
Luca Abeni 已提交
578 579
  --disable-v4l2) v4l2="no"
  ;;
580 581
  --disable-bktr) bktr="no"
  ;;
F
Fabrice Bellard 已提交
582 583
  --disable-audio-oss) audio_oss="no"
  ;;
584 585
  --disable-audio-beos) audio_beos="no"
  ;;
586 587
  --disable-dv1394) dv1394="no"
  ;;
588
  --disable-network) network="no"; ffserver="no"
F
Fabrice Bellard 已提交
589
  ;;
590 591
  --disable-zlib) zlib="no"
  ;;
592 593
  --disable-lzo) lzo="no"
  ;;
594
  --enable-a52) a52="yes"
595
  ;;
M
Michael Niedermayer 已提交
596
  --enable-a52bin) a52bin="yes"
Z
Zdenek Kabelac 已提交
597
  ;;
598 599
  --enable-dts) dts="yes"
    extralibs="$extralibs -ldts"
600
  ;;
601
  --enable-pp) pp="yes"
602
  ;;
603
  --enable-libgsm) libgsm="yes"
604
    extralibs="$extralibs -lgsm"
605
  ;;
606 607
  --enable-mp3lame) mp3lame="yes"
    extralibs="$extralibs -lmp3lame"
608
  ;;
609
  --enable-libogg) libogg="yes"
610 611
    extralibs="$extralibs -logg"
    pkg_requires="$pkg_requires ogg >= 1.1"
N
Nilesh Bansal 已提交
612
  ;;
613
  --enable-vorbis) vorbis="yes"
614 615
    extralibs="$extralibs -lvorbis -lvorbisenc"
    pkg_requires="$pkg_requires vorbis vorbisenc"
616
  ;;
N
Nilesh Bansal 已提交
617
  --enable-theora) theora="yes"
618 619
    extralibs="$extralibs -ltheora"
    pkg_requires="$pkg_requires theora"
N
Nilesh Bansal 已提交
620
  ;;
Z
Zdenek Kabelac 已提交
621
  --enable-faad) faad="yes"
622
    extralibs="$extralibs -lfaad"
Z
Zdenek Kabelac 已提交
623 624 625
  ;;
  --enable-faadbin) faadbin="yes"
  ;;
626 627
  --enable-faac) faac="yes"
    extralibs="$extralibs -lfaac"
628
  ;;
629
  --enable-xvid) xvid="yes"
630
    extralibs="$extralibs -lxvidcore"
631
  ;;
632 633
  --enable-x264) x264="yes"
    extralibs="$extralibs -lx264"
634
  ;;
635
  --enable-dc1394) dc1394="yes"
636 637
    extralibs="$extralibs -ldc1394_control -lraw1394"
    pkg_requires="$pkg_requires libraw1394"
638
  ;;
639 640
  --disable-vhook) vhook="no"
  ;;
641
  --disable-simple_idct) simpleidct="no"
642
  ;;
643 644
  --enable-mingw32) mingw32="yes"
  ;;
G
Gildas Bazin 已提交
645 646
  --enable-mingwce) mingwce="yes"
  ;;
647 648 649 650
  --enable-static) lstatic="yes"
  ;;
  --disable-static) lstatic="no"
  ;;
651
  --enable-shared) lshared="yes"
N
Nick Kurshev 已提交
652
  ;;
653 654
  --disable-shared) lshared="no"
  ;;
655 656 657 658
  --disable-debug) debug="no"
  ;;
  --disable-opts) optimize="no"
  ;;
659 660
  --disable-mpegaudio-hp) mpegaudio_hp="no"
  ;;
661 662
  --disable-protocols) protocols="no"; network="no"; ffserver="no"
  ;;
663 664
  --disable-ffserver) ffserver="no"
  ;;
665 666
  --disable-ffplay) ffplay="no"
  ;;
667
  --enable-small) optimize="small"
668
  ;;
D
Diego Biurrun 已提交
669
  --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
670
  ;;
D
Diego Biurrun 已提交
671
  --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
Z
Zdenek Kabelac 已提交
672
  ;;
D
Diego Biurrun 已提交
673
  --enable-amr_wb) amr="yes"; amr_wb="yes"
674
  ;;
D
Diego Biurrun 已提交
675
  --enable-amr_if2) amr="yes"; amr_if2="yes"
676
  ;;
677 678
  --enable-sunmlib) sunmlib="yes"
  ;;
679 680
  --enable-pthreads) pthreads="yes"
  ;;
681 682
  --enable-gpl) gpl="yes"
  ;;
683 684
  --enable-memalign-hack) memalignhack="yes"
  ;;
685 686
  --disable-strip) dostrip="no"
  ;;
687
  --enable-encoder=*) CODEC_LIST="$CODEC_LIST ${opt#--enable-encoder=}_encoder"
688
  ;;
689 690 691 692 693
  --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##\"`"
694 695 696
  ;;
  --disable-encoders) CODEC_LIST="`echo $CODEC_LIST | sed 's/[-_a-zA-Z0-9]*encoder//g'`"
  ;;
697 698
  --disable-decoders) CODEC_LIST="`echo $CODEC_LIST | sed 's/[-_a-zA-Z0-9]*decoder//g'`"
  ;;
699
  --disable-muxers) muxers="no"; ffserver="no"
700 701 702
  ;;
  --disable-demuxers) demuxers="no"
  ;;
703 704
  --help) show_help
  ;;
705 706 707 708 709
  *)
  echo "Unknown option \"$opt\"."
  echo "See $0 --help for available options."
  exit 1
  ;;
F
Fabrice Bellard 已提交
710 711 712
  esac
done

713 714 715 716

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

717 718 719 720 721 722 723 724 725 726 727
# 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 已提交
728
if test "$theora" = "yes" ; then
729
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
730
        echo "libogg must be enabled to enable Theora."
N
Nilesh Bansal 已提交
731 732 733 734 735 736
        fail="yes"
        theora="no"
    fi
fi

if test "$vorbis" = "yes" ; then
737
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
738
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
739 740 741 742 743
        fail="yes"
        vorbis="no"
    fi
fi

744
if test "$gpl" != "yes"; then
745
    if test "$pp" != "no"; then
D
Diego Biurrun 已提交
746
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
747 748 749 750
        fail="yes"
    fi

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

755
    if test "$xvid" != "no"; then
D
Diego Biurrun 已提交
756
        echo "libxvidcore is under GPL and --enable-gpl is not specified."
757 758 759
        fail="yes"
    fi

760
    if test "$x264" != "no"; then
D
Diego Biurrun 已提交
761
        echo "x264 is under GPL and --enable-gpl is not specified."
762 763 764
        fail="yes"
    fi

765
    if test "$dts" != "no"; then
D
Diego Biurrun 已提交
766
        echo "libdts is under GPL and --enable-gpl is not specified."
767 768
        fail="yes"
    fi
769

770
    if test "$faad" != "no" -o "$faadbin" != "no"; then
771 772
        if check_header faad.h; then
            check_cc << EOF
773 774 775 776 777 778
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
779
            if test $? = 0 ; then
D
Diego Biurrun 已提交
780
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
781 782 783 784 785
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
D
Diego Biurrun 已提交
786
            echo "FAAD test failed."
787 788
        fi
    fi
789

790

M
10l  
Michael Niedermayer 已提交
791
    if test "$fail" = "yes"; then
792 793 794 795
        exit 1
    fi
fi

D
Diego Biurrun 已提交
796
# compute MMX state
797
if test $mmx = "default"; then
798
    if test $cpu = "x86" -o $cpu = "x86_64"; then
799 800 801 802 803 804
        mmx="yes"
    else
        mmx="no"
    fi
fi

805 806
# check iwmmxt support
if test $iwmmxt = "default" -a $cpu = "armv4l"; then
807 808
    iwmmxt=no
    check_cc <<EOF && iwmmxt=yes
809
        int main(void) {
810 811 812 813 814
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
        }
EOF
fi

815
#Darwin CC versions
816
needmdynamicnopic="no"
817
if test $targetos = Darwin; then
818
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
819
        CFLAGS="$CFLAGS -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
820
    else
821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838
        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
839 840 841
    fi
fi

842 843 844 845 846 847 848 849 850
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
    if test $cpu = "powerpc"; then
        altivec="yes"
    else
        altivec="no"
    fi
fi

851 852
# Add processor-specific flags
TUNECPU="generic"
853
POWERPCMODE="32bits"
854 855
if test $tune != "generic"; then
    case $tune in
856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903
        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
904
            POWERPCMODE="64bits"
905 906 907 908 909 910 911
        ;;
        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."
        ;;
912 913 914
    esac
fi

915
# AltiVec flags: The FSF version of GCC differs from the Apple version
916 917
if test $cpu = "powerpc"; then
    if test $altivec = "yes"; then
918
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
S
Steven M. Schultz 已提交
919
            CFLAGS="$CFLAGS -faltivec"
920 921 922 923 924 925
        else
            CFLAGS="$CFLAGS -maltivec -mabi=altivec"
        fi
    fi
fi

926
check_header altivec.h && _altivec_h=yes || _altivec_h=no
927

D
Diego Biurrun 已提交
928
# check if our compiler supports Motorola AltiVec C API
929
if test $altivec = "yes"; then
930
if test $_altivec_h = "yes"; then
931
    inc_altivec_h="#include <altivec.h>"
932
else
933 934 935 936
    inc_altivec_h=
fi
check_cc <<EOF || altivec=no
$inc_altivec_h
937 938 939 940 941 942 943
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
944

D
Diego Biurrun 已提交
945
# mmi only available on mips
946 947 948 949 950 951 952 953
if test $mmi = "default"; then
    if test $cpu = "mips"; then
        mmi="yes"
    else
        mmi="no"
    fi
fi

D
Diego Biurrun 已提交
954
# check if our compiler supports mmi
955
if test $mmi = "yes"; then
956
check_cc <<EOF || mmi="no"
957 958 959 960 961 962 963
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
fi

G
Gildas Bazin 已提交
964
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
965 966 967 968 969
    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
970
you do not need to pass additional options.
971 972 973
EOF
        exit 1
    fi
974
    v4l="no"
L
Luca Abeni 已提交
975
    v4l2="no"
976
    bktr="no"
977
    audio_oss="no"
978
    dv1394="no"
979
    dc1394="no"
F
Fabrice Bellard 已提交
980
    ffserver="no"
981
    network="no"
982
if test "$mingwce" = "yes"; then
G
Gildas Bazin 已提交
983 984
    protocols="no"
fi
F
Fabrice Bellard 已提交
985 986 987
    SLIBPREF=""
    SLIBSUF=".dll"
    EXESUF=".exe"
988 989
    if test "$force_prefix" != yes; then prefix="/c/Program Files/FFmpeg"; fi
    if test "$force_libdir" != yes; then bindir="$prefix"; fi
990 991
fi

992 993
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
M
Michael Niedermayer 已提交
994
ranlib="${cross_prefix}${ranlib}"
995 996
strip="${cross_prefix}${strip}"

F
Fabrice Bellard 已提交
997 998
if test -z "$cross_prefix" ; then

999
# ---
D
Diego Biurrun 已提交
1000
# big/little-endian test
1001
check_ld <<EOF
1002 1003
#include <inttypes.h>
int main(int argc, char ** argv){
1004 1005
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
1006 1007 1008
}
EOF

1009 1010
if test $? = 0 ; then
    $TMPE && bigendian="yes"
1011
else
1012
    echo big/little test failed
1013 1014
fi

F
Fabrice Bellard 已提交
1015 1016
else

D
Diego Biurrun 已提交
1017
# programs cannot be launched if cross compiling, so make a static guess
F
Fabrice Bellard 已提交
1018 1019 1020 1021 1022 1023
if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
    bigendian="yes"
fi

fi

1024 1025
# ---
# *inttypes.h* test
1026
check_header inttypes.h || inttypes=no
1027

1028 1029
# ---
# *int_fast* test
1030
check_cc <<EOF || emu_fast_int=yes
1031 1032
#include <inttypes.h>
int main(int argc, char ** argv){
1033 1034
        volatile uint_fast64_t i=0x01234567;
        return 0;
1035 1036 1037
}
EOF

N
Nick Kurshev 已提交
1038 1039 1040 1041 1042
# ---
# check availability of some header files

_memalign=no
_malloc_h=no
1043 1044 1045 1046
if check_header malloc.h; then
    _malloc_h=yes
    _memalign=yes
    check_func memalign || _memalign="no"
N
Nick Kurshev 已提交
1047 1048
fi

1049
if test "$_memalign" = "no" -a "$mmx" = "yes" -a "$memalignhack" != "yes"; then
D
Diego Biurrun 已提交
1050
    echo "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1051 1052 1053
    exit 1
fi

1054
check_func localtime_r && localtime_r=yes || localtime_r=no
1055

1056
if test "$zlib" = "yes"; then
1057 1058 1059 1060
    temp_extralibs -lz
    check_header zlib.h && check_func zlibVersion || zlib="no"
    # XXX: more tests needed - runtime test
    restore_flags
1061 1062
fi
if test "$zlib" = "yes"; then
1063
    extralibs="$extralibs -lz"
1064 1065
fi

1066
if test "$lzo" = "yes" -a "$gpl" = "yes"; then
1067 1068 1069
    temp_extralibs -llzo
    check_header lzo1x.h && check_func lzo_version || lzo="no"
    restore_flags
1070
else
1071
    lzo="no"
1072 1073
fi
if test "$lzo" = "yes"; then
1074
    extralibs="$extralibs -llzo"
1075 1076
fi

1077
# test for lrintf in math.h
1078
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
1079 1080 1081 1082 1083
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

F
Falk Hüffner 已提交
1084 1085
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
1086 1087 1088 1089 1090 1091 1092
    check_cc <<EOF
void foo(char * $restrict_keyword p);
EOF
    if test $? = 0; then
        _restrict=$restrict_keyword
        break;
    fi
F
Falk Hüffner 已提交
1093 1094
done

1095 1096
# test gcc version to see if vector builtins can be used
# currently only used on i386 for MMX builtins
1097
check_cc -msse <<EOF && builtin_vector=yes || builtin_vector=no
1098
#include <xmmintrin.h>
1099
int main(void) {
1100 1101 1102 1103 1104 1105 1106 1107
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
return 0;
#else
#error no vector builtins
#endif
}
EOF

1108
# test for mm3dnow.h
1109 1110
test "$cpu" = "x86_64" && march=k8 || march=athlon
check_cc -march=$march <<EOF && mm3dnow=yes || mm3dnow=no
1111 1112
#include <mm3dnow.h>
int main(void) {
1113 1114
__m64 b1;
b1 = _m_pswapd(b1);
1115
_m_femms();
1116 1117 1118 1119
return 0;
}
EOF

1120
check_cflags -Wdeclaration-after-statement
1121

1122 1123
# dlopen/dlfcn.h probing

1124
check_header dlfcn.h && dlfcn=yes
1125

1126 1127 1128 1129
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1130
fi
1131
restore_flags
1132

1133 1134 1135
if check_func dlopen; then
    dlopen=yes
    ldl=
1136 1137 1138 1139 1140 1141
fi

if test "$vhook" = "default" ; then
  vhook="$dlopen"
fi

M
Michael Niedermayer 已提交
1142 1143 1144 1145 1146
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
  extralibs="$extralibs $ldl"
fi


1147
##########################################
D
Diego Biurrun 已提交
1148
# imlib check
1149

1150 1151
temp_extralibs -lImlib2
check_ld <<EOF && imlib2=yes || imlib2=no
1152 1153 1154 1155
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF
1156
restore_flags
1157

1158
##########################################
D
Diego Biurrun 已提交
1159
# FreeType check
1160

1161
freetype2=no
1162
if test "x$targetos" != "xBeOS"; then
1163
  if (freetype-config --version) >/dev/null 2>&1 ; then
1164 1165 1166 1167 1168 1169 1170
      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
1171
  fi
1172 1173
fi

1174
##########################################
D
Diego Biurrun 已提交
1175
# SDL check
1176 1177 1178

sdl_too_old=no
sdl=no
1179 1180
SDL_CONFIG="${cross_prefix}sdl-config"
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196
    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
    restore_flags
    if test $? = 0; then
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
        if test "$_sdlversion" -lt 121 ; then
            sdl_too_old=yes
        else
            sdl=yes
        fi
    fi
M
Michael Niedermayer 已提交
1197
fi
1198

1199
##########################################
D
Diego Biurrun 已提交
1200
# texi2html check
1201 1202

texi2html=no
1203
if (texi2html -version) >/dev/null 2>&1; then
1204 1205 1206
texi2html=yes
fi

1207
##########################################
D
Diego Biurrun 已提交
1208
# IPv6 check
1209

1210
test "$network" = "yes" && check_ld <<EOF && ipv6=yes || ipv6=no
1211 1212 1213 1214 1215 1216 1217 1218 1219
#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);
1220
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1221 1222 1223
}
EOF

1224
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1225
test "$v4l2" = "yes" && check_cc <<EOF || v4l2="no"
1226
#include <sys/time.h>
1227 1228
#include <asm/types.h>
#include <linux/videodev2.h>
1229
int dummy = V4L2_PIX_FMT_YUV420;
1230
struct v4l2_buffer dummy1;
1231 1232
EOF

1233 1234
check_cflags -Wall
check_cflags -Wno-switch
1235

F
Fabrice Bellard 已提交
1236 1237 1238 1239
if test "$sdl" = "no" ; then
   ffplay=no
fi

1240
if test "$debug" = "yes"; then
1241
    CFLAGS="-g $CFLAGS"
1242 1243 1244
fi

if test "$optimize" = "small"; then
1245
#  CFLAGS=${CFLAGS//-O3/-Os}
1246
    CFLAGS="$CFLAGS -Os"
1247 1248
fi

1249
if test "$optimize" = "yes"; then
1250
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1251 1252
        CFLAGS="$CFLAGS -O5"
        LDFLAGS="$LDFLAGS -O5"
1253
    else
1254
        CFLAGS="-O3 $CFLAGS"
1255
    fi
1256 1257
fi

1258 1259 1260 1261
# PIC flags for shared library objects where they are needed
if test "$lshared" = "yes" ; then
  # LIBOBJFLAGS may have already been set in the OS configuration
  if test -z "$LIBOBJFLAGS" ; then
1262
    if test "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "alpha" ; then
1263 1264 1265 1266 1267
      LIBOBJFLAGS="\$(PIC)"
    fi
  fi
fi

F
Fabrice Bellard 已提交
1268 1269 1270 1271
if test x"$bindir" = x""; then
bindir="${prefix}/bin"
fi

1272 1273 1274 1275
if test x"$libdir" = x""; then
libdir="${prefix}/lib"
fi

D
Diego Biurrun 已提交
1276
if test x"$incdir" = x""; then
D
Diego Biurrun 已提交
1277
incdir="${prefix}/include/ffmpeg"
D
Diego Biurrun 已提交
1278 1279
fi

F
Fabrice Bellard 已提交
1280 1281 1282 1283
if test x"$mandir" = x""; then
mandir="${prefix}/man"
fi

D
Diego Biurrun 已提交
1284 1285
echo "install prefix   $prefix"
echo "source path      $source_path"
F
Fabrice Bellard 已提交
1286
echo "C compiler       $cc"
1287
echo "make             $make"
1288
echo "CPU              $cpu ($tune)"
1289
if test "$BUILDSUF" != ""; then
D
Diego Biurrun 已提交
1290
echo "build suffix     $BUILDSUF"
1291
fi
D
Diego Biurrun 已提交
1292
echo "big-endian       $bigendian"
1293
echo "inttypes.h       $inttypes"
1294
echo "broken inttypes.h $emu_fast_int"
1295
if test $cpu = "x86" -o $cpu = "x86_64"; then
F
Fabrice Bellard 已提交
1296
echo "MMX enabled      $mmx"
1297
echo "Vector Builtins  $builtin_vector"
1298
echo "3DNow! Builtins  $mm3dnow"
F
Fabrice Bellard 已提交
1299
fi
1300 1301 1302
if test $cpu = "armv4l"; then
echo "IWMMXT enabled   $iwmmxt"
fi
F
Fabrice Bellard 已提交
1303
if test $cpu = "mips"; then
1304
echo "MMI enabled      $mmi"
F
Fabrice Bellard 已提交
1305 1306
fi
if test $cpu = "powerpc"; then
1307
echo "AltiVec enabled  $altivec"
F
Fabrice Bellard 已提交
1308
fi
F
Fabrice Bellard 已提交
1309
echo "gprof enabled    $gprof"
1310
echo "zlib enabled     $zlib"
1311
echo "lzo enabled      $lzo"
1312
echo "libgsm enabled   $libgsm"
1313
echo "mp3lame enabled  $mp3lame"
1314
echo "libogg enabled   $libogg"
D
Diego Biurrun 已提交
1315 1316 1317
echo "Vorbis enabled   $vorbis"
echo "Theora enabled   $theora"
echo "FAAD enabled     $faad"
Z
Zdenek Kabelac 已提交
1318
echo "faadbin enabled  $faadbin"
D
Diego Biurrun 已提交
1319 1320
echo "FAAC enabled     $faac"
echo "XviD enabled     $xvid"
1321
echo "x264 enabled     $x264"
F
Fabrice Bellard 已提交
1322
echo "a52 support      $a52"
Z
Zdenek Kabelac 已提交
1323
echo "a52 dlopened     $a52bin"
D
Diego Biurrun 已提交
1324
echo "DTS support      $dts"
1325
echo "pp support       $pp"
1326
echo "debug symbols    $debug"
1327
echo "strip symbols    $dostrip"
1328
echo "optimize         $optimize"
1329
echo "static           $lstatic"
D
typo  
Diego Biurrun 已提交
1330
echo "shared           $lshared"
D
Diego Biurrun 已提交
1331
echo "video hooking    $vhook"
1332 1333
echo "SDL support      $sdl"
if test $sdl_too_old = "yes"; then
D
Diego Biurrun 已提交
1334
echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1335
fi
1336 1337

if test "$vhook" = "yes" ; then
1338
echo "Imlib2 support   $imlib2"
D
Diego Biurrun 已提交
1339
echo "FreeType support $freetype2"
1340
fi
1341
echo "Sun medialib support"  $sunmlib
1342
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
1343 1344
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
1345
echo "AMR-WB float support"  $amr_wb
1346
echo "AMR-WB IF2 support"    $amr_if2
1347 1348 1349 1350
echo "network support      $network"
if test "$network" = "yes" ; then
echo "IPv6 support         $ipv6"
fi
1351 1352 1353 1354 1355
if test "$gpl" = "no" ; then
echo "License: LGPL"
else
echo "License: GPL"
fi
F
Fabrice Bellard 已提交
1356

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

1359 1360
date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
D
Diego Biurrun 已提交
1361 1362
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1363
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
F
Fabrice Bellard 已提交
1364

1365 1366
echo "prefix=\$(DESTDIR)$prefix" >> config.mak
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
D
Diego Biurrun 已提交
1367
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1368 1369
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1370
echo "MAKE=$make" >> config.mak
1371 1372
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
1373
echo "RANLIB=$ranlib" >> config.mak
1374
if test "$dostrip" = "yes" ; then
1375
echo "STRIP=$strip" >> config.mak
1376
echo "INSTALLSTRIP=$installstrip" >> config.mak
1377 1378 1379 1380
else
echo "STRIP=echo ignoring strip" >> config.mak
echo "INSTALLSTRIP=" >> config.mak
fi
1381

D
Diego Biurrun 已提交
1382
# SHCFLAGS is a copy of CFLAGS without -mdynamic-no-pic, used when building
1383 1384 1385 1386 1387 1388
# shared modules on OS/X (vhook/Makefile).
SHCFLAGS=$CFLAGS
if test "$needmdynamicnopic" = yes; then
   CFLAGS="$CFLAGS -mdynamic-no-pic"
fi

N
Nick Kurshev 已提交
1389
echo "OPTFLAGS=$CFLAGS" >> config.mak
1390
echo "SHCFLAGS=$SHCFLAGS">>config.mak
1391
echo "LDFLAGS=$LDFLAGS" >> config.mak
1392
echo "LDCONFIG=$LDCONFIG" >> config.mak
1393
echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
1394
echo "SHFLAGS=$SHFLAGS" >> config.mak
1395
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1396
echo "BUILD_STATIC=$lstatic" >> config.mak
1397
echo "BUILDSUF=$BUILDSUF" >> config.mak
1398
echo "LIBPREF=$LIBPREF" >> config.mak
1399
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1400 1401
if test "$lstatic" = "yes" ; then
  echo "LIB=$LIB" >> config.mak
1402 1403
else # Some Make complain if this variable does not exist.
  echo "LIB=" >> config.mak
1404
fi
1405
echo "SLIBPREF=$SLIBPREF" >> config.mak
1406 1407
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1408
echo "TARGET_OS=$TARGET_OS" >> config.mak
Z
Zdenek Kabelac 已提交
1409
if test "$cpu" = "x86" ; then
1410
  echo "TARGET_ARCH_X86=yes" >> config.mak
1411
  echo "#define ARCH_X86 1" >> $TMPH
1412 1413 1414
elif test "$cpu" = "x86_64" ; then
  echo "TARGET_ARCH_X86_64=yes" >> config.mak
  echo "#define ARCH_X86_64 1" >> $TMPH
1415
elif test "$cpu" = "armv4l" ; then
1416
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1417
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1418
elif test "$cpu" = "alpha" ; then
1419
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1420
  echo "#define ARCH_ALPHA 1" >> $TMPH
1421 1422 1423
elif test "$cpu" = "sparc64" ; then
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
  echo "#define ARCH_SPARC64 1" >> $TMPH
1424 1425 1426 1427 1428
  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
1429 1430 1431
elif test "$cpu" = "powerpc" ; then
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
  echo "#define ARCH_POWERPC 1" >> $TMPH
1432 1433 1434 1435 1436
  if test $POWERPCMODE = "32bits"; then
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
  else
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
  fi
1437 1438 1439
  if test "$powerpc_perf" = "yes"; then
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
  fi
1440 1441 1442
elif test "$cpu" = "mips" ; then
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
  echo "#define ARCH_MIPS 1" >> $TMPH
A
Alex Beregszaszi 已提交
1443 1444 1445
elif test "$cpu" = "sh4" ; then
  echo "TARGET_ARCH_SH4=yes" >> config.mak
  echo "#define ARCH_SH4 1" >> $TMPH
1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457
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 已提交
1458
fi
1459
echo "#define TUNECPU $TUNECPU" >> $TMPH
1460 1461 1462
if test "$bigendian" = "yes" ; then
  echo "WORDS_BIGENDIAN=yes" >> config.mak
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1463
fi
1464 1465
if test "$inttypes" != "yes" ; then
  echo "#define EMULATE_INTTYPES 1" >> $TMPH
1466
fi
1467
if test "$emu_fast_int" = "yes" ; then
1468
  echo "#define EMULATE_FAST_INT 1" >> $TMPH
1469
fi
Z
Zdenek Kabelac 已提交
1470
if test "$mmx" = "yes" ; then
1471
  echo "TARGET_MMX=yes" >> config.mak
1472
  echo "#define HAVE_MMX 1" >> $TMPH
M
Michael Niedermayer 已提交
1473
  echo "#define __CPU__ 586" >> $TMPH
F
Fabrice Bellard 已提交
1474
fi
1475 1476 1477 1478
if test "$builtin_vector" = "yes" ; then
  echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
  echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
fi
1479 1480 1481 1482
if test "$mm3dnow" = "yes" ; then
  echo "TARGET_BUILTIN_3DNOW=yes" >> config.mak
  echo "#define HAVE_MM3DNOW 1" >> $TMPH
fi
1483 1484 1485 1486
if test "$iwmmxt" = "yes" ; then
  echo "TARGET_IWMMXT=yes" >> config.mak
  echo "#define HAVE_IWMMXT 1" >> $TMPH
fi
1487 1488 1489 1490
if test "$mmi" = "yes" ; then
  echo "TARGET_MMI=yes" >> config.mak
  echo "#define HAVE_MMI 1" >> $TMPH
fi
1491 1492 1493
if test "$altivec" = "yes" ; then
  echo "TARGET_ALTIVEC=yes" >> config.mak
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1494 1495
  echo "// Enable the next line to use the reference C code instead of AltiVec" >> $TMPH
  echo "// #define ALTIVEC_USE_REFERENCE_C_CODE 1" >> $TMPH
1496 1497 1498
  if test "$_altivec_h" = "yes" ; then
    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
  else
A
1l  
Alex Beregszaszi 已提交
1499
    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
1500
  fi
1501
fi
Z
Zdenek Kabelac 已提交
1502
if test "$gprof" = "yes" ; then
1503
  echo "TARGET_GPROF=yes" >> config.mak
1504
  echo "#define HAVE_GPROF 1" >> $TMPH
F
Fabrice Bellard 已提交
1505
fi
1506 1507 1508
if test "$localtime_r" = "yes" ; then
  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
fi
1509 1510 1511
if test "$imlib2" = "yes" ; then
  echo "HAVE_IMLIB2=yes" >> config.mak
fi
1512 1513 1514
if test "$freetype2" = "yes" ; then
  echo "HAVE_FREETYPE2=yes" >> config.mak
fi
1515 1516 1517 1518 1519
if test "$sunmlib" = "yes" ; then
  echo "HAVE_MLIB=yes" >> config.mak
  echo "#define HAVE_MLIB 1" >> $TMPH
  extralibs="$extralibs -lmlib"
fi
1520 1521 1522
if test "$pthreads" = "yes" ; then
  echo "HAVE_PTHREADS=yes" >> config.mak
  echo "#define HAVE_PTHREADS 1" >> $TMPH
1523
  echo "#define HAVE_THREADS 1" >> $TMPH
1524
  if test $targetos != FreeBSD -a $targetos != OpenBSD ; then
1525 1526
     extralibs="$extralibs -lpthread"
  fi
1527
fi
1528 1529
if test "$sdl" = "yes" ; then
  echo "CONFIG_SDL=yes" >> config.mak
1530 1531
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1532
fi
1533 1534 1535
if test "$texi2html" = "yes"; then
  echo "BUILD_DOC=yes" >> config.mak
fi
1536 1537 1538
if test "$have_lrintf" = "yes" ; then
  echo "#define HAVE_LRINTF 1" >> $TMPH
fi
1539 1540 1541 1542
if test "$vhook" = "yes" ; then
  echo "BUILD_VHOOK=yes" >> config.mak
  echo "#define HAVE_VHOOK 1" >> $TMPH
fi
L
Luca Barbato 已提交
1543

1544
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libavcodec/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
L
Luca Barbato 已提交
1545 1546 1547 1548 1549 1550
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 已提交
1551
if test "$lshared" = "yes" ; then
1552
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
N
Nick Kurshev 已提交
1553
  echo "BUILD_SHARED=yes" >> config.mak
1554
  echo "PIC=-fPIC -DPIC" >> config.mak
1555
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1556
  echo "SPPVERSION=$lavc_version" >> config.mak
1557
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1558
  echo "LAVCVERSION=$lavc_version" >> config.mak
1559
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1560
  echo "LAVFVERSION=$lavf_version" >> config.mak
1561
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1562
  echo "LAVUVERSION=$lavu_version" >> config.mak
1563
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1564 1565
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
N
Nick Kurshev 已提交
1566
fi
1567
echo "EXTRALIBS=$extralibs" >> config.mak
M
Michael Niedermayer 已提交
1568
version=`grep '#define FFMPEG_VERSION ' "$source_path/libavcodec/avcodec.h" |
1569 1570
 cut -d '"' -f 2`
echo "VERSION=$version" >>config.mak
D
Diego Biurrun 已提交
1571
# If you do not want to use encoders, disable them.
1572
echo "#define CONFIG_ENCODERS 1" >> $TMPH
1573 1574
echo "CONFIG_ENCODERS=yes" >> config.mak

D
Diego Biurrun 已提交
1575
# If you do not want to use decoders, disable them.
1576
echo "#define CONFIG_DECODERS 1" >> $TMPH
1577 1578
echo "CONFIG_DECODERS=yes" >> config.mak

1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590
# 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 已提交
1591 1592 1593 1594
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1595

F
Fabrice Bellard 已提交
1596 1597 1598 1599 1600 1601
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1602 1603 1604 1605 1606 1607
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1608 1609 1610 1611 1612 1613
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1614
# MPEG audio high precision mode
1615 1616 1617 1618
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1619 1620 1621 1622 1623
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

L
Luca Abeni 已提交
1624 1625 1626 1627 1628
if test "$v4l2" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1629 1630 1631 1632 1633
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1634 1635 1636 1637 1638
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1639 1640 1641 1642 1643
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1644 1645 1646 1647 1648 1649 1650 1651
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 已提交
1652 1653 1654
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1655 1656
fi

1657 1658 1659 1660 1661
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1662 1663 1664
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1665
fi
1666

1667 1668 1669 1670
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

1671 1672 1673 1674 1675
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

1676 1677 1678 1679 1680
if test "$lzo" = "yes" ; then
  echo "#define CONFIG_LZO 1" >> $TMPH
  echo "CONFIG_LZO=yes" >> config.mak
fi

1681 1682 1683 1684 1685
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1686
if test "$mp3lame" = "yes" ; then
1687
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
1688 1689 1690
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

1691
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
1692 1693 1694 1695
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

1696
if test "$vorbis" = "yes" ; then
N
Nilesh Bansal 已提交
1697 1698 1699 1700 1701 1702 1703
  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
1704 1705
fi

1706 1707 1708 1709 1710 1711 1712
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 已提交
1713
  echo "CONFIG_FAADBIN=yes" >> config.mak
1714 1715
fi

1716 1717 1718 1719 1720
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

1721 1722 1723 1724 1725
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

1726 1727 1728 1729 1730
if test "$x264" = "yes" ; then
  echo "#define CONFIG_X264 1" >> $TMPH
  echo "CONFIG_X264=yes" >> config.mak
fi

1731 1732 1733
if test "$mingw32" = "yes" ; then
  echo "#define CONFIG_WIN32 1" >> $TMPH
  echo "CONFIG_WIN32=yes" >> config.mak
1734 1735
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
1736
  echo "#define HAVE_THREADS 1" >> $TMPH
1737
  echo "#ifndef __MINGW32__" >> $TMPH
1738
  echo "#define __MINGW32__ 1" >> $TMPH
1739
  echo "#endif" >> $TMPH
1740 1741
fi

G
Gildas Bazin 已提交
1742 1743 1744 1745 1746 1747 1748 1749 1750 1751
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

1752 1753 1754
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
1755 1756 1757
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
1758 1759
fi

1760 1761 1762 1763
if test "$TARGET_OS" = "SunOS" ; then
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

1764 1765 1766 1767 1768 1769
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

1770 1771 1772 1773 1774
if test "$darwin" = "yes"; then
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1775
if test "$_malloc_h" = "yes" ; then
1776
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
1777
else
1778
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
1779 1780
fi

Z
Zdenek Kabelac 已提交
1781
if test "$_memalign" = "yes" ; then
1782 1783 1784 1785 1786
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

1787 1788 1789 1790 1791
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi


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

1797 1798 1799 1800
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1801
if test "$simpleidct" = "yes" ; then
1802 1803 1804
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

1805 1806 1807 1808 1809
if test "$protocols" = "yes" ; then
  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
  echo "CONFIG_PROTOCOLS=yes" >> config.mak
fi

1810 1811 1812 1813 1814
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

1815 1816 1817 1818
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

1819 1820 1821 1822 1823
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

1826 1827 1828 1829
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
fi

1830 1831
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858
    DIRS="\
         doc \
         libavformat \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
         libavcodec/i386 \
         libavcodec/sparc \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/liba52 \
         libavcodec/libpostproc \
         libavutil \
         tests \
         vhook \
         "
    FILES="\
          Makefile \
          libavformat/Makefile \
          libavcodec/Makefile \
          libavcodec/libpostproc/Makefile \
          libavutil/Makefile \
          tests/Makefile \
          vhook/Makefile \
          doc/Makefile \
          doc/texi2pod.pl \
          "
1859 1860 1861 1862
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
M
Michael Niedermayer 已提交
1863
        ln -sf "$source_path/$f" $f
1864 1865
    done
fi
1866
echo "SRC_PATH=$source_path" >> config.mak
1867
echo "BUILD_ROOT=$PWD" >> config.mak
1868

D
Diego Biurrun 已提交
1869 1870 1871 1872 1873
if test "$amr" = "yes" ; then
  echo "#define AMR 1" >> $TMPH
  echo "AMR=yes" >> config.mak
fi

1874 1875 1876 1877 1878 1879 1880 1881 1882 1883
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

1884 1885 1886 1887
if test "$amr_nb" = "yes" ; then
  echo "#define AMR_NB 1" >> $TMPH
  echo "AMR_NB=yes" >> config.mak
  echo
1888 1889
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
D
Diego Biurrun 已提交
1890
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
1891 1892 1893 1894
  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 已提交
1895 1896
if test "$amr_nb_fixed" = "yes" ; then
  echo "#define AMR_NB_FIXED 1" >> $TMPH
D
Diego Biurrun 已提交
1897
  echo "AMR_NB_FIXED=yes" >> config.mak
D
Diego Biurrun 已提交
1898
  echo
Z
Zdenek Kabelac 已提交
1899 1900
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
D
Diego Biurrun 已提交
1901
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
1902
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
1903 1904
  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"
1905 1906
fi

1907 1908 1909 1910
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1911

1912
for codec in $CODEC_LIST ; do
1913 1914
    echo "#define CONFIG_`echo $codec | tr a-z A-Z` 1" >> $TMPH
    echo "CONFIG_`echo $codec | tr a-z A-Z`=yes" >> config.mak
1915 1916
done

1917 1918
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
1919
if test "$?" != "0" ; then
1920 1921 1922 1923
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
1924

1925
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
1926 1927


D
Diego Biurrun 已提交
1928
# build pkg-config files libav*.pc and libpostproc.pc
1929 1930 1931 1932 1933 1934 1935 1936 1937 1938
# 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
1939
Requires:
1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953
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
1954
Requires:
1955 1956 1957 1958
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
1959 1960 1961 1962 1963 1964 1965 1966 1967 1968

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

Name: libavcodec
Description: FFmpeg codec library
1969
Version: $lavc_version
1970
Requires: $pkg_requires libavutil = $lavu_version
1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983
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
1984
Version: $lavc_version
1985
Requires: $pkg_requires libavutil = $lavu_version
1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
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
2000
Version: $lavf_version
2001
Requires: $pkg_requires libavcodec = $lavc_version
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
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
2015
Version: $lavf_version
2016
Requires: $pkg_requires libavcodec = $lavc_version
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031
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
2032
Version: $lavc_version
2033
Requires:
2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

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

Name: libpostproc
Description: FFmpeg post processing library
2047
Version: $lavc_version
2048
Requires:
2049 2050 2051 2052
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF