Statistics
| Branch: | Revision:

ffmpeg / configure @ 0aca87c6

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