Statistics
| Branch: | Revision:

ffmpeg / configure @ 6b8bcd3e

History | View | Annotate | Download (56.7 KB)

1 aeb29222 Måns Rullgård
#!/bin/sh
2 0f3cb305 Fabrice Bellard
#
3 f57620d5 Måns Rullgård
# FFmpeg configure script
4
#
5
# Copyright (c) 2000, 2001, 2002 Fabrice Bellard
6
# Copyright (c) 2005-2006 Diego Biurrun
7
# Copyright (c) 2005-2006 Mans Rullgard
8 0f3cb305 Fabrice Bellard
#
9 cf9d24ad Dan Christiansen
10 cde2d79a Måns Rullgård
# make sure we are running under a compatible shell
11 c21d6325 Måns Rullgård
# try to make this part work with most shells
12
13
try_exec(){
14 0dbe81bb Måns Rullgård
    echo "Trying shell $1"
15 c21d6325 Måns Rullgård
    type "$1" >/dev/null 2>&1 && exec "$@"
16
}
17
18 5237ce67 Måns Rullgård
unset foo
19 0dbe81bb Måns Rullgård
(: ${foo%%bar}) 2>/dev/null
20
E1="$?"
21
22
(: ${foo?}) 2>/dev/null
23
E2="$?"
24
25
if test "$E1" != 0 || test "$E2" = 0; then
26
    echo "Broken shell detected.  Trying alternatives."
27 c21d6325 Måns Rullgård
    export FF_CONF_EXEC
28
    if test "0$FF_CONF_EXEC" -lt 1; then
29
        FF_CONF_EXEC=1
30
        try_exec bash "$0" "$@"
31
    fi
32
    if test "0$FF_CONF_EXEC" -lt 2; then
33
        FF_CONF_EXEC=2
34
        try_exec ksh "$0" "$@"
35
    fi
36
    if test "0$FF_CONF_EXEC" -lt 3; then
37
        FF_CONF_EXEC=3
38
        try_exec /usr/xpg4/bin/sh "$0" "$@"
39 cde2d79a Måns Rullgård
    fi
40
    echo "No compatible shell script interpreter found."
41 fc53da20 Diego Biurrun
    echo "This configure script requires a POSIX-compatible shell"
42 c21d6325 Måns Rullgård
    echo "such as bash or ksh."
43 505dfb09 Diego Biurrun
    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
44
    echo "Instead, install a working POSIX-compatible shell."
45
    echo "Disabling this configure test will create a broken FFmpeg."
46 c21d6325 Måns Rullgård
    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
47
        echo "This bash version ($BASH_VERSION) is broken on your platform."
48
        echo "Upgrade to a later version if available."
49
    fi
50 cde2d79a Måns Rullgård
    exit 1
51
fi
52
53 74c53c2d Måns Rullgård
show_help(){
54
  echo "Usage: configure [options]"
55
  echo "Options: [defaults in brackets after descriptions]"
56
  echo
57
  echo "Standard options:"
58
  echo "  --help                   print this message"
59 2ba042a7 Måns Rullgård
  echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
60 2266e085 Diego Biurrun
  echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
61 74c53c2d Måns Rullgård
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
62 84c22efd Diego Biurrun
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
63 74c53c2d Måns Rullgård
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
64
  echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
65
  echo "  --enable-static          build static libraries [default=yes]"
66
  echo "  --disable-static         do not build static libraries [default=no]"
67
  echo "  --enable-shared          build shared libraries [default=no]"
68
  echo "  --disable-shared         do not build shared libraries [default=yes]"
69 0a622b98 Måns Rullgård
  echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
70
  echo "                           and ffmpeg will be under GPL [default=no]"
71 dc922953 Diego Biurrun
  echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
72
  echo "  --enable-swscaler        software scaler support [default=no]"
73 e5f94c2b Ramiro Polla
  echo "  --enable-beosthreads     use BeOS threads [default=no]"
74 74c53c2d Måns Rullgård
  echo "  --enable-pthreads        use pthreads [default=no]"
75 eb113804 Diego Biurrun
  echo "  --enable-w32threads      use Win32 threads [default=no]"
76 56a059ac Diego Biurrun
  echo "  --enable-x11grab         enable X11 grabbing [default=no]"
77 0a622b98 Måns Rullgård
  echo
78
  echo "External library support:"
79
  echo "  --enable-sunmlib         use Sun medialib [default=no]"
80 74c53c2d Måns Rullgård
  echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
81
  echo "                           and libraw1394 [default=no]"
82 e2745046 Måns Rullgård
  echo "  --enable-liba52          enable GPLed liba52 support [default=no]"
83
  echo "  --enable-liba52bin       open liba52.so.0 at runtime [default=no]"
84 8ac17293 Steve L'Homme
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
85 f5a756ef Diego Biurrun
  echo "  --enable-libamr-nb       enable libamr-nb floating point audio codec"
86
  echo "  --enable-libamr-wb       enable libamr-wb floating point audio codec"
87 e2745046 Måns Rullgård
  echo "  --enable-libfaac         enable FAAC support via libfaac [default=no]"
88
  echo "  --enable-libfaad         enable FAAD support via libfaad [default=no]"
89 06f32b26 Diego Biurrun
  echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [default=no]"
90 dc922953 Diego Biurrun
  echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
91 e2745046 Måns Rullgård
  echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [default=no]"
92 31235134 Diego Biurrun
  echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
93
  echo "                           native demuxer exists [default=no]"
94 ba5fd8c5 Diego Biurrun
  echo "  --enable-libogg          enable Ogg muxing via libogg [default=no]"
95 71757822 Diego Biurrun
  echo "  --enable-libtheora       enable Theora encoding via libtheora [default=no]"
96 e2745046 Måns Rullgård
  echo "  --enable-libvorbis       enable Vorbis en/decoding via libvorbis,"
97 31235134 Diego Biurrun
  echo "                           native implementations exist [default=no]"
98 1cc60c47 Diego Biurrun
  echo "  --enable-libx264         enable H.264 encoding via x264 [default=no]"
99
  echo "  --enable-libxvid         enable Xvid encoding via xvidcore,"
100 31235134 Diego Biurrun
  echo "                           native MPEG-4/Xvid encoder exists [default=no]"
101 74c53c2d Måns Rullgård
  echo ""
102
  echo "Advanced options (experts only):"
103
  echo "  --source-path=PATH       path to source code [$source_path]"
104
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
105 fac252f9 Måns Rullgård
  echo "  --cross-compile          assume a cross-compiler is used"
106 abcd6d60 Måns Rullgård
  echo "  --target-os=OS           compiler targets OS [$targetos]"
107 74c53c2d Måns Rullgård
  echo "  --cc=CC                  use C compiler CC [$cc]"
108
  echo "  --make=MAKE              use specified make [$make]"
109
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
110
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
111
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
112
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
113 cc6a90dd Guillaume Poirier
  echo "  --arch=ARCH              select architecture  [$arch]"
114 7c758d33 Diego Biurrun
  echo "  --cpu=CPU                selects the minimum cpu required (affects"
115
  echo "                           instruction selection, may crash on older CPUs)"
116 2b4c3615 Måns Rullgård
  echo "  --enable-powerpc-perf    enable performance report on PPC"
117 74c53c2d Måns Rullgård
  echo "                           (requires enabling PMC)"
118
  echo "  --disable-mmx            disable MMX usage"
119 1839e854 Siarhei Siamashka
  echo "  --disable-armv5te        disable armv5te usage"
120 edab3048 Måns Rullgård
  echo "  --disable-armv6          disable armv6 usage"
121 74c53c2d Måns Rullgård
  echo "  --disable-iwmmxt         disable iwmmxt usage"
122
  echo "  --disable-altivec        disable AltiVec usage"
123
  echo "  --disable-audio-oss      disable OSS audio support [default=no]"
124
  echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
125
  echo "  --disable-v4l            disable video4linux grabbing [default=no]"
126
  echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
127
  echo "  --disable-bktr           disable bktr video grabbing [default=no]"
128
  echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
129
  echo "  --disable-network        disable network support [default=no]"
130 0c7bb0e5 Luca Barbato
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
131 74c53c2d Måns Rullgård
  echo "  --disable-zlib           disable zlib [default=no]"
132
  echo "  --disable-vhook          disable video hooking support"
133
  echo "  --disable-debug          disable debugging symbols"
134
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
135
  echo "                           MPEG audio decoding [default=no]"
136 786b30af Diego Biurrun
  echo "  --disable-ffmpeg         disable ffmpeg build"
137 74c53c2d Måns Rullgård
  echo "  --disable-ffserver       disable ffserver build"
138
  echo "  --disable-ffplay         disable ffplay build"
139
  echo "  --enable-small           optimize for size instead of speed"
140
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
141
  echo "  --disable-encoder=NAME   disables encoder NAME"
142
  echo "  --enable-encoder=NAME    enables encoder NAME"
143
  echo "  --disable-decoder=NAME   disables decoder NAME"
144
  echo "  --enable-decoder=NAME    enables decoder NAME"
145
  echo "  --disable-encoders       disables all encoders"
146
  echo "  --disable-decoders       disables all decoders"
147 ff70e601 Måns Rullgård
  echo "  --disable-muxer=NAME     disables muxer NAME"
148
  echo "  --enable-muxer=NAME      enables muxer NAME"
149 74c53c2d Måns Rullgård
  echo "  --disable-muxers         disables all muxers"
150 ff70e601 Måns Rullgård
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
151
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
152 74c53c2d Måns Rullgård
  echo "  --disable-demuxers       disables all demuxers"
153 af9e7d18 Måns Rullgård
  echo "  --enable-parser=NAME     enables parser NAME"
154
  echo "  --disable-parser=NAME    disables parser NAME"
155
  echo "  --disable-parsers        disables all parsers"
156 cd61e407 Jason Millard
  echo "  --enable-bsf=NAME        enables bitstream filter NAME"
157
  echo "  --disable-bsf=NAME       disables bitstream filter NAME"
158
  echo "  --disable-bsfs           disables all bitstream filters"
159 c08fb000 Alex Beregszaszi
  echo "  --enable-protocol=NAME   enables protocol NAME"
160
  echo "  --disable-protocol=NAME  disables protocol NAME"
161
  echo "  --disable-protocols      disables all protocols"
162 0a622b98 Måns Rullgård
  echo
163
  echo "Developer options (useful when working on FFmpeg itself):"
164
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
165
  echo "  --disable-opts           disable compiler optimizations"
166
  echo "  --enable-extra-warnings  enable more compiler warnings"
167
  echo "  --disable-strip          disable stripping of executables and shared libraries"
168 74c53c2d Måns Rullgård
  echo ""
169
  echo "NOTE: Object files are built at the place where configure is launched."
170
  exit 1
171
}
172 cf9d24ad Dan Christiansen
173 57bd82d4 Måns Rullgård
log(){
174
    echo "$@" >>$logfile
175
}
176
177 720c69da Måns Rullgård
log_file(){
178 c8e9f801 Måns Rullgård
    log BEGIN $1
179
    cat -n $1 >>$logfile
180
    log END $1
181
}
182
183 2ba042a7 Måns Rullgård
echolog(){
184 c8e9f801 Måns Rullgård
    log "$@"
185 57bd82d4 Måns Rullgård
    echo "$@"
186 2ba042a7 Måns Rullgård
}
187
188
die(){
189
    echolog "$@"
190
    cat <<EOF
191
If you think configure made a mistake, make sure you are using the latest
192
version from SVN.  If the latest version fails, report the problem to the
193
ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
194
EOF
195 720c69da Måns Rullgård
    if enabled logging; then
196 2ba042a7 Måns Rullgård
        cat <<EOF
197
Include the log file "$logfile" produced by configure as this will help
198
solving the problem.
199
EOF
200
    else
201
cat <<EOF
202
Rerun configure with logging enabled (do not use --log=no), and include the
203
log this produces with your report.
204
EOF
205
    fi
206 57bd82d4 Måns Rullgård
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
207
    exit 1
208
}
209
210 904e48f1 Måns Rullgård
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
211 44161118 Måns Rullgård
toupper(){
212
    echo "$@" | tr '[a-z]' '[A-Z]'
213
}
214
215 4a5444db Måns Rullgård
tolower(){
216
    echo "$@" | tr '[A-Z]' '[a-z]'
217
}
218
219 a8d04fba Måns Rullgård
set_all(){
220
    value=$1
221
    shift
222
    for var in $*; do
223
        eval $var=$value
224
    done
225
}
226
227 799c9e9b Måns Rullgård
pushvar(){
228
    for var in $*; do
229
        eval level=\${${var}_level:=0}
230
        eval ${var}_${level}="\$$var"
231
        eval ${var}_level=$(($level+1))
232
    done
233
}
234
235
popvar(){
236
    for var in $*; do
237
        eval level=\${${var}_level:-0}
238
        test $level = 0 && continue
239
        eval level=$(($level-1))
240
        eval $var="\${${var}_${level}}"
241
        eval ${var}_level=$level
242
        eval unset ${var}_${level}
243
    done
244
}
245
246 a8d04fba Måns Rullgård
enable(){
247
    set_all yes $*
248
}
249
250
disable(){
251
    set_all no $*
252
}
253
254 57bd82d4 Måns Rullgård
enabled(){
255 44161118 Måns Rullgård
    eval test "x\$$1" = "xyes"
256
}
257
258 37970ebf Ramiro Polla
disabled(){
259
    eval test "x\$$1" = "xno"
260
}
261
262 44161118 Måns Rullgård
enabled_all(){
263
    for opt; do
264
        enabled $opt || return 1
265
    done
266
}
267
268 85bca2c5 Diego Biurrun
disabled_all(){
269
    for opt; do
270
        disabled $opt || return 1
271
    done
272
}
273
274 44161118 Måns Rullgård
enabled_any(){
275
    for opt; do
276
        enabled $opt && return 0
277
    done
278
}
279
280 85bca2c5 Diego Biurrun
disabled_any(){
281
    for opt; do
282
        disabled $opt && return 0
283
    done
284
}
285
286 30fd06be Måns Rullgård
check_deps(){
287
    for cfg; do
288 799c9e9b Måns Rullgård
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
289
        disabled ${cfg}_checking && continue
290
        enable ${cfg}_checking
291
292 30fd06be Måns Rullgård
        eval dep_all="\$${cfg}_deps"
293
        eval dep_any="\$${cfg}_deps_any"
294 799c9e9b Måns Rullgård
295
        pushvar cfg dep_all dep_any
296
        check_deps $dep_all $dep_any
297
        popvar cfg dep_all dep_any
298
299 30fd06be Måns Rullgård
        enabled_all $dep_all || disable $cfg
300
        enabled_any $dep_any || disable $cfg
301 799c9e9b Måns Rullgård
302
        disable ${cfg}_checking
303 30fd06be Måns Rullgård
    done
304
}
305
306 44161118 Måns Rullgård
print_config(){
307
    pfx=$1
308
    header=$2
309
    makefile=$3
310
    shift 3
311
    for cfg; do
312 3d907e22 Måns Rullgård
        ucname="`toupper $cfg`"
313 44161118 Måns Rullgård
        if enabled $cfg; then
314 3d907e22 Måns Rullgård
            echo "#define ${pfx}${ucname} 1" >> $header
315
            echo "#define ENABLE_${ucname} 1" >> $header
316
            echo "${pfx}${ucname}=yes" >> $makefile
317
        else
318
            echo "#define ENABLE_${ucname} 0" >> $header
319 44161118 Måns Rullgård
        fi
320
    done
321 57bd82d4 Måns Rullgård
}
322
323
flags_saved(){
324
    (: ${SAVE_CFLAGS?}) 2>/dev/null
325
}
326
327 dcd479c0 Måns Rullgård
save_flags(){
328 57bd82d4 Måns Rullgård
    flags_saved && return
329 dcd479c0 Måns Rullgård
    SAVE_CFLAGS="$CFLAGS"
330
    SAVE_LDFLAGS="$LDFLAGS"
331
    SAVE_extralibs="$extralibs"
332
}
333
334
restore_flags(){
335 f5d28d10 Måns Rullgård
    flags_saved || return
336 dcd479c0 Måns Rullgård
    CFLAGS="$SAVE_CFLAGS"
337
    LDFLAGS="$SAVE_LDFLAGS"
338
    extralibs="$SAVE_extralibs"
339
    unset SAVE_CFLAGS
340
    unset SAVE_LDFLAGS
341
    unset SAVE_extralibs
342
}
343
344
temp_cflags(){
345
    save_flags
346
    CFLAGS="$CFLAGS $*"
347
}
348
349
temp_ldflags(){
350
    save_flags
351
    LDFLAGS="$LDFLAGS $*"
352
}
353
354
temp_extralibs(){
355
    save_flags
356
    extralibs="$extralibs $*"
357
}
358
359 57bd82d4 Måns Rullgård
append(){
360
    var=$1
361
    shift
362
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
363
    eval "$var=\"\$$var $*\""
364
}
365
366
add_cflags(){
367
    append CFLAGS "$@"
368
}
369
370
add_ldflags(){
371
    append LDFLAGS "$@"
372
}
373
374
add_extralibs(){
375
    append extralibs "$@"
376
}
377
378 b0cfb663 Måns Rullgård
check_cmd(){
379 b3cb5d51 Måns Rullgård
    log "$@"
380 9b4f605c Måns Rullgård
    "$@" >>$logfile 2>&1
381 b0cfb663 Måns Rullgård
}
382
383 dcd479c0 Måns Rullgård
check_cc(){
384 57bd82d4 Måns Rullgård
    log check_cc "$@"
385
    cat >$TMPC
386 720c69da Måns Rullgård
    log_file $TMPC
387 b0cfb663 Måns Rullgård
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
388 57bd82d4 Måns Rullgård
}
389
390
check_cpp(){
391
    log check_cpp "$@"
392 dcd479c0 Måns Rullgård
    cat >$TMPC
393 720c69da Måns Rullgård
    log_file $TMPC
394 b0cfb663 Måns Rullgård
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
395 dcd479c0 Måns Rullgård
}
396
397
check_ld(){
398 57bd82d4 Måns Rullgård
    log check_ld "$@"
399 0607887f Måns Rullgård
    check_cc || return
400 3155a644 Måns Rullgård
    flags=''
401
    libs=''
402
    for f; do
403
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
404
    done
405
    check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
406 dcd479c0 Måns Rullgård
}
407
408
check_cflags(){
409 57bd82d4 Måns Rullgård
    log check_cflags "$@"
410
    check_cc "$@" <<EOF && add_cflags "$@"
411 dcd479c0 Måns Rullgård
int x;
412
EOF
413
}
414
415
check_ldflags(){
416 57bd82d4 Måns Rullgård
    log check_ldflags "$@"
417
    check_ld "$@" <<EOF && add_ldflags "$@"
418
int main(){
419
    return 0;
420
}
421 dcd479c0 Måns Rullgård
EOF
422
}
423
424
check_header(){
425 57bd82d4 Måns Rullgård
    log check_header "$@"
426 dcd479c0 Måns Rullgård
    header=$1
427
    shift
428 d8bc5f06 Måns Rullgård
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
429
    disable $var
430
    check_cpp "$@" <<EOF && enable $var
431 dcd479c0 Måns Rullgård
#include <$header>
432
int x;
433
EOF
434
}
435
436
check_func(){
437 57bd82d4 Måns Rullgård
    log check_func "$@"
438 dcd479c0 Måns Rullgård
    func=$1
439
    shift
440 d8bc5f06 Måns Rullgård
    disable $func
441
    check_ld "$@" <<EOF && enable $func
442 dcd479c0 Måns Rullgård
extern int $func();
443
int main(){
444
    $func();
445
}
446
EOF
447
}
448
449 f8d7b072 Måns Rullgård
check_func2(){
450
    log check_func2 "$@"
451
    headers=$1
452
    func=$2
453
    shift 2
454
    disable $func
455
    incs=""
456
    for hdr in $headers; do
457
        incs="$incs
458
#include <$hdr>"
459
    done
460
    check_ld "$@" <<EOF && enable $func
461
$incs
462
int main(){
463
    (void) $func;
464
    return 0;
465
}
466
EOF
467
}
468
469 57bd82d4 Måns Rullgård
check_lib(){
470
    log check_lib "$@"
471
    header="$1"
472
    func="$2"
473
    shift 2
474 fcfcde17 Måns Rullgård
    temp_extralibs "$@"
475
    check_header $header && check_func $func && add_extralibs "$@"
476
    err=$?
477
    restore_flags
478
    return $err
479 57bd82d4 Måns Rullgård
}
480
481 f8d7b072 Måns Rullgård
check_lib2(){
482
    log check_lib2 "$@"
483
    headers="$1"
484
    func="$2"
485
    shift 2
486
    temp_extralibs "$@"
487
    check_func2 "$headers" $func && add_extralibs "$@"
488
    err=$?
489
    restore_flags
490
    return $err
491
}
492
493 dcd479c0 Måns Rullgård
check_exec(){
494 90be59ef Ramiro Polla
    check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
495 57bd82d4 Måns Rullgård
}
496
497 7dfef245 Måns Rullgård
check_exec_crash(){
498
    code=`cat`
499
500
    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
501
    # are safe but may not be available everywhere.  Thus we use
502
    # raise(SIGTERM) instead.  The check is run in a subshell so we
503
    # can redirect the "Terminated" message from the shell.  SIGBUS
504
    # is not defined by standard C so it is used conditionally.
505
506
    (check_exec "$@") >>$logfile 2>&1 <<EOF
507
#include <signal.h>
508
static void sighandler(int sig){
509
    raise(SIGTERM);
510
}
511
int main(){
512
    signal(SIGILL, sighandler);
513
    signal(SIGFPE, sighandler);
514
    signal(SIGSEGV, sighandler);
515
#ifdef SIGBUS
516
    signal(SIGBUS, sighandler);
517
#endif
518
    { $code }
519
}
520
EOF
521
}
522
523 57bd82d4 Måns Rullgård
require(){
524
    name="$1"
525
    header="$2"
526
    func="$3"
527
    shift 3
528
    check_lib $header $func "$@" || die "ERROR: $name not found"
529 dcd479c0 Måns Rullgård
}
530
531 f8d7b072 Måns Rullgård
require2(){
532
    name="$1"
533
    headers="$2"
534
    func="$3"
535
    shift 3
536
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
537
}
538
539 eea50282 Måns Rullgård
check_foo_config(){
540
    cfg=$1
541
    pkg=$2
542
    header=$3
543
    func=$4
544
    shift 4
545
    disable $cfg
546
    check_cmd ${pkg}-config --version
547
    err=$?
548
    if test "$err" = 0; then
549
        temp_cflags `${pkg}-config --cflags`
550
        temp_extralibs `${pkg}-config --libs`
551
        check_lib "$@" $header $func && enable $cfg
552
    fi
553
    return $err
554
}
555
556 c505dd31 Måns Rullgård
apply(){
557
    file=$1
558
    shift
559
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
560
}
561
562 c88f5d72 Måns Rullgård
CONFIG_LIST='
563
    encoders
564
    decoders
565
    parsers
566 cd61e407 Jason Millard
    bsfs
567 c88f5d72 Måns Rullgård
    muxers
568
    demuxers
569
    audio_beos
570
    audio_oss
571
    avisynth
572
    beos_netserver
573
    bktr
574
    dc1394
575
    dv1394
576
    ffmpeg
577
    ffplay
578
    ffserver
579
    gpl
580 ecfc4f44 Måns Rullgård
    gprof
581 c88f5d72 Måns Rullgård
    ipv6
582 7bc5f2a8 Diego Biurrun
    liba52
583 f8904fd9 Diego Biurrun
    liba52bin
584 f5a756ef Diego Biurrun
    libamr
585
    libamr_nb
586
    libamr_wb
587 2eed5a46 Diego Biurrun
    libfaac
588
    libfaad
589
    libfaadbin
590 c88f5d72 Måns Rullgård
    libgsm
591 6ebe07fb Diego Biurrun
    libmp3lame
592 c88f5d72 Måns Rullgård
    libnut
593
    libogg
594 150d2772 Diego Biurrun
    libtheora
595 c88f5d72 Måns Rullgård
    libvorbis
596 1cc60c47 Diego Biurrun
    libx264
597
    libxvid
598 c88f5d72 Måns Rullgård
    memalign_hack
599
    mpegaudio_hp
600
    network
601 2b4c3615 Måns Rullgård
    powerpc_perf
602 c88f5d72 Måns Rullgård
    pp
603
    protocols
604 bd2216e4 Måns Rullgård
    small
605 c88f5d72 Måns Rullgård
    swscaler
606
    vhook
607 afde41b4 Måns Rullgård
    v4l
608
    v4l2
609 56a059ac Diego Biurrun
    x11grab
610 c88f5d72 Måns Rullgård
    zlib
611
'
612
613 8eee7025 Diego Biurrun
THREADS_LIST='
614
    beosthreads
615
    pthreads
616
    w32threads
617
'
618
619 3f5b56e5 Måns Rullgård
ARCH_LIST='
620
    alpha
621
    armv4l
622
    bfin
623
    ia64
624
    m68k
625
    mips
626
    parisc
627
    powerpc
628
    s390
629
    sh4
630
    sparc
631
    sparc64
632
    x86
633
    x86_32
634
    x86_64
635
'
636
637
ARCH_EXT_LIST='
638 1ac9331a Måns Rullgård
    altivec
639
    armv5te
640 edab3048 Måns Rullgård
    armv6
641 3f5b56e5 Måns Rullgård
    iwmmxt
642
    mmi
643
    mmx
644 9eeed841 Måns Rullgård
    ssse3
645 3f5b56e5 Måns Rullgård
'
646
647
HAVE_LIST="
648
    $ARCH_EXT_LIST
649
    $THREADS_LIST
650
    altivec_h
651 c9fdab0d François Revol
    arpa_inet_h
652 c88f5d72 Måns Rullgård
    byteswap_h
653 1ac9331a Måns Rullgård
    cmov
654 e16e49ac Ramiro Polla
    conio_h
655 c88f5d72 Måns Rullgård
    dcbzl
656 f8aa696f Diego Biurrun
    dev_bktr_ioctl_bt848_h
657
    dev_bktr_ioctl_meteor_h
658
    dev_ic_bt8xx_h
659
    dev_video_meteor_ioctl_meteor_h
660
    dev_video_bktr_ioctl_bt848_h
661 18b67ae5 Måns Rullgård
    dlfcn_h
662 c88f5d72 Måns Rullgård
    dlopen
663 245626d0 Diego Biurrun
    ebp_available
664
    ebx_available
665 c2a29455 Aurelien Jacobs
    fast_64bit
666 7073e9fc Måns Rullgård
    fast_cmov
667 7b829d2a Ramiro Polla
    fast_unaligned
668 9d99cc5a Måns Rullgård
    fork
669 c88f5d72 Måns Rullgård
    freetype2
670 7495c306 Ramiro Polla
    GetProcessTimes
671 66be5b45 Ramiro Polla
    getrusage
672 c88f5d72 Måns Rullgård
    imlib2
673 2e1913b1 Måns Rullgård
    inet_aton
674 c88f5d72 Måns Rullgård
    lrintf
675 f8aa696f Diego Biurrun
    machine_ioctl_bt848_h
676
    machine_ioctl_meteor_h
677 c88f5d72 Måns Rullgård
    malloc_h
678
    memalign
679 6ffa87d3 Ramiro Polla
    mkstemp
680 c88f5d72 Måns Rullgård
    mlib
681 9cafbd6c Måns Rullgård
    ppc64
682 c88f5d72 Måns Rullgård
    sdl
683
    sdl_video_size
684 deb29777 Måns Rullgård
    soundcard_h
685 b0c858d8 François Revol
    sys_poll_h
686 deb29777 Måns Rullgård
    sys_soundcard_h
687 e16e49ac Ramiro Polla
    termios_h
688 b265431e Måns Rullgård
    threads
689 0cb78cef Diego Biurrun
"
690 44161118 Måns Rullgård
691 520cc7f1 Måns Rullgård
CMDLINE_SELECT="
692 3f5b56e5 Måns Rullgård
    $ARCH_EXT_LIST
693 520cc7f1 Måns Rullgård
    $CONFIG_LIST
694 8eee7025 Diego Biurrun
    $THREADS_LIST
695 520cc7f1 Måns Rullgård
    debug
696
    extra_warnings
697
    shared
698
    static
699
"
700
701 912f3148 Diego Biurrun
# code dependency declarations
702
703 9eeed841 Måns Rullgård
# architecture extensions
704
altivec_deps="powerpc"
705
armv5te_deps="armv4l"
706
armv6_deps="armv4l"
707
iwmmxt_deps="armv4l"
708
mmi_deps="mips"
709
mmx_deps="x86"
710
ssse3_deps="x86"
711
712 912f3148 Diego Biurrun
# decoders / encoders
713 33a0dd37 Kostya Shishkov
dxa_decoder_deps="zlib"
714 30fd06be Måns Rullgård
flashsv_decoder_deps="zlib"
715 773be23a Aurelien Jacobs
flashsv_encoder_deps="zlib"
716 4a815a7f Diego Biurrun
flv_decoder_deps="h263_decoder"
717 df495dbd Aurelien Jacobs
h263_decoder_deps="h263_parser mpeg4video_parser"
718 4a815a7f Diego Biurrun
h263i_decoder_deps="h263_decoder"
719 26b4fe82 Aurelien Jacobs
h264_decoder_deps="h264_parser"
720 30fd06be Måns Rullgård
mpeg_xvmc_decoder_deps="xvmc"
721 4a815a7f Diego Biurrun
mpeg4_decoder_deps="h263_decoder"
722
msmpeg4v1_decoder_deps="h263_decoder"
723
msmpeg4v2_decoder_deps="h263_decoder"
724
msmpeg4v3_decoder_deps="h263_decoder"
725 30fd06be Måns Rullgård
png_decoder_deps="zlib"
726
png_encoder_deps="zlib"
727 e2525c6f Aurelien Jacobs
svq3_decoder_deps="h264_parser"
728 4a815a7f Diego Biurrun
vc1_decoder_deps="h263_decoder"
729
wmv1_decoder_deps="h263_decoder"
730
wmv2_decoder_deps="h263_decoder"
731
wmv3_decoder_deps="h263_decoder"
732 30fd06be Måns Rullgård
zmbv_decoder_deps="zlib"
733
zmbv_encoder_deps="zlib"
734
735 912f3148 Diego Biurrun
# external libraries
736 30fd06be Måns Rullgård
mpeg4aac_decoder_deps="libfaad"
737 7bc5f2a8 Diego Biurrun
liba52_decoder_deps="liba52"
738 f5a756ef Diego Biurrun
libamr_nb_decoder_deps="libamr_nb"
739
libamr_nb_encoder_deps="libamr_nb"
740
libamr_wb_decoder_deps="libamr_wb"
741
libamr_wb_encoder_deps="libamr_wb"
742 c9171a83 Diego Biurrun
libfaac_encoder_deps="libfaac"
743 69ddbd1d Diego Biurrun
libfaad_decoder_deps="libfaad"
744 299c77d5 Måns Rullgård
libgsm_decoder_deps="libgsm"
745
libgsm_encoder_deps="libgsm"
746 8ffed8d8 Måns Rullgård
libgsm_ms_decoder_deps="libgsm"
747
libgsm_ms_encoder_deps="libgsm"
748 1cc60c47 Diego Biurrun
libmp3lame_encoder_deps="libmp3lame"
749 150d2772 Diego Biurrun
libtheora_encoder_deps="libtheora"
750 b0caf888 Diego Biurrun
libvorbis_decoder_deps="libvorbis"
751
libvorbis_encoder_deps="libvorbis"
752 1cc60c47 Diego Biurrun
libx264_encoder_deps="libx264"
753
libxvid_encoder_deps="libxvid"
754 30fd06be Måns Rullgård
755 912f3148 Diego Biurrun
# demuxers / muxers
756 03a76ba9 Diego Biurrun
ac3_demuxer_deps="ac3_parser"
757 30fd06be Måns Rullgård
audio_demuxer_deps_any="audio_oss audio_beos"
758
audio_muxer_deps_any="audio_oss audio_beos"
759
dc1394_demuxer_deps="dc1394"
760
dv1394_demuxer_deps="dv1394"
761 d7c59247 Diego Biurrun
libnut_demuxer_deps="libnut"
762
libnut_muxer_deps="libnut"
763 4bd8e17c Aurelien Jacobs
mp3_demuxer_deps="mpegaudio_parser"
764 30fd06be Måns Rullgård
ogg_muxer_deps="libogg"
765
redir_demuxer_deps="network"
766 47b515bf Alex Beregszaszi
rtp_muxer_deps="network mpegts_demuxer"
767 c08fb000 Alex Beregszaszi
rtsp_demuxer_deps="rtp_protocol rtp_muxer"
768
sdp_demuxer_deps="rtsp_demuxer"
769 afde41b4 Måns Rullgård
v4l2_demuxer_deps="v4l2"
770 3af6d5cf Diego Biurrun
video_grab_bktr_demuxer_deps="bktr"
771
video_grab_v4l_demuxer_deps="v4l"
772 30fd06be Måns Rullgård
x11_grab_device_demuxer_deps="x11grab"
773
774 912f3148 Diego Biurrun
# protocols
775 c08fb000 Alex Beregszaszi
http_protocol_deps="network"
776
rtp_protocol_deps="udp_protocol"
777
tcp_protocol_deps="network"
778
udp_protocol_deps="network"
779
780 912f3148 Diego Biurrun
# programs
781 fa859b4d Måns Rullgård
ffplay_deps="sdl"
782 c08fb000 Alex Beregszaszi
ffserver_deps="muxers rtp_protocol"
783 a2830dca Måns Rullgård
784 912f3148 Diego Biurrun
785 0f3cb305 Fabrice Bellard
# set temporary file name
786 57514323 Zdenek Kabelac
if test ! -z "$TMPDIR" ; then
787 0f3cb305 Fabrice Bellard
    TMPDIR1="${TMPDIR}"
788 57514323 Zdenek Kabelac
elif test ! -z "$TEMPDIR" ; then
789 0f3cb305 Fabrice Bellard
    TMPDIR1="${TEMPDIR}"
790 3d204385 Nick Kurshev
else
791 0f3cb305 Fabrice Bellard
    TMPDIR1="/tmp"
792 3d204385 Nick Kurshev
fi
793
794 0f3cb305 Fabrice Bellard
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
795
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
796 f3ec2d46 Slavik Gnatenko
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
797 0f3cb305 Fabrice Bellard
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
798
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
799
800 de6d9b64 Fabrice Bellard
# default parameters
801 8a608357 Måns Rullgård
802 720c69da Måns Rullgård
logging="yes"
803 2ba042a7 Måns Rullgård
logfile="config.err"
804 8a608357 Måns Rullgård
805
# installation paths
806 2266e085 Diego Biurrun
PREFIX="/usr/local"
807
libdir='${PREFIX}/lib'
808 84c22efd Diego Biurrun
shlibdir="$libdir"
809 2266e085 Diego Biurrun
incdir='${PREFIX}/include/ffmpeg'
810
mandir='${PREFIX}/man'
811
bindir='${PREFIX}/bin'
812 8a608357 Måns Rullgård
813
# toolchain
814 0f3cb305 Fabrice Bellard
cross_prefix=""
815 fac252f9 Måns Rullgård
cross_compile="no"
816 de6d9b64 Fabrice Bellard
cc="gcc"
817
ar="ar"
818 be7109c1 Michael Niedermayer
ranlib="ranlib"
819 4a908fbc Alex Beregszaszi
make="make"
820 0f3cb305 Fabrice Bellard
strip="strip"
821 8a608357 Måns Rullgård
asmalign_pot="unknown"
822
823
# machine
824 cc6a90dd Guillaume Poirier
arch=`uname -m`
825 38d0a8aa Guillaume Poirier
cpu="generic"
826 8a608357 Måns Rullgård
827
# OS
828 b9663405 Diego Biurrun
targetos=$(tolower $(uname -s))
829 8a608357 Måns Rullgård
830
# non-library system interfaces
831
audio_oss="yes"
832 3eac5c63 Måns Rullgård
bktr="yes"
833 8aa3ee32 Max Krasnyansky
dv1394="yes"
834 afde41b4 Måns Rullgård
v4l2="yes"
835
v4l="yes"
836 8a608357 Måns Rullgård
837
# libraries
838
zlib="yes"
839
840
# configurable options
841 cddf3f45 Glenn Maynard
debug="yes"
842 65d1bea2 Michel Bardiaux
dostrip="yes"
843 8a608357 Måns Rullgård
ffmpeg="yes"
844
ffplay="yes"
845
ffserver="yes"
846
gpl="no"
847
ipv6="yes"
848 5af4e0cc Måns Rullgård
shared="no"
849
static="yes"
850 8a608357 Måns Rullgård
memalign_hack="no"
851 1eb2212e Fabrice Bellard
mpegaudio_hp="yes"
852 8a608357 Måns Rullgård
network="yes"
853
optimize="yes"
854
protocols="yes"
855
vhook="default"
856
857
# build settings
858 baa3a937 Måns Rullgård
SHFLAGS='-shared -Wl,-soname,$@'
859 cab3ef82 Diego Biurrun
VHOOKSHFLAGS='$(SHFLAGS)'
860 80581e98 Michael Niedermayer
LIBOBJFLAGS=""
861 5c0e9479 Måns Rullgård
FFLDFLAGS=
862 e240ee67 Luca Barbato
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
863 c536cb09 Diego Biurrun
FFSERVERLDFLAGS=-Wl,-E
864 f39e56a8 Jacob Meuser
LDCONFIG="ldconfig"
865 f3ec2d46 Slavik Gnatenko
LIBPREF="lib"
866
LIBSUF=".a"
867 4bdd05e7 Diego Biurrun
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
868 f3ec2d46 Slavik Gnatenko
SLIBPREF="lib"
869
SLIBSUF=".so"
870 4bdd05e7 Diego Biurrun
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
871 b29bddab Diego Biurrun
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
872
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
873 951bf3e6 Fabrice Bellard
EXESUF=""
874 eb94aca9 Charles Yates
BUILDSUF=""
875 d4596ae3 Diego Biurrun
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
876 ef0bc4c9 François Revol
877 c597172e Måns Rullgård
# find source path
878
source_path="`dirname \"$0\"`"
879
source_path_used="yes"
880
if test -z "$source_path" -o "$source_path" = "." ; then
881
    source_path="`pwd`"
882
    source_path_used="no"
883
else
884
    source_path="`cd \"$source_path\"; pwd`"
885
    echo "$source_path" | grep -q '[[:blank:]]' &&
886
      die "Out of tree builds are impossible with whitespace in source path."
887
fi
888
889
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
890
    show_help
891
fi
892
893
FFMPEG_CONFIGURATION="$@"
894
895 facbea95 Aurelien Jacobs
ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
896
DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
897
PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
898
BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libavcodec/allcodecs.c"`
899
MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
900
DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
901
PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`
902 c597172e Måns Rullgård
903 cd61e407 Jason Millard
enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST $PROTOCOL_LIST $BSF_LIST
904 d3ea5692 Måns Rullgård
enable $ARCH_EXT_LIST
905 c597172e Måns Rullgård
906
die_unknown(){
907
    echo "Unknown option \"$1\"."
908
    echo "See $0 --help for available options."
909
    exit 1
910
}
911
912
for opt do
913
  optval="${opt#*=}"
914
  case "$opt" in
915
  --log)
916
  ;;
917
  --log=*) logging="$optval"
918
  ;;
919
  --prefix=*) PREFIX="$optval"
920
  ;;
921
  --libdir=*) libdir="$optval"
922
  ;;
923
  --shlibdir=*) shlibdir="$optval"
924
  ;;
925
  --incdir=*) incdir="$optval"
926
  ;;
927
  --mandir=*) mandir="$optval"
928
  ;;
929
  --source-path=*) source_path="$optval"
930
  ;;
931
  --cross-prefix=*) cross_prefix="$optval"
932
  ;;
933
  --cross-compile) cross_compile="yes"
934
  ;;
935
  --target-os=*) targetos="$optval"
936
  ;;
937
  --cc=*) cc="$optval"
938
  ;;
939
  --make=*) make="$optval"
940
  ;;
941
  --extra-cflags=*) add_cflags "$optval"
942
  ;;
943
  --extra-ldflags=*) add_ldflags "$optval"
944
  ;;
945
  --extra-libs=*) add_extralibs "$optval"
946
  ;;
947
  --build-suffix=*) BUILDSUF="$optval"
948
  ;;
949
  --arch=*) arch="$optval"
950
  ;;
951
  --cpu=*) cpu="$optval"
952
  ;;
953
  --disable-opts) optimize="no"
954
  ;;
955
  --enable-sunmlib) mlib="yes"
956
  ;;
957
  --disable-strip) dostrip="no"
958
  ;;
959
  --disable-encoders) disable $ENCODER_LIST
960
  ;;
961
  --disable-decoders) disable $DECODER_LIST
962
  ;;
963
  --disable-muxers) disable $MUXER_LIST
964
  ;;
965
  --disable-demuxers) disable $DEMUXER_LIST
966
  ;;
967
  --disable-parsers) disable $PARSER_LIST
968
  ;;
969 cd61e407 Jason Millard
  --disable-bsfs) disable $BSF_LIST
970
  ;;
971 c08fb000 Alex Beregszaszi
  --disable-protocols) disable $PROTOCOL_LIST
972
  ;;
973 c597172e Måns Rullgård
  --enable-*=*|--disable-*=*)
974
  eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
975
  case "$thing" in
976 cd61e407 Jason Millard
      encoder|decoder|muxer|demuxer|parser|bsf|protocol) $action ${optval}_${thing} ;;
977 c597172e Måns Rullgård
      *) die_unknown "$opt" ;;
978
  esac
979
  ;;
980
  --enable-?*|--disable-?*)
981
  eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
982
  echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
983
  $action $option
984
  ;;
985
  --help) show_help
986
  ;;
987
  *)
988
  die_unknown $opt
989
  ;;
990
  esac
991
done
992
993 270739bb Måns Rullgård
case "$arch" in
994
  i386|i486|i586|i686|i86pc|BePC)
995
    arch="x86_32"
996 7b829d2a Ramiro Polla
    enable fast_unaligned
997 270739bb Måns Rullgård
  ;;
998
  x86_64|amd64)
999
    arch="x86_32"
1000 7b829d2a Ramiro Polla
    enable fast_unaligned
1001 270739bb Måns Rullgård
    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
1002
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
1003
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
1004
        arch="x86_64"
1005 c2a29455 Aurelien Jacobs
        enable fast_64bit
1006 270739bb Måns Rullgård
      fi
1007
    fi
1008
  ;;
1009
  # armv4l is a subset of armv[567]*l
1010
  arm|armv[4567]*l)
1011
    arch="armv4l"
1012
  ;;
1013
  alpha)
1014
    arch="alpha"
1015 c2a29455 Aurelien Jacobs
    enable fast_64bit
1016 270739bb Måns Rullgård
  ;;
1017 c2a29455 Aurelien Jacobs
  "Power Macintosh"|ppc|powerpc)
1018 270739bb Måns Rullgård
    arch="powerpc"
1019
  ;;
1020 c2a29455 Aurelien Jacobs
  ppc64)
1021
    arch="powerpc"
1022
    enable fast_64bit
1023
  ;;
1024 270739bb Måns Rullgård
  mips|mipsel|IP*)
1025
    arch="mips"
1026
  ;;
1027
  sun4u|sparc64)
1028
    arch="sparc64"
1029 c2a29455 Aurelien Jacobs
    enable fast_64bit
1030 270739bb Måns Rullgård
  ;;
1031
  sparc)
1032
    arch="sparc"
1033
  ;;
1034
  sh4)
1035
    arch="sh4"
1036
  ;;
1037 c2a29455 Aurelien Jacobs
  parisc)
1038
    arch="parisc"
1039
  ;;
1040
  parisc64)
1041 270739bb Måns Rullgård
    arch="parisc"
1042 c2a29455 Aurelien Jacobs
    enable fast_64bit
1043 270739bb Måns Rullgård
  ;;
1044
  s390|s390x)
1045
    arch="s390"
1046
  ;;
1047
  m68k)
1048
    arch="m68k"
1049
  ;;
1050
  ia64)
1051
    arch="ia64"
1052 c2a29455 Aurelien Jacobs
    enable fast_64bit
1053 270739bb Måns Rullgård
  ;;
1054
  bfin)
1055
    arch="bfin"
1056
  ;;
1057
  *)
1058
    arch="unknown"
1059
  ;;
1060
esac
1061
1062 9eeed841 Måns Rullgård
enable $arch
1063
enabled_any x86_32 x86_64 && enable x86
1064
enabled     sparc64       && enable sparc
1065
1066 ef0bc4c9 François Revol
# OS specific
1067 c597172e Måns Rullgård
osextralibs="-lm"
1068 ced75d92 Diego Biurrun
case $targetos in
1069 4a5444db Måns Rullgård
  beos|haiku|zeta)
1070 74cec57d François Revol
    PREFIX="$HOME/config"
1071 d474299a Måns Rullgård
    # helps building libavcodec
1072
    add_cflags "-DPIC -fomit-frame-pointer"
1073
    # 3 gcc releases known for BeOS, each with ugly bugs
1074
    gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1075
    case "$gcc_version" in
1076
      2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1077
        mmx="no"
1078
        ;;
1079
      *20010315*) echo "BeBits gcc"
1080
        add_cflags "-fno-expensive-optimizations"
1081
        ;;
1082
    esac
1083 74cec57d François Revol
    LDCONFIG="echo ignoring ldconfig"
1084 d474299a Måns Rullgård
    SHFLAGS=-nostart
1085
    # disable Linux things
1086
    dv1394="no"
1087
    # enable BeOS things
1088 c597172e Måns Rullgård
    disabled audio_beos || enable_audio_beos
1089 d474299a Måns Rullgård
    # no need for libm, but the inet stuff
1090
    # Check for BONE
1091 74cec57d François Revol
    # XXX: actually should check for NOT net_server
1092 d474299a Måns Rullgård
    if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
1093 c597172e Måns Rullgård
        osextralibs="-lbind -lsocket"
1094 d474299a Måns Rullgård
    else
1095
        beos_netserver="yes"
1096 c597172e Måns Rullgård
        osextralibs="-lnet"
1097 d474299a Måns Rullgård
    fi ;;
1098 4a5444db Måns Rullgård
  sunos)
1099 d474299a Måns Rullgård
    dv1394="no"
1100
    FFLDFLAGS=""
1101
    FFSERVERLDFLAGS=""
1102
    SHFLAGS="-shared -Wl,-h,\$@"
1103
    add_extralibs "-lsocket -lnsl"
1104
    ;;
1105 4a5444db Måns Rullgård
  netbsd)
1106 d474299a Måns Rullgård
    dv1394="no"
1107
    add_extralibs "-lossaudio"
1108
    ;;
1109 4a5444db Måns Rullgård
  openbsd)
1110 d474299a Måns Rullgård
    dv1394="no"
1111
    need_memalign="no"
1112
    LIBOBJFLAGS="\$(PIC)"
1113
    LDCONFIG="ldconfig -m \$(shlibdir)"
1114
    SHFLAGS='-shared'
1115
    SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
1116
    SLIBNAME_WITH_VERSION='$(SLIBNAME)'
1117
    SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
1118
    add_extralibs "-lossaudio"
1119
    ;;
1120 4a5444db Måns Rullgård
  freebsd)
1121 d474299a Måns Rullgård
    dv1394="no"
1122
    need_memalign="no"
1123
    add_cflags "-pthread"
1124
    ;;
1125 4a5444db Måns Rullgård
  gnu/kfreebsd)
1126 d474299a Måns Rullgård
    dv1394="no"
1127
    add_cflags "-pthread"
1128
    ;;
1129 4a5444db Måns Rullgård
  bsd/os)
1130 d474299a Måns Rullgård
    dv1394="no"
1131 c597172e Måns Rullgård
    osextralibs="-lpoll -lgnugetopt -lm"
1132 d474299a Måns Rullgård
    strip="strip -d"
1133
    ;;
1134 4a5444db Måns Rullgård
  darwin)
1135 d474299a Måns Rullgård
    dv1394="no"
1136
    need_memalign="no"
1137
    SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
1138
    VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
1139 c597172e Måns Rullgård
    osextralibs=""
1140 d474299a Måns Rullgård
    strip="strip -x"
1141
    FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1142
    SLIBSUF=".dylib"
1143
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
1144
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
1145
    FFSERVERLDFLAGS=-Wl,-bind_at_load
1146
    ;;
1147 4a5444db Måns Rullgård
  mingw32*)
1148 91c5172d Diego Biurrun
    targetos=mingw32
1149 5880d5b5 Ramiro Polla
    shlibdir="$bindir"
1150 4ec9ec81 Måns Rullgård
    dv1394="no"
1151 1bdf0fe7 Ramiro Polla
    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil'
1152
    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lswscale$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1153 4ec9ec81 Måns Rullgård
    ffserver="no"
1154
    network="no"
1155
    SLIBPREF=""
1156
    SLIBSUF=".dll"
1157
    EXESUF=".exe"
1158
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1159
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1160
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
1161
    SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
1162 d205abe9 Zuxy Meng
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base"
1163 124bed6f Alex Beregszaszi
    enabled network && add_extralibs -lws2_32
1164 d474299a Måns Rullgård
    ;;
1165 4a5444db Måns Rullgård
  cygwin*)
1166 ced75d92 Diego Biurrun
    targetos=cygwin
1167 d474299a Måns Rullgård
    shlibdir="$bindir"
1168
    dv1394="no"
1169 41d5a86a Víctor Paesa
    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1170
    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1171
    if enabled swscaler; then
1172
        VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1173
        VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1174
    fi
1175 c597172e Måns Rullgård
    osextralibs=""
1176 d474299a Måns Rullgård
    EXESUF=".exe"
1177
    SLIBPREF="cyg"
1178
    SLIBSUF=".dll"
1179
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1180
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1181 d205abe9 Zuxy Meng
    SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a -Wl,--enable-auto-image-base'
1182 d474299a Måns Rullgård
    ;;
1183 4a5444db Måns Rullgård
  linux)
1184 d474299a Måns Rullgård
    LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
1185
    ;;
1186 4a5444db Måns Rullgård
  irix*)
1187 ced75d92 Diego Biurrun
    targetos=irix
1188 d474299a Måns Rullgård
    ranlib="echo ignoring ranlib"
1189
    ;;
1190
  *)
1191
    targetos="${targetos}-UNKNOWN"
1192
    ;;
1193 ef0bc4c9 François Revol
esac
1194 de6d9b64 Fabrice Bellard
1195 c597172e Måns Rullgård
add_extralibs $osextralibs
1196 de6d9b64 Fabrice Bellard
1197 e3c00e34 Diego Biurrun
if ! disabled logging ; then
1198 90be59ef Ramiro Polla
    enabled logging || logfile="$logging"
1199 57bd82d4 Måns Rullgård
    echo "# $0 $@" >$logfile
1200
    set >>$logfile
1201 2ba042a7 Måns Rullgård
else
1202
    logfile=/dev/null
1203 57bd82d4 Måns Rullgård
fi
1204 e89b8b0a Diego Biurrun
1205 28d8e661 Diego Biurrun
# Combine FFLDFLAGS and the LDFLAGS environment variable.
1206
LDFLAGS="$FFLDFLAGS $LDFLAGS"
1207 e89b8b0a Diego Biurrun
1208 fac252f9 Måns Rullgård
test -n "$cross_prefix" && cross_compile=yes
1209 1ea46bed Måns Rullgård
cc="${cross_prefix}${cc}"
1210
ar="${cross_prefix}${ar}"
1211
ranlib="${cross_prefix}${ranlib}"
1212
strip="${cross_prefix}${strip}"
1213
1214 320d060a Diego Biurrun
# we need to build at least one lib type
1215 5af4e0cc Måns Rullgård
if disabled_all static shared; then
1216 320d060a Diego Biurrun
    cat <<EOF
1217
At least one library type must be built.
1218
Specify --enable-static to build the static libraries or --enable-shared to
1219
build the shared libraries as well. To only build the shared libraries specify
1220
--disable-static in addition to --enable-shared.
1221
EOF
1222
    exit 1;
1223
fi
1224
1225 ddf50e4c Ramiro Polla
if disabled libogg; then
1226
    enabled libtheora && die "libogg must be enabled to enable libtheora."
1227
    enabled libvorbis && die "libogg must be enabled to enable libvorbis."
1228 5c5dea3f Nilesh Bansal
fi
1229
1230 a2234ceb Ramiro Polla
if enabled_any libfaad libfaadbin ; then
1231
    if check_header faad.h; then
1232
        check_cc << EOF
1233
#include <faad.h>
1234
#ifndef FAAD2_VERSION
1235
ok faad1
1236
#endif
1237
int main( void ) { return 0; }
1238
EOF
1239
        test $? = 0 && enable libfaad2
1240
    else
1241 ff3dac65 Diego Biurrun
        die "FAAD test failed."
1242 a2234ceb Ramiro Polla
    fi
1243
fi
1244
1245
1246 47f9cc15 Diego Biurrun
if disabled gpl ; then
1247 54118497 Ramiro Polla
    die_gpl_disabled(){
1248
        name=$1
1249
        shift
1250
        enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1251
    }
1252
    die_gpl_disabled "The Postprocessing code" pp
1253 7bc5f2a8 Diego Biurrun
    die_gpl_disabled "liba52"                  liba52
1254 1cc60c47 Diego Biurrun
    die_gpl_disabled "libx264"                 libx264
1255
    die_gpl_disabled "libxvidcore"             libxvid
1256 54118497 Ramiro Polla
    die_gpl_disabled "FAAD2"                   libfaad2
1257
    die_gpl_disabled "The X11 grabber"         x11grab
1258
    die_gpl_disabled "The software scaler"     swscaler
1259 ebb810d9 Ramiro Polla
fi
1260 b2e3c528 Michael Niedermayer
1261 9eeed841 Måns Rullgård
check_deps $ARCH_EXT_LIST
1262 0f3cb305 Fabrice Bellard
1263 5d323602 Måns Rullgård
test -z "$need_memalign" && need_memalign="$mmx"
1264
1265 cf9d24ad Dan Christiansen
#Darwin CC versions
1266 75388c74 Michael Niedermayer
needmdynamicnopic="no"
1267 ced75d92 Diego Biurrun
if test $targetos = darwin; then
1268 b2924696 Roman Shaposhnik
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1269 30a3e5d4 Nigel Pearson
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1270 cf9d24ad Dan Christiansen
    else
1271 26c1b3be Diego Biurrun
        add_cflags "-no-cpp-precomp -pipe"
1272
        check_cflags "-force_cpusubtype_ALL"
1273
        check_cflags "-Wno-sign-compare"
1274
        disabled shared && needmdynamicnopic="yes"
1275 cf9d24ad Dan Christiansen
    fi
1276 2a1a6b64 Michael Niedermayer
fi
1277 074a9d2b Alexander Strange
enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
1278 2a1a6b64 Michael Niedermayer
1279 703afd07 Måns Rullgård
disabled optimize || add_cflags -fomit-frame-pointer
1280 cf9d24ad Dan Christiansen
1281 a4adb608 Michael Niedermayer
# Add processor-specific flags
1282 38d0a8aa Guillaume Poirier
if test $cpu != "generic"; then
1283 bc8ec47b Måns Rullgård
    warn_altivec(){
1284
        $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1285 1658bc4f Diego Biurrun
    }
1286 38d0a8aa Guillaume Poirier
    case $cpu in
1287 bb270c08 Diego Biurrun
        601|ppc601|PowerPC601)
1288 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=601"
1289 bc8ec47b Måns Rullgård
            warn_altivec enabled PPC601
1290 bb270c08 Diego Biurrun
        ;;
1291
        603*|ppc603*|PowerPC603*)
1292 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=603"
1293 bc8ec47b Måns Rullgård
            warn_altivec enabled PPC603
1294 bb270c08 Diego Biurrun
        ;;
1295
        604*|ppc604*|PowerPC604*)
1296 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=604"
1297 bc8ec47b Måns Rullgård
            warn_altivec enabled PPC604
1298 bb270c08 Diego Biurrun
        ;;
1299
        G3|g3|75*|ppc75*|PowerPC75*)
1300 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1301 bc8ec47b Måns Rullgård
            warn_altivec enabled PPC75x
1302 bb270c08 Diego Biurrun
        ;;
1303
        G4|g4|745*|ppc745*|PowerPC745*)
1304 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1305 bc8ec47b Måns Rullgård
            warn_altivec disabled PPC745x
1306 bb270c08 Diego Biurrun
        ;;
1307
        74*|ppc74*|PowerPC74*)
1308 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1309 bc8ec47b Måns Rullgård
            warn_altivec disabled PPC74xx
1310 bb270c08 Diego Biurrun
        ;;
1311
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1312 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1313 bc8ec47b Måns Rullgård
            warn_altivec disabled PPC970
1314 9cafbd6c Måns Rullgård
            enable ppc64
1315 bb270c08 Diego Biurrun
        ;;
1316 e07e357d Luca Barbato
        Cell|CELL|cell)
1317
            add_cflags "-mcpu=cell"
1318
            warn_altivec disabled Cell
1319 9cafbd6c Måns Rullgård
            enable ppc64
1320 e07e357d Luca Barbato
        ;;
1321 e7768fc5 Guillaume Poirier
        # targets that do NOT support conditional mov (cmov)
1322
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1323 38d0a8aa Guillaume Poirier
            add_cflags "-march=$cpu"
1324 e7768fc5 Guillaume Poirier
            cmov="no"
1325
        ;;
1326
        # targets that do support conditional mov (cmov)
1327 416519dd Måns Rullgård
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1328 e7768fc5 Guillaume Poirier
            add_cflags "-march=$cpu"
1329 4c8d81fa Guillaume Poirier
            cmov="yes"
1330 7073e9fc Måns Rullgård
            fast_cmov="yes"
1331 94e4c3a3 Guillaume Poirier
        ;;
1332
        # targets that do support conditional mov but on which it's slow
1333
        pentium4|prescott|nocona)
1334
            add_cflags "-march=$cpu"
1335
            cmov="yes"
1336 7073e9fc Måns Rullgård
            fast_cmov="no"
1337 bb270c08 Diego Biurrun
        ;;
1338 d7b34d08 Diego Biurrun
        sparc64)
1339 1c5d830c Guillaume Poirier
            add_cflags "-mcpu=v9"
1340 d7b34d08 Diego Biurrun
        ;;
1341 8684704b Marc Hoffman
        bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
1342
            add_cflags "-mfdpic"
1343 846dffeb Diego Biurrun
            add_ldflags "-mfdpic"
1344 8684704b Marc Hoffman
        ;;
1345 bb270c08 Diego Biurrun
        *)
1346 38d0a8aa Guillaume Poirier
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
1347 bb270c08 Diego Biurrun
        ;;
1348 a4adb608 Michael Niedermayer
    esac
1349
fi
1350
1351 412c1562 Måns Rullgård
gnu_make(){
1352
    $1 --version 2>&1 | grep -q GNU
1353
}
1354
1355
if ! gnu_make $make; then
1356
    gnu_make gmake && make=gmake || die "GNU make not found."
1357
fi
1358
1359 be0d52ab Måns Rullgård
# make sure we can execute files in $TMPDIR
1360
cat >$TMPE 2>>$logfile <<EOF
1361
#! /bin/sh
1362
EOF
1363
chmod +x $TMPE >>$logfile 2>&1
1364
if ! $TMPE >>$logfile 2>&1; then
1365
    cat <<EOF
1366
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1367 68300911 Diego Biurrun
variable to another directory and make sure that $TMPDIR1 is not mounted
1368
noexec.
1369 be0d52ab Måns Rullgård
EOF
1370
    die "Sanity test failed."
1371
fi
1372 0244f743 Måns Rullgård
rm $TMPE
1373 be0d52ab Måns Rullgård
1374 1a268acc Måns Rullgård
# compiler sanity check
1375
check_exec <<EOF
1376
int main(){
1377
    return 0;
1378
}
1379
EOF
1380
if test "$?" != 0; then
1381
    echo "$cc is unable to create an executable file."
1382 d6ceace3 Diego Biurrun
    if test -z "$cross_prefix" && disabled cross_compile ; then
1383 1a268acc Måns Rullgård
        echo "If $cc is a cross-compiler, use the --cross-compile option."
1384 c7ae6345 Måns Rullgård
        echo "Only do this if you know what cross compiling means."
1385 1a268acc Måns Rullgård
    fi
1386
    die "C compiler test failed."
1387
fi
1388
1389 9eeed841 Måns Rullgård
if enabled x86; then
1390 44965991 Panagiotis Issaris
    # check whether EBP is available on x86
1391
    # As 'i' is stored on the stack, this program will crash
1392
    # if the base pointer is used to access it because the
1393
    # base pointer is cleared in the inline assembly code.
1394 7dfef245 Måns Rullgård
    check_exec_crash <<EOF && enable ebp_available
1395 44965991 Panagiotis Issaris
    volatile int i=0;
1396
    asm volatile (
1397
        "xorl %%ebp, %%ebp"
1398
    ::: "%ebp");
1399
    return i;
1400
EOF
1401
1402
    # check wether EBX is available on x86
1403
    check_cc <<EOF && enable ebx_available
1404
int main(){
1405
    asm volatile ("":::"%ebx");
1406
}
1407
EOF
1408 8e380710 Loren Merritt
1409
    # check whether binutils is new enough to compile SSSE3
1410 9eeed841 Måns Rullgård
    enabled ssse3 && check_cc <<EOF || disable ssse3
1411 8e380710 Loren Merritt
int main(){
1412
    asm volatile ("pabsw %xmm0, %xmm0");
1413
}
1414
EOF
1415 44965991 Panagiotis Issaris
fi
1416
1417 87ea51e0 Luca Barbato
# check for assembler specific support
1418
1419 cc6a90dd Guillaume Poirier
if test $arch = "powerpc"; then
1420 87ea51e0 Luca Barbato
check_cc <<EOF && dcbzl=yes
1421
int main(void) {
1422
    register long zero = 0;
1423
    char data[1024];
1424
    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1425
return 0;
1426
}
1427
EOF
1428
fi
1429
1430 57bd82d4 Måns Rullgård
# check for SIMD availability
1431
1432 115329f1 Diego Biurrun
# AltiVec flags: The FSF version of GCC differs from the Apple version
1433 9eeed841 Måns Rullgård
if enabled altivec; then
1434 0182fee8 Måns Rullgård
    if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1435
        add_cflags "-faltivec"
1436
    else
1437
        add_cflags "-maltivec -mabi=altivec"
1438
    fi
1439 b6e52719 Magnus Damm
1440 0182fee8 Måns Rullgård
    check_header altivec.h
1441 a9a07762 Michael Niedermayer
1442 0182fee8 Måns Rullgård
    # check if our compiler supports Motorola AltiVec C API
1443 90be59ef Ramiro Polla
    if enabled altivec_h; then
1444 f25fc9b1 Måns Rullgård
        inc_altivec_h="#include <altivec.h>"
1445
    else
1446
        inc_altivec_h=
1447
    fi
1448
    check_cc <<EOF || altivec=no
1449 dcd479c0 Måns Rullgård
$inc_altivec_h
1450 a9a07762 Michael Niedermayer
int main(void) {
1451
    vector signed int v1, v2, v3;
1452
    v1 = vec_add(v2,v3);
1453
    return 0;
1454
}
1455
EOF
1456
fi
1457 ab6c65f6 Brian Foley
1458 854fdb51 Måns Rullgård
# check armv5te instructions support
1459 9eeed841 Måns Rullgård
enabled armv5te && check_cc <<EOF || disable armv5te
1460 0182fee8 Måns Rullgård
int main(void) {
1461
    __asm__ __volatile__ ("qadd r0, r0, r0");
1462
}
1463 854fdb51 Måns Rullgård
EOF
1464
1465 9eeed841 Måns Rullgård
enabled armv6 && check_cc <<EOF || disable armv6
1466 edab3048 Måns Rullgård
int main(void) {
1467
    __asm__ __volatile__ ("sadd16 r0, r0, r0");
1468
}
1469
EOF
1470
1471 854fdb51 Måns Rullgård
# check iwmmxt support
1472 9eeed841 Måns Rullgård
enabled iwmmxt && check_cc <<EOF || disable iwmmxt
1473 0182fee8 Måns Rullgård
int main(void) {
1474
    __asm__ __volatile__ ("wunpckelub wr6, wr4");
1475
}
1476 854fdb51 Måns Rullgård
EOF
1477 d46aba26 Leon van Stuivenberg
1478 29799f8b Diego Biurrun
# check if our compiler supports mmi
1479 57bd82d4 Måns Rullgård
enabled mmi && check_cc <<EOF || mmi="no"
1480 d46aba26 Leon van Stuivenberg
int main(void) {
1481
    __asm__ ("lq \$2, 0(\$2)");
1482
    return 0;
1483
}
1484
EOF
1485 57bd82d4 Måns Rullgård
1486
# ---
1487
# big/little-endian test
1488 37970ebf Ramiro Polla
if disabled cross_compile; then
1489 57bd82d4 Måns Rullgård
    check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1490 a3999908 Michael Niedermayer
#include <inttypes.h>
1491
int main(int argc, char ** argv){
1492 bb270c08 Diego Biurrun
        volatile uint32_t i=0x01234567;
1493
        return (*((uint8_t*)(&i))) == 0x67;
1494 a3999908 Michael Niedermayer
}
1495
EOF
1496 487a54d7 Fabrice Bellard
else
1497 f25fc9b1 Måns Rullgård
    # programs cannot be launched if cross compiling, so make a static guess
1498 cc6a90dd Guillaume Poirier
    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1499 f25fc9b1 Måns Rullgård
        bigendian="yes"
1500
    fi
1501 487a54d7 Fabrice Bellard
fi
1502
1503 a3999908 Michael Niedermayer
# ---
1504 3d204385 Nick Kurshev
# check availability of some header files
1505
1506 0701ca7f Måns Rullgård
check_header malloc.h
1507
check_func memalign
1508 3d204385 Nick Kurshev
1509 797ee6a6 Diego Biurrun
if disabled_all memalign memalign_hack && enabled need_memalign ; then
1510 57bd82d4 Måns Rullgård
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1511 8bf5d58f Michael Niedermayer
fi
1512
1513 0701ca7f Måns Rullgård
check_header byteswap.h
1514 47d23bbf Måns Rullgård
1515 6ffa87d3 Ramiro Polla
check_func mkstemp
1516
1517 e16e49ac Ramiro Polla
check_header termios.h
1518
check_header conio.h
1519
1520 c9fdab0d François Revol
check_header arpa/inet.h
1521
1522 0701ca7f Måns Rullgård
check_func inet_aton
1523 57bd82d4 Måns Rullgård
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1524
1525 b0c858d8 François Revol
# ffserver uses poll(),
1526
# if it's not found we can emulate it using select().
1527
if enabled ffserver; then
1528
    check_header sys/poll.h
1529
fi
1530
1531 57bd82d4 Måns Rullgård
# check for some common methods of building with pthread support
1532
# do this before the optional library checks as some of them require pthreads
1533
if enabled pthreads; then
1534 9e7fd101 Måns Rullgård
    if check_func pthread_create; then
1535
        :
1536
    elif check_func pthread_create -pthread; then
1537
        add_cflags -pthread
1538
        add_ldflags -pthread
1539
    elif check_func pthread_create -pthreads; then
1540
        add_cflags -pthreads
1541
        add_ldflags -pthreads
1542
    elif ! check_lib pthread.h pthread_create -lpthread; then
1543
        die "ERROR: can't find pthreads library"
1544
    fi
1545 57bd82d4 Måns Rullgård
fi
1546
1547 8eee7025 Diego Biurrun
for thread in $THREADS_LIST; do
1548 e5f94c2b Ramiro Polla
    if enabled $thread; then
1549 aa45201d Måns Rullgård
        if test -n "$thread_type"; then
1550 e5f94c2b Ramiro Polla
            die "ERROR: Only one thread type must be selected."
1551
        else
1552
            thread_type="$thread"
1553
        fi
1554
    fi
1555
done
1556
1557 f32adb22 Måns Rullgård
# test for lrintf in math.h
1558
check_exec <<EOF && lrintf=yes || lrintf=no
1559
#define _ISOC9X_SOURCE  1
1560
#include <math.h>
1561
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1562
EOF
1563
1564 f5a756ef Diego Biurrun
enabled_any libamr_nb libamr_wb && enable libamr
1565 12b61a74 Måns Rullgård
1566 57bd82d4 Måns Rullgård
# these are off by default, so fail if requested and not available
1567 7bc5f2a8 Diego Biurrun
enabled liba52     && require liba52 a52dec/a52.h a52_init -la52
1568 f5a756ef Diego Biurrun
enabled libamr_nb  && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1569
enabled libamr_wb  && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1570 910c62e1 Diego Biurrun
enabled libgsm     && require libgsm gsm.h gsm_create -lgsm
1571 6ebe07fb Diego Biurrun
enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1572 910c62e1 Diego Biurrun
enabled libtheora  && require libtheora theora/theora.h theora_info_init -ltheora -logg
1573
enabled libvorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1574
enabled libogg     && require libogg ogg/ogg.h ogg_sync_init -logg
1575
enabled libnut     && require libnut libnut.h nut_demuxer_init -lnut
1576 1cc60c47 Diego Biurrun
enabled libx264    && require x264 x264.h x264_encoder_open -lx264
1577
enabled libxvid    && require Xvid xvid.h xvid_global -lxvidcore
1578 910c62e1 Diego Biurrun
enabled dc1394     && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1579
enabled mlib       && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1580 f8d7b072 Måns Rullgård
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1581
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
1582
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
1583 8ac17293 Steve L'Homme
1584 c13e1abd Falk Hüffner
_restrict=
1585
for restrict_keyword in restrict __restrict__ __restrict; do
1586 57bd82d4 Måns Rullgård
    check_cc <<EOF && _restrict=$restrict_keyword && break
1587 dcd479c0 Måns Rullgård
void foo(char * $restrict_keyword p);
1588
EOF
1589 c13e1abd Falk Hüffner
done
1590
1591 a8721c09 Fabrice Bellard
# dlopen/dlfcn.h probing
1592
1593 0701ca7f Måns Rullgård
check_header dlfcn.h
1594 a8721c09 Fabrice Bellard
1595 dcd479c0 Måns Rullgård
if check_func dlopen; then
1596
    ldl=
1597 0701ca7f Måns Rullgård
elif check_func dlopen -ldl; then
1598
    ldl=-ldl
1599 a8721c09 Fabrice Bellard
fi
1600
1601 66be5b45 Ramiro Polla
check_func getrusage
1602 7495c306 Ramiro Polla
check_func2 windows.h GetProcessTimes
1603 66be5b45 Ramiro Polla
1604 4f3da985 Ramiro Polla
check_func fork
1605
1606 703afd07 Måns Rullgård
test "$vhook" = "default" && vhook="$dlopen"
1607 a8721c09 Fabrice Bellard
1608 81a409c8 François Revol
enabled_any vhook liba52bin libfaadbin ffserver && add_extralibs $ldl
1609 bfd2edeb Michael Niedermayer
1610 b0268cc0 Ramiro Polla
if test "$targetos" = cygwin -o "$targetos" = mingw32 && enabled_all static vhook ; then
1611 fbb9d104 Víctor Paesa
    vhook="no"
1612
    echo
1613 b0268cc0 Ramiro Polla
    echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
1614 fbb9d104 Víctor Paesa
    echo "Patches welcome."
1615
    echo
1616
fi
1617
1618 8d923001 Måns Rullgård
if enabled vhook; then
1619
    check_ldflags -rdynamic
1620
    check_ldflags -export-dynamic
1621
fi
1622 bfd2edeb Michael Niedermayer
1623 703afd07 Måns Rullgård
enabled audio_beos && add_extralibs "-lmedia -lbe"
1624 9464f2b8 Diego Biurrun
1625 eea50282 Måns Rullgård
check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1626
check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
1627 04511d53 Philip Gladstone
1628 a86b921c Fabrice Bellard
##########################################
1629 29799f8b Diego Biurrun
# SDL check
1630 a86b921c Fabrice Bellard
1631
sdl_too_old=no
1632
sdl=no
1633 6a1a892f Frantisek Dvorak
SDL_CONFIG="${cross_prefix}sdl-config"
1634 225e21ef Måns Rullgård
if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
1635
    sdl_cflags=`"${SDL_CONFIG}" --cflags`
1636
    temp_cflags $sdl_cflags
1637 dcd479c0 Måns Rullgård
    temp_extralibs `"${SDL_CONFIG}" --libs`
1638 225e21ef Måns Rullgård
    if check_lib SDL.h SDL_Init; then
1639 dcd479c0 Måns Rullgård
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1640 29f3b38a Måns Rullgård
        if test "$_sdlversion" -lt 121 ; then
1641 dcd479c0 Måns Rullgård
            sdl_too_old=yes
1642
        else
1643
            sdl=yes
1644 225e21ef Måns Rullgård
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
1645 29f3b38a Måns Rullgård
#include <SDL.h>
1646
int main(void){
1647
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1648
    int w = vi->current_w;
1649
    return 0;
1650
}
1651
EOF
1652 dcd479c0 Måns Rullgård
        fi
1653
    fi
1654 29f3b38a Måns Rullgård
    restore_flags
1655 c3f6b472 Michael Niedermayer
fi
1656 57bd82d4 Måns Rullgård
1657 d5697779 Måns Rullgård
texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
1658 146ea952 Nicolas Boos
1659 7a91333f Hans Zandbelt
##########################################
1660 29799f8b Diego Biurrun
# IPv6 check
1661 7a91333f Hans Zandbelt
1662 0c7bb0e5 Luca Barbato
enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1663 7a91333f Hans Zandbelt
#include <sys/types.h>
1664
#include <sys/socket.h>
1665
#include <netinet/in.h>
1666
#include <netdb.h>
1667
int main( void ) {
1668
  struct sockaddr_storage saddr;
1669
  struct ipv6_mreq mreq6;
1670
  getaddrinfo(0,0,0,0);
1671
  getnameinfo(0,0,0,0,0,0,0);
1672 12fe88b4 Dan Villiom Podlaski Christiansen
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1673 7a91333f Hans Zandbelt
}
1674
EOF
1675
1676 afde41b4 Måns Rullgård
enabled v4l  && check_header linux/videodev.h  || disable v4l
1677
enabled v4l2 && check_header linux/videodev2.h || disable v4l2
1678 47f38850 Luca Abeni
1679 f8aa696f Diego Biurrun
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1680
if enabled bktr; then
1681 3eac5c63 Måns Rullgård
    { check_header dev/bktr/ioctl_meteor.h &&
1682
      check_header dev/bktr/ioctl_bt848.h; } ||
1683
    { check_header machine/ioctl_meteor.h &&
1684
      check_header machine/ioctl_bt848.h; } ||
1685
    { check_header dev/video/meteor/ioctl_meteor.h &&
1686
      check_header dev/video/bktr/ioctl_bt848.h; } ||
1687
    check_header dev/ic/bt8xx.h ||
1688
    disable bktr
1689 f8aa696f Diego Biurrun
fi
1690
1691 deb29777 Måns Rullgård
enabled audio_oss &&
1692
    check_header sys/soundcard.h ||
1693
    check_header soundcard.h ||
1694
    disable audio_oss
1695
1696 f58f4ce1 Guillaume Poirier
# Deal with the x11 frame grabber
1697 56a059ac Diego Biurrun
enabled x11grab                         &&
1698 f58f4ce1 Guillaume Poirier
enabled gpl                             &&
1699
enabled x11_grab_device_demuxer         &&
1700
check_header X11/Xlib.h                 &&
1701
check_header X11/extensions/XShm.h      &&
1702
check_func XOpenDisplay -lX11           &&
1703
check_func XShmCreateImage -lX11 -lXext &&
1704
add_extralibs -lX11 -lXext              ||
1705
disable x11_grab_device_demuxer
1706
1707 57bd82d4 Måns Rullgård
enabled debug && add_cflags -g
1708
1709
# add some useful compiler flags if supported
1710
check_cflags -Wdeclaration-after-statement
1711 dcd479c0 Måns Rullgård
check_cflags -Wall
1712
check_cflags -Wno-switch
1713 c07bd6a9 Michael Niedermayer
check_cflags -Wdisabled-optimization
1714
check_cflags -Wpointer-arith
1715
check_cflags -Wredundant-decls
1716 cc1fb623 Måns Rullgård
check_cflags -Wno-pointer-sign
1717 5af4e0cc Måns Rullgård
enabled extra_warnings && check_cflags -Winline
1718 cf9d24ad Dan Christiansen
1719 57bd82d4 Måns Rullgård
# add some linker flags
1720 5c0e9479 Måns Rullgård
check_ldflags -Wl,--warn-common
1721 e240ee67 Luca Barbato
check_ldflags $LDLATEFLAGS
1722 94a3401e Fabrice Bellard
1723 bd2216e4 Måns Rullgård
if enabled small; then
1724
    check_cflags -Os            # not all compilers support -Os
1725
    optimize="small"
1726
elif enabled optimize; then
1727 b2924696 Roman Shaposhnik
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
1728 30a3e5d4 Nigel Pearson
        add_cflags  "-O5"
1729
        add_ldflags "-O5"
1730 cf9d24ad Dan Christiansen
    else
1731 30a3e5d4 Nigel Pearson
        add_cflags "-O3"
1732 cf9d24ad Dan Christiansen
    fi
1733 cddf3f45 Glenn Maynard
fi
1734
1735 80581e98 Michael Niedermayer
# PIC flags for shared library objects where they are needed
1736 5af4e0cc Måns Rullgård
if enabled shared; then
1737 f25fc9b1 Måns Rullgård
    # LIBOBJFLAGS may have already been set in the OS configuration
1738
    if test -z "$LIBOBJFLAGS" ; then
1739 cc6a90dd Guillaume Poirier
        case "$arch" in
1740 f824ba7b Luca Barbato
            x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS="\$(PIC)" ;;
1741 813457e5 Måns Rullgård
        esac
1742 80581e98 Michael Niedermayer
    fi
1743
fi
1744
1745 90be59ef Ramiro Polla
if enabled gprof; then
1746 30a3e5d4 Nigel Pearson
    add_cflags  "-p"
1747
    add_ldflags "-p"
1748 1db54e20 Diego Biurrun
fi
1749
1750 3b26ee47 Måns Rullgård
VHOOKCFLAGS="-fPIC"
1751 18451f7d Måns Rullgård
1752 4454dc1b John Dalgliesh
# find if .align arg is power-of-two or not
1753
if test $asmalign_pot = "unknown"; then
1754
    asmalign_pot="no"
1755
    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1756
fi
1757
1758 660db1d6 Diego Biurrun
enabled_any $ENCODER_LIST  && enable encoders
1759
enabled_any $DECODER_LIST  && enable decoders
1760
enabled_any $MUXER_LIST    && enable muxers
1761
enabled_any $DEMUXER_LIST  && enable demuxers
1762 c08fb000 Alex Beregszaszi
enabled_any $PROTOCOL_LIST && enable protocols
1763 cd61e407 Jason Millard
enabled_any $BSF_LIST      && enable bsfs
1764 f70f03f6 Måns Rullgård
1765 660db1d6 Diego Biurrun
enabled_any $THREADS_LIST  && enable threads
1766 f70f03f6 Måns Rullgård
1767
check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
1768 cd61e407 Jason Millard
    $BSF_LIST $DEMUXER_LIST $MUXER_LIST $PROTOCOL_LIST
1769 f70f03f6 Måns Rullgård
1770 fb2ce7d9 Måns Rullgård
enabled libogg    && append pkg_requires "ogg >= 1.1"
1771
enabled libtheora && append pkg_requires "theora"
1772
enabled libvorbis && append pkg_requires "vorbis vorbisenc"
1773
enabled dc1394    && append pkg_requires "libraw1394"
1774
1775 f36958f8 Diego Biurrun
echo "install prefix            $PREFIX"
1776
echo "source path               $source_path"
1777
echo "C compiler                $cc"
1778
echo "make                      $make"
1779 bfd5afd8 Diego Biurrun
echo ".align is power-of-two    $asmalign_pot"
1780 f36958f8 Diego Biurrun
echo "ARCH                      $arch ($cpu)"
1781 eb94aca9 Charles Yates
if test "$BUILDSUF" != ""; then
1782 f36958f8 Diego Biurrun
    echo "build suffix              $BUILDSUF"
1783 eb94aca9 Charles Yates
fi
1784 0db2ce77 Måns Rullgård
echo "big-endian                ${bigendian-no}"
1785 419b8784 Diego Biurrun
if test $arch = "x86_32" -o $arch = "x86_64"; then
1786 0db2ce77 Måns Rullgård
    echo "MMX enabled               ${mmx-no}"
1787
    echo "CMOV enabled              ${cmov-no}"
1788
    echo "CMOV is fast              ${fast_cmov-no}"
1789 e41e8342 Fabrice Bellard
fi
1790 cc6a90dd Guillaume Poirier
if test $arch = "armv4l"; then
1791 0db2ce77 Måns Rullgård
    echo "ARMv5TE enabled           ${armv5te-no}"
1792
    echo "ARMv6 enabled             ${armv6-no}"
1793
    echo "IWMMXT enabled            ${iwmmxt-no}"
1794 eba9ae3c Gildas Bazin
fi
1795 cc6a90dd Guillaume Poirier
if test $arch = "mips"; then
1796 0db2ce77 Måns Rullgård
    echo "MMI enabled               ${mmi-no}"
1797 e41e8342 Fabrice Bellard
fi
1798 cc6a90dd Guillaume Poirier
if test $arch = "powerpc"; then
1799 0db2ce77 Måns Rullgård
    echo "AltiVec enabled           ${altivec-no}"
1800
    echo "dcbzl available           ${dcbzl-no}"
1801 e41e8342 Fabrice Bellard
fi
1802 0db2ce77 Måns Rullgård
echo "gprof enabled             ${gprof-no}"
1803
echo "debug symbols             ${debug-no}"
1804
echo "strip symbols             ${dostrip-no}"
1805
echo "optimize                  ${optimize-no}"
1806
echo "static                    ${static-no}"
1807
echo "shared                    ${shared-no}"
1808
echo "postprocessing support    ${pp-no}"
1809
echo "software scaler enabled   ${swscaler-no}"
1810
echo "video hooking             ${vhook-no}"
1811 90be59ef Ramiro Polla
if enabled vhook; then
1812 0db2ce77 Måns Rullgård
    echo "Imlib2 support            ${imlib2-no}"
1813
    echo "FreeType support          ${freetype2-no}"
1814 68892110 Philip Gladstone
fi
1815 0db2ce77 Måns Rullgård
echo "network support           ${network-no}"
1816 90be59ef Ramiro Polla
if enabled network; then
1817 0db2ce77 Måns Rullgård
    echo "IPv6 support              ${ipv6-no}"
1818 bfd5afd8 Diego Biurrun
fi
1819 0db2ce77 Måns Rullgård
echo "threading support         ${thread_type-no}"
1820
echo "SDL support               ${sdl-no}"
1821 90be59ef Ramiro Polla
if enabled sdl_too_old; then
1822 bfd5afd8 Diego Biurrun
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1823
fi
1824 0db2ce77 Måns Rullgård
echo "Sun medialib support      ${mlib-no}"
1825
echo "AVISynth enabled          ${avisynth-no}"
1826
echo "liba52 support            ${liba52-no}"
1827
echo "liba52 dlopened           ${liba52bin-no}"
1828
echo "libamr-nb support         ${libamr_nb-no}"
1829
echo "libamr-wb support         ${libamr_wb-no}"
1830
echo "libfaac enabled           ${libfaac-no}"
1831
echo "libfaad enabled           ${libfaad-no}"
1832 7e0871a7 Diego Biurrun
echo "libfaad dlopened          ${libfaadbin-no}"
1833 0db2ce77 Måns Rullgård
echo "libgsm enabled            ${libgsm-no}"
1834
echo "libmp3lame enabled        ${libmp3lame-no}"
1835
echo "libnut enabled            ${libnut-no}"
1836
echo "libogg enabled            ${libogg-no}"
1837
echo "libtheora enabled         ${libtheora-no}"
1838
echo "libvorbis enabled         ${libvorbis-no}"
1839
echo "x264 enabled              ${libx264-no}"
1840
echo "XviD enabled              ${libxvid-no}"
1841
echo "zlib enabled              ${zlib-no}"
1842 37970ebf Ramiro Polla
if disabled gpl; then
1843 f25fc9b1 Måns Rullgård
    echo "License: LGPL"
1844 b2e3c528 Michael Niedermayer
else
1845 f25fc9b1 Måns Rullgård
    echo "License: GPL"
1846 b2e3c528 Michael Niedermayer
fi
1847 de6d9b64 Fabrice Bellard
1848 29799f8b Diego Biurrun
echo "Creating config.mak and config.h..."
1849 de6d9b64 Fabrice Bellard
1850 29799f8b Diego Biurrun
echo "# Automatically generated by configure - do not modify!" > config.mak
1851
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1852 0fd12426 Diego Biurrun
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
1853 de6d9b64 Fabrice Bellard
1854 2266e085 Diego Biurrun
echo "PREFIX=$PREFIX" >> config.mak
1855
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1856 9a695e98 Diego Biurrun
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1857 84c22efd Diego Biurrun
echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1858 1d67a1d4 Diego Biurrun
echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1859 9a695e98 Diego Biurrun
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1860
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1861 4a908fbc Alex Beregszaszi
echo "MAKE=$make" >> config.mak
1862 980fc7b8 Fabrice Bellard
echo "CC=$cc" >> config.mak
1863
echo "AR=$ar" >> config.mak
1864 be7109c1 Michael Niedermayer
echo "RANLIB=$ranlib" >> config.mak
1865 90be59ef Ramiro Polla
if enabled dostrip; then
1866 f25fc9b1 Måns Rullgård
    echo "STRIP=$strip" >> config.mak
1867 65d1bea2 Michel Bardiaux
else
1868 f25fc9b1 Måns Rullgård
    echo "STRIP=echo ignoring strip" >> config.mak
1869 65d1bea2 Michel Bardiaux
fi
1870 75388c74 Michael Niedermayer
1871 a9b3f630 Nick Kurshev
echo "OPTFLAGS=$CFLAGS" >> config.mak
1872 408382a4 Diego Biurrun
echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1873 0f3cb305 Fabrice Bellard
echo "LDFLAGS=$LDFLAGS" >> config.mak
1874 f39e56a8 Jacob Meuser
echo "LDCONFIG=$LDCONFIG" >> config.mak
1875 c536cb09 Diego Biurrun
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1876 e1707f52 Michael Niedermayer
echo "SHFLAGS=$SHFLAGS" >> config.mak
1877 408382a4 Diego Biurrun
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1878 fbb9d104 Víctor Paesa
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1879 80581e98 Michael Niedermayer
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1880 5af4e0cc Måns Rullgård
echo "BUILD_STATIC=$static" >> config.mak
1881 eb94aca9 Charles Yates
echo "BUILDSUF=$BUILDSUF" >> config.mak
1882 f3ec2d46 Slavik Gnatenko
echo "LIBPREF=$LIBPREF" >> config.mak
1883 eb94aca9 Charles Yates
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1884 5af4e0cc Måns Rullgård
if enabled static; then
1885 320d060a Diego Biurrun
  echo "LIB=$LIB" >> config.mak
1886 1a44a8b6 Alexander Strasser
else # Some Make complain if this variable does not exist.
1887
  echo "LIB=" >> config.mak
1888 320d060a Diego Biurrun
fi
1889 f3ec2d46 Slavik Gnatenko
echo "SLIBPREF=$SLIBPREF" >> config.mak
1890 eb94aca9 Charles Yates
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1891
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1892 4dc62701 Måns Rullgård
1893 90be59ef Ramiro Polla
if enabled bigendian; then
1894 0f3cb305 Fabrice Bellard
  echo "WORDS_BIGENDIAN=yes" >> config.mak
1895
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1896 91d1f1a4 Nick Kurshev
fi
1897 90be59ef Ramiro Polla
if enabled mmx; then
1898 e82c5a8c Michael Niedermayer
  echo "#define __CPU__ 586" >> $TMPH
1899 de6d9b64 Fabrice Bellard
fi
1900 44161118 Måns Rullgård
1901 90be59ef Ramiro Polla
if enabled sdl; then
1902 6a1a892f Frantisek Dvorak
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1903
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1904 a86b921c Fabrice Bellard
fi
1905 90be59ef Ramiro Polla
if enabled texi2html; then
1906 146ea952 Nicolas Boos
  echo "BUILD_DOC=yes" >> config.mak
1907
fi
1908 5a872801 Luca Barbato
1909 790c9ca7 Luca Abeni
sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1910 6d9a2421 Diego Biurrun
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1911 5a872801 Luca Barbato
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1912
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1913
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1914
1915
1916
1917 5af4e0cc Måns Rullgård
if enabled shared; then
1918 0319c531 Nick Kurshev
  echo "BUILD_SHARED=yes" >> config.mak
1919 97006039 Jacob Meuser
  echo "PIC=-fPIC -DPIC" >> config.mak
1920 7e303556 Diego Biurrun
  echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
1921
  echo "SPPVERSION=$pp_version" >> config.mak
1922 39503a27 Diego Biurrun
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1923 5a872801 Luca Barbato
  echo "LAVCVERSION=$lavc_version" >> config.mak
1924 39503a27 Diego Biurrun
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1925 5a872801 Luca Barbato
  echo "LAVFVERSION=$lavf_version" >> config.mak
1926 39503a27 Diego Biurrun
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1927 5a872801 Luca Barbato
  echo "LAVUVERSION=$lavu_version" >> config.mak
1928 790c9ca7 Luca Abeni
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1929
  echo "SWSVERSION=$sws_version" >> config.mak
1930 4bdd05e7 Diego Biurrun
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
1931 f3b60109 Diego Biurrun
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1932
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1933 5cb854e1 Diego Biurrun
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1934 8fbec4f4 Ramiro Polla
  echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
1935 0319c531 Nick Kurshev
fi
1936 d7e27559 Diego Biurrun
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1937 ef0bc4c9 François Revol
echo "EXTRALIBS=$extralibs" >> config.mak
1938 d2845d68 Diego Biurrun
1939 3d907e22 Måns Rullgård
print_config ARCH_   $TMPH config.mak $ARCH_LIST
1940
print_config HAVE_   $TMPH config.mak $HAVE_LIST
1941
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST   \
1942
                                      $DECODER_LIST  \
1943
                                      $ENCODER_LIST  \
1944
                                      $PARSER_LIST   \
1945
                                      $BSF_LIST      \
1946
                                      $DEMUXER_LIST  \
1947
                                      $MUXER_LIST    \
1948
                                      $PROTOCOL_LIST \
1949 8ac17293 Steve L'Homme
1950 ced75d92 Diego Biurrun
if test "$targetos" = darwin; then
1951 90cee0c3 Michael Niedermayer
  echo "#define CONFIG_DARWIN 1"  >> $TMPH
1952
fi
1953
1954 c13e1abd Falk Hüffner
echo "#define restrict $_restrict" >> $TMPH
1955
1956 bd2216e4 Måns Rullgård
if enabled small; then
1957 bb801c97 Michael Niedermayer
  echo "#define always_inline"  >> $TMPH
1958
fi
1959
1960 997baf01 Måns Rullgård
echo "SRC_PATH=\"$source_path\"" >> config.mak
1961
echo "SRC_PATH_BARE=$source_path" >> config.mak
1962
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
1963 0f3cb305 Fabrice Bellard
1964 8156056e John Dalgliesh
# Apparently it's not possible to portably echo a backslash.
1965 90be59ef Ramiro Polla
if enabled asmalign_pot; then
1966 8156056e John Dalgliesh
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
1967 4454dc1b John Dalgliesh
else
1968 8156056e John Dalgliesh
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
1969 4454dc1b John Dalgliesh
fi
1970
1971 bc634f6f Zdenek Kabelac
1972 9cb2cf10 Diego Biurrun
# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
1973 c683a5d1 Måns Rullgård
if ! cmp -s $TMPH config.h; then
1974 9cb2cf10 Diego Biurrun
        mv -f $TMPH config.h
1975
else
1976
        echo "config.h is unchanged"
1977
fi
1978 3d204385 Nick Kurshev
1979 f3ec2d46 Slavik Gnatenko
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
1980 def4272a Aurelien Jacobs
1981 165af439 Måns Rullgård
# build tree in object directory if source path is different from current one
1982 90be59ef Ramiro Polla
if enabled source_path_used; then
1983 165af439 Måns Rullgård
    DIRS="\
1984
         doc \
1985
         libavformat \
1986
         libavcodec \
1987
         libavcodec/alpha \
1988
         libavcodec/armv4l \
1989
         libavcodec/bfin \
1990
         libavcodec/i386 \
1991
         libavcodec/sparc \
1992
         libavcodec/mlib \
1993
         libavcodec/ppc \
1994
         libpostproc \
1995
         libavutil \
1996
         libswscale \
1997
         tests \
1998 c07ed8c8 Måns Rullgård
         tools \
1999 165af439 Måns Rullgård
         vhook \
2000
         "
2001
    FILES="\
2002
          Makefile \
2003
          common.mak \
2004
          libavformat/Makefile \
2005
          libavcodec/Makefile \
2006
          libpostproc/Makefile \
2007
          libavutil/Makefile \
2008
          libswscale/Makefile \
2009
          doc/texi2pod.pl \
2010
          "
2011
    for dir in $DIRS ; do
2012
            mkdir -p $dir
2013
    done
2014
    for f in $FILES ; do
2015
        ln -sf "$source_path/$f" $f
2016
    done
2017
fi
2018 def4272a Aurelien Jacobs
2019
2020 d0674868 Diego Biurrun
# build pkg-config files
2021 77aee36c Diego Biurrun
# FIXME: libdir and includedir are hardcoded and may differ from the real path.
2022 def4272a Aurelien Jacobs
2023 d0674868 Diego Biurrun
pkgconfig_generate(){
2024
name=$1
2025
comment=$2
2026
version=$3
2027
libs=$4
2028
requires=$5
2029
include=$6
2030
cat <<EOF >$name.pc
2031 2266e085 Diego Biurrun
prefix=$PREFIX
2032 a94e666c Diego Biurrun
exec_prefix=\${prefix}
2033 def4272a Aurelien Jacobs
libdir=\${exec_prefix}/lib
2034 a94e666c Diego Biurrun
includedir=\${prefix}/include
2035 def4272a Aurelien Jacobs
2036 d0674868 Diego Biurrun
Name: $name
2037
Description: $comment
2038
Version: $version
2039
Requires: $requires
2040 def4272a Aurelien Jacobs
Conflicts:
2041 d0674868 Diego Biurrun
Libs: -L\${libdir} $libs
2042
Cflags: -I\${includedir} -I\${includedir}/$include
2043 def4272a Aurelien Jacobs
EOF
2044 d0674868 Diego Biurrun
}
2045 def4272a Aurelien Jacobs
2046 d0674868 Diego Biurrun
pkgconfig_generate_uninstalled(){
2047
name=$1
2048 9c476fd6 Måns Rullgård
shortname=${name#lib}
2049 d0674868 Diego Biurrun
comment=$2
2050
version=$3
2051
libs=$4
2052
requires=$5
2053
cat <<EOF >$name-uninstalled.pc
2054 def4272a Aurelien Jacobs
prefix=
2055
exec_prefix=
2056 d0674868 Diego Biurrun
libdir=\${pcfiledir}/$name
2057
includedir=\${pcfiledir}/$name
2058 def4272a Aurelien Jacobs
2059 d0674868 Diego Biurrun
Name: $name
2060
Description: $comment
2061
Version: $version
2062
Requires: $requires
2063 def4272a Aurelien Jacobs
Conflicts:
2064 d0674868 Diego Biurrun
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2065 def4272a Aurelien Jacobs
Cflags: -I\${includedir}
2066
EOF
2067 d0674868 Diego Biurrun
}
2068 def4272a Aurelien Jacobs
2069 9d824ad1 Måns Rullgård
pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
2070 d0674868 Diego Biurrun
pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
2071 def4272a Aurelien Jacobs
2072 d0674868 Diego Biurrun
pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2073
pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
2074 def4272a Aurelien Jacobs
2075 d0674868 Diego Biurrun
pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2076
pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
2077 def4272a Aurelien Jacobs
2078 90be59ef Ramiro Polla
if enabled pp; then
2079 2e3bcd38 Diego Biurrun
  pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2080
  pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2081
fi
2082 790c9ca7 Luca Abeni
2083 c839db53 Ramiro Polla
if enabled swscaler; then
2084 3d3361e5 Diego Biurrun
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg
2085 20c516c6 Dominik Mierzejewski
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
2086 6c0d0413 j@v2v.cc
else
2087 3d3361e5 Diego Biurrun
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2088 d0674868 Diego Biurrun
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
2089 c505dd31 Måns Rullgård
  apply libswscale.pc sed s/^Libs:.*$/Libs:/
2090
  apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
2091 6c0d0413 j@v2v.cc
fi