configure 64.1 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
  echo "  --disable-zlib           disable zlib [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"
98
  echo "  --enable-extra-warnings  enable more compiler warnings"
99 100 101
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
  echo "                           MPEG audio decoding [default=no]"
  echo "  --disable-protocols      disable I/O protocols support [default=no]"
102
  echo "  --disable-ffmpeg         disable ffmpeg build"
103 104 105 106 107 108 109 110 111 112 113
  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"
114 115
  echo "  --disable-muxer=NAME     disables muxer NAME"
  echo "  --enable-muxer=NAME      enables muxer NAME"
116
  echo "  --disable-muxers         disables all muxers"
117 118
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
119
  echo "  --disable-demuxers       disables all demuxers"
120 121 122
  echo "  --enable-parser=NAME     enables parser NAME"
  echo "  --disable-parser=NAME    disables parser NAME"
  echo "  --disable-parsers        disables all parsers"
123 124 125 126
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
127

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

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

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

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

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

enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}

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

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

189
save_flags(){
190
    flags_saved && return
191 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
    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 $*"
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

692 693 694 695 696
FFMPEG_CONFIGURATION=" "
for opt do
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
done

697 698 699 700 701
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/'`
702

703 704
enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST

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

901 902
if test "$logging" != no; then
    test "$logging" = yes || logfile="$logging"
903 904
    echo "# $0 $@" >$logfile
    set >>$logfile
905 906
else
    logfile=/dev/null
907
fi
908

909 910 911 912 913 914 915 916 917 918
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
919 920
    video4linux="no"
    video4linux2="no"
921 922 923 924 925 926 927 928 929 930 931 932
    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"
933 934
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
935
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
936
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
937
    if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
938 939
    if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
    shlibdir='${PREFIX}'
940 941
fi

942 943
# Combine FFLDFLAGS and the LDFLAGS environment variable.
LDFLAGS="$FFLDFLAGS $LDFLAGS"
944

945
test -n "$cross_prefix" && cross_compile=yes
946 947 948 949 950
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

951 952 953 954 955 956 957 958 959 960 961
# 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

962
if test "$libvorbis" = "yes" ; then
963
    if test "$libogg" = "no"; then
D
Diego Biurrun 已提交
964
        echo "libogg must be enabled to enable Vorbis."
N
Nilesh Bansal 已提交
965 966 967 968
        fail="yes"
    fi
fi

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

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

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

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

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

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

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

1021 1022
if test "$fail" = "yes"; then
    exit 1
1023 1024
fi

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

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

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

1065 1066
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
1067
    if test $arch = "powerpc"; then
1068 1069 1070 1071 1072 1073
        altivec="yes"
    else
        altivec="no"
    fi
fi

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

1155 1156 1157 1158 1159 1160 1161 1162
# 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
1163 1164
variable to another directory and make sure that $TMPDIR1 is not mounted
noexec.
1165 1166 1167
EOF
    die "Sanity test failed."
fi
1168
rm $TMPE
1169

M
Måns Rullgård 已提交
1170 1171 1172 1173 1174 1175 1176 1177 1178 1179
# 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."
1180
        echo "Only do this if you know what cross compiling means."
M
Måns Rullgård 已提交
1181 1182 1183 1184
    fi
    die "C compiler test failed."
fi

1185 1186
# check for assembler specific support

1187
if test $arch = "powerpc"; then
1188 1189 1190 1191 1192 1193 1194 1195 1196 1197
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

1198 1199
# check for SIMD availability

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

1211
check_header altivec.h && altivec_h=yes || altivec_h=no
1212

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

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

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

D
Diego Biurrun 已提交
1250
# mmi only available on mips
1251
if test $mmi = "default"; then
1252
    if test $arch = "mips"; then
1253 1254 1255 1256 1257 1258
        mmi="yes"
    else
        mmi="no"
    fi
fi

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

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

1284 1285
# ---
# *inttypes.h* test
1286
check_header inttypes.h || inttypes=no
1287

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

N
Nick Kurshev 已提交
1298 1299 1300
# ---
# check availability of some header files

1301
memalign=no
1302
malloc_h=no
1303
if check_header malloc.h; then
1304
    malloc_h=yes
1305 1306
    memalign=yes
    check_func memalign || memalign="no"
N
Nick Kurshev 已提交
1307 1308
fi

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

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

1317
check_func localtime_r && localtime_r=yes || localtime_r=no
1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330
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
1331
enabled dts     && require libdts dts.h dts_init -ldts -lm
1332
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1333
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1334
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1335
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1336
enabled libnut  && require libnut nut.h nut_demuxer_init -lnut
1337 1338 1339
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
1340
enabled mlib    && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1341

1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358
# 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

1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373
# 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

1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389
# 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


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

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

1404 1405
# dlopen/dlfcn.h probing

1406
check_header dlfcn.h && dlfcn=yes
1407

1408 1409 1410 1411
temp_extralibs -ldl
if check_func dlopen; then
    dlopen=yes
    ldl=-ldl
1412
fi
1413
restore_flags
1414

1415 1416 1417
if check_func dlopen; then
    dlopen=yes
    ldl=
1418 1419
fi

M
Måns Rullgård 已提交
1420 1421
if test "$vhook" = "default"; then
    vhook="$dlopen"
1422 1423
fi

M
Michael Niedermayer 已提交
1424
if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
1425
    add_extralibs $ldl
M
Michael Niedermayer 已提交
1426 1427
fi

1428 1429 1430 1431 1432 1433 1434 1435
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

1436 1437 1438 1439
if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi
M
Michael Niedermayer 已提交
1440

1441
##########################################
D
Diego Biurrun 已提交
1442
# imlib check
1443

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

1452
##########################################
D
Diego Biurrun 已提交
1453
# FreeType check
1454

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

1468
##########################################
D
Diego Biurrun 已提交
1469
# SDL check
1470 1471 1472

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

1501 1502
enabled sdl || ffplay=no

1503
##########################################
D
Diego Biurrun 已提交
1504
# texi2html check
1505 1506

texi2html=no
1507
if (texi2html -version) >/dev/null 2>&1; then
1508 1509 1510
texi2html=yes
fi

1511
##########################################
D
Diego Biurrun 已提交
1512
# IPv6 check
1513

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

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

1537 1538 1539 1540
enabled debug && add_cflags -g

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

1548
# add some linker flags
1549
check_ldflags $LDLATEFLAGS
F
Fabrice Bellard 已提交
1550

1551 1552
# not all compilers support -Os
test "$optimize" = "small" && check_cflags -Os
1553

1554
if enabled optimize; then
1555
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1556 1557
        add_cflags  "-O5"
        add_ldflags "-O5"
1558
    else
1559
        add_cflags "-O3"
1560
    fi
1561 1562
fi

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

1573
if test "$gprof" = "yes" ; then
1574 1575
    add_cflags  "-p"
    add_ldflags "-p"
1576 1577
fi

1578 1579 1580 1581 1582 1583
# 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

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

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

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

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

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

1688
VHOOKCFLAGS="-fPIC $CFLAGS"
1689
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1690

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

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

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

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

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

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

1904
# muxers
1905
if echo "$MUXER_LIST" | grep -q muxer; then
1906 1907 1908 1909 1910
  echo "#define CONFIG_MUXERS 1" >> $TMPH
  echo "CONFIG_MUXERS=yes" >> config.mak
fi

# demuxers
1911
if echo "$DEMUXER_LIST" | grep -q demuxer; then
1912 1913 1914 1915
  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
  echo "CONFIG_DEMUXERS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1916 1917
# AC3
if test "$a52" = "yes" ; then
M
Måns Rullgård 已提交
1918 1919
  echo "#define CONFIG_A52 1" >> $TMPH
  echo "CONFIG_A52=yes" >> config.mak
1920

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

1927 1928 1929 1930 1931 1932
# DTS
if test "$dts" = "yes" ; then
  echo "#define CONFIG_DTS 1" >> $TMPH
  echo "CONFIG_DTS=yes" >> config.mak
fi

1933 1934 1935 1936 1937 1938
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak
fi

L
Luca Abeni 已提交
1939 1940 1941 1942 1943
if test "$swscaler" = "yes" ; then
  echo "#define CONFIG_SWSCALER 1" >> $TMPH
  echo "CONFIG_SWSCALER=yes" >> config.mak
fi

D
Diego Biurrun 已提交
1944
# MPEG audio high precision mode
1945 1946 1947 1948
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

1949
if test "$video4linux" = "yes" ; then
F
Fabrice Bellard 已提交
1950 1951 1952 1953
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

1954
if test "$video4linux2" = "yes" ; then
L
Luca Abeni 已提交
1955 1956 1957 1958
  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
fi

1959 1960 1961 1962 1963
if test "$bktr" = "yes" ; then
  echo "#define CONFIG_BKTR 1" >> $TMPH
  echo "CONFIG_BKTR=yes" >> config.mak
fi

1964 1965 1966 1967 1968
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1969 1970 1971 1972 1973
if test "$dc1394" = "yes" ; then
  echo "#define CONFIG_DC1394 1" >> $TMPH
  echo "CONFIG_DC1394=yes" >> config.mak
fi

1974
if test "$dlopen" = "yes" ; then
1975
  echo "#define HAVE_DLOPEN 1" >> $TMPH
1976 1977 1978
fi

if test "$dlfcn" = "yes" ; then
1979
  echo "#define HAVE_DLFCN 1" >> $TMPH
1980 1981
fi

F
Fabrice Bellard 已提交
1982 1983 1984
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1985 1986
fi

1987 1988 1989 1990 1991
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1992 1993 1994
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1995
fi
1996

1997 1998 1999 2000
if test "$ipv6" = "yes" ; then
  echo "#define CONFIG_IPV6 1" >> $TMPH
fi

2001 2002 2003 2004 2005
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

2006 2007 2008 2009 2010
if test "$libgsm" = "yes" ; then
  echo "#define CONFIG_LIBGSM 1" >> $TMPH
  echo "CONFIG_LIBGSM=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
2011
if test "$mp3lame" = "yes" ; then
2012
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
2013 2014 2015
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

2016 2017 2018 2019 2020
if test "$libnut" = "yes" ; then
  echo "#define CONFIG_LIBNUT 1" >> $TMPH
  echo "CONFIG_LIBNUT=yes" >> config.mak
fi

2021
if test "$libogg" = "yes" ; then
N
Nilesh Bansal 已提交
2022 2023 2024 2025
  echo "#define CONFIG_LIBOGG 1" >> $TMPH
  echo "CONFIG_LIBOGG=yes" >> config.mak
fi

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

2031 2032 2033 2034 2035 2036 2037
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 已提交
2038
  echo "CONFIG_FAADBIN=yes" >> config.mak
2039 2040
fi

2041 2042 2043 2044 2045
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

2046 2047 2048 2049 2050
if test "$xvid" = "yes" ; then
  echo "#define CONFIG_XVID 1" >> $TMPH
  echo "CONFIG_XVID=yes" >> config.mak
fi

2051 2052 2053 2054 2055
if test "$x264" = "yes" ; then
  echo "#define CONFIG_X264 1" >> $TMPH
  echo "CONFIG_X264=yes" >> config.mak
fi

2056 2057 2058 2059 2060
if test "$avisynth" = "yes" ; then
  echo "#define CONFIG_AVISYNTH 1" >> $TMPH
  echo "CONFIG_AVISYNTH=yes" >> config.mak
fi

2061
if test "$mingw32" = "yes" ; then
2062
  echo "CONFIG_MINGW=yes" >> config.mak
2063 2064
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
2065
  echo "#define HAVE_THREADS 1" >> $TMPH
2066
  echo "#ifndef __MINGW32__" >> $TMPH
2067
  echo "#define __MINGW32__ 1" >> $TMPH
2068
  echo "#endif" >> $TMPH
2069 2070
fi

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

2080 2081 2082
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
2083 2084 2085
  echo "HAVE_OS2THREADS=yes" >> config.mak
  echo "#define HAVE_OS2THREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
2086 2087
fi

2088
if test "$targetos" = "SunOS" ; then
2089 2090 2091
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

2092
if test "$targetos" = "BeOS" ; then
2093 2094 2095 2096 2097
  echo "HAVE_BEOSTHREADS=yes" >> config.mak
  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
  echo "#define HAVE_THREADS 1" >> $TMPH
fi

2098
if test "$targetos" = "Darwin"; then
2099 2100 2101 2102
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

2103
if test "$malloc_h" = "yes" ; then
2104
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
2105
else
2106
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
2107 2108
fi

2109
if test "$memalign" = "yes" ; then
2110 2111 2112 2113 2114
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

2115 2116 2117 2118
if test "$memalignhack" = "yes" ; then
  echo "#define MEMALIGN_HACK 1" >> $TMPH
fi

M
Måns Rullgård 已提交
2119 2120 2121
if test "$byteswap_h" = "yes"; then
  echo "#define HAVE_BYTESWAP_H 1" >> $TMPH
fi
2122

2123
if test "$beos_netserver" = "yes" ; then
2124 2125 2126 2127
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

2128 2129 2130 2131
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

2132 2133 2134 2135 2136
if test "$protocols" = "yes" ; then
  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
  echo "CONFIG_PROTOCOLS=yes" >> config.mak
fi

2137 2138 2139 2140 2141
if test "$ffmpeg" = "yes" ; then
  echo "#define CONFIG_FFMPEG 1" >> $TMPH
  echo "CONFIG_FFMPEG=yes" >> config.mak
fi

2142 2143 2144 2145 2146
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

2147 2148 2149 2150
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

2151 2152 2153 2154 2155
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

2158 2159
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
2160
  echo "#define CONFIG_SMALL 1" >> $TMPH
2161 2162
fi

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

D
Diego Biurrun 已提交
2207
if test "$amr" = "yes" ; then
2208 2209
  echo "#define CONFIG_AMR 1" >> $TMPH
  echo "CONFIG_AMR=yes" >> config.mak
D
Diego Biurrun 已提交
2210 2211
fi

2212
if test "$amr_wb" = "yes" ; then
2213 2214
  echo "#define CONFIG_AMR_WB 1" >> $TMPH
  echo "CONFIG_AMR_WB=yes" >> config.mak
2215 2216 2217 2218 2219 2220 2221
  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

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

2245 2246 2247 2248
if test "$amr_if2" = "yes" ; then
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
fi

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

Z
Zdenek Kabelac 已提交
2256

2257
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
2258
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2259 2260 2261 2262 2263 2264 2265 2266 2267 2268
    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
2269 2270
done

2271 2272
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
diff $TMPH config.h >/dev/null 2>&1
2273
if test "$?" != "0" ; then
2274 2275 2276 2277
        mv -f $TMPH config.h
else
        echo "config.h is unchanged"
fi
N
Nick Kurshev 已提交
2278

2279
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2280 2281


D
Diego Biurrun 已提交
2282
# build pkg-config files libav*.pc and libpostproc.pc
2283 2284
# libavutil.pc
cat <<EOF >libavutil.pc
2285
prefix=$PREFIX
2286
exec_prefix=\${prefix}
2287
libdir=\${exec_prefix}/lib
2288
includedir=\${prefix}/include
2289 2290 2291 2292

Name: libavutil
Description: FFmpeg utility library
Version: $lavu_version
2293
Requires:
2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307
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
2308
Requires:
2309 2310 2311 2312
Conflicts:
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
Cflags: -I\${includedir}
EOF
2313 2314 2315

# libavcodec.pc
cat <<EOF >libavcodec.pc
2316
prefix=$PREFIX
2317
exec_prefix=\${prefix}
2318
libdir=\${exec_prefix}/lib
2319
includedir=\${prefix}/include
2320 2321 2322

Name: libavcodec
Description: FFmpeg codec library
2323
Version: $lavc_version
2324
Requires: $pkg_requires libavutil = $lavu_version
2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337
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
2338
Version: $lavc_version
2339
Requires: $pkg_requires libavutil = $lavu_version
2340 2341 2342 2343 2344 2345 2346
Conflicts:
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF

# libavformat.pc
cat <<EOF >libavformat.pc
2347
prefix=$PREFIX
2348
exec_prefix=\${prefix}
2349
libdir=\${exec_prefix}/lib
2350
includedir=\${prefix}/include
2351 2352 2353

Name: libavformat
Description: FFmpeg container format library
2354
Version: $lavf_version
2355
Requires: $pkg_requires libavcodec = $lavc_version
2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368
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
2369
Version: $lavf_version
2370
Requires: $pkg_requires libavcodec = $lavc_version
2371 2372 2373 2374 2375 2376 2377 2378
Conflicts:
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
Cflags: -I\${includedir}
EOF


# libpostproc.pc
cat <<EOF >libpostproc.pc
2379
prefix=$PREFIX
2380
exec_prefix=\${prefix}
2381
libdir=\${exec_prefix}/lib
2382
includedir=\${prefix}/include
2383 2384 2385

Name: libpostproc
Description: FFmpeg post processing library
2386
Version: $lavc_version
2387
Requires:
2388 2389 2390 2391 2392 2393 2394 2395
Conflicts:
Libs: -L\${libdir} -lpostproc
Cflags: -I\${includedir} -I\${includedir}/postproc
EOF

cat <<EOF >libpostproc-uninstalled.pc
prefix=
exec_prefix=
2396 2397
libdir=\${pcfiledir}/libpostproc
includedir=\${pcfiledir}/libpostproc
2398 2399 2400

Name: libpostproc
Description: FFmpeg post processing library
2401
Version: $lavc_version
2402
Requires:
2403 2404 2405 2406
Conflicts:
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
Cflags: -I\${includedir}
EOF
L
Luca Abeni 已提交
2407

2408 2409 2410 2411 2412 2413 2414 2415 2416
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 已提交
2417 2418 2419 2420 2421 2422 2423 2424 2425 2426
# 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
2427
Requires: $sws_pc_requires
L
Luca Abeni 已提交
2428
Conflicts:
2429
Libs: $sws_pc_libs
L
Luca Abeni 已提交
2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441
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
2442
Requires: $sws_pc_requires
L
Luca Abeni 已提交
2443
Conflicts:
2444
Libs: $sws_pc_uninstalled_libs
L
Luca Abeni 已提交
2445 2446
Cflags: -I\${includedir}
EOF