configure 32.9 KB
Newer Older
F
Fabrice Bellard 已提交
1
#!/bin/sh
2
#
F
Fabrice Bellard 已提交
3
# ffmpeg configure script (c) 2000, 2001, 2002 Fabrice Bellard
4
#
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
cat << EOF

Usage: configure [options]
Options: [defaults in brackets after descriptions]

EOF
echo "Standard options:"
echo "  --help                   print this message"
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
echo "  --mandir=DIR             man documentation in DIR [PREFIX/man]"
echo "  --enable-mp3lame         enable mp3 encoding via libmp3lame [default=no]"
echo "  --enable-vorbis          enable vorbis support via libvorbisenc [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-mingw32         enable mingw32 native/cross windows compile"
echo "  --enable-a52             enable GPL'ed A52 support [default=no]"
echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
echo "  --enable-pp              enable GPL'ed post processing support [default=no]"
echo "  --enable-shared-pp       use libpostproc.so [default=no]"
echo "  --enable-shared          build shared libraries [default=no]"
echo "  --enable-amr_nb          enable amr_nb float audio codec"
echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
30
echo "  --enable-amr_wb          enable amr_wb float audio codec"
31
echo "  --enable-sunmlib         use Sun medialib [default=no]"
32
echo "  --enable-pthreads        use pthreads [default=no]"
33
echo "  --enable-gpl             allow use of gpl code, the resulting libav* and ffmpeg will be under gpl [default=no]"
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
echo ""
echo "Advanced options (experts only):"
echo "  --source-path=PATH       path of source code [$source_path]"
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
echo "  --cc=CC                  use C compiler CC [$cc]"
echo "  --make=MAKE              use specified make [$make]"
echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
echo "  --tune=PROCESSOR         tune code for a particular CPU (may fails or misperforms on other CPUs)"
echo "  --powerpc-perf-enable    enable performance report on PPC (requires enabling PMC)"
echo "  --disable-mmx            disable mmx 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-dv1394         disable DV1394 grabbing [default=no]"
echo "  --disable-network        disable network support [default=no]"
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 "                           mpegaudio decoding [default=no]"
echo "  --disable-ffserver       disable ffserver build"
echo "  --disable-ffplay         disable ffplay build"
echo "  --disable-risky          disables patent encumbered codecs"
echo "  --enable-small           optimize for size instead of speed"
echo ""
echo "NOTE: The object files are build at the place where configure is launched"
exit 1
fi

70
# set temporary file name
Z
Zdenek Kabelac 已提交
71
if test ! -z "$TMPDIR" ; then
72
    TMPDIR1="${TMPDIR}"
Z
Zdenek Kabelac 已提交
73
elif test ! -z "$TEMPDIR" ; then
74
    TMPDIR1="${TEMPDIR}"
N
Nick Kurshev 已提交
75
else
76
    TMPDIR1="/tmp"
N
Nick Kurshev 已提交
77 78
fi

79 80
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
81
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
82 83 84
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

F
Fabrice Bellard 已提交
85 86
# default parameters
prefix="/usr/local"
F
Fabrice Bellard 已提交
87
mandir=""
F
Fabrice Bellard 已提交
88
bindir=""
89
cross_prefix=""
F
Fabrice Bellard 已提交
90 91
cc="gcc"
ar="ar"
M
Michael Niedermayer 已提交
92
ranlib="ranlib"
93
make="make"
94
strip="strip"
F
Fabrice Bellard 已提交
95
cpu=`uname -m`
96
tune="generic"
97
powerpc_perf="no"
98
mmx="default"
99
altivec="default"
100
mmi="default"
F
Fabrice Bellard 已提交
101
case "$cpu" in
102
  i386|i486|i586|i686|i86pc|BePC)
F
Fabrice Bellard 已提交
103 104
    cpu="x86"
  ;;
105 106
  # armv4l is a subset of armv5tel
  armv4l|armv5tel)
107 108
    cpu="armv4l"
  ;;
109 110 111
  alpha)
    cpu="alpha"
  ;;
112
  "Power Macintosh"|ppc)
113 114
    cpu="powerpc"
  ;;
115 116 117
  mips)
    cpu="mips"
  ;;
118
  sun4u|sparc64)
119 120
    cpu="sparc64"
  ;;
121 122 123
  sparc)
    cpu="sparc"
  ;;
A
Alex Beregszaszi 已提交
124 125 126
  sh4)
    cpu="sh4"
  ;;
F
Fabrice Bellard 已提交
127
  *)
128
    cpu="unknown"
F
Fabrice Bellard 已提交
129 130 131
  ;;
esac
gprof="no"
F
Fabrice Bellard 已提交
132 133
v4l="yes"
audio_oss="yes"
134
audio_beos="no"
135
dv1394="yes"
F
Fabrice Bellard 已提交
136
network="yes"
137
zlib="yes"
138
mp3lame="no"
139
vorbis="no"
140 141
faad="no"
faadbin="no"
142
faac="no"
143
a52="no"
Z
Zdenek Kabelac 已提交
144
a52bin="no"
145
pp="no"
146
shared_pp="no"
147
mingw32="no"
148
cygwin="no"
149
os2="no"
150
lshared="no"
151 152
optimize="yes"
debug="yes"
153
extralibs="-lm"
154
simpleidct="yes"
155
bigendian="no"
156
inttypes="yes"
157
emu_fast_int="no"
158
vhook="default"
159 160
dlfcn="no"
dlopen="no"
161
mpegaudio_hp="yes"
162
SHFLAGS=-shared
163
netserver="no"
164
need_inet_aton="no"
165
ffserver="yes"
166
ffplay="yes"
167 168
LDFLAGS=-Wl,--warn-common
FFSLDFLAGS=-Wl,-E
169 170 171 172
LIBPREF="lib"
LIBSUF=".a"
SLIBPREF="lib"
SLIBSUF=".so"
F
Fabrice Bellard 已提交
173
EXESUF=""
M
Michael Niedermayer 已提交
174
risky="yes"
175
amr_nb="no"
176
amr_wb="no"
Z
Zdenek Kabelac 已提交
177
amr_nb_fixed="no"
178
sunmlib="no"
179
pthreads="no"
180
gpl="no"
181 182 183 184 185 186 187

# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
prefix="/boot/home/config"
# helps building libavcodec
188
CFLAGS="-DPIC -fomit-frame-pointer"
189
# 3 gcc releases known for BeOS, each with ugly bugs
190
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
191 192 193 194 195 196 197 198
case "$gcc_version" in
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
mmx="no"
;;
*20010315*) echo "BeBits gcc"
CFLAGS="$CFLAGS -fno-expensive-optimizations"
;;
esac
199 200 201
SHFLAGS=-nostart
# disable linux things
audio_oss="no"
F
Fabrice Bellard 已提交
202
v4l="no"
203
dv1394="no"
204 205
# enable beos things
audio_beos="yes"
206 207 208 209 210
# 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
211
netserver="yes"
212
need_inet_aton="yes"
213
extralibs="-lnet"
214
fi ;;
215 216 217
SunOS)
v4l="no"
audio_oss="no"
218
dv1394="no"
219 220 221 222 223 224
make="gmake"
LDFLAGS=""
FFSLDFLAGS=""
need_inet_aton="yes"
extralibs="$extralibs -lsocket -lnsl"
;;
225 226 227
FreeBSD)
v4l="no"
audio_oss="yes"
228
dv1394="no"
229
make="gmake"
230 231
CFLAGS="-pthread"
LDFLAGS="$LDFLAGS -export-dynamic -pthread"
232
;;
233
BSD/OS)
F
Fabrice Bellard 已提交
234
v4l="no"
F
Fabrice Bellard 已提交
235
audio_oss="yes"
236
dv1394="no"
237 238 239
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
;;
240
Darwin)
241
cc="cc"
242 243
v4l="no"
audio_oss="no"
244
dv1394="no"
245
ffserver="no"
246
SHFLAGS="-dynamiclib"
247
extralibs=""
248
darwin="yes"
249
strip="strip -x"
250
LDFLAGS="-Wl,-d"
251
FFSLDFLAGS=-Wl,-bind_at_load
252
;;
253
MINGW32*)
F
Fabrice Bellard 已提交
254 255
# Note: the rest of the mingw32 config is done afterwards as mingw32
# can be forced on command line for linux cross compilation
256 257
mingw32="yes"
;;
258 259 260
CYGWIN*)
v4l="no"
audio_oss="yes"
261
dv1394="no"
262 263 264 265 266 267 268
extralibs=""
cygwin="yes"
test -f /usr/include/inttypes.h || \
test -f /usr/local/include/inttypes.h || \
echo "Missing inttypes.h, please copy cygwin_inttypes.h to" \
     "/usr/include/inttypes.h !!!"
;;
269
Linux)
270
LDFLAGS="$LDFLAGS -rdynamic"
271
;;
272 273 274 275 276 277
IRIX*)
ranlib="echo ignoring ranlib"
v4l="no"
audio_oss="no"
make="gmake"
;;
278 279
OS/2)
TMPE=$TMPE".exe"
280 281 282
ar="emxomfar -p64"
ranlib="echo ignoring ranlib"
strip="echo ignoring strip"
283
CFLAGS="-Zomf"
284
LDFLAGS="-Zomf -Zstack 16384 -s"
285 286 287 288 289 290
SHFLAGS=""
FFSLDFLAGS=""
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
F
Fabrice Bellard 已提交
291
EXESUF=".exe"
292 293 294
extralibs=""
v4l="no"
audio_oss="no"
295
dv1394="no"
296 297 298 299
network="no"
ffserver="no"
os2="yes"
;;
300 301
*) ;;
esac
F
Fabrice Bellard 已提交
302

303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
# From mplayer configure. We need TARGET_OS available
# to the Makefile, so it can distinguish between flavors
# of AltiVec on PowerPC
TARGET_OS=`( uname -s ) 2>&1`
  case "$TARGET_OS" in
  Linux|FreeBSD|NetBSD|BSD/OS|OpenBSD|SunOS|QNX|Darwin|GNU)
    ;;
  IRIX*)
    TARGET_OS=IRIX
    ;;
  HP-UX*)
    TARGET_OS=HP-UX
    ;;
  [cC][yY][gG][wW][iI][nN]*)
    TARGET_OS=CYGWIN
    ;;
  *)
    TARGET_OS="$TARGET_OS-UNKNOWN"
    ;;
  esac

324 325 326
# find source path
# XXX: we assume an absolute path is given when launching configure, 
# except in './configure' case.
327
source_path="`echo $0 | sed -e 's#/configure##'`"
328 329 330 331
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
    source_path=`pwd`
    source_path_used="no"
F
Fabrice Bellard 已提交
332 333 334 335 336 337
fi

for opt do
  case "$opt" in
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
  ;;
F
Fabrice Bellard 已提交
338 339
  --mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
  ;;
340 341 342 343
  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
  ;;
  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
  ;;
F
Fabrice Bellard 已提交
344 345
  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
  ;;
346 347
  --make=*) make=`echo $opt | cut -d '=' -f 2`
  ;;
348 349 350 351 352 353
  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
  ;;
  --extra-ldflags=*) LDFLAGS=${opt#--extra-ldflags=}
  ;;
  --extra-libs=*) extralibs=${opt#--extra-libs=}
  ;;
F
Fabrice Bellard 已提交
354 355
  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
  ;;
356 357
  --tune=*) tune=`echo $opt | cut -d '=' -f 2`
  ;;
358 359
  --powerpc-perf-enable) powerpc_perf="yes"
  ;;
F
Fabrice Bellard 已提交
360 361
  --disable-mmx) mmx="no"
  ;;
362 363
  --disable-altivec) altivec="no"
  ;;
F
Fabrice Bellard 已提交
364 365
  --enable-gprof) gprof="yes"
  ;;
F
Fabrice Bellard 已提交
366 367 368 369
  --disable-v4l) v4l="no"
  ;;
  --disable-audio-oss) audio_oss="no"
  ;;
370 371
  --disable-audio-beos) audio_beos="no"
  ;;
372 373
  --disable-dv1394) dv1394="no"
  ;;
F
Fabrice Bellard 已提交
374 375
  --disable-network) network="no"
  ;;
376 377
  --disable-zlib) zlib="no"
  ;;
378
  --enable-a52) a52="yes"
379
  ;;
380
  --enable-a52bin) a52bin="yes" ; extralibs="$ldl $extralibs"
Z
Zdenek Kabelac 已提交
381
  ;;
382
  --enable-pp) pp="yes"
383 384 385
  ;;
  --enable-shared-pp) shared_pp="yes"
  ;;
386 387
  --enable-mp3lame) mp3lame="yes"
  ;;
388 389
  --enable-vorbis) vorbis="yes"
  ;;
Z
Zdenek Kabelac 已提交
390 391 392 393
  --enable-faad) faad="yes"
  ;;
  --enable-faadbin) faadbin="yes"
  ;;
394 395
  --enable-faac) faac="yes"
  ;;
396 397
  --disable-vhook) vhook="no"
  ;;
398
  --disable-simple_idct) simpleidct="no"
399
  ;;
400 401
  --enable-mingw32) mingw32="yes"
  ;;
402
  --enable-shared) lshared="yes"
N
Nick Kurshev 已提交
403
  ;;
404 405 406 407
  --disable-debug) debug="no"
  ;;
  --disable-opts) optimize="no"
  ;;
408 409
  --disable-mpegaudio-hp) mpegaudio_hp="no"
  ;;
410 411
  --disable-ffserver) ffserver="no"
  ;;
412 413
  --disable-ffplay) ffplay="no"
  ;;
M
Michael Niedermayer 已提交
414 415
  --disable-risky) risky="no"
  ;;
416
  --enable-small) optimize="small"
417
  ;;
418 419
  --enable-amr_nb) amr_nb="yes"
  ;;
Z
Zdenek Kabelac 已提交
420 421
  --enable-amr_nb-fixed) amr_nb_fixed="yes"
  ;;
422 423
  --enable-amr_wb) amr_wb="yes"
  ;; 
424 425
  --enable-sunmlib) sunmlib="yes"
  ;;
426 427
  --enable-pthreads) pthreads="yes"
  ;;
428 429
  --enable-gpl) gpl="yes"
  ;;
F
Fabrice Bellard 已提交
430 431 432
  esac
done

433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469
if test "$gpl" != "yes"; then
    if test "$pp" != "no" -o "$shared_pp" != "no"; then
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified"
        fail="yes"
    fi

    if test "$a52" != "no" -o "$a52bin" != "no"; then
        echo "liba52 is under GPL and --enable-gpl is not specified"
        fail="yes"
    fi
    
    if test "$faad" != "no" -o "$faadbin" != "no"; then
        cat > $TMPC << EOF
            #include <faad.h>
            int main( void ) { return 0; }
EOF
    
        if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
            cat > $TMPC << EOF
                #include <faad.h>
                #ifndef FAAD2_VERSION
                ok faad1
                #endif
                int main( void ) { return 0; }
EOF
            if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
                echo "faad2 is under GPL and --enable-gpl is not specified"
                fail="yes"
            fi
        else
            faad="no"
            faadbin="no"
            echo "faad test failed"
        fi
    fi
   

M
10l  
Michael Niedermayer 已提交
470
    if test "$fail" = "yes"; then
471 472 473 474
        exit 1
    fi
fi

475 476 477 478 479 480 481 482 483
# compute mmx state
if test $mmx = "default"; then
    if test $cpu = "x86"; then
        mmx="yes"
    else
        mmx="no"
    fi
fi

484
#Darwin CC versions
485
needmdynamicnopic="no"
486
if test $targetos = Darwin; then
487
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
488
	CFLAGS="$CFLAGS -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
489
    else
490
	gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
491 492
	case "$gcc_version" in
	    *2.95*) 
493
		CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer"
494
		;;
495
	    *3.*)
496
		CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer -force_cpusubtype_ALL -Wno-sign-compare"
497 498 499
		if test "$lshared" = no; then
		   needmdynamicnopic="yes"
		fi
500 501
		;;
	    *)
502
		CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer"
503 504 505
		if test "$lshared" = no; then
		   needmdynamicnopic="yes"
		fi
506 507 508 509 510
		;;
	esac
    fi
fi

511 512 513 514 515 516 517 518 519
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
    if test $cpu = "powerpc"; then
        altivec="yes"
    else
        altivec="no"
    fi
fi

520 521
# Add processor-specific flags
TUNECPU="generic"
522
POWERPCMODE="32bits"
523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545
if test $tune != "generic"; then
    case $tune in
	601|ppc601|PowerPC601)
	    CFLAGS="$CFLAGS -mcpu=601"
	    if test $altivec = "yes"; then
		echo "WARNING: tuning for PPC601 but altivec enabled !";
	    fi
	    TUNECPU=ppc601
	;;
	603*|ppc603*|PowerPC603*)
	    CFLAGS="$CFLAGS -mcpu=603"
	    if test $altivec = "yes"; then
		echo "WARNING: tuning for PPC603 but altivec enabled !";
	    fi
	    TUNECPU=ppc603
	;;
	604*|ppc604*|PowerPC604*)
	    CFLAGS="$CFLAGS -mcpu=604"
	    if test $altivec = "yes"; then
		echo "WARNING: tuning for PPC604 but altivec enabled !";
	    fi
	    TUNECPU=ppc604
	;;
546
	G3|g3|75*|ppc75*|PowerPC75*)
547
	    CFLAGS="$CFLAGS -mcpu=750 -mtune=750 -mpowerpc-gfxopt"
548 549 550 551 552
	    if test $altivec = "yes"; then
		echo "WARNING: tuning for PPC75x but altivec enabled !";
	    fi
	    TUNECPU=ppc750
	;;
553
	G4|g4|745*|ppc745*|PowerPC745*)
554
	    CFLAGS="$CFLAGS -mcpu=7450 -mtune=7450 -mpowerpc-gfxopt"
555 556 557 558 559 560
	    if test $altivec = "no"; then
		echo "WARNING: tuning for PPC745x but altivec disabled !";
	    fi
	    TUNECPU=ppc7450
	;;
	74*|ppc74*|PowerPC74*)
561
	    CFLAGS="$CFLAGS -mcpu=7400 -mtune=7400 -mpowerpc-gfxopt"
562 563 564
	    if test $altivec = "no"; then
		echo "WARNING: tuning for PPC74xx but altivec disabled !";
	    fi
565
	    TUNECPU=ppc7400
566
	;;
567
	G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
568
	    CFLAGS="$CFLAGS -mcpu=970 -mtune=970 -mpowerpc-gfxopt -mpowerpc64"
569 570 571 572
	    if test $altivec = "no"; then
		echo "WARNING: tuning for PPC970 but altivec disabled !";
	    fi
	    TUNECPU=ppc970
573
            POWERPCMODE="64bits"
574 575 576 577 578 579 580
	;;
	*)
	echo "WARNING: unknown CPU "$tune", ignored"
	;;
    esac
fi

581
# AltiVec flags: The FSF version of GCC differs from the Apple version 
582 583
if test $cpu = "powerpc"; then
    if test $altivec = "yes"; then
584
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
585 586 587 588 589 590 591
            CFLAGS="$CFLAGS -faltivec"
        else
            CFLAGS="$CFLAGS -maltivec -mabi=altivec"
        fi
    fi
fi

592 593 594 595 596 597 598
# See if we have <altivec.h>
cat > $TMPC << EOF
#include <altivec.h>
int main( void ) { return 0; }
EOF

_altivec_h="no"
599
if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
600 601 602
_altivec_h="yes"
fi

603 604
# See does our compiler support Motorola AltiVec C API
if test $altivec = "yes"; then
605
if test $_altivec_h = "yes"; then
606
cat > $TMPC << EOF
607
#include <altivec.h>
608 609 610 611 612 613
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
614 615 616 617 618 619 620 621 622
else
cat > $TMPC << EOF
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi
623
$cc $CFLAGS -o $TMPE $TMPC 2> /dev/null || altivec="no"
624 625
fi

626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642
# Can only do mmi on mips
if test $mmi = "default"; then
    if test $cpu = "mips"; then
        mmi="yes"
    else
        mmi="no"
    fi
fi

# See does our compiler support mmi
if test $mmi = "yes"; then
cat > $TMPC << EOF
int main(void) {
    __asm__ ("lq \$2, 0(\$2)");
    return 0;
}
EOF
643
$cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
644 645
fi

646 647 648
if test "$mingw32" = "yes" ; then
    v4l="no"
    audio_oss="no"
649
    dv1394="no"
F
Fabrice Bellard 已提交
650
    ffserver="no"
651
    network="no"
F
Fabrice Bellard 已提交
652 653 654 655 656 657 658
    LIBPREF=""
    LIBSUF=".lib"
    SLIBPREF=""
    SLIBSUF=".dll"
    EXESUF=".exe"
    prefix="/c/Program Files/FFmpeg"
    bindir="$prefix"
659 660
fi

661 662
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
M
Michael Niedermayer 已提交
663
ranlib="${cross_prefix}${ranlib}"
664 665
strip="${cross_prefix}${strip}"

F
Fabrice Bellard 已提交
666 667
if test -z "$cross_prefix" ; then

668 669 670 671 672 673 674 675 676 677
# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
	volatile uint32_t i=0x01234567;
	return (*((uint8_t*)(&i))) == 0x67;
}
EOF

678 679
if $cc -o $TMPE $TMPC 2>/dev/null ; then
$TMPE && bigendian="yes"
680 681 682 683
else
echo big/little test failed
fi

F
Fabrice Bellard 已提交
684 685 686 687 688 689 690 691 692
else

# if cross compiling, cannot launch a program, so make a static guess
if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
    bigendian="yes"
fi

fi

693 694 695 696 697 698 699 700 701 702 703
# ---
# *inttypes.h* test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
    return 0;
}
EOF

$cc -o $TMPE $TMPC 2>/dev/null || inttypes="no"

704 705 706 707 708 709 710 711 712 713 714 715
# ---
# *int_fast* test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
	volatile uint_fast64_t i=0x01234567;
	return 0;
}
EOF

$cc -o $TMPE $TMPC 2>/dev/null || emu_fast_int="yes"

N
Nick Kurshev 已提交
716 717 718 719 720 721 722 723 724 725
# ---
# check availability of some header files

cat > $TMPC << EOF
#include <malloc.h>
int main( void ) { return 0; }
EOF

_memalign=no
_malloc_h=no
726
if $cc -o $TMPE $TMPC 2> /dev/null ; then
N
Nick Kurshev 已提交
727 728 729 730 731 732 733 734 735 736 737
_malloc_h=yes
_memalign=yes
# check for memalign - atmos
cat > $TMPC << EOF
#include <malloc.h>
int main ( void ) {
char *string = NULL;
string = memalign(64, sizeof(char));
return 0;
}
EOF
738
$cc -o $TMPE $TMPC 2> /dev/null || _memalign=no
N
Nick Kurshev 已提交
739 740
fi

741 742 743 744 745 746 747 748 749 750
cat > $TMPC << EOF
#include <time.h>
int main( void ) { localtime_r(NULL, NULL); }
EOF

localtime_r=no
if $cc -o $TMPE $TMPC 2> /dev/null ; then
  localtime_r=yes
fi

751 752 753 754 755 756 757 758 759 760 761
if test "$zlib" = "yes"; then
# check for zlib - mmu_man
cat > $TMPC << EOF
#include <zlib.h>
int main ( void ) {
if (zlibVersion() != ZLIB_VERSION)
   puts("zlib version differs !!!");
   return 1;
return 0;
}
EOF
762
$cc $CFLAGS -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
763
# $TMPE 2> /dev/null > /dev/null || zlib="no"
764 765 766 767 768 769
# XXX: more tests needed - runtime test
fi
if test "$zlib" = "yes"; then
extralibs="$extralibs -lz"
fi

770 771 772 773 774 775 776 777
# test for lrintf in math.h
cat > $TMPC << EOF
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

have_lrintf="no"
778
if $cc $extralibs -o $TMPE $TMPC 2> /dev/null ; then
779
  have_lrintf="yes"
780
  $TMPE 2> /dev/null > /dev/null || have_lrintf="no"
781 782
fi

F
Falk Hüffner 已提交
783 784 785 786 787 788 789 790 791
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
  echo "void foo(char * $restrict_keyword p);" > $TMPC
  if $cc -c -o $TMPO $TMPC 2> /dev/null; then
    _restrict=$restrict_keyword
    break;
  fi
done

792 793 794 795 796 797 798 799 800 801 802 803 804 805 806
# test gcc version to see if vector builtins can be used
# currently only used on i386 for MMX builtins
cat > $TMPC << EOF
int main(void) { 
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
return 0;
#else
#error no vector builtins
#endif
}
EOF

builtin_vector=no
if $cc -o $TMPO $TMPC 2> /dev/null ; then
  builtin_vector=yes
807 808 809 810 811 812 813 814 815 816 817
fi

# dlopen/dlfcn.h probing

cat > $TMPC << EOF
#include <dlfcn.h>
int main( void ) { return (int) dlopen("foo", 0); }
EOF

ldl=-ldl

818
if $cc -o $TMPE $TMPC -ldl > /dev/null 2>&1 ; then
819 820 821 822
dlfcn=yes
dlopen=yes
fi

823
if $cc -o $TMPE $TMPC > /dev/null 2>&1 ; then
824 825 826 827 828 829 830 831 832
dlfcn=yes
dlopen=yes
ldl=""
fi

cat > $TMPC << EOF
int main( void ) { return (int) dlopen("foo", 0); }
EOF

833
if $cc -o $TMPE $TMPC -ldl > /dev/null 2>&1  ; then
834 835 836
dlopen=yes
fi

837
if $cc -o $TMPE $TMPC > /dev/null 2>&1  ; then
838 839 840 841 842 843 844 845
dlopen=yes
ldl=""
fi

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

846 847 848
##########################################
# imlib probe

849 850 851 852 853 854 855
cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <Imlib2.h>
int main( void ) { return (int) imlib_load_font("foo"); }
EOF

imlib2=no
856
if $cc -o $TMPE $TMPC -lImlib2 > /dev/null 2>&1  ; then
857
imlib2=yes
858 859
fi

860 861 862
##########################################
# freetype probe

863 864 865 866 867 868
cat > $TMPC << EOF
#include <ft2build.h>
int main( void ) { return (int) FT_Init_FreeType(0); }
EOF

freetype2=no
869
if test "x$targetos" != "xBeOS" && test "$os2" != "yes"; then
870
  if test "`which freetype-config`" != ""; then
871
    if $cc -o $TMPE $TMPC `freetype-config --cflags` `freetype-config --libs`  > /dev/null 2>&1 ; then
872
      freetype2=yes
873
    fi
874
  fi
875 876
fi

877 878 879 880 881
##########################################
# SDL probe

cat > $TMPC << EOF
#include <SDL.h>
882
#undef main /* We don't want SDL to override our main() */
883 884 885 886 887
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF

sdl_too_old=no
sdl=no
888
if $cc -o $TMPE `sdl-config --cflags` $TMPC `sdl-config --libs`  > /dev/null 2>&1  ; then
889 890 891 892 893 894 895 896
_sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
if test "$_sdlversion" -lt 121 ; then
sdl_too_old=yes
else
sdl=yes
fi
fi

897
case "`$cc -v 2>&1 | grep version`" in
898 899 900 901 902 903 904
    *gcc*)
	CFLAGS="-Wall $CFLAGS"
	;;
    *)
	;;
esac

F
Fabrice Bellard 已提交
905 906 907 908
if test "$sdl" = "no" ; then
   ffplay=no
fi

909
if test "$debug" = "yes"; then
F
Falk Hüffner 已提交
910
	CFLAGS="-g $CFLAGS"
911 912 913
fi

if test "$optimize" = "small"; then
914
#  CFLAGS=${CFLAGS//-O3/-Os}
915 916 917
  CFLAGS="$CFLAGS -Os"
fi

918
if test "$optimize" = "yes"; then
919
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
920 921 922
	CFLAGS="$CFLAGS -O5"
	LDFLAGS="$LDFLAGS -O5"
    else
F
Falk Hüffner 已提交
923
	CFLAGS="-O3 $CFLAGS"
924
    fi
925 926
fi

F
Fabrice Bellard 已提交
927 928 929 930
if test x"$bindir" = x""; then
bindir="${prefix}/bin"
fi

F
Fabrice Bellard 已提交
931 932 933 934
if test x"$mandir" = x""; then
mandir="${prefix}/man"
fi

F
Fabrice Bellard 已提交
935
echo "Install prefix   $prefix"
936
echo "Source path      $source_path"
F
Fabrice Bellard 已提交
937
echo "C compiler       $cc"
938
echo "make             $make"
939
echo "CPU              $cpu ($tune)"
940
echo "Big Endian       $bigendian"
941
echo "inttypes.h       $inttypes"
942
echo "broken inttypes.h $emu_fast_int"
F
Fabrice Bellard 已提交
943
if test $cpu = "x86"; then
F
Fabrice Bellard 已提交
944
echo "MMX enabled      $mmx"
945
echo "Vector Builtins  $builtin_vector"
F
Fabrice Bellard 已提交
946 947
fi
if test $cpu = "mips"; then
948
echo "MMI enabled      $mmi"
F
Fabrice Bellard 已提交
949 950
fi
if test $cpu = "powerpc"; then
951
echo "AltiVec enabled  $altivec"
F
Fabrice Bellard 已提交
952
fi
F
Fabrice Bellard 已提交
953
echo "gprof enabled    $gprof"
954
echo "zlib enabled     $zlib"
955
echo "mp3lame enabled  $mp3lame"
956
echo "vorbis enabled   $vorbis"
Z
Zdenek Kabelac 已提交
957 958
echo "faad enabled     $faad"
echo "faadbin enabled  $faadbin"
959
echo "faac enabled     $faac"
F
Fabrice Bellard 已提交
960
echo "a52 support      $a52"
Z
Zdenek Kabelac 已提交
961
echo "a52 dlopened     $a52bin"
962
echo "pp support       $pp"
963 964
echo "debug symbols    $debug"
echo "optimize         $optimize"
965
echo "shared pp        $shared_pp"
966
echo "Video hooking    $vhook"
967 968 969 970
echo "SDL support      $sdl"
if test $sdl_too_old = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support"
fi
M
Michael Niedermayer 已提交
971
echo "risky / patent encumbered codecs $risky"
972 973

if test "$vhook" = "yes" ; then
974
echo "Imlib2 support   $imlib2"
975
echo "freetype support $freetype2"
976
fi
977
echo "Sun medialib support"  $sunmlib
978
echo "pthreads support"      $pthreads
Z
Zdenek Kabelac 已提交
979 980
echo "AMR-NB float support"  $amr_nb
echo "AMR-NB fixed support"  $amr_nb_fixed
981
echo "AMR-WB float support"  $amr_wb
982 983 984 985 986
if test "$gpl" = "no" ; then
echo "License: LGPL"
else
echo "License: GPL"
fi
F
Fabrice Bellard 已提交
987

988
echo "Creating config.mak and config.h"
F
Fabrice Bellard 已提交
989

990
echo "# Automatically generated by configure - do not modify" > config.mak
991
echo "/* Automatically generated by configure - do not modify */" > $TMPH
F
Fabrice Bellard 已提交
992

993
echo "prefix=$prefix" >> config.mak
F
Fabrice Bellard 已提交
994
echo "bindir=$bindir" >> config.mak
F
Fabrice Bellard 已提交
995
echo "mandir=$mandir" >> config.mak
996
echo "MAKE=$make" >> config.mak
997 998
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
M
Michael Niedermayer 已提交
999
echo "RANLIB=$ranlib" >> config.mak
1000
echo "STRIP=$strip" >> config.mak
1001 1002 1003 1004 1005 1006 1007 1008

# SHCFLAGS is a copy of CFLAGS without -mdynamic-no-pic.  Used when building 
# shared modules on OS/X (vhook/Makefile).
SHCFLAGS=$CFLAGS
if test "$needmdynamicnopic" = yes; then
   CFLAGS="$CFLAGS -mdynamic-no-pic"
fi

N
Nick Kurshev 已提交
1009
echo "OPTFLAGS=$CFLAGS" >> config.mak
1010
echo "SHCFLAGS=$SHCFLAGS">>config.mak
1011
echo "LDFLAGS=$LDFLAGS" >> config.mak
1012
echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
1013
echo "SHFLAGS=$SHFLAGS" >> config.mak
1014 1015 1016 1017
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=$LIBSUF" >> config.mak
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=$SLIBSUF" >> config.mak
F
Fabrice Bellard 已提交
1018
echo "EXESUF=$EXESUF" >> config.mak
1019
echo "TARGET_OS=$TARGET_OS" >> config.mak
Z
Zdenek Kabelac 已提交
1020
if test "$cpu" = "x86" ; then
1021
  echo "TARGET_ARCH_X86=yes" >> config.mak
1022
  echo "#define ARCH_X86 1" >> $TMPH
1023
elif test "$cpu" = "armv4l" ; then
1024
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1025
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1026
elif test "$cpu" = "alpha" ; then
1027
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1028
  echo "#define ARCH_ALPHA 1" >> $TMPH
1029 1030 1031
elif test "$cpu" = "sparc64" ; then
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
  echo "#define ARCH_SPARC64 1" >> $TMPH
1032 1033 1034 1035 1036
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
elif test "$cpu" = "sparc" ; then
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
  echo "#define ARCH_SPARC 1" >> $TMPH
1037 1038 1039
elif test "$cpu" = "powerpc" ; then
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
  echo "#define ARCH_POWERPC 1" >> $TMPH
1040 1041 1042 1043 1044
  if test $POWERPCMODE = "32bits"; then
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
  else
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
  fi
1045 1046 1047
  if test "$powerpc_perf" = "yes"; then
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
  fi
1048 1049 1050
elif test "$cpu" = "mips" ; then
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
  echo "#define ARCH_MIPS 1" >> $TMPH
A
Alex Beregszaszi 已提交
1051 1052 1053 1054
elif test "$cpu" = "sh4" ; then
  echo "TARGET_ARCH_SH4=yes" >> config.mak
  echo "#define ARCH_SH4 1" >> $TMPH
fi
1055
echo "#define TUNECPU $TUNECPU" >> $TMPH
1056 1057 1058
if test "$bigendian" = "yes" ; then
  echo "WORDS_BIGENDIAN=yes" >> config.mak
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1059
fi
1060 1061
if test "$inttypes" != "yes" ; then
  echo "#define EMULATE_INTTYPES 1" >> $TMPH
1062
fi
1063
if test "$emu_fast_int" = "yes" ; then
1064
  echo "#define EMULATE_FAST_INT 1" >> $TMPH
1065
fi
Z
Zdenek Kabelac 已提交
1066
if test "$mmx" = "yes" ; then
1067
  echo "TARGET_MMX=yes" >> config.mak
1068
  echo "#define HAVE_MMX 1" >> $TMPH
M
Michael Niedermayer 已提交
1069
  echo "#define __CPU__ 586" >> $TMPH
F
Fabrice Bellard 已提交
1070
fi
1071 1072 1073 1074
if test "$builtin_vector" = "yes" ; then
  echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
  echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
fi
1075 1076 1077 1078
if test "$mmi" = "yes" ; then
  echo "TARGET_MMI=yes" >> config.mak
  echo "#define HAVE_MMI 1" >> $TMPH
fi
1079 1080 1081
if test "$altivec" = "yes" ; then
  echo "TARGET_ALTIVEC=yes" >> config.mak
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1082 1083
  echo "// Enable the next line to use the reference C code instead of AltiVec" >> $TMPH
  echo "// #define ALTIVEC_USE_REFERENCE_C_CODE 1" >> $TMPH
1084 1085 1086
  if test "$_altivec_h" = "yes" ; then
    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
  else
A
1l  
Alex Beregszaszi 已提交
1087
    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
1088
  fi
1089
fi
Z
Zdenek Kabelac 已提交
1090
if test "$gprof" = "yes" ; then
1091
  echo "TARGET_GPROF=yes" >> config.mak
1092
  echo "#define HAVE_GPROF 1" >> $TMPH
F
Fabrice Bellard 已提交
1093
fi
1094 1095 1096
if test "$localtime_r" = "yes" ; then
  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
fi
1097 1098 1099
if test "$imlib2" = "yes" ; then
  echo "HAVE_IMLIB2=yes" >> config.mak
fi
1100 1101 1102
if test "$freetype2" = "yes" ; then
  echo "HAVE_FREETYPE2=yes" >> config.mak
fi
1103 1104 1105 1106 1107
if test "$sunmlib" = "yes" ; then
  echo "HAVE_MLIB=yes" >> config.mak
  echo "#define HAVE_MLIB 1" >> $TMPH
  extralibs="$extralibs -lmlib"
fi
1108 1109 1110
if test "$pthreads" = "yes" ; then
  echo "HAVE_PTHREADS=yes" >> config.mak
  echo "#define HAVE_PTHREADS 1" >> $TMPH
1111
  if test $targetos != FreeBSD; then
1112 1113
     extralibs="$extralibs -lpthread"
  fi
1114
fi
1115 1116 1117 1118 1119
if test "$sdl" = "yes" ; then
  echo "CONFIG_SDL=yes" >> config.mak
  echo "SDL_LIBS=`sdl-config --libs`" >> config.mak
  echo "SDL_CFLAGS=`sdl-config --cflags`" >> config.mak
fi
1120 1121 1122
if test "$have_lrintf" = "yes" ; then
  echo "#define HAVE_LRINTF 1" >> $TMPH
fi
1123 1124 1125
if test "$vhook" = "yes" ; then
  echo "BUILD_VHOOK=yes" >> config.mak
  echo "#define HAVE_VHOOK 1" >> $TMPH
1126
  extralibs="$extralibs $ldl"
1127
fi
Z
Zdenek Kabelac 已提交
1128
if test "$lshared" = "yes" ; then
N
Nick Kurshev 已提交
1129
  echo "BUILD_SHARED=yes" >> config.mak
F
Fabrice Bellard 已提交
1130
  echo "PIC=-fPIC" >> config.mak
N
Nick Kurshev 已提交
1131
fi
1132
echo "EXTRALIBS=$extralibs" >> config.mak
1133 1134 1135
version=`grep '#define FFMPEG_VERSION ' $source_path/libavcodec/avcodec.h |
 cut -d '"' -f 2`
echo "VERSION=$version" >>config.mak
1136
# if you do not want to use encoders, disable that.
1137
echo "#define CONFIG_ENCODERS 1" >> $TMPH
1138 1139 1140
echo "CONFIG_ENCODERS=yes" >> config.mak

# if you do not want to use decoders, disable that.
1141
echo "#define CONFIG_DECODERS 1" >> $TMPH
1142 1143
echo "CONFIG_DECODERS=yes" >> config.mak

F
Fabrice Bellard 已提交
1144 1145 1146 1147
# AC3
if test "$a52" = "yes" ; then
  echo "#define CONFIG_AC3 1" >> $TMPH
  echo "CONFIG_AC3=yes" >> config.mak
1148

F
Fabrice Bellard 已提交
1149 1150 1151 1152 1153 1154
  if test "$a52bin" = "yes" ; then
    echo "#define CONFIG_A52BIN 1" >> $TMPH
    echo "CONFIG_A52BIN=yes" >> config.mak
  fi
fi

1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165
# PP
if test "$pp" = "yes" ; then
  echo "#define CONFIG_PP 1" >> $TMPH
  echo "CONFIG_PP=yes" >> config.mak

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

1166 1167 1168 1169 1170
# mpeg audio high precision mode
if test "$mpegaudio_hp" = "yes" ; then
  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
fi

F
Fabrice Bellard 已提交
1171 1172 1173 1174 1175
if test "$v4l" = "yes" ; then
  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
fi

1176 1177 1178 1179 1180
if test "$dv1394" = "yes" ; then
  echo "#define CONFIG_DV1394 1" >> $TMPH
  echo "CONFIG_DV1394=yes" >> config.mak
fi

1181 1182 1183 1184 1185 1186 1187 1188
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 已提交
1189 1190 1191
if test "$audio_oss" = "yes" ; then
  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
Z
Zdenek Kabelac 已提交
1192 1193
fi

1194 1195 1196 1197 1198
if test "$audio_beos" = "yes" ; then
  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
fi

F
Fabrice Bellard 已提交
1199 1200 1201
if test "$network" = "yes" ; then
  echo "#define CONFIG_NETWORK 1" >> $TMPH
  echo "CONFIG_NETWORK=yes" >> config.mak
1202
fi
1203

1204 1205 1206 1207 1208
if test "$zlib" = "yes" ; then
  echo "#define CONFIG_ZLIB 1" >> $TMPH
  echo "CONFIG_ZLIB=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1209
if test "$mp3lame" = "yes" ; then
1210
  echo "#define CONFIG_MP3LAME 1" >> $TMPH
1211 1212 1213
  echo "CONFIG_MP3LAME=yes" >> config.mak
fi

1214 1215 1216 1217 1218
if test "$vorbis" = "yes" ; then
  echo "#define CONFIG_VORBIS 1" >> $TMPH
  echo "CONFIG_VORBIS=yes" >> config.mak
fi

1219 1220 1221 1222 1223 1224 1225
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 已提交
1226
  echo "CONFIG_FAADBIN=yes" >> config.mak
1227 1228
fi

1229 1230 1231 1232 1233
if test "$faac" = "yes" ; then
  echo "#define CONFIG_FAAC 1" >> $TMPH
  echo "CONFIG_FAAC=yes" >> config.mak
fi

1234 1235 1236
if test "$mingw32" = "yes" ; then
  echo "#define CONFIG_WIN32 1" >> $TMPH
  echo "CONFIG_WIN32=yes" >> config.mak
1237 1238
  echo "HAVE_W32THREADS=yes" >> config.mak
  echo "#define HAVE_W32THREADS 1" >> $TMPH
1239
  echo "#ifndef __MINGW32__" >> $TMPH
1240
  echo "#define __MINGW32__ 1" >> $TMPH
1241
  echo "#endif" >> $TMPH
1242 1243
fi

1244 1245 1246 1247 1248
if test "$os2" = "yes" ; then
  echo "#define CONFIG_OS2 1" >> $TMPH
  echo "CONFIG_OS2=yes" >> config.mak
fi

1249 1250 1251 1252
if test "$TARGET_OS" = "SunOS" ; then
  echo "#define CONFIG_SUNOS 1" >> $TMPH
fi

1253 1254 1255 1256 1257
if test "$darwin" = "yes"; then
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
  echo "CONFIG_DARWIN=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1258
if test "$_malloc_h" = "yes" ; then
1259
  echo "#define HAVE_MALLOC_H 1" >> $TMPH
N
Nick Kurshev 已提交
1260
else
1261
  echo "#undef  HAVE_MALLOC_H" >> $TMPH
N
Nick Kurshev 已提交
1262 1263
fi

Z
Zdenek Kabelac 已提交
1264
if test "$_memalign" = "yes" ; then
1265 1266 1267 1268 1269
  echo "#define HAVE_MEMALIGN 1" >> $TMPH
else
  echo "#undef  HAVE_MEMALIGN" >> $TMPH
fi

1270 1271 1272 1273 1274
if test "$netserver" = "yes" ; then
  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
fi

1275 1276 1277 1278
if test "$need_inet_aton" = "yes" ; then
  echo "NEED_INET_ATON=yes" >> config.mak
fi

Z
Zdenek Kabelac 已提交
1279
if test "$simpleidct" = "yes" ; then
1280 1281 1282
  echo "#define SIMPLE_IDCT 1" >> $TMPH
fi

1283 1284 1285 1286 1287
if test "$ffserver" = "yes" ; then
  echo "#define CONFIG_FFSERVER 1" >> $TMPH
  echo "CONFIG_FFSERVER=yes" >> config.mak
fi

1288 1289 1290 1291
if test "$ffplay" = "yes" ; then
  echo "CONFIG_FFPLAY=yes" >> config.mak
fi

M
Michael Niedermayer 已提交
1292 1293 1294 1295 1296
if test "$risky" = "yes" ; then
  echo "#define CONFIG_RISKY 1" >> $TMPH
  echo "CONFIG_RISKY=yes" >> config.mak
fi

1297 1298 1299 1300 1301
if test "$gpl" = "yes" ; then
  echo "#define CONFIG_GPL 1" >> $TMPH
  echo "CONFIG_GPL=yes" >> config.mak
fi

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

1304 1305 1306 1307
if test "$optimize" = "small"; then
  echo "#define always_inline"  >> $TMPH
fi

1308 1309
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
F
Fabrice Bellard 已提交
1310
    DIRS="libavformat libavcodec libavcodec/alpha libavcodec/armv4l libavcodec/i386 \
1311 1312
          libavcodec/ppc libavcodec/liba52 libavcodec/mlib libavcodec/libpostproc tests vhook"
    FILES="Makefile libavformat/Makefile libavcodec/Makefile libavcodec/libpostproc/Makefile tests/Makefile vhook/Makefile"
1313 1314 1315 1316 1317 1318 1319 1320 1321
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
        ln -sf $source_path/$f $f
    done
fi
echo "SRC_PATH=$source_path" >> config.mak

1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332
if test "$amr_wb" = "yes" ; then
  echo "#define AMR_WB 1" >> $TMPH
  echo "AMR_WB=yes" >> config.mak
  echo
  echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
  echo "V5.1.0 from "
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
  echo "and extracted the source to libavcodec/amrwb_float"
  echo
fi

1333 1334 1335 1336
if test "$amr_nb" = "yes" ; then
  echo "#define AMR_NB 1" >> $TMPH
  echo "AMR_NB=yes" >> config.mak
  echo
Z
Zdenek Kabelac 已提交
1337 1338 1339 1340 1341
if test "$amr_nb_fixed" = "yes" ; then
  echo "AMR_NB_FIXED=yes" >> config.mak
  echo "#define AMR_NB_FIXED 1" >> $TMPH
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
  echo "REL-5 version 5.1.0 from "
1342 1343
  echo "http://www.3gpp.org/ftp/Specs/latest/Rel-5/26_series/26073-510.zip"
  echo "and extracted src to libavcodec/amr"
Z
Zdenek Kabelac 已提交
1344 1345 1346 1347 1348 1349 1350 1351
  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"
  echo
else
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
  echo "REL-5 V5.1.0 from "
  echo "http://www.3gpp.org/ftp/Specs/latest/Rel-5/26_series/26104-510.zip"
  echo "and extracted the source to libavcodec/amr_float"
M
Michael Niedermayer 已提交
1352
  echo "and if u try this on an alpha, u may need to change Word32 to int in amr/typedef.h"
1353 1354 1355
  echo
fi

Z
Zdenek Kabelac 已提交
1356 1357
fi

Z
Zdenek Kabelac 已提交
1358
diff $TMPH config.h >/dev/null 2>&1
1359 1360
if test $? -ne 0 ; then
	mv -f $TMPH config.h
N
Nick Kurshev 已提交
1361
else
1362
	echo "config.h is unchanged"
N
Nick Kurshev 已提交
1363 1364
fi

1365
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH