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

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

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

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

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

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

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

166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
set_all(){
    value=$1
    shift
    for var in $*; do
        eval $var=$value
    done
}

enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}

182 183 184 185 186 187 188 189
enabled(){
    eval test "\$$1" = "yes"
}

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

190
save_flags(){
191
    flags_saved && return
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
    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 $*"
}

221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
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 "$@"
}

240
check_cmd(){
M
Måns Rullgård 已提交
241
    log "$@"
242
    "$@" >>$logfile 2>&1
243 244
}

245
check_cc(){
246 247
    log check_cc "$@"
    cat >$TMPC
248
    log_file $TMPC
249
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
250 251 252 253
}

check_cpp(){
    log check_cpp "$@"
254
    cat >$TMPC
255
    log_file $TMPC
256
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
257 258 259
}

check_ld(){
260
    log check_ld "$@"
261
    check_cc || return
262
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
263 264 265
}

check_cflags(){
266 267
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
268 269 270 271 272
int x;
EOF
}

check_ldflags(){
273 274 275 276 277
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
int main(){
    return 0;
}
278 279 280 281
EOF
}

check_header(){
282
    log check_header "$@"
283 284
    header=$1
    shift
285
    check_cpp "$@" <<EOF
286 287 288 289 290 291
#include <$header>
int x;
EOF
}

check_func(){
292
    log check_func "$@"
293 294 295 296 297 298 299 300 301 302
    func=$1
    shift
    check_ld "$@" <<EOF
extern int $func();
int main(){
    $func();
}
EOF
}

303 304 305 306 307 308 309 310 311 312 313 314
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
}

315
check_exec(){
316
    check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
317 318 319 320 321 322 323 324
}

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

327
# set temporary file name
Z
Zdenek Kabelac 已提交
328
if test ! -z "$TMPDIR" ; then
329
    TMPDIR1="${TMPDIR}"
Z
Zdenek Kabelac 已提交
330
elif test ! -z "$TEMPDIR" ; then
331
    TMPDIR1="${TEMPDIR}"
N
Nick Kurshev 已提交
332
else
333
    TMPDIR1="/tmp"
N
Nick Kurshev 已提交
334 335
fi

336 337
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
338
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
339 340 341
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

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

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

672
;;
673 674 675
*)
targetos="${targetos}-UNKNOWN"
;;
676
esac
F
Fabrice Bellard 已提交
677

678
# find source path
679
source_path="`dirname \"$0\"`"
680 681
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
682
    source_path="`pwd`"
683
    source_path_used="no"
684 685
else
    source_path="`cd \"$source_path\"; pwd`"
686 687
    echo "$source_path" | grep -q '[[:blank:]]' &&
      die "Out of tree builds are impossible with whitespace in source path."
F
Fabrice Bellard 已提交
688 689
fi

690 691 692 693
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
    show_help
fi

694 695 696 697 698
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

699 700 701 702 703
ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
MUXER_LIST=`grep 'av_register_output_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
704

705 706
enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST

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

905 906
if test "$logging" != no; then
    test "$logging" = yes || logfile="$logging"
907 908
    echo "# $0 $@" >$logfile
    set >>$logfile
909 910
else
    logfile=/dev/null
911
fi
912

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

946 947
# Combine FFLDFLAGS and the LDFLAGS environment variable.
LDFLAGS="$FFLDFLAGS $LDFLAGS"
948

949
test -n "$cross_prefix" && cross_compile=yes
950 951 952 953 954
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

955 956 957 958 959 960 961 962 963 964 965
# 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 已提交
966
if test "$vorbis" = "yes" ; then
967
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
968
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
969 970 971 972
        fail="yes"
    fi
fi

973
if test "$gpl" != "yes"; then
974
    if test "$pp" != "no"; then
D
Diego Biurrun 已提交
975
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
976 977 978 979
        fail="yes"
    fi

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

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

989
    if test "$x264" != "no"; then
D
Diego Biurrun 已提交
990
        echo "x264 is under GPL and --enable-gpl is not specified."
991 992 993
        fail="yes"
    fi

994
    if test "$dts" != "no"; then
D
Diego Biurrun 已提交
995
        echo "libdts is under GPL and --enable-gpl is not specified."
996 997
        fail="yes"
    fi
998

999
    if test "$faad" != "no" -o "$faadbin" != "no"; then
1000 1001
        if check_header faad.h; then
            check_cc << EOF
1002 1003 1004 1005 1006 1007
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
1008
            if test $? = 0 ; then
D
Diego Biurrun 已提交
1009
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
1010 1011 1012 1013 1014
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
D
Diego Biurrun 已提交
1015
            echo "FAAD test failed."
1016 1017
        fi
    fi
1018

L
Luca Abeni 已提交
1019 1020 1021 1022
    if test "$swscaler" != "no"; then
        echo "The software scaler is under GPL and --enable-gpl is not specified."
        fail="yes"
    fi
1023
fi
1024

1025 1026
if test "$fail" = "yes"; then
    exit 1
1027 1028
fi

D
Diego Biurrun 已提交
1029
# compute MMX state
1030
if test $mmx = "default"; then
1031
    if test $arch = "x86_32" -o $arch = "x86_64"; then
1032 1033 1034 1035 1036 1037
        mmx="yes"
    else
        mmx="no"
    fi
fi

1038
#Darwin CC versions
1039
needmdynamicnopic="no"
1040
if test $targetos = Darwin; then
1041
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1042
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1043
    else
1044 1045 1046
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
        case "$gcc_version" in
            *2.95*)
1047
                add_cflags "-no-cpp-precomp -pipe"
1048 1049
                ;;
            *[34].*)
1050
                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1051 1052 1053 1054 1055
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
            *)
1056
                add_cflags "-no-cpp-precomp -pipe"
1057 1058 1059 1060 1061
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
        esac
1062
    fi
1063 1064 1065 1066
fi

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

1069 1070
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
1071
    if test $arch = "powerpc"; then
1072 1073 1074 1075 1076 1077
        altivec="yes"
    else
        altivec="no"
    fi
fi

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

1159 1160 1161 1162 1163 1164 1165 1166
# make sure we can execute files in $TMPDIR
cat >$TMPE 2>>$logfile <<EOF
#! /bin/sh
EOF
chmod +x $TMPE >>$logfile 2>&1
if ! $TMPE >>$logfile 2>&1; then
    cat <<EOF
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1167 1168
variable to another directory and make sure that $TMPDIR1 is not mounted
noexec.
1169 1170 1171
EOF
    die "Sanity test failed."
fi
1172
rm $TMPE
1173

M
Måns Rullgård 已提交
1174 1175 1176 1177 1178 1179 1180 1181 1182 1183
# compiler sanity check
check_exec <<EOF
int main(){
    return 0;
}
EOF
if test "$?" != 0; then
    echo "$cc is unable to create an executable file."
    if test -z "$cross_prefix" -a "$cross_compile" = no; then
        echo "If $cc is a cross-compiler, use the --cross-compile option."
1184
        echo "Only do this if you know what cross compiling means."
M
Måns Rullgård 已提交
1185 1186 1187 1188
    fi
    die "C compiler test failed."
fi

1189 1190
# check for assembler specific support

1191
if test $arch = "powerpc"; then
1192 1193 1194 1195 1196 1197 1198 1199 1200 1201
check_cc <<EOF && dcbzl=yes
int main(void) {
    register long zero = 0;
    char data[1024];
    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
return 0;
}
EOF
fi

1202 1203
# check for SIMD availability

1204
# AltiVec flags: The FSF version of GCC differs from the Apple version
1205
if test $arch = "powerpc"; then
1206
    if test $altivec = "yes"; then
1207
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1208
            add_cflags "-faltivec"
1209
        else
1210
            add_cflags "-maltivec -mabi=altivec"
1211 1212 1213 1214
        fi
    fi
fi

1215
check_header altivec.h && _altivec_h=yes || _altivec_h=no
1216

D
Diego Biurrun 已提交
1217
# check if our compiler supports Motorola AltiVec C API
1218
if test $altivec = "yes"; then
M
Måns Rullgård 已提交
1219 1220 1221 1222 1223 1224
    if test $_altivec_h = "yes"; then
        inc_altivec_h="#include <altivec.h>"
    else
        inc_altivec_h=
    fi
    check_cc <<EOF || altivec=no
1225
$inc_altivec_h
1226 1227 1228 1229 1230 1231 1232
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
1233

1234
# check armv5te instructions support
1235
if test $armv5te = "default" -a $arch = "armv4l"; then
1236 1237 1238 1239 1240 1241 1242 1243 1244
    armv5te=no
    check_cc <<EOF && armv5te=yes
        int main(void) {
        __asm__ __volatile__ ("qadd r0, r0, r0");
        }
EOF
fi

# check iwmmxt support
1245
if test $iwmmxt = "default" -a $arch = "armv4l"; then
1246 1247 1248 1249 1250 1251 1252 1253
    iwmmxt=no
    check_cc <<EOF && iwmmxt=yes
        int main(void) {
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
        }
EOF
fi

D
Diego Biurrun 已提交
1254
# mmi only available on mips
1255
if test $mmi = "default"; then
1256
    if test $arch = "mips"; then
1257 1258 1259 1260 1261 1262
        mmi="yes"
    else
        mmi="no"
    fi
fi

D
Diego Biurrun 已提交
1263
# check if our compiler supports mmi
1264
enabled mmi && check_cc <<EOF || mmi="no"
1265 1266 1267 1268 1269
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
1270 1271 1272

# ---
# big/little-endian test
1273
if test "$cross_compile" = "no"; then
1274
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1275 1276
#include <inttypes.h>
int main(int argc, char ** argv){
1277 1278
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
1279 1280
}
EOF
F
Fabrice Bellard 已提交
1281
else
M
Måns Rullgård 已提交
1282
    # programs cannot be launched if cross compiling, so make a static guess
1283
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
M
Måns Rullgård 已提交
1284 1285
        bigendian="yes"
    fi
F
Fabrice Bellard 已提交
1286 1287
fi

1288 1289
# ---
# *inttypes.h* test
1290
check_header inttypes.h || inttypes=no
1291

1292 1293
# ---
# *int_fast* test
1294
check_cc <<EOF || emu_fast_int=yes
1295 1296
#include <inttypes.h>
int main(int argc, char ** argv){
1297 1298
        volatile uint_fast64_t i=0x01234567;
        return 0;
1299 1300 1301
}
EOF

N
Nick Kurshev 已提交
1302 1303 1304 1305 1306
# ---
# check availability of some header files

_memalign=no
_malloc_h=no
1307 1308 1309 1310
if check_header malloc.h; then
    _malloc_h=yes
    _memalign=yes
    check_func memalign || _memalign="no"
N
Nick Kurshev 已提交
1311 1312
fi

1313
if test "$_memalign" = "no" -a "$mmx" = "yes" -a \
1314 1315
        "$memalignhack" != "yes" -a "$targetos" != "Darwin" -a \
        "$targetos" != "FreeBSD" ; then
1316
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1317 1318
fi

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

1321
check_func localtime_r && localtime_r=yes || localtime_r=no
1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"

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

# these are off by default, so fail if requested and not available
1335
enabled dts     && require libdts dts.h dts_init -ldts -lm
1336
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1337
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
M
Måns Rullgård 已提交
1338
enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1339
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1340
enabled libnut  && require libnut nut.h nut_demuxer_init -lnut
1341 1342 1343 1344
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
1345

1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362
# 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

1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377
# 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

1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393
# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
if enabled avisynth; then
    save_flags
    temp_extralibs -lvfw32
    check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
#include <windows.h>
#include <vfw.h>
int main(){
    AVIFileInit();
    return 0;
}
EOF
    restore_flags
fi


1394
# test for lrintf in math.h
1395
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
1396 1397 1398 1399 1400
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

F
Falk Hüffner 已提交
1401 1402
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
1403
    check_cc <<EOF && _restrict=$restrict_keyword && break
1404 1405
void foo(char * $restrict_keyword p);
EOF
F
Falk Hüffner 已提交
1406 1407
done

1408 1409
# dlopen/dlfcn.h probing

1410
check_header dlfcn.h && dlfcn=yes
1411

1412 1413 1414 1415
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1416
fi
1417
restore_flags
1418

1419 1420 1421
if check_func dlopen; then
    dlopen=yes
    ldl=
1422 1423
fi

M
Måns Rullgård 已提交
1424 1425
if test "$vhook" = "default"; then
    vhook="$dlopen"
1426 1427
fi

M
Michael Niedermayer 已提交
1428
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
1429
    add_extralibs $ldl
M
Michael Niedermayer 已提交
1430 1431
fi

1432 1433 1434 1435 1436 1437 1438 1439
if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
    vhook="no"
    echo
    echo "At the moment vhooks don't work on Cygwin static builds."
    echo "Patches welcome."
    echo
fi

1440 1441 1442 1443
if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi
M
Michael Niedermayer 已提交
1444

1445
##########################################
D
Diego Biurrun 已提交
1446
# imlib check
1447

1448 1449
temp_extralibs -lImlib2
check_ld <<EOF && imlib2=yes || imlib2=no
1450 1451 1452 1453
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF
1454
restore_flags
1455

1456
##########################################
D
Diego Biurrun 已提交
1457
# FreeType check
1458

1459
freetype2=no
1460
if test "x$targetos" != "xBeOS"; then
1461
  if (freetype-config --version) >/dev/null 2>&1 ; then
1462 1463 1464 1465 1466 1467 1468
      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
1469
  fi
1470 1471
fi

1472
##########################################
D
Diego Biurrun 已提交
1473
# SDL check
1474 1475 1476

sdl_too_old=no
sdl=no
1477 1478
SDL_CONFIG="${cross_prefix}sdl-config"
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1479 1480 1481 1482 1483 1484 1485 1486 1487
    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'`
1488
        if test "$_sdlversion" -lt 121 ; then
1489 1490 1491
            sdl_too_old=yes
        else
            sdl=yes
1492 1493 1494 1495 1496 1497 1498 1499
            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
1500 1501
        fi
    fi
1502
    restore_flags
M
Michael Niedermayer 已提交
1503
fi
1504

1505 1506
enabled sdl || ffplay=no

1507
##########################################
D
Diego Biurrun 已提交
1508
# texi2html check
1509 1510

texi2html=no
1511
if (texi2html -version) >/dev/null 2>&1; then
1512 1513 1514
texi2html=yes
fi

1515
##########################################
D
Diego Biurrun 已提交
1516
# IPv6 check
1517

1518
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1519 1520 1521 1522 1523 1524 1525 1526 1527
#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);
1528
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1529 1530 1531
}
EOF

1532
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1533
enabled v4l2 && check_cc <<EOF || v4l2="no"
1534
#include <sys/time.h>
1535 1536
#include <asm/types.h>
#include <linux/videodev2.h>
1537
int dummy = V4L2_PIX_FMT_YUV420;
1538
struct v4l2_buffer dummy1;
1539 1540
EOF

1541 1542 1543 1544
enabled debug && add_cflags -g

# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
1545 1546
check_cflags -Wall
check_cflags -Wno-switch
M
Michael Niedermayer 已提交
1547 1548 1549
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
1550
enabled extrawarnings && check_cflags -Winline
1551

1552
# add some linker flags
1553
check_ldflags $LDLATEFLAGS
F
Fabrice Bellard 已提交
1554

1555 1556
# not all compilers support -Os
test "$optimize" = "small" && check_cflags -Os
1557

1558
if enabled optimize; then
1559
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1560 1561
        add_cflags  "-O5"
        add_ldflags "-O5"
1562
    else
1563
        add_cflags "-O3"
1564
    fi
1565 1566
fi

1567 1568
# PIC flags for shared library objects where they are needed
if test "$lshared" = "yes" ; then
M
Måns Rullgård 已提交
1569 1570
    # LIBOBJFLAGS may have already been set in the OS configuration
    if test -z "$LIBOBJFLAGS" ; then
1571
        case "$arch" in
1572 1573
            x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
        esac
1574 1575 1576
    fi
fi

1577
if test "$gprof" = "yes" ; then
1578 1579
    add_cflags  "-p"
    add_ldflags "-p"
1580 1581
fi

1582 1583 1584 1585 1586 1587
# find if .align arg is power-of-two or not
if test $asmalign_pot = "unknown"; then
    asmalign_pot="no"
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
fi

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

M
Måns Rullgård 已提交
1644 1645 1646
if test "$vhook" = "yes"; then
    echo "Imlib2 support   $imlib2"
    echo "FreeType support $freetype2"
1647
fi
1648
echo "Sun medialib support"  $sunmlib
1649
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
1650 1651
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
1652
echo "AMR-WB float support"  $amr_wb
1653
echo "AMR-WB IF2 support"    $amr_if2
1654 1655
echo "network support      $network"
if test "$network" = "yes" ; then
M
Måns Rullgård 已提交
1656
    echo "IPv6 support         $ipv6"
1657
fi
1658
echo ".align is power-of-two" $asmalign_pot
1659
if test "$gpl" = "no" ; then
M
Måns Rullgård 已提交
1660
    echo "License: LGPL"
1661
else
M
Måns Rullgård 已提交
1662
    echo "License: GPL"
1663
fi
F
Fabrice Bellard 已提交
1664

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

1667 1668
date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
D
Diego Biurrun 已提交
1669 1670
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1671
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
F
Fabrice Bellard 已提交
1672

1673 1674
echo "PREFIX=$PREFIX" >> config.mak
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1675
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1676
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
D
Diego Biurrun 已提交
1677
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1678 1679
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1680
echo "MAKE=$make" >> config.mak
1681 1682
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
1683
echo "RANLIB=$ranlib" >> config.mak
1684
if test "$dostrip" = "yes" ; then
M
Måns Rullgård 已提交
1685 1686
    echo "STRIP=$strip" >> config.mak
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1687
else
M
Måns Rullgård 已提交
1688 1689
    echo "STRIP=echo ignoring strip" >> config.mak
    echo "INSTALLSTRIP=" >> config.mak
1690
fi
1691

1692
VHOOKCFLAGS="-fPIC $CFLAGS"
1693
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1694

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

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

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

L
Luca Abeni 已提交
1866
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1867
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
L
Luca Barbato 已提交
1868 1869 1870 1871 1872 1873
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 已提交
1874
if test "$lshared" = "yes" ; then
1875
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
N
Nick Kurshev 已提交
1876
  echo "BUILD_SHARED=yes" >> config.mak
1877
  echo "PIC=-fPIC -DPIC" >> config.mak
1878
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1879
  echo "SPPVERSION=$lavc_version" >> config.mak
1880
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1881
  echo "LAVCVERSION=$lavc_version" >> config.mak
1882
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1883
  echo "LAVFVERSION=$lavf_version" >> config.mak
1884
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1885
  echo "LAVUVERSION=$lavu_version" >> config.mak
L
Luca Abeni 已提交
1886 1887
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
  echo "SWSVERSION=$sws_version" >> config.mak
1888
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1889 1890
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1891
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
N
Nick Kurshev 已提交
1892
fi
1893
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1894
echo "EXTRALIBS=$extralibs" >> config.mak
1895

D
Diego Biurrun 已提交
1896
# If you do not want to use encoders, disable them.
1897
if echo "$ENCODER_LIST" | grep -q encoder; then
1898 1899 1900
    echo "#define CONFIG_ENCODERS 1" >> $TMPH
    echo "CONFIG_ENCODERS=yes" >> config.mak
fi
1901

D
Diego Biurrun 已提交
1902
# If you do not want to use decoders, disable them.
1903
if echo "$DECODER_LIST" | grep -q decoder; then
1904 1905 1906
    echo "#define CONFIG_DECODERS 1" >> $TMPH
    echo "CONFIG_DECODERS=yes" >> config.mak
fi
1907

1908
# muxers
1909
if echo "$MUXER_LIST" | grep -q muxer; then
1910 1911 1912 1913 1914
  echo "#define CONFIG_MUXERS 1" >> $TMPH
  echo "CONFIG_MUXERS=yes" >> config.mak
fi

# demuxers
1915
if echo "$DEMUXER_LIST" | grep -q demuxer; then
1916 1917 1918 1919
  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
  echo "CONFIG_DEMUXERS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1920 1921 1922 1923
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1924

F
Fabrice Bellard 已提交
1925 1926 1927 1928 1929 1930
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1931 1932 1933 1934 1935 1936
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1937 1938 1939 1940 1941 1942
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

L
Luca Abeni 已提交
1943 1944 1945 1946 1947
if test "$swscaler" = "yes" ; then
  echo "#define CONFIG_SWSCALER 1" >> $TMPH
  echo "CONFIG_SWSCALER=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1948
# MPEG audio high precision mode
1949 1950 1951 1952
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1953 1954 1955 1956 1957
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

L
Luca Abeni 已提交
1958 1959 1960 1961 1962
if test "$v4l2" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1963 1964 1965 1966 1967
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1968 1969 1970 1971 1972
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1973 1974 1975 1976 1977
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1978 1979 1980 1981 1982 1983 1984 1985
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 已提交
1986 1987 1988
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1989 1990
fi

1991 1992 1993 1994 1995
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1996 1997 1998
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1999
fi
2000

2001 2002 2003 2004
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

2005 2006 2007 2008 2009
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

2010 2011 2012 2013 2014
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2015
if test "$mp3lame" = "yes" ; then
2016
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
2017 2018 2019
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

2020 2021 2022 2023 2024
if test "$libnut" = "yes" ; then
  echo "#define CONFIG_LIBNUT 1" >> $TMPH
  echo "CONFIG_LIBNUT=yes" >> config.mak
fi

2025
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
2026 2027 2028 2029
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

2030
if test "$vorbis" = "yes" ; then
N
Nilesh Bansal 已提交
2031 2032 2033 2034
  echo "#define CONFIG_LIBVORBIS 1" >> $TMPH
  echo "CONFIG_LIBVORBIS=yes" >> config.mak
fi

2035 2036 2037 2038 2039 2040 2041
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 已提交
2042
  echo "CONFIG_FAADBIN=yes" >> config.mak
2043 2044
fi

2045 2046 2047 2048 2049
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

2050 2051 2052 2053 2054
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

2055 2056 2057 2058 2059
if test "$x264" = "yes" ; then
  echo "#define CONFIG_X264 1" >> $TMPH
  echo "CONFIG_X264=yes" >> config.mak
fi

2060 2061 2062 2063 2064
if test "$avisynth" = "yes" ; then
  echo "#define CONFIG_AVISYNTH 1" >> $TMPH
  echo "CONFIG_AVISYNTH=yes" >> config.mak
fi

2065
if test "$mingw32" = "yes" ; then
2066
  echo "CONFIG_MINGW=yes" >> config.mak
2067 2068
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
2069
  echo "#define HAVE_THREADS 1" >> $TMPH
2070
  echo "#ifndef __MINGW32__" >> $TMPH
2071
  echo "#define __MINGW32__ 1" >> $TMPH
2072
  echo "#endif" >> $TMPH
2073 2074
fi

G
Gildas Bazin 已提交
2075
if test "$mingwce" = "yes" ; then
2076
  echo "CONFIG_MINGW=yes" >> config.mak
G
Gildas Bazin 已提交
2077 2078 2079 2080 2081 2082 2083
  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

2084 2085 2086
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
2087 2088 2089
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
2090 2091
fi

2092
if test "$targetos" = "SunOS" ; then
2093 2094 2095
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

2096
if test "$targetos" = "BeOS" ; then
2097 2098 2099 2100 2101
  echo "HAVE_BEOSTHREADS=yes" >> config.mak
  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
fi

2102
if test "$targetos" = "Darwin"; then
2103 2104 2105 2106
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2107
if test "$_malloc_h" = "yes" ; then
2108
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
2109
else
2110
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
2111 2112
fi

Z
Zdenek Kabelac 已提交
2113
if test "$_memalign" = "yes" ; then
2114 2115 2116 2117 2118
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

2119 2120 2121 2122
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi

M
Måns Rullgård 已提交
2123 2124 2125
if test "$byteswap_h" = "yes"; then
  echo "#define HAVE_BYTESWAP_H 1" >> $TMPH
fi
2126

2127 2128 2129 2130 2131
if test "$netserver" = "yes" ; then
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

2132 2133 2134 2135
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2136
if test "$simpleidct" = "yes" ; then
2137 2138 2139
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

2140 2141 2142 2143 2144
if test "$protocols" = "yes" ; then
  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
  echo "CONFIG_PROTOCOLS=yes" >> config.mak
fi

2145 2146 2147 2148 2149
if test "$ffmpeg" = "yes" ; then
  echo "#define CONFIG_FFMPEG 1" >> $TMPH
  echo "CONFIG_FFMPEG=yes" >> config.mak
fi

2150 2151 2152 2153 2154
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

2155 2156 2157 2158
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

2159 2160 2161 2162 2163
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

2166 2167
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
2168
  echo "#define CONFIG_SMALL 1" >> $TMPH
2169 2170
fi

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

D
Diego Biurrun 已提交
2215
if test "$amr" = "yes" ; then
2216 2217
  echo "#define CONFIG_AMR 1" >> $TMPH
  echo "CONFIG_AMR=yes" >> config.mak
D
Diego Biurrun 已提交
2218 2219
fi

2220
if test "$amr_wb" = "yes" ; then
2221 2222
  echo "#define CONFIG_AMR_WB 1" >> $TMPH
  echo "CONFIG_AMR_WB=yes" >> config.mak
2223 2224 2225 2226 2227 2228 2229
  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

2230
if test "$amr_nb" = "yes" ; then
2231 2232
  echo "#define CONFIG_AMR_NB 1" >> $TMPH
  echo "CONFIG_AMR_NB=yes" >> config.mak
2233
  echo
2234 2235
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
D
Diego Biurrun 已提交
2236
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
2237 2238 2239 2240
  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 已提交
2241
if test "$amr_nb_fixed" = "yes" ; then
2242 2243
  echo "#define CONFIG_AMR_NB_FIXED 1" >> $TMPH
  echo "CONFIG_AMR_NB_FIXED=yes" >> config.mak
D
Diego Biurrun 已提交
2244
  echo
Z
Zdenek Kabelac 已提交
2245 2246
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
D
Diego Biurrun 已提交
2247
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
2248
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
2249 2250
  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"
2251 2252
fi

2253 2254 2255 2256
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

2257
# Apparently it's not possible to portably echo a backslash.
2258
if test "$asmalign_pot" = "yes" ; then
2259
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2260
else
2261
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2262 2263
fi

Z
Zdenek Kabelac 已提交
2264

2265
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
2266
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2267 2268 2269 2270 2271 2272 2273 2274 2275 2276
    ucname="`echo $codec | tr '[a-z]' '[A-Z]'`"
    config_name="CONFIG_$ucname"
    enabled_name="ENABLE_$ucname"
    if enabled $codec; then
        echo "#define $config_name 1" >> $TMPH
        echo "#define $enabled_name 1" >> $TMPH
        echo "$config_name=yes" >> config.mak
    else
        echo "#define $enabled_name 0" >> $TMPH
    fi
2277 2278
done

2279 2280
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
2281
if test "$?" != "0" ; then
2282 2283 2284 2285
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
2286

2287
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2288 2289


D
Diego Biurrun 已提交
2290
# build pkg-config files libav*.pc and libpostproc.pc
2291 2292
# libavutil.pc
cat <<EOF >libavutil.pc
2293
prefix=$PREFIX
2294
exec_prefix=\${prefix}
2295
libdir=\${exec_prefix}/lib
2296
includedir=\${prefix}/include
2297 2298 2299 2300

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2301
Requires:
2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315
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
2316
Requires:
2317 2318 2319 2320
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
2321 2322 2323

# libavcodec.pc
cat <<EOF >libavcodec.pc
2324
prefix=$PREFIX
2325
exec_prefix=\${prefix}
2326
libdir=\${exec_prefix}/lib
2327
includedir=\${prefix}/include
2328 2329 2330

Name: libavcodec
Description: FFmpeg codec library
2331
Version: $lavc_version
2332
Requires: $pkg_requires libavutil = $lavu_version
2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345
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
2346
Version: $lavc_version
2347
Requires: $pkg_requires libavutil = $lavu_version
2348 2349 2350 2351 2352 2353 2354
Conflicts:
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF

# libavformat.pc
cat <<EOF >libavformat.pc
2355
prefix=$PREFIX
2356
exec_prefix=\${prefix}
2357
libdir=\${exec_prefix}/lib
2358
includedir=\${prefix}/include
2359 2360 2361

Name: libavformat
Description: FFmpeg container format library
2362
Version: $lavf_version
2363
Requires: $pkg_requires libavcodec = $lavc_version
2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376
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
2377
Version: $lavf_version
2378
Requires: $pkg_requires libavcodec = $lavc_version
2379 2380 2381 2382 2383 2384 2385 2386
Conflicts:
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF


# libpostproc.pc
cat <<EOF >libpostproc.pc
2387
prefix=$PREFIX
2388
exec_prefix=\${prefix}
2389
libdir=\${exec_prefix}/lib
2390
includedir=\${prefix}/include
2391 2392 2393

Name: libpostproc
Description: FFmpeg post processing library
2394
Version: $lavc_version
2395
Requires:
2396 2397 2398 2399 2400 2401 2402 2403
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

cat <<EOF >libpostproc-uninstalled.pc
prefix=
exec_prefix=
2404 2405
libdir=\${pcfiledir}/libpostproc
includedir=\${pcfiledir}/libpostproc
2406 2407 2408

Name: libpostproc
Description: FFmpeg post processing library
2409
Version: $lavc_version
2410
Requires:
2411 2412 2413 2414
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF
L
Luca Abeni 已提交
2415

2416 2417 2418 2419 2420 2421 2422 2423 2424
if test "$swscaler" != "no"; then
  sws_pc_libs="-L\${libdir} -lswscale"
  sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
  sws_pc_requires="$pkg_requires libavutil = $lavu_version"
else
  sws_pc_libs=""
  sws_pc_uninstalled_libs=""
  sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
fi
L
Luca Abeni 已提交
2425 2426 2427 2428 2429 2430 2431 2432 2433 2434
# libswscale.pc
cat <<EOF >libswscale.pc
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: libswscale
Description: FFmpeg image rescaling library
Version: $sws_version
2435
Requires: $sws_pc_requires
L
Luca Abeni 已提交
2436
Conflicts:
2437
Libs: $sws_pc_libs
L
Luca Abeni 已提交
2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449
Cflags: -I\${includedir} -I\${includedir}/swscale
EOF

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

Name: libswscale
Description: FFmpeg image rescaling library
Version: $sws_version
2450
Requires: $sws_pc_requires
L
Luca Abeni 已提交
2451
Conflicts:
2452
Libs: $sws_pc_uninstalled_libs
L
Luca Abeni 已提交
2453 2454
Cflags: -I\${includedir}
EOF