configure 62.6 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 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
  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-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 已提交
60
  echo "  --enable-swscaler        software scaler support [default=no]"
61
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
62 63 64 65 66 67
  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]"
68
  echo "  --cross-compile          assume a cross-compiler is used"
69 70 71 72 73 74
  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 []"
75
  echo "  --arch=ARCH              select architecture  [$arch]"
76 77
  echo "  --cpu=CPU                selects the minimum cpu required (affects
                                   instruction selection, may crash on older CPUs)"
78 79 80
  echo "  --powerpc-perf-enable    enable performance report on PPC"
  echo "                           (requires enabling PMC)"
  echo "  --disable-mmx            disable MMX usage"
81
  echo "  --disable-armv5te        disable armv5te usage"
82 83 84 85 86 87 88 89 90
  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]"
91
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
  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"
  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"
112 113
  echo "  --disable-muxer=NAME     disables muxer NAME"
  echo "  --enable-muxer=NAME      enables muxer NAME"
114
  echo "  --disable-muxers         disables all muxers"
115 116
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
117
  echo "  --disable-demuxers       disables all demuxers"
118 119 120
  echo "  --enable-parser=NAME     enables parser NAME"
  echo "  --disable-parser=NAME    disables parser NAME"
  echo "  --disable-parsers        disables all parsers"
121 122 123 124
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
125

126 127 128 129
log(){
    echo "$@" >>$logfile
}

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

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

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
148
    if enabled logging; then
149 150 151 152 153 154 155 156 157 158
        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
159 160 161 162 163 164 165 166 167 168 169 170
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
    exit 1
}

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

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

171
save_flags(){
172
    flags_saved && return
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
    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 $*"
}

202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
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 "$@"
}

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

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

check_cpp(){
    log check_cpp "$@"
235
    cat >$TMPC
236
    log_file $TMPC
237
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
238 239 240
}

check_ld(){
241
    log check_ld "$@"
242
    check_cc || return
243
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
244 245 246
}

check_cflags(){
247 248
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
249 250 251 252 253
int x;
EOF
}

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

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

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

284 285 286 287 288 289 290 291 292 293 294 295
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
}

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

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

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

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

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

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

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

656
;;
657 658 659
*)
targetos="${targetos}-UNKNOWN"
;;
660
esac
F
Fabrice Bellard 已提交
661

662
# find source path
663
source_path="`dirname $0`"
664 665 666 667
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
    source_path=`pwd`
    source_path_used="no"
668 669
else
    source_path="`cd \"$source_path\"; pwd`"
F
Fabrice Bellard 已提交
670 671
fi

672 673 674 675
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
    show_help
fi

676 677 678 679 680
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

M
Måns Rullgård 已提交
681 682
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/'`
683
PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' $source_path/libavcodec/allcodecs.c  | sed 's/.*&\(.*\)).*/\1/'`
684 685
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/'`
686

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

879 880
if test "$logging" != no; then
    test "$logging" = yes || logfile="$logging"
881 882
    echo "# $0 $@" >$logfile
    set >>$logfile
883 884
else
    logfile=/dev/null
885
fi
886

887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910
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"
911 912
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
913
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
914
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
915
    if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
916 917
    if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
    shlibdir='${PREFIX}'
918 919
fi

920 921
# Combine FFLDFLAGS, EXTRALDFLAGS and the LDFLAGS environment variable.
LDFLAGS="$FFLDFLAGS $EXTRALDFLAGS $LDFLAGS"
922

923
test -n "$cross_prefix" && cross_compile=yes
924 925 926 927 928
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

929 930 931 932 933 934 935 936 937 938 939
# 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 已提交
940
if test "$vorbis" = "yes" ; then
941
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
942
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
943 944 945 946
        fail="yes"
    fi
fi

947
if test "$gpl" != "yes"; then
948
    if test "$pp" != "no"; then
D
Diego Biurrun 已提交
949
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
950 951 952 953
        fail="yes"
    fi

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

958
    if test "$xvid" != "no"; then
D
Diego Biurrun 已提交
959
        echo "libxvidcore is under GPL and --enable-gpl is not specified."
960 961 962
        fail="yes"
    fi

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

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

973
    if test "$faad" != "no" -o "$faadbin" != "no"; then
974 975
        if check_header faad.h; then
            check_cc << EOF
976 977 978 979 980 981
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
982
            if test $? = 0 ; then
D
Diego Biurrun 已提交
983
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
984 985 986 987 988
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
D
Diego Biurrun 已提交
989
            echo "FAAD test failed."
990 991
        fi
    fi
992

L
Luca Abeni 已提交
993 994 995 996
    if test "$swscaler" != "no"; then
        echo "The software scaler is under GPL and --enable-gpl is not specified."
        fail="yes"
    fi
997
fi
998

999 1000
if test "$fail" = "yes"; then
    exit 1
1001 1002
fi

D
Diego Biurrun 已提交
1003
# compute MMX state
1004
if test $mmx = "default"; then
1005
    if test $arch = "x86_32" -o $arch = "x86_64"; then
1006 1007 1008 1009 1010 1011
        mmx="yes"
    else
        mmx="no"
    fi
fi

1012
#Darwin CC versions
1013
needmdynamicnopic="no"
1014
if test $targetos = Darwin; then
1015
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1016
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1017
    else
1018 1019 1020
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
        case "$gcc_version" in
            *2.95*)
1021
                add_cflags "-no-cpp-precomp -pipe"
1022 1023
                ;;
            *[34].*)
1024
                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1025 1026 1027 1028 1029
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
            *)
1030
                add_cflags "-no-cpp-precomp -pipe"
1031 1032 1033 1034 1035
                if test "$lshared" = no; then
                   needmdynamicnopic="yes"
                fi
                ;;
        esac
1036
    fi
1037 1038 1039 1040
fi

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

1043 1044
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
1045
    if test $arch = "powerpc"; then
1046 1047 1048 1049 1050 1051
        altivec="yes"
    else
        altivec="no"
    fi
fi

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

1133 1134 1135 1136 1137 1138 1139 1140
# 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
1141 1142
variable to another directory and make sure that $TMPDIR1 is not mounted
noexec.
1143 1144 1145
EOF
    die "Sanity test failed."
fi
1146
rm $TMPE
1147

M
Måns Rullgård 已提交
1148 1149 1150 1151 1152 1153 1154 1155 1156 1157
# 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."
1158
        echo "Only do this if you know what cross compiling means."
M
Måns Rullgård 已提交
1159 1160 1161 1162
    fi
    die "C compiler test failed."
fi

1163 1164
# check for assembler specific support

1165
if test $arch = "powerpc"; then
1166 1167 1168 1169 1170 1171 1172 1173 1174 1175
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

1176 1177
# check for SIMD availability

1178
# AltiVec flags: The FSF version of GCC differs from the Apple version
1179
if test $arch = "powerpc"; then
1180
    if test $altivec = "yes"; then
1181
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1182
            add_cflags "-faltivec"
1183
        else
1184
            add_cflags "-maltivec -mabi=altivec"
1185 1186 1187 1188
        fi
    fi
fi

1189
check_header altivec.h && _altivec_h=yes || _altivec_h=no
1190

D
Diego Biurrun 已提交
1191
# check if our compiler supports Motorola AltiVec C API
1192
if test $altivec = "yes"; then
M
Måns Rullgård 已提交
1193 1194 1195 1196 1197 1198
    if test $_altivec_h = "yes"; then
        inc_altivec_h="#include <altivec.h>"
    else
        inc_altivec_h=
    fi
    check_cc <<EOF || altivec=no
1199
$inc_altivec_h
1200 1201 1202 1203 1204 1205 1206
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
1207

1208
# check armv5te instructions support
1209
if test $armv5te = "default" -a $arch = "armv4l"; then
1210 1211 1212 1213 1214 1215 1216 1217 1218
    armv5te=no
    check_cc <<EOF && armv5te=yes
        int main(void) {
        __asm__ __volatile__ ("qadd r0, r0, r0");
        }
EOF
fi

# check iwmmxt support
1219
if test $iwmmxt = "default" -a $arch = "armv4l"; then
1220 1221 1222 1223 1224 1225 1226 1227
    iwmmxt=no
    check_cc <<EOF && iwmmxt=yes
        int main(void) {
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
        }
EOF
fi

D
Diego Biurrun 已提交
1228
# mmi only available on mips
1229
if test $mmi = "default"; then
1230
    if test $arch = "mips"; then
1231 1232 1233 1234 1235 1236
        mmi="yes"
    else
        mmi="no"
    fi
fi

D
Diego Biurrun 已提交
1237
# check if our compiler supports mmi
1238
enabled mmi && check_cc <<EOF || mmi="no"
1239 1240 1241 1242 1243
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
1244 1245 1246

# ---
# big/little-endian test
1247
if test "$cross_compile" = "no"; then
1248
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1249 1250
#include <inttypes.h>
int main(int argc, char ** argv){
1251 1252
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
1253 1254
}
EOF
F
Fabrice Bellard 已提交
1255
else
M
Måns Rullgård 已提交
1256
    # programs cannot be launched if cross compiling, so make a static guess
1257
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
M
Måns Rullgård 已提交
1258 1259
        bigendian="yes"
    fi
F
Fabrice Bellard 已提交
1260 1261
fi

1262 1263
# ---
# *inttypes.h* test
1264
check_header inttypes.h || inttypes=no
1265

1266 1267
# ---
# *int_fast* test
1268
check_cc <<EOF || emu_fast_int=yes
1269 1270
#include <inttypes.h>
int main(int argc, char ** argv){
1271 1272
        volatile uint_fast64_t i=0x01234567;
        return 0;
1273 1274 1275
}
EOF

N
Nick Kurshev 已提交
1276 1277 1278 1279 1280
# ---
# check availability of some header files

_memalign=no
_malloc_h=no
1281 1282 1283 1284
if check_header malloc.h; then
    _malloc_h=yes
    _memalign=yes
    check_func memalign || _memalign="no"
N
Nick Kurshev 已提交
1285 1286
fi

1287
if test "$_memalign" = "no" -a "$mmx" = "yes" -a \
1288 1289
        "$memalignhack" != "yes" -a "$targetos" != "Darwin" -a \
        "$targetos" != "FreeBSD" ; then
1290
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1291 1292
fi

1293
check_func localtime_r && localtime_r=yes || localtime_r=no
1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306
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
1307
enabled dts     && require libdts dts.h dts_init -ldts -lm
1308
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1309
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
M
Måns Rullgård 已提交
1310
enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1311
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1312 1313 1314 1315
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
1316

1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333
# 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

1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348
# 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

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


1365
# test for lrintf in math.h
1366
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
1367 1368 1369 1370 1371
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

F
Falk Hüffner 已提交
1372 1373
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
1374
    check_cc <<EOF && _restrict=$restrict_keyword && break
1375 1376
void foo(char * $restrict_keyword p);
EOF
F
Falk Hüffner 已提交
1377 1378
done

1379 1380
# dlopen/dlfcn.h probing

1381
check_header dlfcn.h && dlfcn=yes
1382

1383 1384 1385 1386
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1387
fi
1388
restore_flags
1389

1390 1391 1392
if check_func dlopen; then
    dlopen=yes
    ldl=
1393 1394
fi

M
Måns Rullgård 已提交
1395 1396
if test "$vhook" = "default"; then
    vhook="$dlopen"
1397 1398
fi

M
Michael Niedermayer 已提交
1399
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
1400
    add_extralibs $ldl
M
Michael Niedermayer 已提交
1401 1402
fi

1403 1404 1405 1406 1407 1408 1409 1410
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

1411 1412 1413 1414
if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi
M
Michael Niedermayer 已提交
1415

1416
##########################################
D
Diego Biurrun 已提交
1417
# imlib check
1418

1419 1420
temp_extralibs -lImlib2
check_ld <<EOF && imlib2=yes || imlib2=no
1421 1422 1423 1424
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF
1425
restore_flags
1426

1427
##########################################
D
Diego Biurrun 已提交
1428
# FreeType check
1429

1430
freetype2=no
1431
if test "x$targetos" != "xBeOS"; then
1432
  if (freetype-config --version) >/dev/null 2>&1 ; then
1433 1434 1435 1436 1437 1438 1439
      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
1440
  fi
1441 1442
fi

1443
##########################################
D
Diego Biurrun 已提交
1444
# SDL check
1445 1446 1447

sdl_too_old=no
sdl=no
1448 1449
SDL_CONFIG="${cross_prefix}sdl-config"
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1450 1451 1452 1453 1454 1455 1456 1457 1458
    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'`
1459
        if test "$_sdlversion" -lt 121 ; then
1460 1461 1462
            sdl_too_old=yes
        else
            sdl=yes
1463 1464 1465 1466 1467 1468 1469 1470
            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
1471 1472
        fi
    fi
1473
    restore_flags
M
Michael Niedermayer 已提交
1474
fi
1475

1476 1477
enabled sdl || ffplay=no

1478
##########################################
D
Diego Biurrun 已提交
1479
# texi2html check
1480 1481

texi2html=no
1482
if (texi2html -version) >/dev/null 2>&1; then
1483 1484 1485
texi2html=yes
fi

1486
##########################################
D
Diego Biurrun 已提交
1487
# IPv6 check
1488

1489
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1490 1491 1492 1493 1494 1495 1496 1497 1498
#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);
1499
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1500 1501 1502
}
EOF

1503
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1504
enabled v4l2 && check_cc <<EOF || v4l2="no"
1505
#include <sys/time.h>
1506 1507
#include <asm/types.h>
#include <linux/videodev2.h>
1508
int dummy = V4L2_PIX_FMT_YUV420;
1509
struct v4l2_buffer dummy1;
1510 1511
EOF

1512 1513 1514 1515
enabled debug && add_cflags -g

# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
1516 1517
check_cflags -Wall
check_cflags -Wno-switch
M
Michael Niedermayer 已提交
1518 1519 1520 1521
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
check_cflags -Winline
1522

1523
# add some linker flags
1524
check_ldflags $LDLATEFLAGS
F
Fabrice Bellard 已提交
1525

1526 1527
# not all compilers support -Os
test "$optimize" = "small" && check_cflags -Os
1528

1529
if enabled optimize; then
1530
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1531 1532
        add_cflags  "-O5"
        add_ldflags "-O5"
1533
    else
1534
        add_cflags "-O3"
1535
    fi
1536 1537
fi

1538 1539
# PIC flags for shared library objects where they are needed
if test "$lshared" = "yes" ; then
M
Måns Rullgård 已提交
1540 1541
    # LIBOBJFLAGS may have already been set in the OS configuration
    if test -z "$LIBOBJFLAGS" ; then
1542
        case "$arch" in
1543 1544
            x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
        esac
1545 1546 1547
    fi
fi

1548
if test "$gprof" = "yes" ; then
1549 1550
    add_cflags  "-p"
    add_ldflags "-p"
1551 1552
fi

1553 1554 1555 1556 1557 1558
# 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

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

M
Måns Rullgård 已提交
1614 1615 1616
if test "$vhook" = "yes"; then
    echo "Imlib2 support   $imlib2"
    echo "FreeType support $freetype2"
1617
fi
1618
echo "Sun medialib support"  $sunmlib
1619
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
1620 1621
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
1622
echo "AMR-WB float support"  $amr_wb
1623
echo "AMR-WB IF2 support"    $amr_if2
1624 1625
echo "network support      $network"
if test "$network" = "yes" ; then
M
Måns Rullgård 已提交
1626
    echo "IPv6 support         $ipv6"
1627
fi
1628
echo ".align is power-of-two" $asmalign_pot
1629
if test "$gpl" = "no" ; then
M
Måns Rullgård 已提交
1630
    echo "License: LGPL"
1631
else
M
Måns Rullgård 已提交
1632
    echo "License: GPL"
1633
fi
F
Fabrice Bellard 已提交
1634

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

1637 1638
date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
D
Diego Biurrun 已提交
1639 1640
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1641
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
F
Fabrice Bellard 已提交
1642

1643 1644
echo "PREFIX=$PREFIX" >> config.mak
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1645
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1646
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
D
Diego Biurrun 已提交
1647
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1648 1649
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1650
echo "MAKE=$make" >> config.mak
1651 1652
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
1653
echo "RANLIB=$ranlib" >> config.mak
1654
if test "$dostrip" = "yes" ; then
M
Måns Rullgård 已提交
1655 1656
    echo "STRIP=$strip" >> config.mak
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1657
else
M
Måns Rullgård 已提交
1658 1659
    echo "STRIP=echo ignoring strip" >> config.mak
    echo "INSTALLSTRIP=" >> config.mak
1660
fi
1661

1662
VHOOKCFLAGS="-fPIC $CFLAGS"
1663
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1664

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

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

1787 1788 1789
if test "$altivec" = "yes" ; then
  echo "TARGET_ALTIVEC=yes" >> config.mak
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1790 1791 1792
  if test "$_altivec_h" = "yes" ; then
    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
  else
A
1l  
Alex Beregszaszi 已提交
1793
    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
1794
  fi
1795
fi
Z
Zdenek Kabelac 已提交
1796
if test "$gprof" = "yes" ; then
1797
  echo "#define HAVE_GPROF 1" >> $TMPH
F
Fabrice Bellard 已提交
1798
fi
1799 1800 1801
if test "$localtime_r" = "yes" ; then
  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
fi
1802 1803 1804
if test "$imlib2" = "yes" ; then
  echo "HAVE_IMLIB2=yes" >> config.mak
fi
1805 1806 1807
if test "$freetype2" = "yes" ; then
  echo "HAVE_FREETYPE2=yes" >> config.mak
fi
1808 1809 1810 1811
if test "$sunmlib" = "yes" ; then
  echo "HAVE_MLIB=yes" >> config.mak
  echo "#define HAVE_MLIB 1" >> $TMPH
fi
1812 1813 1814
if test "$pthreads" = "yes" ; then
  echo "HAVE_PTHREADS=yes" >> config.mak
  echo "#define HAVE_PTHREADS 1" >> $TMPH
1815
  echo "#define HAVE_THREADS 1" >> $TMPH
1816
fi
1817 1818
if test "$sdl" = "yes" ; then
  echo "CONFIG_SDL=yes" >> config.mak
1819 1820
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1821 1822 1823
  if test "$sdl_video_size" = "yes"; then
    echo "#define HAVE_SDL_VIDEO_SIZE 1" >> $TMPH
  fi
1824
fi
1825 1826 1827
if test "$texi2html" = "yes"; then
  echo "BUILD_DOC=yes" >> config.mak
fi
1828 1829 1830
if test "$have_lrintf" = "yes" ; then
  echo "#define HAVE_LRINTF 1" >> $TMPH
fi
1831 1832 1833 1834
if test "$vhook" = "yes" ; then
  echo "BUILD_VHOOK=yes" >> config.mak
  echo "#define HAVE_VHOOK 1" >> $TMPH
fi
L
Luca Barbato 已提交
1835

L
Luca Abeni 已提交
1836
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1837
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
L
Luca Barbato 已提交
1838 1839 1840 1841 1842 1843
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 已提交
1844
if test "$lshared" = "yes" ; then
1845
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
N
Nick Kurshev 已提交
1846
  echo "BUILD_SHARED=yes" >> config.mak
1847
  echo "PIC=-fPIC -DPIC" >> config.mak
1848
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1849
  echo "SPPVERSION=$lavc_version" >> config.mak
1850
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1851
  echo "LAVCVERSION=$lavc_version" >> config.mak
1852
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1853
  echo "LAVFVERSION=$lavf_version" >> config.mak
1854
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
L
Luca Barbato 已提交
1855
  echo "LAVUVERSION=$lavu_version" >> config.mak
L
Luca Abeni 已提交
1856 1857
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
  echo "SWSVERSION=$sws_version" >> config.mak
1858
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1859 1860
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1861
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
N
Nick Kurshev 已提交
1862
fi
1863
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1864
echo "EXTRALIBS=$extralibs" >> config.mak
1865

D
Diego Biurrun 已提交
1866
# If you do not want to use encoders, disable them.
1867
if echo "$ENCODER_LIST" | grep -q encoder; then
1868 1869 1870
    echo "#define CONFIG_ENCODERS 1" >> $TMPH
    echo "CONFIG_ENCODERS=yes" >> config.mak
fi
1871

D
Diego Biurrun 已提交
1872
# If you do not want to use decoders, disable them.
1873
if echo "$DECODER_LIST" | grep -q decoder; then
1874 1875 1876
    echo "#define CONFIG_DECODERS 1" >> $TMPH
    echo "CONFIG_DECODERS=yes" >> config.mak
fi
1877

1878
# muxers
1879
if echo "$MUXER_LIST" | grep -q muxer; then
1880 1881 1882 1883 1884
  echo "#define CONFIG_MUXERS 1" >> $TMPH
  echo "CONFIG_MUXERS=yes" >> config.mak
fi

# demuxers
1885
if echo "$DEMUXER_LIST" | grep -q demuxer; then
1886 1887 1888 1889
  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
  echo "CONFIG_DEMUXERS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1890 1891 1892 1893
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1894

F
Fabrice Bellard 已提交
1895 1896 1897 1898 1899 1900
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1901 1902 1903 1904 1905 1906
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1907 1908 1909 1910 1911 1912
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

L
Luca Abeni 已提交
1913 1914 1915 1916 1917
if test "$swscaler" = "yes" ; then
  echo "#define CONFIG_SWSCALER 1" >> $TMPH
  echo "CONFIG_SWSCALER=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1918
# MPEG audio high precision mode
1919 1920 1921 1922
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1923 1924 1925 1926 1927
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

L
Luca Abeni 已提交
1928 1929 1930 1931 1932
if test "$v4l2" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1933 1934 1935 1936 1937
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1938 1939 1940 1941 1942
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1943 1944 1945 1946 1947
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1948 1949 1950 1951 1952 1953 1954 1955
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 已提交
1956 1957 1958
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1959 1960
fi

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

F
Fabrice Bellard 已提交
1966 1967 1968
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1969
fi
1970

1971 1972 1973 1974
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

1975 1976 1977 1978 1979
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

1980 1981 1982 1983 1984
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1985
if test "$mp3lame" = "yes" ; then
1986
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
1987 1988 1989
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

1990
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
1991 1992 1993 1994
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

1995
if test "$vorbis" = "yes" ; then
N
Nilesh Bansal 已提交
1996 1997 1998 1999
  echo "#define CONFIG_LIBVORBIS 1" >> $TMPH
  echo "CONFIG_LIBVORBIS=yes" >> config.mak
fi

2000 2001 2002 2003 2004 2005 2006
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 已提交
2007
  echo "CONFIG_FAADBIN=yes" >> config.mak
2008 2009
fi

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

2015 2016 2017 2018 2019
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

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

2025 2026 2027 2028 2029
if test "$avisynth" = "yes" ; then
  echo "#define CONFIG_AVISYNTH 1" >> $TMPH
  echo "CONFIG_AVISYNTH=yes" >> config.mak
fi

2030
if test "$mingw32" = "yes" ; then
2031
  echo "CONFIG_MINGW=yes" >> config.mak
2032 2033
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
2034
  echo "#define HAVE_THREADS 1" >> $TMPH
2035
  echo "#ifndef __MINGW32__" >> $TMPH
2036
  echo "#define __MINGW32__ 1" >> $TMPH
2037
  echo "#endif" >> $TMPH
2038 2039
fi

G
Gildas Bazin 已提交
2040
if test "$mingwce" = "yes" ; then
2041
  echo "CONFIG_MINGW=yes" >> config.mak
G
Gildas Bazin 已提交
2042 2043 2044 2045 2046 2047 2048
  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

2049 2050 2051
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
2052 2053 2054
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
2055 2056
fi

2057
if test "$targetos" = "SunOS" ; then
2058 2059 2060
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

2061
if test "$targetos" = "BeOS" ; then
2062 2063 2064 2065 2066
  echo "HAVE_BEOSTHREADS=yes" >> config.mak
  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
fi

2067
if test "$targetos" = "Darwin"; then
2068 2069 2070 2071
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2072
if test "$_malloc_h" = "yes" ; then
2073
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
2074
else
2075
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
2076 2077
fi

Z
Zdenek Kabelac 已提交
2078
if test "$_memalign" = "yes" ; then
2079 2080 2081 2082 2083
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

2084 2085 2086 2087 2088
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi


2089 2090 2091 2092 2093
if test "$netserver" = "yes" ; then
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

2094 2095 2096 2097
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2098
if test "$simpleidct" = "yes" ; then
2099 2100 2101
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

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

2107 2108 2109 2110 2111
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

2112 2113 2114 2115
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

2116 2117 2118 2119 2120
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

2123 2124
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
2125
  echo "#define CONFIG_SMALL 1" >> $TMPH
2126 2127
fi

2128 2129
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
2130 2131 2132 2133 2134 2135
    DIRS="\
         doc \
         libavformat \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
2136
         libavcodec/bfin \
2137 2138 2139 2140 2141
         libavcodec/i386 \
         libavcodec/sparc \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/liba52 \
2142
         libpostproc \
2143
         libavutil \
L
Luca Abeni 已提交
2144
         libswscale \
2145 2146 2147 2148 2149 2150 2151
         tests \
         vhook \
         "
    FILES="\
          Makefile \
          libavformat/Makefile \
          libavcodec/Makefile \
2152
          libpostproc/Makefile \
2153
          libavutil/Makefile \
L
Luca Abeni 已提交
2154
          libswscale/Makefile \
2155 2156 2157 2158 2159
          tests/Makefile \
          vhook/Makefile \
          doc/Makefile \
          doc/texi2pod.pl \
          "
2160 2161 2162 2163
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
M
Michael Niedermayer 已提交
2164
        ln -sf "$source_path/$f" $f
2165 2166
    done
fi
2167
echo "SRC_PATH=$source_path" >> config.mak
2168
echo "BUILD_ROOT=$PWD" >> config.mak
2169

D
Diego Biurrun 已提交
2170
if test "$amr" = "yes" ; then
2171 2172
  echo "#define CONFIG_AMR 1" >> $TMPH
  echo "CONFIG_AMR=yes" >> config.mak
D
Diego Biurrun 已提交
2173 2174
fi

2175
if test "$amr_wb" = "yes" ; then
2176 2177
  echo "#define CONFIG_AMR_WB 1" >> $TMPH
  echo "CONFIG_AMR_WB=yes" >> config.mak
2178 2179 2180 2181 2182 2183 2184
  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

2185
if test "$amr_nb" = "yes" ; then
2186 2187
  echo "#define CONFIG_AMR_NB 1" >> $TMPH
  echo "CONFIG_AMR_NB=yes" >> config.mak
2188
  echo
2189 2190
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
D
Diego Biurrun 已提交
2191
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
2192 2193 2194 2195
  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 已提交
2196
if test "$amr_nb_fixed" = "yes" ; then
2197 2198
  echo "#define CONFIG_AMR_NB_FIXED 1" >> $TMPH
  echo "CONFIG_AMR_NB_FIXED=yes" >> config.mak
D
Diego Biurrun 已提交
2199
  echo
Z
Zdenek Kabelac 已提交
2200 2201
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
D
Diego Biurrun 已提交
2202
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
2203
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
2204 2205
  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"
2206 2207
fi

2208 2209 2210 2211
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

2212
# Apparently it's not possible to portably echo a backslash.
2213
if test "$asmalign_pot" = "yes" ; then
2214
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2215
else
2216
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2217 2218
fi

Z
Zdenek Kabelac 已提交
2219

2220
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
2221
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2222 2223
    echo "#define CONFIG_`echo $codec | tr '[a-z]' '[A-Z]'` 1" >> $TMPH
    echo "CONFIG_`echo $codec | tr '[a-z]' '[A-Z]'`=yes" >> config.mak
2224 2225
done

2226 2227
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
2228
if test "$?" != "0" ; then
2229 2230 2231 2232
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
2233

2234
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2235 2236


D
Diego Biurrun 已提交
2237
# build pkg-config files libav*.pc and libpostproc.pc
2238 2239
# libavutil.pc
cat <<EOF >libavutil.pc
2240
prefix=$PREFIX
2241
exec_prefix=\${prefix}
2242
libdir=\${exec_prefix}/lib
2243
includedir=\${prefix}/include
2244 2245 2246 2247

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2248
Requires:
2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262
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
2263
Requires:
2264 2265 2266 2267
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
2268 2269 2270

# libavcodec.pc
cat <<EOF >libavcodec.pc
2271
prefix=$PREFIX
2272
exec_prefix=\${prefix}
2273
libdir=\${exec_prefix}/lib
2274
includedir=\${prefix}/include
2275 2276 2277

Name: libavcodec
Description: FFmpeg codec library
2278
Version: $lavc_version
2279
Requires: $pkg_requires libavutil = $lavu_version
2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292
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
2293
Version: $lavc_version
2294
Requires: $pkg_requires libavutil = $lavu_version
2295 2296 2297 2298 2299 2300 2301
Conflicts:
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF

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

Name: libavformat
Description: FFmpeg container format library
2309
Version: $lavf_version
2310
Requires: $pkg_requires libavcodec = $lavc_version
2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323
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
2324
Version: $lavf_version
2325
Requires: $pkg_requires libavcodec = $lavc_version
2326 2327 2328 2329 2330 2331 2332 2333
Conflicts:
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF


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

Name: libpostproc
Description: FFmpeg post processing library
2341
Version: $lavc_version
2342
Requires:
2343 2344 2345 2346 2347 2348 2349 2350
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

cat <<EOF >libpostproc-uninstalled.pc
prefix=
exec_prefix=
2351 2352
libdir=\${pcfiledir}/libpostproc
includedir=\${pcfiledir}/libpostproc
2353 2354 2355

Name: libpostproc
Description: FFmpeg post processing library
2356
Version: $lavc_version
2357
Requires:
2358 2359 2360 2361
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF
L
Luca Abeni 已提交
2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392

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

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

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

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