Statistics
| Branch: | Revision:

ffmpeg / configure @ 079dd4ba

History | View | Annotate | Download (57.5 KB)

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