Statistics
| Branch: | Revision:

ffmpeg / configure @ b973f9ad

History | View | Annotate | Download (62.2 KB)

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