Statistics
| Branch: | Revision:

ffmpeg / configure @ 47404f9f

History | View | Annotate | Download (57.1 KB)

1
#!/bin/sh
2
#
3
# ffmpeg configure script (c) 2000, 2001, 2002 Fabrice Bellard
4
#
5

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

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

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

    
132
log_file(){
133
    log BEGIN $1
134
    cat -n $1 >>$logfile
135
    log END $1
136
}
137

    
138
echolog(){
139
    log "$@"
140
    echo "$@"
141
}
142

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

    
165
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
166
toupper(){
167
    echo "$@" | tr '[a-z]' '[A-Z]'
168
}
169

    
170
set_all(){
171
    value=$1
172
    shift
173
    for var in $*; do
174
        eval $var=$value
175
    done
176
}
177

    
178
enable(){
179
    set_all yes $*
180
}
181

    
182
disable(){
183
    set_all no $*
184
}
185

    
186
enabled(){
187
    eval test "x\$$1" = "xyes"
188
}
189

    
190
enabled_all(){
191
    for opt; do
192
        enabled $opt || return 1
193
    done
194
}
195

    
196
enabled_any(){
197
    for opt; do
198
        enabled $opt && return 0
199
    done
200
}
201

    
202
print_config(){
203
    pfx=$1
204
    header=$2
205
    makefile=$3
206
    shift 3
207
    for cfg; do
208
        if enabled $cfg; then
209
            ucname="${pfx}`toupper $cfg`"
210
            echo "#define ${ucname} 1" >> $header
211
            echo "${ucname}=yes" >> $makefile
212
        fi
213
    done
214
}
215

    
216
flags_saved(){
217
    (: ${SAVE_CFLAGS?}) 2>/dev/null
218
}
219

    
220
save_flags(){
221
    flags_saved && return
222
    SAVE_CFLAGS="$CFLAGS"
223
    SAVE_LDFLAGS="$LDFLAGS"
224
    SAVE_extralibs="$extralibs"
225
}
226

    
227
restore_flags(){
228
    CFLAGS="$SAVE_CFLAGS"
229
    LDFLAGS="$SAVE_LDFLAGS"
230
    extralibs="$SAVE_extralibs"
231
    unset SAVE_CFLAGS
232
    unset SAVE_LDFLAGS
233
    unset SAVE_extralibs
234
}
235

    
236
temp_cflags(){
237
    save_flags
238
    CFLAGS="$CFLAGS $*"
239
}
240

    
241
temp_ldflags(){
242
    save_flags
243
    LDFLAGS="$LDFLAGS $*"
244
}
245

    
246
temp_extralibs(){
247
    save_flags
248
    extralibs="$extralibs $*"
249
}
250

    
251
append(){
252
    var=$1
253
    shift
254
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
255
    eval "$var=\"\$$var $*\""
256
}
257

    
258
add_cflags(){
259
    append CFLAGS "$@"
260
}
261

    
262
add_ldflags(){
263
    append LDFLAGS "$@"
264
}
265

    
266
add_extralibs(){
267
    append extralibs "$@"
268
}
269

    
270
check_cmd(){
271
    log "$@"
272
    "$@" >>$logfile 2>&1
273
}
274

    
275
check_cc(){
276
    log check_cc "$@"
277
    cat >$TMPC
278
    log_file $TMPC
279
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
280
}
281

    
282
check_cpp(){
283
    log check_cpp "$@"
284
    cat >$TMPC
285
    log_file $TMPC
286
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
287
}
288

    
289
check_ld(){
290
    log check_ld "$@"
291
    check_cc || return
292
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
293
}
294

    
295
check_cflags(){
296
    log check_cflags "$@"
297
    check_cc "$@" <<EOF && add_cflags "$@"
298
int x;
299
EOF
300
}
301

    
302
check_ldflags(){
303
    log check_ldflags "$@"
304
    check_ld "$@" <<EOF && add_ldflags "$@"
305
int main(){
306
    return 0;
307
}
308
EOF
309
}
310

    
311
check_header(){
312
    log check_header "$@"
313
    header=$1
314
    shift
315
    check_cpp "$@" <<EOF
316
#include <$header>
317
int x;
318
EOF
319
}
320

    
321
check_func(){
322
    log check_func "$@"
323
    func=$1
324
    shift
325
    check_ld "$@" <<EOF
326
extern int $func();
327
int main(){
328
    $func();
329
}
330
EOF
331
}
332

    
333
check_lib(){
334
    log check_lib "$@"
335
    header="$1"
336
    func="$2"
337
    shift 2
338
    temp_extralibs "$@"
339
    check_header $header && check_func $func && add_extralibs "$@"
340
    err=$?
341
    restore_flags
342
    return $err
343
}
344

    
345
check_exec(){
346
    check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
347
}
348

    
349
require(){
350
    name="$1"
351
    header="$2"
352
    func="$3"
353
    shift 3
354
    check_lib $header $func "$@" || die "ERROR: $name not found"
355
}
356

    
357
CONFIG_LIST='
358
    encoders
359
    decoders
360
    parsers
361
    muxers
362
    demuxers
363
    a52
364
    a52bin
365
    amr
366
    amr_nb
367
    amr_nb_fixed
368
    amr_wb
369
    audio_beos
370
    audio_oss
371
    avisynth
372
    beos_netserver
373
    bktr
374
    dc1394
375
    dts
376
    dv1394
377
    faac
378
    faad
379
    faadbin
380
    ffmpeg
381
    ffplay
382
    ffserver
383
    gpl
384
    ipv6
385
    libgsm
386
    libnut
387
    libogg
388
    libvorbis
389
    memalign_hack
390
    mp3lame
391
    mpegaudio_hp
392
    network
393
    pp
394
    protocols
395
    swscaler
396
    vhook
397
    video4linux
398
    video4linux2
399
    x264
400
    xvid
401
    zlib
402
'
403

    
404
HAVE_LIST='
405
    altivec_h
406
    beosthreads
407
    byteswap_h
408
    dcbzl
409
    dlfcn
410
    dlopen
411
    fast_int
412
    freetype2
413
    gprof
414
    imlib2
415
    inet_aton
416
    inttypes
417
    localtime_r
418
    lrintf
419
    malloc_h
420
    memalign
421
    mlib
422
    os2threads
423
    pthreads
424
    sdl
425
    sdl_video_size
426
    threads
427
    w32threads
428
'
429

    
430
# set temporary file name
431
if test ! -z "$TMPDIR" ; then
432
    TMPDIR1="${TMPDIR}"
433
elif test ! -z "$TEMPDIR" ; then
434
    TMPDIR1="${TEMPDIR}"
435
else
436
    TMPDIR1="/tmp"
437
fi
438

    
439
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
440
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
441
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
442
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
443
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
444

    
445
# default parameters
446
logging="yes"
447
logfile="config.err"
448
PREFIX="/usr/local"
449
libdir='${PREFIX}/lib'
450
shlibdir="$libdir"
451
incdir='${PREFIX}/include/ffmpeg'
452
mandir='${PREFIX}/man'
453
bindir='${PREFIX}/bin'
454
cross_prefix=""
455
cross_compile="no"
456
cc="gcc"
457
ar="ar"
458
ranlib="ranlib"
459
make="make"
460
strip="strip"
461
arch=`uname -m`
462
cpu="generic"
463
powerpc_perf="no"
464
mmx="default"
465
cmov="no"
466
cmov_is_fast="no"
467
armv5te="default"
468
iwmmxt="default"
469
altivec="default"
470
dcbzl="no"
471
mmi="default"
472
case "$arch" in
473
  i386|i486|i586|i686|i86pc|BePC)
474
    arch="x86_32"
475
  ;;
476
  x86_64|amd64)
477
    arch="x86_32"
478
    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
479
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
480
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
481
        arch="x86_64"
482
      fi
483
    fi
484
  ;;
485
  # armv4l is a subset of armv[567]*l
486
  arm|armv[4567]*l)
487
    arch="armv4l"
488
  ;;
489
  alpha)
490
    arch="alpha"
491
  ;;
492
  "Power Macintosh"|ppc|ppc64|powerpc)
493
    arch="powerpc"
494
  ;;
495
  mips|mipsel|IP*)
496
    arch="mips"
497
  ;;
498
  sun4u|sparc64)
499
    arch="sparc64"
500
  ;;
501
  sparc)
502
    arch="sparc"
503
  ;;
504
  sh4)
505
    arch="sh4"
506
  ;;
507
  parisc|parisc64)
508
    arch="parisc"
509
  ;;
510
  s390|s390x)
511
    arch="s390"
512
  ;;
513
  m68k)
514
    arch="m68k"
515
  ;;
516
  ia64)
517
    arch="ia64"
518
  ;;
519
  bfin)
520
    arch="bfin"
521
  ;;
522
  *)
523
    arch="unknown"
524
  ;;
525
esac
526
gprof="no"
527
video4linux="yes"
528
video4linux2="yes"
529
bktr="no"
530
audio_oss="yes"
531
audio_beos="no"
532
dv1394="yes"
533
dc1394="no"
534
network="yes"
535
ipv6="yes"
536
zlib="yes"
537
libgsm="no"
538
mp3lame="no"
539
libnut="no"
540
libogg="no"
541
libvorbis="no"
542
faad="no"
543
faadbin="no"
544
faac="no"
545
xvid="no"
546
x264="no"
547
a52="no"
548
a52bin="no"
549
dts="no"
550
pp="no"
551
mingw32="no"
552
mingwce="no"
553
os2="no"
554
lstatic="yes"
555
lshared="no"
556
optimize="yes"
557
debug="yes"
558
extrawarnings="no"
559
dostrip="yes"
560
installstrip="-s"
561
extralibs="-lm"
562
bigendian="no"
563
inttypes="yes"
564
fast_int="yes"
565
vhook="default"
566
avisynth="no"
567
dlfcn="no"
568
dlopen="no"
569
mpegaudio_hp="yes"
570
SHFLAGS='-shared -Wl,-soname,$@'
571
VHOOKSHFLAGS='$(SHFLAGS)'
572
beos_netserver="no"
573
protocols="yes"
574
ffmpeg="yes"
575
ffserver="yes"
576
ffplay="yes"
577
LIBOBJFLAGS=""
578
FFLDFLAGS=-Wl,--warn-common
579
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
580
FFSERVERLDFLAGS=-Wl,-E
581
LDCONFIG="ldconfig"
582
LIBPREF="lib"
583
LIBSUF=".a"
584
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
585
SLIBPREF="lib"
586
SLIBSUF=".so"
587
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
588
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
589
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
590
EXESUF=""
591
BUILDSUF=""
592
amr_nb="no"
593
amr_wb="no"
594
amr_nb_fixed="no"
595
amr_if2="no"
596
mlib="no"
597
pthreads="no"
598
swscaler="no"
599
gpl="no"
600
memalign_hack="no"
601
asmalign_pot="unknown"
602
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
603

    
604
# OS specific
605
targetos=`uname -s`
606
case $targetos in
607
BeOS)
608
PREFIX="/boot/home/config"
609
# helps building libavcodec
610
add_cflags "-DPIC -fomit-frame-pointer"
611
# 3 gcc releases known for BeOS, each with ugly bugs
612
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
613
case "$gcc_version" in
614
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
615
mmx="no"
616
;;
617
*20010315*) echo "BeBits gcc"
618
add_cflags "-fno-expensive-optimizations"
619
;;
620
esac
621
SHFLAGS=-nostart
622
# disable Linux things
623
audio_oss="no"
624
video4linux="no"
625
video4linux2="no"
626
dv1394="no"
627
# enable BeOS things
628
audio_beos="yes"
629
beosthreads="yes"
630
# no need for libm, but the inet stuff
631
# Check for BONE
632
if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
633
extralibs="-lbind -lsocket"
634
else
635
beos_netserver="yes"
636
extralibs="-lnet"
637
fi ;;
638
SunOS)
639
video4linux="no"
640
video4linux2="no"
641
audio_oss="no"
642
dv1394="no"
643
make="gmake"
644
FFLDFLAGS=""
645
FFSERVERLDFLAGS=""
646
SHFLAGS="-shared -Wl,-h,\$@"
647
add_extralibs "-lsocket -lnsl"
648
;;
649
NetBSD)
650
video4linux="no"
651
video4linux2="no"
652
bktr="yes"
653
audio_oss="yes"
654
dv1394="no"
655
make="gmake"
656
add_extralibs "-lossaudio"
657
;;
658
OpenBSD)
659
video4linux="no"
660
video4linux2="no"
661
bktr="yes"
662
audio_oss="yes"
663
dv1394="no"
664
make="gmake"
665
LIBOBJFLAGS="\$(PIC)"
666
LDCONFIG="ldconfig -m \$(shlibdir)"
667
add_extralibs "-lossaudio"
668
;;
669
FreeBSD)
670
video4linux="no"
671
video4linux2="no"
672
bktr="yes"
673
audio_oss="yes"
674
dv1394="no"
675
make="gmake"
676
add_cflags "-pthread"
677
;;
678
GNU/kFreeBSD)
679
video4linux="no"
680
video4linux2="no"
681
bktr="yes"
682
audio_oss="yes"
683
dv1394="no"
684
add_cflags "-pthread"
685
;;
686
BSD/OS)
687
video4linux="no"
688
video4linux2="no"
689
bktr="yes"
690
audio_oss="yes"
691
dv1394="no"
692
extralibs="-lpoll -lgnugetopt -lm"
693
make="gmake"
694
strip="strip -d"
695
installstrip=""
696
;;
697
Darwin)
698
cc="cc"
699
video4linux="no"
700
video4linux2="no"
701
audio_oss="no"
702
dv1394="no"
703
SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
704
VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
705
extralibs=""
706
strip="strip -x"
707
installstrip=""
708
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
709
SLIBSUF=".dylib"
710
SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
711
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
712
FFSERVERLDFLAGS=-Wl,-bind_at_load
713
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
714
;;
715
MINGW32*)
716
# Note: the rest of the mingw32 config is done afterwards as mingw32
717
# can be forced on the command line for Linux cross compilation.
718
mingw32="yes"
719
;;
720
CYGWIN*)
721
targetos=CYGWIN
722
shlibdir='${PREFIX}/bin'
723
video4linux="no"
724
video4linux2="no"
725
audio_oss="yes"
726
dv1394="no"
727
VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
728
VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
729
extralibs=""
730
EXESUF=".exe"
731
SLIBPREF="cyg"
732
SLIBSUF=".dll"
733
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
734
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
735
SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
736
;;
737
Linux)
738
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
739
;;
740
IRIX*)
741
targetos=IRIX
742
ranlib="echo ignoring ranlib"
743
video4linux="no"
744
video4linux2="no"
745
audio_oss="no"
746
make="gmake"
747
;;
748
OS/2)
749
TMPE=$TMPE".exe"
750
ar="emxomfar -p128"
751
ranlib="echo ignoring ranlib"
752
strip="echo ignoring strip"
753
add_cflags "-Zomf"
754
FFLDFLAGS="-Zomf -Zstack 16384 -s"
755
SHFLAGS="-Zdll -Zomf"
756
FFSERVERLDFLAGS=""
757
LIBPREF=""
758
LIBSUF=".lib"
759
SLIBPREF=""
760
SLIBSUF=".dll"
761
EXESUF=".exe"
762
extralibs=""
763
pkg_requires=""
764
video4linux="no"
765
video4linux2="no"
766
audio_oss="no"
767
dv1394="no"
768
ffserver="no"
769
vhook="no"
770
os2="yes"
771
os2threads="yes"
772
;;
773
*)
774
targetos="${targetos}-UNKNOWN"
775
;;
776
esac
777

    
778
# find source path
779
source_path="`dirname \"$0\"`"
780
source_path_used="yes"
781
if test -z "$source_path" -o "$source_path" = "." ; then
782
    source_path="`pwd`"
783
    source_path_used="no"
784
else
785
    source_path="`cd \"$source_path\"; pwd`"
786
    echo "$source_path" | grep -q '[[:blank:]]' &&
787
      die "Out of tree builds are impossible with whitespace in source path."
788
fi
789

    
790
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
791
    show_help
792
fi
793

    
794
FFMPEG_CONFIGURATION=" "
795
for opt do
796
  FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
797
done
798

    
799
ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
800
DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
801
PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
802
MUXER_LIST=`grep 'av_register_output_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
803
DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
804

    
805
enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
806

    
807
for opt do
808
  optval="${opt#*=}"
809
  case "$opt" in
810
  --log)
811
  ;;
812
  --log=*) logging="$optval"
813
  ;;
814
  --prefix=*) PREFIX="$optval"; force_prefix=yes
815
  ;;
816
  --libdir=*) libdir="$optval"; force_libdir=yes
817
  ;;
818
  --shlibdir=*) shlibdir="$optval"
819
  ;;
820
  --incdir=*) incdir="$optval"
821
  ;;
822
  --mandir=*) mandir="$optval"
823
  ;;
824
  --source-path=*) source_path="$optval"
825
  ;;
826
  --cross-prefix=*) cross_prefix="$optval"
827
  ;;
828
  --cross-compile) cross_compile=yes
829
  ;;
830
  --cc=*) cc="$optval"
831
  ;;
832
  --make=*) make="$optval"
833
  ;;
834
  --extra-cflags=*) add_cflags "$optval"
835
  ;;
836
  --extra-ldflags=*) add_ldflags "$optval"
837
  ;;
838
  --extra-libs=*) add_extralibs "$optval"
839
  ;;
840
  --build-suffix=*) BUILDSUF="$optval"
841
  ;;
842
  --arch=*) arch="$optval"
843
  ;;
844
  --cpu=*) cpu="$optval"
845
  ;;
846
  --powerpc-perf-enable) powerpc_perf="yes"
847
  ;;
848
  --disable-mmx) mmx="no"
849
  ;;
850
  --disable-armv5te) armv5te="no"
851
  ;;
852
  --disable-iwmmxt) iwmmxt="no"
853
  ;;
854
  --disable-altivec) altivec="no"
855
  ;;
856
  --enable-gprof) gprof="yes"
857
  ;;
858
  --disable-v4l) video4linux="no"
859
  ;;
860
  --disable-v4l2) video4linux2="no"
861
  ;;
862
  --disable-bktr) bktr="no"
863
  ;;
864
  --disable-audio-oss) audio_oss="no"
865
  ;;
866
  --disable-audio-beos) audio_beos="no"
867
  ;;
868
  --disable-dv1394) dv1394="no"
869
  ;;
870
  --disable-network) network="no"; ffserver="no"
871
  ;;
872
  --disable-ipv6) ipv6="no";
873
  ;;
874
  --disable-zlib) zlib="no"
875
  ;;
876
  --enable-a52) a52="yes"
877
  ;;
878
  --enable-a52bin) a52bin="yes"
879
  ;;
880
  --enable-dts) dts="yes"
881
  ;;
882
  --enable-pp) pp="yes"
883
  ;;
884
  --enable-libgsm) libgsm="yes"
885
  ;;
886
  --enable-mp3lame) mp3lame="yes"
887
  ;;
888
  --enable-libnut) libnut="yes"
889
  ;;
890
  --enable-libogg) libogg="yes"
891
    pkg_requires="$pkg_requires ogg >= 1.1"
892
  ;;
893
  --enable-vorbis) libvorbis="yes"
894
    pkg_requires="$pkg_requires vorbis vorbisenc"
895
  ;;
896
  --enable-faad) faad="yes"
897
  ;;
898
  --enable-faadbin) faadbin="yes"
899
  ;;
900
  --enable-faac) faac="yes"
901
  ;;
902
  --enable-xvid) xvid="yes"
903
  ;;
904
  --enable-x264) x264="yes"
905
  ;;
906
  --enable-avisynth) avisynth="yes";
907
  ;;
908
  --enable-dc1394) dc1394="yes"
909
    pkg_requires="$pkg_requires libraw1394"
910
  ;;
911
  --disable-vhook) vhook="no"
912
  ;;
913
  --enable-mingw32) mingw32="yes"
914
  ;;
915
  --enable-mingwce) mingwce="yes"
916
  ;;
917
  --enable-static) lstatic="yes"
918
  ;;
919
  --disable-static) lstatic="no"
920
  ;;
921
  --enable-shared) lshared="yes"
922
  ;;
923
  --disable-shared) lshared="no"
924
  ;;
925
  --disable-debug) debug="no"
926
  ;;
927
  --disable-opts) optimize="no"
928
  ;;
929
  --enable-extra-warnings) extrawarnings="yes"
930
  ;;
931
  --disable-mpegaudio-hp) mpegaudio_hp="no"
932
  ;;
933
  --disable-protocols) protocols="no"; network="no"; ffserver="no"
934
  ;;
935
  --disable-ffmpeg) ffmpeg="no"
936
  ;;
937
  --disable-ffserver) ffserver="no"
938
  ;;
939
  --disable-ffplay) ffplay="no"
940
  ;;
941
  --enable-small) optimize="small"
942
  ;;
943
  --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
944
  ;;
945
  --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
946
  ;;
947
  --enable-amr_wb) amr="yes"; amr_wb="yes"
948
  ;;
949
  --enable-amr_if2) amr="yes"; amr_if2="yes"
950
  ;;
951
  --enable-sunmlib) mlib="yes"
952
  ;;
953
  --enable-pthreads) pthreads="yes"
954
  ;;
955
  --enable-swscaler) swscaler="yes"
956
  ;;
957
  --enable-gpl) gpl="yes"
958
  ;;
959
  --enable-memalign-hack) memalign_hack="yes"
960
  ;;
961
  --disable-strip) dostrip="no"
962
  ;;
963
  --enable-encoder=*) enable ${optval}_encoder
964
  ;;
965
  --enable-decoder=*) enable ${optval}_decoder
966
  ;;
967
  --disable-encoder=*) disable ${optval}_encoder
968
  ;;
969
  --disable-decoder=*) disable ${optval}_decoder
970
  ;;
971
  --disable-encoders) disable $ENCODER_LIST
972
  ;;
973
  --disable-decoders) disable $DECODER_LIST
974
  ;;
975
  --enable-muxer=*) enable ${optval}_muxer
976
  ;;
977
  --disable-muxer=*) disable ${optval}_muxer
978
  ;;
979
  --disable-muxers) disable $MUXER_LIST; ffserver="no"
980
  ;;
981
  --enable-demuxer=*) enable ${optval}_demuxer
982
  ;;
983
  --disable-demuxer=*) disable ${optval}_demuxer
984
  ;;
985
  --disable-demuxers) disable $DEMUXER_LIST
986
  ;;
987
  --enable-parser=*) enable ${optval}_parser
988
  ;;
989
  --disable-parser=*) disable ${optval}_parser
990
  ;;
991
  --disable-parsers) disable $PARSER_LIST
992
  ;;
993
  --help) show_help
994
  ;;
995
  *)
996
  echo "Unknown option \"$opt\"."
997
  echo "See $0 --help for available options."
998
  exit 1
999
  ;;
1000
  esac
1001
done
1002

    
1003
if test "$logging" != no; then
1004
    test "$logging" = yes || logfile="$logging"
1005
    echo "# $0 $@" >$logfile
1006
    set >>$logfile
1007
else
1008
    logfile=/dev/null
1009
fi
1010

    
1011
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
1012
    if test "$lshared" = "yes" && test "$lstatic" = "yes" ; then
1013
        cat <<EOF
1014
You can only build one library type at once on MinGW.
1015
Specify --disable-static --enable-shared to only build
1016
the shared libraries. To build only the static libraries
1017
you do not need to pass additional options.
1018
EOF
1019
        exit 1
1020
    fi
1021
    video4linux="no"
1022
    video4linux2="no"
1023
    bktr="no"
1024
    audio_oss="no"
1025
    dv1394="no"
1026
    dc1394="no"
1027
    ffserver="no"
1028
    network="no"
1029
    if enabled mingw32; then
1030
        w32threads="yes"
1031
    fi
1032
    if test "$mingwce" = "yes"; then
1033
        protocols="no"
1034
    fi
1035
    SLIBPREF=""
1036
    SLIBSUF=".dll"
1037
    EXESUF=".exe"
1038
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1039
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1040
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
1041
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
1042
    if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
1043
    if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
1044
    shlibdir='${PREFIX}'
1045
fi
1046

    
1047
# Combine FFLDFLAGS and the LDFLAGS environment variable.
1048
LDFLAGS="$FFLDFLAGS $LDFLAGS"
1049

    
1050
test -n "$cross_prefix" && cross_compile=yes
1051
cc="${cross_prefix}${cc}"
1052
ar="${cross_prefix}${ar}"
1053
ranlib="${cross_prefix}${ranlib}"
1054
strip="${cross_prefix}${strip}"
1055

    
1056
# we need to build at least one lib type
1057
if test "$lstatic" = "no" && test "$lshared" = "no" ; then
1058
    cat <<EOF
1059
At least one library type must be built.
1060
Specify --enable-static to build the static libraries or --enable-shared to
1061
build the shared libraries as well. To only build the shared libraries specify
1062
--disable-static in addition to --enable-shared.
1063
EOF
1064
    exit 1;
1065
fi
1066

    
1067
if test "$libvorbis" = "yes" ; then
1068
    if test "$libogg" = "no"; then
1069
        echo "libogg must be enabled to enable Vorbis."
1070
        fail="yes"
1071
    fi
1072
fi
1073

    
1074
if test "$gpl" != "yes"; then
1075
    if test "$pp" != "no"; then
1076
        echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
1077
        fail="yes"
1078
    fi
1079

    
1080
    if test "$a52" != "no" -o "$a52bin" != "no"; then
1081
        echo "liba52 is under GPL and --enable-gpl is not specified."
1082
        fail="yes"
1083
    fi
1084

    
1085
    if test "$xvid" != "no"; then
1086
        echo "libxvidcore is under GPL and --enable-gpl is not specified."
1087
        fail="yes"
1088
    fi
1089

    
1090
    if test "$x264" != "no"; then
1091
        echo "x264 is under GPL and --enable-gpl is not specified."
1092
        fail="yes"
1093
    fi
1094

    
1095
    if test "$dts" != "no"; then
1096
        echo "libdts is under GPL and --enable-gpl is not specified."
1097
        fail="yes"
1098
    fi
1099

    
1100
    if test "$faad" != "no" -o "$faadbin" != "no"; then
1101
        if check_header faad.h; then
1102
            check_cc << EOF
1103
                #include <faad.h>
1104
                #ifndef FAAD2_VERSION
1105
                ok faad1
1106
                #endif
1107
                int main( void ) { return 0; }
1108
EOF
1109
            if test $? = 0 ; then
1110
                echo "FAAD2 is under GPL and --enable-gpl is not specified."
1111
                fail="yes"
1112
            fi
1113
        else
1114
            faad="no"
1115
            faadbin="no"
1116
            echo "FAAD test failed."
1117
        fi
1118
    fi
1119

    
1120
    if test "$swscaler" != "no"; then
1121
        echo "The software scaler is under GPL and --enable-gpl is not specified."
1122
        fail="yes"
1123
    fi
1124
fi
1125

    
1126
if test "$fail" = "yes"; then
1127
    exit 1
1128
fi
1129

    
1130
# compute MMX state
1131
if test $mmx = "default"; then
1132
    if test $arch = "x86_32" -o $arch = "x86_64"; then
1133
        mmx="yes"
1134
    else
1135
        mmx="no"
1136
    fi
1137
fi
1138

    
1139
#Darwin CC versions
1140
needmdynamicnopic="no"
1141
if test $targetos = Darwin; then
1142
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1143
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1144
    else
1145
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1146
        case "$gcc_version" in
1147
            *2.95*)
1148
                add_cflags "-no-cpp-precomp -pipe"
1149
                ;;
1150
            *[34].*)
1151
                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1152
                if test "$lshared" = no; then
1153
                   needmdynamicnopic="yes"
1154
                fi
1155
                ;;
1156
            *)
1157
                add_cflags "-no-cpp-precomp -pipe"
1158
                if test "$lshared" = no; then
1159
                   needmdynamicnopic="yes"
1160
                fi
1161
                ;;
1162
        esac
1163
    fi
1164
fi
1165

    
1166
if test $optimize != "no"; then
1167
    add_cflags "-fomit-frame-pointer"
1168
fi
1169

    
1170
# Can only do AltiVec on PowerPC
1171
if test $altivec = "default"; then
1172
    if test $arch = "powerpc"; then
1173
        altivec="yes"
1174
    else
1175
        altivec="no"
1176
    fi
1177
fi
1178

    
1179
# Add processor-specific flags
1180
TUNECPU="generic"
1181
POWERPCMODE="32bits"
1182
if test $cpu != "generic"; then
1183
    case $cpu in
1184
        601|ppc601|PowerPC601)
1185
            add_cflags "-mcpu=601"
1186
            if test $altivec = "yes"; then
1187
                echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
1188
            fi
1189
            TUNECPU=ppc601
1190
        ;;
1191
        603*|ppc603*|PowerPC603*)
1192
            add_cflags "-mcpu=603"
1193
            if test $altivec = "yes"; then
1194
                echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
1195
            fi
1196
            TUNECPU=ppc603
1197
        ;;
1198
        604*|ppc604*|PowerPC604*)
1199
            add_cflags "-mcpu=604"
1200
            if test $altivec = "yes"; then
1201
                echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
1202
            fi
1203
            TUNECPU=ppc604
1204
        ;;
1205
        G3|g3|75*|ppc75*|PowerPC75*)
1206
            add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1207
            if test $altivec = "yes"; then
1208
                echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
1209
            fi
1210
            TUNECPU=ppc750
1211
        ;;
1212
        G4|g4|745*|ppc745*|PowerPC745*)
1213
            add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1214
            if test $altivec = "no"; then
1215
                echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
1216
            fi
1217
            TUNECPU=ppc7450
1218
        ;;
1219
        74*|ppc74*|PowerPC74*)
1220
            add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1221
            if test $altivec = "no"; then
1222
                echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
1223
            fi
1224
            TUNECPU=ppc7400
1225
        ;;
1226
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1227
            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1228
            if test $altivec = "no"; then
1229
                echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
1230
            fi
1231
            TUNECPU=ppc970
1232
            POWERPCMODE="64bits"
1233
        ;;
1234
        # targets that do NOT support conditional mov (cmov)
1235
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1236
            add_cflags "-march=$cpu"
1237
            cmov="no"
1238
        ;;
1239
        # targets that do support conditional mov (cmov)
1240
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
1241
            add_cflags "-march=$cpu"
1242
            cmov="yes"
1243
            cmov_is_fast="yes"
1244
        ;;
1245
        # targets that do support conditional mov but on which it's slow
1246
        pentium4|prescott|nocona)
1247
            add_cflags "-march=$cpu"
1248
            cmov="yes"
1249
            cmov_is_fast="no"
1250
        ;;
1251
        sparc64)
1252
            add_cflags "-mcpu=v9"
1253
        ;;
1254
        *)
1255
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
1256
        ;;
1257
    esac
1258
fi
1259

    
1260
# make sure we can execute files in $TMPDIR
1261
cat >$TMPE 2>>$logfile <<EOF
1262
#! /bin/sh
1263
EOF
1264
chmod +x $TMPE >>$logfile 2>&1
1265
if ! $TMPE >>$logfile 2>&1; then
1266
    cat <<EOF
1267
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1268
variable to another directory and make sure that $TMPDIR1 is not mounted
1269
noexec.
1270
EOF
1271
    die "Sanity test failed."
1272
fi
1273
rm $TMPE
1274

    
1275
# compiler sanity check
1276
check_exec <<EOF
1277
int main(){
1278
    return 0;
1279
}
1280
EOF
1281
if test "$?" != 0; then
1282
    echo "$cc is unable to create an executable file."
1283
    if test -z "$cross_prefix" -a "$cross_compile" = no; then
1284
        echo "If $cc is a cross-compiler, use the --cross-compile option."
1285
        echo "Only do this if you know what cross compiling means."
1286
    fi
1287
    die "C compiler test failed."
1288
fi
1289

    
1290
# check for assembler specific support
1291

    
1292
if test $arch = "powerpc"; then
1293
check_cc <<EOF && dcbzl=yes
1294
int main(void) {
1295
    register long zero = 0;
1296
    char data[1024];
1297
    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1298
return 0;
1299
}
1300
EOF
1301
fi
1302

    
1303
# check for SIMD availability
1304

    
1305
# AltiVec flags: The FSF version of GCC differs from the Apple version
1306
if test $arch = "powerpc"; then
1307
    if test $altivec = "yes"; then
1308
        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1309
            add_cflags "-faltivec"
1310
        else
1311
            add_cflags "-maltivec -mabi=altivec"
1312
        fi
1313
    fi
1314
fi
1315

    
1316
check_header altivec.h && altivec_h=yes || altivec_h=no
1317

    
1318
# check if our compiler supports Motorola AltiVec C API
1319
if test $altivec = "yes"; then
1320
    if test $altivec_h = "yes"; then
1321
        inc_altivec_h="#include <altivec.h>"
1322
    else
1323
        inc_altivec_h=
1324
    fi
1325
    check_cc <<EOF || altivec=no
1326
$inc_altivec_h
1327
int main(void) {
1328
    vector signed int v1, v2, v3;
1329
    v1 = vec_add(v2,v3);
1330
    return 0;
1331
}
1332
EOF
1333
fi
1334

    
1335
# check armv5te instructions support
1336
if test $armv5te = "default" -a $arch = "armv4l"; then
1337
    armv5te=no
1338
    check_cc <<EOF && armv5te=yes
1339
        int main(void) {
1340
        __asm__ __volatile__ ("qadd r0, r0, r0");
1341
        }
1342
EOF
1343
fi
1344

    
1345
# check iwmmxt support
1346
if test $iwmmxt = "default" -a $arch = "armv4l"; then
1347
    iwmmxt=no
1348
    check_cc <<EOF && iwmmxt=yes
1349
        int main(void) {
1350
        __asm__ __volatile__ ("wunpckelub wr6, wr4");
1351
        }
1352
EOF
1353
fi
1354

    
1355
# mmi only available on mips
1356
if test $mmi = "default"; then
1357
    if test $arch = "mips"; then
1358
        mmi="yes"
1359
    else
1360
        mmi="no"
1361
    fi
1362
fi
1363

    
1364
# check if our compiler supports mmi
1365
enabled mmi && check_cc <<EOF || mmi="no"
1366
int main(void) {
1367
    __asm__ ("lq \$2, 0(\$2)");
1368
    return 0;
1369
}
1370
EOF
1371

    
1372
# ---
1373
# big/little-endian test
1374
if test "$cross_compile" = "no"; then
1375
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1376
#include <inttypes.h>
1377
int main(int argc, char ** argv){
1378
        volatile uint32_t i=0x01234567;
1379
        return (*((uint8_t*)(&i))) == 0x67;
1380
}
1381
EOF
1382
else
1383
    # programs cannot be launched if cross compiling, so make a static guess
1384
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1385
        bigendian="yes"
1386
    fi
1387
fi
1388

    
1389
# ---
1390
# *inttypes.h* test
1391
check_header inttypes.h || inttypes=no
1392

    
1393
# ---
1394
# *int_fast* test
1395
check_cc <<EOF || fast_int=no
1396
#include <inttypes.h>
1397
int main(int argc, char ** argv){
1398
        volatile uint_fast64_t i=0x01234567;
1399
        return 0;
1400
}
1401
EOF
1402

    
1403
# ---
1404
# check availability of some header files
1405

    
1406
memalign=no
1407
malloc_h=no
1408
if check_header malloc.h; then
1409
    malloc_h=yes
1410
    memalign=yes
1411
    check_func memalign || memalign="no"
1412
fi
1413

    
1414
if test "$memalign" = "no" -a "$mmx" = "yes" -a \
1415
        "$memalign_hack" != "yes" -a "$targetos" != "Darwin" -a \
1416
        "$targetos" != "FreeBSD" ; then
1417
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1418
fi
1419

    
1420
check_header byteswap.h && byteswap_h=yes || byteswap_h=no
1421

    
1422
check_func inet_aton && inet_aton=yes || inet_aton=no
1423
check_func localtime_r && localtime_r=yes || localtime_r=no
1424
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1425

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

    
1436
# these are off by default, so fail if requested and not available
1437
enabled dts     && require libdts dts.h dts_init -ldts -lm
1438
enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1439
enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1440
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1441
enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1442
enabled libnut  && require libnut libnut.h nut_demuxer_init -lnut
1443
enabled xvid    && require XviD xvid.h xvid_global -lxvidcore
1444
enabled x264    && require x264 x264.h x264_encoder_open -lx264
1445
enabled dc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1446
enabled mlib    && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1447

    
1448
# Ugh, faac uses stdcall calling convention on win32 so we can't use
1449
# the generic test functions
1450
if enabled faac; then
1451
    save_flags
1452
    temp_extralibs -lfaac
1453
    check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1454
#include <stdint.h>
1455
#include <faac.h>
1456
int main(){
1457
    char *id, *cpr;
1458
    faacEncGetVersion(&id, &cpr);
1459
    return 0;
1460
}
1461
EOF
1462
    restore_flags
1463
fi
1464

    
1465
# Ugh, recent faad2 versions have renamed all functions and #define the
1466
# old names in faad.h.  Generic tests won't work.
1467
if enabled faad; then
1468
    save_flags
1469
    temp_extralibs -lfaad
1470
    check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1471
#include <faad.h>
1472
int main(){
1473
    faacDecOpen();
1474
    return 0;
1475
}
1476
EOF
1477
    restore_flags
1478
fi
1479

    
1480
# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1481
if enabled avisynth; then
1482
    save_flags
1483
    temp_extralibs -lvfw32
1484
    check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1485
#include <windows.h>
1486
#include <vfw.h>
1487
int main(){
1488
    AVIFileInit();
1489
    return 0;
1490
}
1491
EOF
1492
    restore_flags
1493
fi
1494

    
1495

    
1496
# test for lrintf in math.h
1497
check_exec <<EOF && lrintf=yes || lrintf=no
1498
#define _ISOC9X_SOURCE  1
1499
#include <math.h>
1500
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1501
EOF
1502

    
1503
_restrict=
1504
for restrict_keyword in restrict __restrict__ __restrict; do
1505
    check_cc <<EOF && _restrict=$restrict_keyword && break
1506
void foo(char * $restrict_keyword p);
1507
EOF
1508
done
1509

    
1510
# dlopen/dlfcn.h probing
1511

    
1512
check_header dlfcn.h && dlfcn=yes
1513

    
1514
temp_extralibs -ldl
1515
if check_func dlopen; then
1516
    dlopen=yes
1517
    ldl=-ldl
1518
fi
1519
restore_flags
1520

    
1521
if check_func dlopen; then
1522
    dlopen=yes
1523
    ldl=
1524
fi
1525

    
1526
if test "$vhook" = "default"; then
1527
    vhook="$dlopen"
1528
fi
1529

    
1530
if enabled_any vhook a52bin faadbin; then
1531
    add_extralibs $ldl
1532
fi
1533

    
1534
if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1535
    vhook="no"
1536
    echo
1537
    echo "At the moment vhooks don't work on Cygwin static builds."
1538
    echo "Patches welcome."
1539
    echo
1540
fi
1541

    
1542
if enabled vhook; then
1543
    check_ldflags -rdynamic
1544
    check_ldflags -export-dynamic
1545
fi
1546

    
1547
##########################################
1548
# imlib check
1549

    
1550
temp_extralibs -lImlib2
1551
check_ld <<EOF && imlib2=yes || imlib2=no
1552
#include <X11/Xlib.h>
1553
#include <Imlib2.h>
1554
int main( void ) { return (int) imlib_load_font("foo"); }
1555
EOF
1556
restore_flags
1557

    
1558
##########################################
1559
# FreeType check
1560

    
1561
freetype2=no
1562
if test "x$targetos" != "xBeOS"; then
1563
  if (freetype-config --version) >/dev/null 2>&1 ; then
1564
      temp_cflags `freetype-config --cflags`
1565
      temp_extralibs `freetype-config --libs`
1566
      check_ld <<EOF && freetype2=yes
1567
#include <ft2build.h>
1568
int main( void ) { return (int) FT_Init_FreeType(0); }
1569
EOF
1570
      restore_flags
1571
  fi
1572
fi
1573

    
1574
##########################################
1575
# SDL check
1576

    
1577
sdl_too_old=no
1578
sdl=no
1579
SDL_CONFIG="${cross_prefix}sdl-config"
1580
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1581
    temp_cflags `"${SDL_CONFIG}" --cflags`
1582
    temp_extralibs `"${SDL_CONFIG}" --libs`
1583
    check_ld <<EOF
1584
#include <SDL.h>
1585
#undef main /* We don't want SDL to override our main() */
1586
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1587
EOF
1588
    if test $? = 0; then
1589
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1590
        if test "$_sdlversion" -lt 121 ; then
1591
            sdl_too_old=yes
1592
        else
1593
            sdl=yes
1594
            check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1595
#include <SDL.h>
1596
int main(void){
1597
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1598
    int w = vi->current_w;
1599
    return 0;
1600
}
1601
EOF
1602
        fi
1603
    fi
1604
    restore_flags
1605
fi
1606

    
1607
enabled sdl || ffplay=no
1608

    
1609
##########################################
1610
# texi2html check
1611

    
1612
texi2html=no
1613
if (texi2html -version) >/dev/null 2>&1; then
1614
texi2html=yes
1615
fi
1616

    
1617
##########################################
1618
# IPv6 check
1619

    
1620
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1621
#include <sys/types.h>
1622
#include <sys/socket.h>
1623
#include <netinet/in.h>
1624
#include <netdb.h>
1625
int main( void ) {
1626
  struct sockaddr_storage saddr;
1627
  struct ipv6_mreq mreq6;
1628
  getaddrinfo(0,0,0,0);
1629
  getnameinfo(0,0,0,0,0,0,0);
1630
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1631
}
1632
EOF
1633

    
1634
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
1635
enabled video4linux2 && check_cc <<EOF || video4linux2="no"
1636
#include <sys/time.h>
1637
#include <asm/types.h>
1638
#include <linux/videodev2.h>
1639
int dummy = V4L2_PIX_FMT_YUV420;
1640
struct v4l2_buffer dummy1;
1641
EOF
1642

    
1643
enabled debug && add_cflags -g
1644

    
1645
# add some useful compiler flags if supported
1646
check_cflags -Wdeclaration-after-statement
1647
check_cflags -Wall
1648
check_cflags -Wno-switch
1649
check_cflags -Wdisabled-optimization
1650
check_cflags -Wpointer-arith
1651
check_cflags -Wredundant-decls
1652
enabled extrawarnings && check_cflags -Winline
1653

    
1654
# add some linker flags
1655
check_ldflags $LDLATEFLAGS
1656

    
1657
# not all compilers support -Os
1658
test "$optimize" = "small" && check_cflags -Os
1659

    
1660
if enabled optimize; then
1661
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1662
        add_cflags  "-O5"
1663
        add_ldflags "-O5"
1664
    else
1665
        add_cflags "-O3"
1666
    fi
1667
fi
1668

    
1669
# PIC flags for shared library objects where they are needed
1670
if test "$lshared" = "yes" ; then
1671
    # LIBOBJFLAGS may have already been set in the OS configuration
1672
    if test -z "$LIBOBJFLAGS" ; then
1673
        case "$arch" in
1674
            x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1675
        esac
1676
    fi
1677
fi
1678

    
1679
if test "$gprof" = "yes" ; then
1680
    add_cflags  "-p"
1681
    add_ldflags "-p"
1682
fi
1683

    
1684
VHOOKCFLAGS="-fPIC $CFLAGS"
1685
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1686

    
1687
# find if .align arg is power-of-two or not
1688
if test $asmalign_pot = "unknown"; then
1689
    asmalign_pot="no"
1690
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1691
fi
1692

    
1693
echo "install prefix   $PREFIX"
1694
echo "source path      $source_path"
1695
echo "C compiler       $cc"
1696
echo "make             $make"
1697
echo "ARCH             $arch ($cpu)"
1698
if test "$BUILDSUF" != ""; then
1699
    echo "build suffix     $BUILDSUF"
1700
fi
1701
echo "big-endian       $bigendian"
1702
echo "inttypes.h       $inttypes"
1703
echo "int_fastxx_t     $fast_int"
1704
if test $arch = "x86_32" -o $arch = "x86_64"; then
1705
    echo "MMX enabled      $mmx"
1706
    echo "CMOV enabled     $cmov"
1707
    echo "CMOV is fast     $cmov_is_fast"
1708
fi
1709
if test $arch = "armv4l"; then
1710
    echo "ARMv5TE enabled  $armv5te"
1711
    echo "IWMMXT enabled   $iwmmxt"
1712
fi
1713
if test $arch = "mips"; then
1714
    echo "MMI enabled      $mmi"
1715
fi
1716
if test $arch = "powerpc"; then
1717
    echo "AltiVec enabled  $altivec"
1718
    echo "dcbzl available  $dcbzl"
1719
fi
1720
echo "gprof enabled    $gprof"
1721
echo "zlib enabled     $zlib"
1722
echo "libgsm enabled   $libgsm"
1723
echo "mp3lame enabled  $mp3lame"
1724
echo "libnut enabled   $libnut"
1725
echo "libogg enabled   $libogg"
1726
echo "Vorbis enabled   $libvorbis"
1727
echo "FAAD enabled     $faad"
1728
echo "faadbin enabled  $faadbin"
1729
echo "FAAC enabled     $faac"
1730
echo "XviD enabled     $xvid"
1731
echo "x264 enabled     $x264"
1732
echo "a52 support      $a52"
1733
echo "a52 dlopened     $a52bin"
1734
echo "DTS support      $dts"
1735
echo "pp support       $pp"
1736
echo "Software Scaler enabled $swscaler"
1737
echo "AVISynth enabled $avisynth"
1738
echo "debug symbols    $debug"
1739
echo "strip symbols    $dostrip"
1740
echo "optimize         $optimize"
1741
echo "static           $lstatic"
1742
echo "shared           $lshared"
1743
echo "video hooking    $vhook"
1744
echo "SDL support      $sdl"
1745
if test $sdl_too_old = "yes"; then
1746
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1747
fi
1748

    
1749
if test "$vhook" = "yes"; then
1750
    echo "Imlib2 support   $imlib2"
1751
    echo "FreeType support $freetype2"
1752
fi
1753
echo "Sun medialib support"  $mlib
1754
echo "pthreads support"      $pthreads
1755
echo "AMR-NB float support"  $amr_nb
1756
echo "AMR-NB fixed support"  $amr_nb_fixed
1757
echo "AMR-WB float support"  $amr_wb
1758
echo "AMR-WB IF2 support"    $amr_if2
1759
echo "network support      $network"
1760
if test "$network" = "yes" ; then
1761
    echo "IPv6 support         $ipv6"
1762
fi
1763
echo ".align is power-of-two" $asmalign_pot
1764
if test "$gpl" = "no" ; then
1765
    echo "License: LGPL"
1766
else
1767
    echo "License: GPL"
1768
fi
1769

    
1770
echo "Creating config.mak and config.h..."
1771

    
1772
date >> config.log
1773
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
1774
echo "# Automatically generated by configure - do not modify!" > config.mak
1775
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1776
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1777

    
1778
echo "PREFIX=$PREFIX" >> config.mak
1779
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1780
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1781
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1782
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1783
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1784
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1785
echo "MAKE=$make" >> config.mak
1786
echo "CC=$cc" >> config.mak
1787
echo "AR=$ar" >> config.mak
1788
echo "RANLIB=$ranlib" >> config.mak
1789
if test "$dostrip" = "yes" ; then
1790
    echo "STRIP=$strip" >> config.mak
1791
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1792
else
1793
    echo "STRIP=echo ignoring strip" >> config.mak
1794
    echo "INSTALLSTRIP=" >> config.mak
1795
fi
1796

    
1797
echo "OPTFLAGS=$CFLAGS" >> config.mak
1798
echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1799
echo "LDFLAGS=$LDFLAGS" >> config.mak
1800
echo "LDCONFIG=$LDCONFIG" >> config.mak
1801
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1802
echo "SHFLAGS=$SHFLAGS" >> config.mak
1803
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1804
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1805
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1806
echo "BUILD_STATIC=$lstatic" >> config.mak
1807
echo "BUILDSUF=$BUILDSUF" >> config.mak
1808
echo "LIBPREF=$LIBPREF" >> config.mak
1809
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1810
if test "$lstatic" = "yes" ; then
1811
  echo "LIB=$LIB" >> config.mak
1812
else # Some Make complain if this variable does not exist.
1813
  echo "LIB=" >> config.mak
1814
fi
1815
echo "SLIBPREF=$SLIBPREF" >> config.mak
1816
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1817
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1818
echo "TARGET_OS=$targetos" >> config.mak
1819
if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1820
  echo "TARGET_ARCH_X86=yes" >> config.mak
1821
  echo "#define ARCH_X86 1" >> $TMPH
1822
fi
1823
if test "$arch" = "x86_32" ; then
1824
  echo "TARGET_ARCH_X86_32=yes" >> config.mak
1825
  echo "#define ARCH_X86_32 1" >> $TMPH
1826
elif test "$arch" = "x86_64" ; then
1827
  echo "TARGET_ARCH_X86_64=yes" >> config.mak
1828
  echo "#define ARCH_X86_64 1" >> $TMPH
1829
elif test "$arch" = "armv4l" ; then
1830
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1831
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1832
elif test "$arch" = "alpha" ; then
1833
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1834
  echo "#define ARCH_ALPHA 1" >> $TMPH
1835
elif test "$arch" = "sparc64" ; then
1836
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
1837
  echo "#define ARCH_SPARC64 1" >> $TMPH
1838
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
1839
  echo "#define ARCH_SPARC 1" >> $TMPH
1840
elif test "$arch" = "sparc" ; then
1841
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
1842
  echo "#define ARCH_SPARC 1" >> $TMPH
1843
elif test "$arch" = "powerpc" ; then
1844
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
1845
  echo "#define ARCH_POWERPC 1" >> $TMPH
1846
  if test $POWERPCMODE = "32bits"; then
1847
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
1848
  else
1849
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1850
  fi
1851
  if test "$powerpc_perf" = "yes"; then
1852
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1853
  fi
1854
elif test "$arch" = "mips" ; then
1855
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
1856
  echo "#define ARCH_MIPS 1" >> $TMPH
1857
elif test "$arch" = "sh4" ; then
1858
  echo "TARGET_ARCH_SH4=yes" >> config.mak
1859
  echo "#define ARCH_SH4 1" >> $TMPH
1860
elif test "$arch" = "parisc" ; then
1861
  echo "TARGET_ARCH_PARISC=yes" >> config.mak
1862
  echo "#define ARCH_PARISC 1" >> $TMPH
1863
elif test "$arch" = "s390" ; then
1864
  echo "TARGET_ARCH_S390=yes" >> config.mak
1865
  echo "#define ARCH_S390 1" >> $TMPH
1866
elif test "$arch" = "m68k" ; then
1867
  echo "TARGET_ARCH_M68K=yes" >> config.mak
1868
  echo "#define ARCH_M68K 1" >> $TMPH
1869
elif test "$arch" = "ia64" ; then
1870
  echo "TARGET_ARCH_IA64=yes" >> config.mak
1871
  echo "#define ARCH_IA64 1" >> $TMPH
1872
elif test "$arch" = "bfin" ; then
1873
  echo "TARGET_ARCH_BFIN=yes" >> config.mak
1874
  echo "#define ARCH_BFIN 1" >> $TMPH
1875
fi
1876
echo "#define TUNECPU $TUNECPU" >> $TMPH
1877
if test "$bigendian" = "yes" ; then
1878
  echo "WORDS_BIGENDIAN=yes" >> config.mak
1879
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1880
fi
1881
if test "$mmx" = "yes" ; then
1882
  echo "TARGET_MMX=yes" >> config.mak
1883
  echo "#define HAVE_MMX 1" >> $TMPH
1884
  echo "#define __CPU__ 586" >> $TMPH
1885
fi
1886
if test "$cmov" = "yes" ; then
1887
  echo "TARGET_CMOV=yes" >> config.mak
1888
  echo "#define HAVE_CMOV 1" >> $TMPH
1889
fi
1890
if test "$cmov_is_fast" = "yes" ; then
1891
  echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1892
  echo "#define CMOV_IS_FAST 1" >> $TMPH
1893
fi
1894
if test "$armv5te" = "yes" ; then
1895
  echo "TARGET_ARMV5TE=yes" >> config.mak
1896
  echo "#define HAVE_ARMV5TE 1" >> $TMPH
1897
fi
1898
if test "$iwmmxt" = "yes" ; then
1899
  echo "TARGET_IWMMXT=yes" >> config.mak
1900
  echo "#define HAVE_IWMMXT 1" >> $TMPH
1901
fi
1902
if test "$mmi" = "yes" ; then
1903
  echo "TARGET_MMI=yes" >> config.mak
1904
  echo "#define HAVE_MMI 1" >> $TMPH
1905
fi
1906

    
1907
if test "$altivec" = "yes" ; then
1908
  echo "TARGET_ALTIVEC=yes" >> config.mak
1909
  echo "#define HAVE_ALTIVEC 1" >> $TMPH
1910
fi
1911

    
1912
if test "$sdl" = "yes" ; then
1913
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1914
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1915
fi
1916
if test "$texi2html" = "yes"; then
1917
  echo "BUILD_DOC=yes" >> config.mak
1918
fi
1919

    
1920
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1921
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1922
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1923
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1924
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1925

    
1926

    
1927

    
1928
if test "$lshared" = "yes" ; then
1929
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
1930
  echo "BUILD_SHARED=yes" >> config.mak
1931
  echo "PIC=-fPIC -DPIC" >> config.mak
1932
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1933
  echo "SPPVERSION=$lavc_version" >> config.mak
1934
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1935
  echo "LAVCVERSION=$lavc_version" >> config.mak
1936
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1937
  echo "LAVFVERSION=$lavf_version" >> config.mak
1938
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1939
  echo "LAVUVERSION=$lavu_version" >> config.mak
1940
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1941
  echo "SWSVERSION=$sws_version" >> config.mak
1942
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1943
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1944
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1945
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1946
fi
1947
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1948
echo "EXTRALIBS=$extralibs" >> config.mak
1949

    
1950
enabled_any $ENCODER_LIST && enable encoders
1951
enabled_any $DECODER_LIST && enable decoders
1952
enabled_any $MUXER_LIST   && enable muxers
1953
enabled_any $DEMUXER_LIST && enable demuxers
1954

    
1955
enabled_any pthreads beosthreads os2threads w32threads && enable threads
1956

    
1957
print_config HAVE_   $TMPH config.mak $HAVE_LIST
1958
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1959

    
1960
if test "$mingw32" = "yes" ; then
1961
  echo "#ifndef __MINGW32__" >> $TMPH
1962
  echo "#define __MINGW32__ 1" >> $TMPH
1963
  echo "#endif" >> $TMPH
1964
fi
1965

    
1966
if test "$mingwce" = "yes" ; then
1967
  echo "#define CONFIG_WINCE 1" >> $TMPH
1968
  echo "#ifndef __MINGW32__" >> $TMPH
1969
  echo "#define __MINGW32__ 1" >> $TMPH
1970
  echo "#endif" >> $TMPH
1971
fi
1972

    
1973
if test "$os2" = "yes" ; then
1974
  echo "#define CONFIG_OS2 1" >> $TMPH
1975
fi
1976

    
1977
if test "$targetos" = "Darwin"; then
1978
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
1979
fi
1980

    
1981
echo "#define restrict $_restrict" >> $TMPH
1982

    
1983
if test "$optimize" = "small"; then
1984
  echo "#define always_inline"  >> $TMPH
1985
  echo "#define CONFIG_SMALL 1" >> $TMPH
1986
fi
1987

    
1988
echo "SRC_PATH=\"$source_path\"" >> config.mak
1989
echo "SRC_PATH_BARE=$source_path" >> config.mak
1990
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
1991

    
1992
if test "$amr_if2" = "yes" ; then
1993
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
1994
fi
1995

    
1996
# Apparently it's not possible to portably echo a backslash.
1997
if test "$asmalign_pot" = "yes" ; then
1998
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
1999
else
2000
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2001
fi
2002

    
2003

    
2004
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2005
    ucname="`toupper $codec`"
2006
    config_name="CONFIG_$ucname"
2007
    enabled_name="ENABLE_$ucname"
2008
    if enabled $codec; then
2009
        echo "#define $config_name 1" >> $TMPH
2010
        echo "#define $enabled_name 1" >> $TMPH
2011
        echo "$config_name=yes" >> config.mak
2012
    else
2013
        echo "#define $enabled_name 0" >> $TMPH
2014
    fi
2015
done
2016

    
2017
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2018
if ! cmp -s $TMPH config.h; then
2019
        mv -f $TMPH config.h
2020
else
2021
        echo "config.h is unchanged"
2022
fi
2023

    
2024
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2025

    
2026
# build tree in object directory if source path is different from current one
2027
if test "$source_path_used" = "yes" ; then
2028
    DIRS="\
2029
         doc \
2030
         libavformat \
2031
         libavcodec \
2032
         libavcodec/alpha \
2033
         libavcodec/armv4l \
2034
         libavcodec/bfin \
2035
         libavcodec/i386 \
2036
         libavcodec/sparc \
2037
         libavcodec/mlib \
2038
         libavcodec/ppc \
2039
         libavcodec/liba52 \
2040
         libpostproc \
2041
         libavutil \
2042
         libswscale \
2043
         tests \
2044
         vhook \
2045
         "
2046
    FILES="\
2047
          Makefile \
2048
          common.mak \
2049
          libavformat/Makefile \
2050
          libavcodec/Makefile \
2051
          libpostproc/Makefile \
2052
          libavutil/Makefile \
2053
          libswscale/Makefile \
2054
          tests/Makefile \
2055
          vhook/Makefile \
2056
          doc/Makefile \
2057
          doc/texi2pod.pl \
2058
          "
2059
    for dir in $DIRS ; do
2060
            mkdir -p $dir
2061
    done
2062
    for f in $FILES ; do
2063
        ln -sf "$source_path/$f" $f
2064
    done
2065
fi
2066

    
2067
# build pkg-config files libav*.pc and libpostproc.pc
2068
# libavutil.pc
2069
cat <<EOF >libavutil.pc
2070
prefix=$PREFIX
2071
exec_prefix=\${prefix}
2072
libdir=\${exec_prefix}/lib
2073
includedir=\${prefix}/include
2074

    
2075
Name: libavutil
2076
Description: FFmpeg utility library
2077
Version: $lavu_version
2078
Requires:
2079
Conflicts:
2080
Libs: -L\${libdir} -lavutil
2081
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2082
EOF
2083

    
2084
cat <<EOF >libavutil-uninstalled.pc
2085
prefix=
2086
exec_prefix=
2087
libdir=\${pcfiledir}/libavutil
2088
includedir=\${pcfiledir}/libavutil
2089

    
2090
Name: libavutil
2091
Description: FFmpeg utility library
2092
Version: $lavu_version
2093
Requires:
2094
Conflicts:
2095
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2096
Cflags: -I\${includedir}
2097
EOF
2098

    
2099
# libavcodec.pc
2100
cat <<EOF >libavcodec.pc
2101
prefix=$PREFIX
2102
exec_prefix=\${prefix}
2103
libdir=\${exec_prefix}/lib
2104
includedir=\${prefix}/include
2105

    
2106
Name: libavcodec
2107
Description: FFmpeg codec library
2108
Version: $lavc_version
2109
Requires: $pkg_requires libavutil = $lavu_version
2110
Conflicts:
2111
Libs: -L\${libdir} -lavcodec $extralibs
2112
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2113
EOF
2114

    
2115
cat <<EOF >libavcodec-uninstalled.pc
2116
prefix=
2117
exec_prefix=
2118
libdir=\${pcfiledir}/libavcodec
2119
includedir=\${pcfiledir}/libavcodec
2120

    
2121
Name: libavcodec
2122
Description: FFmpeg codec library
2123
Version: $lavc_version
2124
Requires: $pkg_requires libavutil = $lavu_version
2125
Conflicts:
2126
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2127
Cflags: -I\${includedir}
2128
EOF
2129

    
2130
# libavformat.pc
2131
cat <<EOF >libavformat.pc
2132
prefix=$PREFIX
2133
exec_prefix=\${prefix}
2134
libdir=\${exec_prefix}/lib
2135
includedir=\${prefix}/include
2136

    
2137
Name: libavformat
2138
Description: FFmpeg container format library
2139
Version: $lavf_version
2140
Requires: $pkg_requires libavcodec = $lavc_version
2141
Conflicts:
2142
Libs: -L\${libdir} -lavformat $extralibs
2143
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2144
EOF
2145

    
2146
cat <<EOF >libavformat-uninstalled.pc
2147
prefix=
2148
exec_prefix=
2149
libdir=\${pcfiledir}/libavformat
2150
includedir=\${pcfiledir}/libavformat
2151

    
2152
Name: libavformat
2153
Description: FFmpeg container format library
2154
Version: $lavf_version
2155
Requires: $pkg_requires libavcodec = $lavc_version
2156
Conflicts:
2157
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2158
Cflags: -I\${includedir}
2159
EOF
2160

    
2161

    
2162
# libpostproc.pc
2163
cat <<EOF >libpostproc.pc
2164
prefix=$PREFIX
2165
exec_prefix=\${prefix}
2166
libdir=\${exec_prefix}/lib
2167
includedir=\${prefix}/include
2168

    
2169
Name: libpostproc
2170
Description: FFmpeg post processing library
2171
Version: $lavc_version
2172
Requires:
2173
Conflicts:
2174
Libs: -L\${libdir} -lpostproc
2175
Cflags: -I\${includedir} -I\${includedir}/postproc
2176
EOF
2177

    
2178
cat <<EOF >libpostproc-uninstalled.pc
2179
prefix=
2180
exec_prefix=
2181
libdir=\${pcfiledir}/libpostproc
2182
includedir=\${pcfiledir}/libpostproc
2183

    
2184
Name: libpostproc
2185
Description: FFmpeg post processing library
2186
Version: $lavc_version
2187
Requires:
2188
Conflicts:
2189
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2190
Cflags: -I\${includedir}
2191
EOF
2192

    
2193
if test "$swscaler" != "no"; then
2194
  sws_pc_libs="-L\${libdir} -lswscale"
2195
  sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2196
  sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2197
else
2198
  sws_pc_libs=""
2199
  sws_pc_uninstalled_libs=""
2200
  sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2201
fi
2202
# libswscale.pc
2203
cat <<EOF >libswscale.pc
2204
prefix=$PREFIX
2205
exec_prefix=\${prefix}
2206
libdir=\${exec_prefix}/lib
2207
includedir=\${prefix}/include
2208

    
2209
Name: libswscale
2210
Description: FFmpeg image rescaling library
2211
Version: $sws_version
2212
Requires: $sws_pc_requires
2213
Conflicts:
2214
Libs: $sws_pc_libs
2215
Cflags: -I\${includedir} -I\${includedir}/swscale
2216
EOF
2217

    
2218
cat <<EOF >libswscale-uninstalled.pc
2219
prefix=
2220
exec_prefix=
2221
libdir=\${pcfiledir}/libswscale
2222
includedir=\${pcfiledir}/libswscale
2223

    
2224
Name: libswscale
2225
Description: FFmpeg image rescaling library
2226
Version: $sws_version
2227
Requires: $sws_pc_requires
2228
Conflicts:
2229
Libs: $sws_pc_uninstalled_libs
2230
Cflags: -I\${includedir}
2231
EOF