Statistics
| Branch: | Revision:

ffmpeg / configure @ c683a5d1

History | View | Annotate | Download (58.4 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
toupper(){
166
    echo "$@" | tr '[a-z]' '[A-Z]'
167
}
168

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
426
# set temporary file name
427
if test ! -z "$TMPDIR" ; then
428
    TMPDIR1="${TMPDIR}"
429
elif test ! -z "$TEMPDIR" ; then
430
    TMPDIR1="${TEMPDIR}"
431
else
432
    TMPDIR1="/tmp"
433
fi
434

    
435
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
436
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
437
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
438
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
439
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
440

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
1289
# check for assembler specific support
1290

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

    
1302
# check for SIMD availability
1303

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
1493

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

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

    
1508
# dlopen/dlfcn.h probing
1509

    
1510
check_header dlfcn.h && dlfcn=yes
1511

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

    
1519
if check_func dlopen; then
1520
    dlopen=yes
1521
    ldl=
1522
fi
1523

    
1524
if test "$vhook" = "default"; then
1525
    vhook="$dlopen"
1526
fi
1527

    
1528
if enabled_any vhook a52bin faadbin; then
1529
    add_extralibs $ldl
1530
fi
1531

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

    
1540
if enabled vhook; then
1541
    check_ldflags -rdynamic
1542
    check_ldflags -export-dynamic
1543
fi
1544

    
1545
##########################################
1546
# imlib check
1547

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

    
1556
##########################################
1557
# FreeType check
1558

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

    
1572
##########################################
1573
# SDL check
1574

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

    
1605
enabled sdl || ffplay=no
1606

    
1607
##########################################
1608
# texi2html check
1609

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

    
1615
##########################################
1616
# IPv6 check
1617

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

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

    
1641
enabled debug && add_cflags -g
1642

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

    
1652
# add some linker flags
1653
check_ldflags $LDLATEFLAGS
1654

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

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

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

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

    
1682
# find if .align arg is power-of-two or not
1683
if test $asmalign_pot = "unknown"; then
1684
    asmalign_pot="no"
1685
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1686
fi
1687

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

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

    
1765
if test "$amr_wb" = "yes" ; then
1766
  echo
1767
  echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
1768
  echo "V5.1.0 from "
1769
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
1770
  echo "and extracted the source to libavcodec/amrwb_float"
1771
fi
1772

    
1773
if test "$amr_nb" = "yes" ; then
1774
  echo
1775
  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
1776
  echo "REL-5 V5.1.0 from "
1777
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
1778
  echo "and extracted the source to libavcodec/amr_float"
1779
  echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
1780
fi
1781

    
1782
if test "$amr_nb_fixed" = "yes" ; then
1783
  echo
1784
  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
1785
  echo "REL-5 version 5.1.0 from "
1786
  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
1787
  echo "and extracted src to libavcodec/amr"
1788
  echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
1789
  echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
1790
fi
1791

    
1792
echo "Creating config.mak and config.h..."
1793

    
1794
date >> config.log
1795
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
1796
echo "# Automatically generated by configure - do not modify!" > config.mak
1797
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1798
echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1799

    
1800
echo "PREFIX=$PREFIX" >> config.mak
1801
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1802
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1803
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1804
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1805
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1806
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1807
echo "MAKE=$make" >> config.mak
1808
echo "CC=$cc" >> config.mak
1809
echo "AR=$ar" >> config.mak
1810
echo "RANLIB=$ranlib" >> config.mak
1811
if test "$dostrip" = "yes" ; then
1812
    echo "STRIP=$strip" >> config.mak
1813
    echo "INSTALLSTRIP=$installstrip" >> config.mak
1814
else
1815
    echo "STRIP=echo ignoring strip" >> config.mak
1816
    echo "INSTALLSTRIP=" >> config.mak
1817
fi
1818

    
1819
VHOOKCFLAGS="-fPIC $CFLAGS"
1820
test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1821

    
1822
echo "OPTFLAGS=$CFLAGS" >> config.mak
1823
echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1824
echo "LDFLAGS=$LDFLAGS" >> config.mak
1825
echo "LDCONFIG=$LDCONFIG" >> config.mak
1826
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1827
echo "SHFLAGS=$SHFLAGS" >> config.mak
1828
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1829
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1830
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1831
echo "BUILD_STATIC=$lstatic" >> config.mak
1832
echo "BUILDSUF=$BUILDSUF" >> config.mak
1833
echo "LIBPREF=$LIBPREF" >> config.mak
1834
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1835
if test "$lstatic" = "yes" ; then
1836
  echo "LIB=$LIB" >> config.mak
1837
else # Some Make complain if this variable does not exist.
1838
  echo "LIB=" >> config.mak
1839
fi
1840
echo "SLIBPREF=$SLIBPREF" >> config.mak
1841
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1842
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1843
echo "TARGET_OS=$targetos" >> config.mak
1844
if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1845
  echo "TARGET_ARCH_X86=yes" >> config.mak
1846
  echo "#define ARCH_X86 1" >> $TMPH
1847
fi
1848
if test "$arch" = "x86_32" ; then
1849
  echo "TARGET_ARCH_X86_32=yes" >> config.mak
1850
  echo "#define ARCH_X86_32 1" >> $TMPH
1851
elif test "$arch" = "x86_64" ; then
1852
  echo "TARGET_ARCH_X86_64=yes" >> config.mak
1853
  echo "#define ARCH_X86_64 1" >> $TMPH
1854
elif test "$arch" = "armv4l" ; then
1855
  echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1856
  echo "#define ARCH_ARMV4L 1" >> $TMPH
1857
elif test "$arch" = "alpha" ; then
1858
  echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1859
  echo "#define ARCH_ALPHA 1" >> $TMPH
1860
elif test "$arch" = "sparc64" ; then
1861
  echo "TARGET_ARCH_SPARC64=yes" >> config.mak
1862
  echo "#define ARCH_SPARC64 1" >> $TMPH
1863
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
1864
  echo "#define ARCH_SPARC 1" >> $TMPH
1865
elif test "$arch" = "sparc" ; then
1866
  echo "TARGET_ARCH_SPARC=yes" >> config.mak
1867
  echo "#define ARCH_SPARC 1" >> $TMPH
1868
elif test "$arch" = "powerpc" ; then
1869
  echo "TARGET_ARCH_POWERPC=yes" >> config.mak
1870
  echo "#define ARCH_POWERPC 1" >> $TMPH
1871
  if test $POWERPCMODE = "32bits"; then
1872
    echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
1873
  else
1874
    echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1875
  fi
1876
  if test "$powerpc_perf" = "yes"; then
1877
    echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1878
  fi
1879
elif test "$arch" = "mips" ; then
1880
  echo "TARGET_ARCH_MIPS=yes" >> config.mak
1881
  echo "#define ARCH_MIPS 1" >> $TMPH
1882
elif test "$arch" = "sh4" ; then
1883
  echo "TARGET_ARCH_SH4=yes" >> config.mak
1884
  echo "#define ARCH_SH4 1" >> $TMPH
1885
elif test "$arch" = "parisc" ; then
1886
  echo "TARGET_ARCH_PARISC=yes" >> config.mak
1887
  echo "#define ARCH_PARISC 1" >> $TMPH
1888
elif test "$arch" = "s390" ; then
1889
  echo "TARGET_ARCH_S390=yes" >> config.mak
1890
  echo "#define ARCH_S390 1" >> $TMPH
1891
elif test "$arch" = "m68k" ; then
1892
  echo "TARGET_ARCH_M68K=yes" >> config.mak
1893
  echo "#define ARCH_M68K 1" >> $TMPH
1894
elif test "$arch" = "ia64" ; then
1895
  echo "TARGET_ARCH_IA64=yes" >> config.mak
1896
  echo "#define ARCH_IA64 1" >> $TMPH
1897
elif test "$arch" = "bfin" ; then
1898
  echo "TARGET_ARCH_BFIN=yes" >> config.mak
1899
  echo "#define ARCH_BFIN 1" >> $TMPH
1900
fi
1901
echo "#define TUNECPU $TUNECPU" >> $TMPH
1902
if test "$bigendian" = "yes" ; then
1903
  echo "WORDS_BIGENDIAN=yes" >> config.mak
1904
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1905
fi
1906
if test "$inttypes" != "yes" ; then
1907
  echo "#define EMULATE_INTTYPES 1" >> $TMPH
1908
fi
1909
if test "$emu_fast_int" = "yes" ; then
1910
  echo "#define EMULATE_FAST_INT 1" >> $TMPH
1911
fi
1912
if test "$mmx" = "yes" ; then
1913
  echo "TARGET_MMX=yes" >> config.mak
1914
  echo "#define HAVE_MMX 1" >> $TMPH
1915
  echo "#define __CPU__ 586" >> $TMPH
1916
fi
1917
if test "$cmov" = "yes" ; then
1918
  echo "TARGET_CMOV=yes" >> config.mak
1919
  echo "#define HAVE_CMOV 1" >> $TMPH
1920
fi
1921
if test "$cmov_is_fast" = "yes" ; then
1922
  echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1923
  echo "#define CMOV_IS_FAST 1" >> $TMPH
1924
fi
1925
if test "$armv5te" = "yes" ; then
1926
  echo "TARGET_ARMV5TE=yes" >> config.mak
1927
  echo "#define HAVE_ARMV5TE 1" >> $TMPH
1928
fi
1929
if test "$iwmmxt" = "yes" ; then
1930
  echo "TARGET_IWMMXT=yes" >> config.mak
1931
  echo "#define HAVE_IWMMXT 1" >> $TMPH
1932
fi
1933
if test "$mmi" = "yes" ; then
1934
  echo "TARGET_MMI=yes" >> config.mak
1935
  echo "#define HAVE_MMI 1" >> $TMPH
1936
fi
1937

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

    
1943
if test "$sdl" = "yes" ; then
1944
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1945
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1946
fi
1947
if test "$texi2html" = "yes"; then
1948
  echo "BUILD_DOC=yes" >> config.mak
1949
fi
1950

    
1951
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1952
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1953
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1954
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1955
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1956

    
1957

    
1958

    
1959
if test "$lshared" = "yes" ; then
1960
  echo "#define BUILD_SHARED_AV 1" >> $TMPH
1961
  echo "BUILD_SHARED=yes" >> config.mak
1962
  echo "PIC=-fPIC -DPIC" >> config.mak
1963
  echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1964
  echo "SPPVERSION=$lavc_version" >> config.mak
1965
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1966
  echo "LAVCVERSION=$lavc_version" >> config.mak
1967
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1968
  echo "LAVFVERSION=$lavf_version" >> config.mak
1969
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1970
  echo "LAVUVERSION=$lavu_version" >> config.mak
1971
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1972
  echo "SWSVERSION=$sws_version" >> config.mak
1973
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1974
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1975
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1976
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1977
fi
1978
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1979
echo "EXTRALIBS=$extralibs" >> config.mak
1980

    
1981
enabled_any $ENCODER_LIST && enable encoders
1982
enabled_any $DECODER_LIST && enable decoders
1983
enabled_any $MUXER_LIST   && enable muxers
1984
enabled_any $DEMUXER_LIST && enable demuxers
1985

    
1986
enabled_any pthreads beosthreads os2threads w32threads && enable threads
1987

    
1988
print_config HAVE_   $TMPH config.mak $HAVE_LIST
1989
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1990

    
1991
if test "$mingw32" = "yes" ; then
1992
  echo "#ifndef __MINGW32__" >> $TMPH
1993
  echo "#define __MINGW32__ 1" >> $TMPH
1994
  echo "#endif" >> $TMPH
1995
fi
1996

    
1997
if test "$mingwce" = "yes" ; then
1998
  echo "#define CONFIG_WINCE 1" >> $TMPH
1999
  echo "#ifndef __MINGW32__" >> $TMPH
2000
  echo "#define __MINGW32__ 1" >> $TMPH
2001
  echo "#endif" >> $TMPH
2002
fi
2003

    
2004
if test "$os2" = "yes" ; then
2005
  echo "#define CONFIG_OS2 1" >> $TMPH
2006
fi
2007

    
2008
if test "$targetos" = "Darwin"; then
2009
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
2010
fi
2011

    
2012
if test "$need_inet_aton" = "yes" ; then
2013
  echo "NEED_INET_ATON=yes" >> config.mak
2014
fi
2015

    
2016
echo "#define restrict $_restrict" >> $TMPH
2017

    
2018
if test "$optimize" = "small"; then
2019
  echo "#define always_inline"  >> $TMPH
2020
  echo "#define CONFIG_SMALL 1" >> $TMPH
2021
fi
2022

    
2023
echo "SRC_PATH=\"$source_path\"" >> config.mak
2024
echo "SRC_PATH_BARE=$source_path" >> config.mak
2025
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2026

    
2027
if test "$amr_if2" = "yes" ; then
2028
  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2029
fi
2030

    
2031
# Apparently it's not possible to portably echo a backslash.
2032
if test "$asmalign_pot" = "yes" ; then
2033
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2034
else
2035
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2036
fi
2037

    
2038

    
2039
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
2040
for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2041
    ucname="`toupper $codec`"
2042
    config_name="CONFIG_$ucname"
2043
    enabled_name="ENABLE_$ucname"
2044
    if enabled $codec; then
2045
        echo "#define $config_name 1" >> $TMPH
2046
        echo "#define $enabled_name 1" >> $TMPH
2047
        echo "$config_name=yes" >> config.mak
2048
    else
2049
        echo "#define $enabled_name 0" >> $TMPH
2050
    fi
2051
done
2052

    
2053
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2054
if ! cmp -s $TMPH config.h; then
2055
        mv -f $TMPH config.h
2056
else
2057
        echo "config.h is unchanged"
2058
fi
2059

    
2060
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2061

    
2062
# build tree in object directory if source path is different from current one
2063
if test "$source_path_used" = "yes" ; then
2064
    DIRS="\
2065
         doc \
2066
         libavformat \
2067
         libavcodec \
2068
         libavcodec/alpha \
2069
         libavcodec/armv4l \
2070
         libavcodec/bfin \
2071
         libavcodec/i386 \
2072
         libavcodec/sparc \
2073
         libavcodec/mlib \
2074
         libavcodec/ppc \
2075
         libavcodec/liba52 \
2076
         libpostproc \
2077
         libavutil \
2078
         libswscale \
2079
         tests \
2080
         vhook \
2081
         "
2082
    FILES="\
2083
          Makefile \
2084
          common.mak \
2085
          libavformat/Makefile \
2086
          libavcodec/Makefile \
2087
          libpostproc/Makefile \
2088
          libavutil/Makefile \
2089
          libswscale/Makefile \
2090
          tests/Makefile \
2091
          vhook/Makefile \
2092
          doc/Makefile \
2093
          doc/texi2pod.pl \
2094
          "
2095
    for dir in $DIRS ; do
2096
            mkdir -p $dir
2097
    done
2098
    for f in $FILES ; do
2099
        ln -sf "$source_path/$f" $f
2100
    done
2101
fi
2102

    
2103
# build pkg-config files libav*.pc and libpostproc.pc
2104
# libavutil.pc
2105
cat <<EOF >libavutil.pc
2106
prefix=$PREFIX
2107
exec_prefix=\${prefix}
2108
libdir=\${exec_prefix}/lib
2109
includedir=\${prefix}/include
2110

    
2111
Name: libavutil
2112
Description: FFmpeg utility library
2113
Version: $lavu_version
2114
Requires:
2115
Conflicts:
2116
Libs: -L\${libdir} -lavutil
2117
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2118
EOF
2119

    
2120
cat <<EOF >libavutil-uninstalled.pc
2121
prefix=
2122
exec_prefix=
2123
libdir=\${pcfiledir}/libavutil
2124
includedir=\${pcfiledir}/libavutil
2125

    
2126
Name: libavutil
2127
Description: FFmpeg utility library
2128
Version: $lavu_version
2129
Requires:
2130
Conflicts:
2131
Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2132
Cflags: -I\${includedir}
2133
EOF
2134

    
2135
# libavcodec.pc
2136
cat <<EOF >libavcodec.pc
2137
prefix=$PREFIX
2138
exec_prefix=\${prefix}
2139
libdir=\${exec_prefix}/lib
2140
includedir=\${prefix}/include
2141

    
2142
Name: libavcodec
2143
Description: FFmpeg codec library
2144
Version: $lavc_version
2145
Requires: $pkg_requires libavutil = $lavu_version
2146
Conflicts:
2147
Libs: -L\${libdir} -lavcodec $extralibs
2148
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2149
EOF
2150

    
2151
cat <<EOF >libavcodec-uninstalled.pc
2152
prefix=
2153
exec_prefix=
2154
libdir=\${pcfiledir}/libavcodec
2155
includedir=\${pcfiledir}/libavcodec
2156

    
2157
Name: libavcodec
2158
Description: FFmpeg codec library
2159
Version: $lavc_version
2160
Requires: $pkg_requires libavutil = $lavu_version
2161
Conflicts:
2162
Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2163
Cflags: -I\${includedir}
2164
EOF
2165

    
2166
# libavformat.pc
2167
cat <<EOF >libavformat.pc
2168
prefix=$PREFIX
2169
exec_prefix=\${prefix}
2170
libdir=\${exec_prefix}/lib
2171
includedir=\${prefix}/include
2172

    
2173
Name: libavformat
2174
Description: FFmpeg container format library
2175
Version: $lavf_version
2176
Requires: $pkg_requires libavcodec = $lavc_version
2177
Conflicts:
2178
Libs: -L\${libdir} -lavformat $extralibs
2179
Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2180
EOF
2181

    
2182
cat <<EOF >libavformat-uninstalled.pc
2183
prefix=
2184
exec_prefix=
2185
libdir=\${pcfiledir}/libavformat
2186
includedir=\${pcfiledir}/libavformat
2187

    
2188
Name: libavformat
2189
Description: FFmpeg container format library
2190
Version: $lavf_version
2191
Requires: $pkg_requires libavcodec = $lavc_version
2192
Conflicts:
2193
Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2194
Cflags: -I\${includedir}
2195
EOF
2196

    
2197

    
2198
# libpostproc.pc
2199
cat <<EOF >libpostproc.pc
2200
prefix=$PREFIX
2201
exec_prefix=\${prefix}
2202
libdir=\${exec_prefix}/lib
2203
includedir=\${prefix}/include
2204

    
2205
Name: libpostproc
2206
Description: FFmpeg post processing library
2207
Version: $lavc_version
2208
Requires:
2209
Conflicts:
2210
Libs: -L\${libdir} -lpostproc
2211
Cflags: -I\${includedir} -I\${includedir}/postproc
2212
EOF
2213

    
2214
cat <<EOF >libpostproc-uninstalled.pc
2215
prefix=
2216
exec_prefix=
2217
libdir=\${pcfiledir}/libpostproc
2218
includedir=\${pcfiledir}/libpostproc
2219

    
2220
Name: libpostproc
2221
Description: FFmpeg post processing library
2222
Version: $lavc_version
2223
Requires:
2224
Conflicts:
2225
Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2226
Cflags: -I\${includedir}
2227
EOF
2228

    
2229
if test "$swscaler" != "no"; then
2230
  sws_pc_libs="-L\${libdir} -lswscale"
2231
  sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2232
  sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2233
else
2234
  sws_pc_libs=""
2235
  sws_pc_uninstalled_libs=""
2236
  sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2237
fi
2238
# libswscale.pc
2239
cat <<EOF >libswscale.pc
2240
prefix=$PREFIX
2241
exec_prefix=\${prefix}
2242
libdir=\${exec_prefix}/lib
2243
includedir=\${prefix}/include
2244

    
2245
Name: libswscale
2246
Description: FFmpeg image rescaling library
2247
Version: $sws_version
2248
Requires: $sws_pc_requires
2249
Conflicts:
2250
Libs: $sws_pc_libs
2251
Cflags: -I\${includedir} -I\${includedir}/swscale
2252
EOF
2253

    
2254
cat <<EOF >libswscale-uninstalled.pc
2255
prefix=
2256
exec_prefix=
2257
libdir=\${pcfiledir}/libswscale
2258
includedir=\${pcfiledir}/libswscale
2259

    
2260
Name: libswscale
2261
Description: FFmpeg image rescaling library
2262
Version: $sws_version
2263
Requires: $sws_pc_requires
2264
Conflicts:
2265
Libs: $sws_pc_uninstalled_libs
2266
Cflags: -I\${includedir}
2267
EOF