configure 56.1 KB
Newer Older
Fabrice Bellard's avatar
Fabrice Bellard committed
1
#!/bin/sh
2
#
3 4 5 6 7
# FFmpeg configure script
#
# Copyright (c) 2000, 2001, 2002 Fabrice Bellard
# Copyright (c) 2005-2006 Diego Biurrun
# Copyright (c) 2005-2006 Mans Rullgard
8
#
9

10
# make sure we are running under a compatible shell
11 12 13
# try to make this part work with most shells

try_exec(){
14
    echo "Trying shell $1"
15 16 17
    type "$1" >/dev/null 2>&1 && exec "$@"
}

Måns Rullgård's avatar
Måns Rullgård committed
18
unset foo
19 20 21 22 23 24 25 26
(: ${foo%%bar}) 2>/dev/null
E1="$?"

(: ${foo?}) 2>/dev/null
E2="$?"

if test "$E1" != 0 || test "$E2" = 0; then
    echo "Broken shell detected.  Trying alternatives."
27 28 29 30 31 32 33 34 35 36 37 38
    export FF_CONF_EXEC
    if test "0$FF_CONF_EXEC" -lt 1; then
        FF_CONF_EXEC=1
        try_exec bash "$0" "$@"
    fi
    if test "0$FF_CONF_EXEC" -lt 2; then
        FF_CONF_EXEC=2
        try_exec ksh "$0" "$@"
    fi
    if test "0$FF_CONF_EXEC" -lt 3; then
        FF_CONF_EXEC=3
        try_exec /usr/xpg4/bin/sh "$0" "$@"
39 40
    fi
    echo "No compatible shell script interpreter found."
Diego Biurrun's avatar
typo  
Diego Biurrun committed
41
    echo "This configure script requires a POSIX-compatible shell"
42
    echo "such as bash or ksh."
Diego Biurrun's avatar
Diego Biurrun committed
43 44 45
    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
    echo "Instead, install a working POSIX-compatible shell."
    echo "Disabling this configure test will create a broken FFmpeg."
46 47 48 49
    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
        echo "This bash version ($BASH_VERSION) is broken on your platform."
        echo "Upgrade to a later version if available."
    fi
50 51 52
    exit 1
fi

53 54 55 56 57 58
show_help(){
  echo "Usage: configure [options]"
  echo "Options: [defaults in brackets after descriptions]"
  echo
  echo "Standard options:"
  echo "  --help                   print this message"
59
  echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
60
  echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
61
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
62
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
63 64 65
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
  echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
  echo "  --enable-mp3lame         enable MP3 encoding via libmp3lame [default=no]"
66
  echo "  --enable-libnut          enable NUT support via libnut [default=no]"
67 68 69 70 71 72 73 74 75 76
  echo "  --enable-libogg          enable Ogg support via libogg [default=no]"
  echo "  --enable-vorbis          enable Vorbis support via libvorbis [default=no]"
  echo "  --enable-faad            enable FAAD support via libfaad [default=no]"
  echo "  --enable-faadbin         build FAAD support with runtime linking [default=no]"
  echo "  --enable-faac            enable FAAC support via libfaac [default=no]"
  echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
  echo "  --enable-xvid            enable XviD support via xvidcore [default=no]"
  echo "  --enable-x264            enable H.264 encoding via x264 [default=no]"
  echo "  --enable-mingw32         enable MinGW native/cross Windows compile"
  echo "  --enable-mingwce         enable MinGW native/cross WinCE compile"
77
  echo "  --enable-a52             enable GPLed liba52 support [default=no]"
78
  echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
79
  echo "  --enable-dts             enable GPLed libdts support [default=no]"
80 81 82 83 84 85 86 87 88 89 90
  echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
  echo "  --enable-static          build static libraries [default=yes]"
  echo "  --disable-static         do not build static libraries [default=no]"
  echo "  --enable-shared          build shared libraries [default=no]"
  echo "  --disable-shared         do not build shared libraries [default=yes]"
  echo "  --enable-amr_nb          enable amr_nb float audio codec"
  echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
  echo "  --enable-amr_wb          enable amr_wb float audio codec"
  echo "  --enable-amr_if2         enable amr_wb IF2 audio codec"
  echo "  --enable-sunmlib         use Sun medialib [default=no]"
  echo "  --enable-pthreads        use pthreads [default=no]"
91
  echo "  --enable-w32threads      use Win32 threads [default=no]"
92
  echo "  --enable-x11grab         enable X11 grabbing [default=no]"
93 94
  echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
  echo "                           and libraw1394 [default=no]"
Luca Abeni's avatar
Luca Abeni committed
95
  echo "  --enable-swscaler        software scaler support [default=no]"
96
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
97 98 99 100 101 102
  echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
  echo "                           and ffmpeg will be under GPL [default=no]"
  echo ""
  echo "Advanced options (experts only):"
  echo "  --source-path=PATH       path to source code [$source_path]"
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
103
  echo "  --cross-compile          assume a cross-compiler is used"
104 105 106 107 108 109
  echo "  --cc=CC                  use C compiler CC [$cc]"
  echo "  --make=MAKE              use specified make [$make]"
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
110
  echo "  --arch=ARCH              select architecture  [$arch]"
111 112
  echo "  --cpu=CPU                selects the minimum cpu required (affects
                                   instruction selection, may crash on older CPUs)"
113 114 115
  echo "  --powerpc-perf-enable    enable performance report on PPC"
  echo "                           (requires enabling PMC)"
  echo "  --disable-mmx            disable MMX usage"
116
  echo "  --disable-armv5te        disable armv5te usage"
117 118 119 120 121 122 123 124 125
  echo "  --disable-iwmmxt         disable iwmmxt usage"
  echo "  --disable-altivec        disable AltiVec usage"
  echo "  --disable-audio-oss      disable OSS audio support [default=no]"
  echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
  echo "  --disable-v4l            disable video4linux grabbing [default=no]"
  echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
  echo "  --disable-bktr           disable bktr video grabbing [default=no]"
  echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
  echo "  --disable-network        disable network support [default=no]"
126
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
127 128 129 130 131
  echo "  --disable-zlib           disable zlib [default=no]"
  echo "  --disable-vhook          disable video hooking support"
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
  echo "  --disable-debug          disable debugging symbols"
  echo "  --disable-opts           disable compiler optimizations"
132
  echo "  --enable-extra-warnings  enable more compiler warnings"
133 134 135
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
  echo "                           MPEG audio decoding [default=no]"
  echo "  --disable-protocols      disable I/O protocols support [default=no]"
136
  echo "  --disable-ffmpeg         disable ffmpeg build"
137 138 139 140 141 142 143 144 145 146 147
  echo "  --disable-ffserver       disable ffserver build"
  echo "  --disable-ffplay         disable ffplay build"
  echo "  --enable-small           optimize for size instead of speed"
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
  echo "  --disable-strip          disable stripping of executables and shared libraries"
  echo "  --disable-encoder=NAME   disables encoder NAME"
  echo "  --enable-encoder=NAME    enables encoder NAME"
  echo "  --disable-decoder=NAME   disables decoder NAME"
  echo "  --enable-decoder=NAME    enables decoder NAME"
  echo "  --disable-encoders       disables all encoders"
  echo "  --disable-decoders       disables all decoders"
148 149
  echo "  --disable-muxer=NAME     disables muxer NAME"
  echo "  --enable-muxer=NAME      enables muxer NAME"
150
  echo "  --disable-muxers         disables all muxers"
151 152
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
153
  echo "  --disable-demuxers       disables all demuxers"
154 155 156
  echo "  --enable-parser=NAME     enables parser NAME"
  echo "  --disable-parser=NAME    disables parser NAME"
  echo "  --disable-parsers        disables all parsers"
157 158 159 160
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
161

162 163 164 165
log(){
    echo "$@" >>$logfile
}

166
log_file(){
Måns Rullgård's avatar
Måns Rullgård committed
167 168 169 170 171
    log BEGIN $1
    cat -n $1 >>$logfile
    log END $1
}

172
echolog(){
Måns Rullgård's avatar
Måns Rullgård committed
173
    log "$@"
174
    echo "$@"
175 176 177 178 179 180 181 182 183
}

die(){
    echolog "$@"
    cat <<EOF
If you think configure made a mistake, make sure you are using the latest
version from SVN.  If the latest version fails, report the problem to the
ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
EOF
184
    if enabled logging; then
185 186 187 188 189 190 191 192 193 194
        cat <<EOF
Include the log file "$logfile" produced by configure as this will help
solving the problem.
EOF
    else
cat <<EOF
Rerun configure with logging enabled (do not use --log=no), and include the
log this produces with your report.
EOF
    fi
195 196 197 198
    rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
    exit 1
}

199
# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
200 201 202 203
toupper(){
    echo "$@" | tr '[a-z]' '[A-Z]'
}

204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
set_all(){
    value=$1
    shift
    for var in $*; do
        eval $var=$value
    done
}

enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}

220
enabled(){
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
    eval test "x\$$1" = "xyes"
}

enabled_all(){
    for opt; do
        enabled $opt || return 1
    done
}

enabled_any(){
    for opt; do
        enabled $opt && return 0
    done
}

print_config(){
    pfx=$1
    header=$2
    makefile=$3
    shift 3
    for cfg; do
        if enabled $cfg; then
            ucname="${pfx}`toupper $cfg`"
            echo "#define ${ucname} 1" >> $header
            echo "${ucname}=yes" >> $makefile
        fi
    done
248 249 250 251 252 253
}

flags_saved(){
    (: ${SAVE_CFLAGS?}) 2>/dev/null
}

254
save_flags(){
255
    flags_saved && return
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
    CFLAGS="$SAVE_CFLAGS"
    LDFLAGS="$SAVE_LDFLAGS"
    extralibs="$SAVE_extralibs"
    unset SAVE_CFLAGS
    unset SAVE_LDFLAGS
    unset SAVE_extralibs
}

temp_cflags(){
    save_flags
    CFLAGS="$CFLAGS $*"
}

temp_ldflags(){
    save_flags
    LDFLAGS="$LDFLAGS $*"
}

temp_extralibs(){
    save_flags
    extralibs="$extralibs $*"
}

285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
append(){
    var=$1
    shift
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
    eval "$var=\"\$$var $*\""
}

add_cflags(){
    append CFLAGS "$@"
}

add_ldflags(){
    append LDFLAGS "$@"
}

add_extralibs(){
    append extralibs "$@"
}

304
check_cmd(){
Måns Rullgård's avatar
Måns Rullgård committed
305
    log "$@"
306
    "$@" >>$logfile 2>&1
307 308
}

309
check_cc(){
310 311
    log check_cc "$@"
    cat >$TMPC
312
    log_file $TMPC
313
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
314 315 316 317
}

check_cpp(){
    log check_cpp "$@"
318
    cat >$TMPC
319
    log_file $TMPC
320
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
321 322 323
}

check_ld(){
324
    log check_ld "$@"
325
    check_cc || return
326
    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
327 328 329
}

check_cflags(){
330 331
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
332 333 334 335 336
int x;
EOF
}

check_ldflags(){
337 338 339 340 341
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
int main(){
    return 0;
}
342 343 344 345
EOF
}

check_header(){
346
    log check_header "$@"
347 348
    header=$1
    shift
349
    check_cpp "$@" <<EOF
350 351 352
#include <$header>
int x;
EOF
353
    err=$?
354
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
355 356
    test "$err" = 0 && enable $var || disable $var
    return $err
357 358 359
}

check_func(){
360
    log check_func "$@"
361 362 363 364 365 366 367 368
    func=$1
    shift
    check_ld "$@" <<EOF
extern int $func();
int main(){
    $func();
}
EOF
369 370 371
    err=$?
    test "$err" = 0 && enable $func || disable $func
    return $err
372 373
}

374 375 376 377 378 379 380 381 382 383 384 385
check_lib(){
    log check_lib "$@"
    header="$1"
    func="$2"
    shift 2
    temp_extralibs "$@"
    check_header $header && check_func $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
}

386
check_exec(){
387
    check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
388 389 390 391 392 393 394 395
}

require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
396 397
}

398 399 400 401 402 403
apply(){
    file=$1
    shift
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
}

404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
CONFIG_LIST='
    encoders
    decoders
    parsers
    muxers
    demuxers
    amr
    amr_nb
    amr_nb_fixed
    amr_wb
    audio_beos
    audio_oss
    avisynth
    beos_netserver
    bktr
    dc1394
    dv1394
    ffmpeg
    ffplay
    ffserver
    gpl
    ipv6
426 427
    liba52
    liba52bin
428
    libdts
429 430 431
    libfaac
    libfaad
    libfaadbin
432 433 434 435 436 437 438 439 440 441 442 443 444 445
    libgsm
    libnut
    libogg
    libvorbis
    memalign_hack
    mp3lame
    mpegaudio_hp
    network
    pp
    protocols
    swscaler
    vhook
    video4linux
    video4linux2
446
    wince
447
    x11grab
448 449 450 451 452 453 454
    x264
    xvid
    zlib
'

HAVE_LIST='
    altivec_h
455
    beosthreads
456 457
    byteswap_h
    dcbzl
458 459 460 461 462
    dev_bktr_ioctl_bt848_h
    dev_bktr_ioctl_meteor_h
    dev_ic_bt8xx_h
    dev_video_meteor_ioctl_meteor_h
    dev_video_bktr_ioctl_bt848_h
463
    dlfcn_h
464 465 466 467
    dlopen
    freetype2
    gprof
    imlib2
468
    inet_aton
469 470
    localtime_r
    lrintf
471 472
    machine_ioctl_bt848_h
    machine_ioctl_meteor_h
473 474 475
    malloc_h
    memalign
    mlib
476
    os2
477 478
    os2threads
    pthreads
479 480
    sdl
    sdl_video_size
481 482
    threads
    w32threads
483
'
484

485
# set temporary file name
Zdenek Kabelac's avatar
Zdenek Kabelac committed
486
if test ! -z "$TMPDIR" ; then
487
    TMPDIR1="${TMPDIR}"
Zdenek Kabelac's avatar
Zdenek Kabelac committed
488
elif test ! -z "$TEMPDIR" ; then
489
    TMPDIR1="${TEMPDIR}"
Nick Kurshev's avatar
Nick Kurshev committed
490
else
491
    TMPDIR1="/tmp"
Nick Kurshev's avatar
Nick Kurshev committed
492 493
fi

494 495
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
496
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
497 498 499
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

Fabrice Bellard's avatar
Fabrice Bellard committed
500
# default parameters
501
logging="yes"
502
logfile="config.err"
503 504
PREFIX="/usr/local"
libdir='${PREFIX}/lib'
505
shlibdir="$libdir"
506 507 508
incdir='${PREFIX}/include/ffmpeg'
mandir='${PREFIX}/man'
bindir='${PREFIX}/bin'
509
cross_prefix=""
510
cross_compile="no"
Fabrice Bellard's avatar
Fabrice Bellard committed
511 512
cc="gcc"
ar="ar"
Michael Niedermayer's avatar
Michael Niedermayer committed
513
ranlib="ranlib"
514
make="make"
515
strip="strip"
516
arch=`uname -m`
517
cpu="generic"
518
powerpc_perf="no"
519
mmx="default"
520
cmov="no"
521
cmov_is_fast="no"
522
armv5te="default"
523
iwmmxt="default"
524
altivec="default"
525
dcbzl="no"
526
mmi="default"
527
case "$arch" in
528
  i386|i486|i586|i686|i86pc|BePC)
529
    arch="x86_32"
Fabrice Bellard's avatar
Fabrice Bellard committed
530
  ;;
531
  x86_64|amd64)
Diego Biurrun's avatar
typo  
Diego Biurrun committed
532
    arch="x86_32"
533
    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
534 535
    if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
      if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
536
        arch="x86_64"
537
      fi
538 539
    fi
  ;;
540 541
  # armv4l is a subset of armv[567]*l
  arm|armv[4567]*l)
542
    arch="armv4l"
543
  ;;
544
  alpha)
545
    arch="alpha"
546
  ;;
547
  "Power Macintosh"|ppc|ppc64|powerpc)
548
    arch="powerpc"
549
  ;;
550
  mips|mipsel|IP*)
551
    arch="mips"
552
  ;;
553
  sun4u|sparc64)
554
    arch="sparc64"
555
  ;;
556
  sparc)
557
    arch="sparc"
558
  ;;
Alex Beregszaszi's avatar
Alex Beregszaszi committed
559
  sh4)
560
    arch="sh4"
Alex Beregszaszi's avatar
Alex Beregszaszi committed
561
  ;;
562
  parisc|parisc64)
563
    arch="parisc"
564 565
  ;;
  s390|s390x)
566
    arch="s390"
567 568
  ;;
  m68k)
569
    arch="m68k"
570 571
  ;;
  ia64)
572
    arch="ia64"
573
  ;;
Michael Benjamin's avatar
Michael Benjamin committed
574
  bfin)
575
    arch="bfin"
Michael Benjamin's avatar
Michael Benjamin committed
576
  ;;
Fabrice Bellard's avatar
Fabrice Bellard committed
577
  *)
578
    arch="unknown"
Fabrice Bellard's avatar
Fabrice Bellard committed
579 580 581
  ;;
esac
gprof="no"
582 583
video4linux="yes"
video4linux2="yes"
584
bktr="no"
Fabrice Bellard's avatar
Fabrice Bellard committed
585
audio_oss="yes"
586
audio_beos="no"
587
x11grab="no"
588
dv1394="yes"
589
dc1394="no"
Fabrice Bellard's avatar
Fabrice Bellard committed
590
network="yes"
591
ipv6="yes"
592
zlib="yes"
593 594
liba52="no"
liba52bin="no"
595 596 597
libfaac="no"
libfaad="no"
libfaadbin="no"
598
libgsm="no"
599
mp3lame="no"
600
libdts="no"
601
libnut="no"
602
libogg="no"
603
libvorbis="no"
604
xvid="no"
605
x264="no"
606
pp="no"
607
mingw32="no"
608
wince="no"
609
os2="no"
610
lstatic="yes"
611
lshared="no"
612 613
optimize="yes"
debug="yes"
614
extrawarnings="no"
615
dostrip="yes"
616
installstrip="-s"
617
extralibs="-lm"
618
bigendian="no"
619
vhook="default"
620
avisynth="no"
621
dlfcn_h="no"
622
dlopen="no"
623
mpegaudio_hp="yes"
624
SHFLAGS='-shared -Wl,-soname,$@'
625
VHOOKSHFLAGS='$(SHFLAGS)'
626
beos_netserver="no"
627
protocols="yes"
628
ffmpeg="yes"
629
ffserver="yes"
630
ffplay="yes"
631
LIBOBJFLAGS=""
632
FFLDFLAGS=-Wl,--warn-common
633
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
634
FFSERVERLDFLAGS=-Wl,-E
635
LDCONFIG="ldconfig"
636 637
LIBPREF="lib"
LIBSUF=".a"
638
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
639 640
SLIBPREF="lib"
SLIBSUF=".so"
641
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
642 643
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
Fabrice Bellard's avatar
Fabrice Bellard committed
644
EXESUF=""
645
BUILDSUF=""
646
amr_nb="no"
647
amr_wb="no"
Zdenek Kabelac's avatar
Zdenek Kabelac committed
648
amr_nb_fixed="no"
649
amr_if2="no"
650
mlib="no"
651
pthreads="no"
652
w32threads="no"
Luca Abeni's avatar
Luca Abeni committed
653
swscaler="no"
654
gpl="no"
655
memalign_hack="no"
656
asmalign_pot="unknown"
657
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
658 659 660 661 662

# OS specific
targetos=`uname -s`
case $targetos in
BeOS)
663
PREFIX="/boot/home/config"
664
# helps building libavcodec
665
add_cflags "-DPIC -fomit-frame-pointer"
666
# 3 gcc releases known for BeOS, each with ugly bugs
667
gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
668 669 670 671 672
case "$gcc_version" in
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
mmx="no"
;;
*20010315*) echo "BeBits gcc"
673
add_cflags "-fno-expensive-optimizations"
674 675
;;
esac
676
SHFLAGS=-nostart
Diego Biurrun's avatar
Diego Biurrun committed
677
# disable Linux things
678
audio_oss="no"
679 680
video4linux="no"
video4linux2="no"
681
dv1394="no"
Diego Biurrun's avatar
Diego Biurrun committed
682
# enable BeOS things
683
audio_beos="yes"
684
beosthreads="yes"
685 686 687 688 689
# no need for libm, but the inet stuff
# Check for BONE
if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
extralibs="-lbind -lsocket"
else
690
beos_netserver="yes"
691
extralibs="-lnet"
692
fi ;;
693
SunOS)
694 695
video4linux="no"
video4linux2="no"
696
audio_oss="no"
697
dv1394="no"
698
make="gmake"
699
FFLDFLAGS=""
700
FFSERVERLDFLAGS=""
701
SHFLAGS="-shared -Wl,-h,\$@"
702
add_extralibs "-lsocket -lnsl"
703
;;
704
NetBSD)
705 706
video4linux="no"
video4linux2="no"
707
bktr="yes"
708 709 710
audio_oss="yes"
dv1394="no"
make="gmake"
711
add_extralibs "-lossaudio"
712
;;
713
OpenBSD)
714 715
video4linux="no"
video4linux2="no"
716
bktr="yes"
717 718
audio_oss="yes"
dv1394="no"
719
need_memalign="no"
720
make="gmake"
721
LIBOBJFLAGS="\$(PIC)"
722
LDCONFIG="ldconfig -m \$(shlibdir)"
723 724 725 726
SHFLAGS='-shared'
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
SLIBNAME_WITH_VERSION='$(SLIBNAME)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
727
add_extralibs "-lossaudio"
728
;;
729
FreeBSD)
730 731
video4linux="no"
video4linux2="no"
732
bktr="yes"
733
audio_oss="yes"
734
dv1394="no"
735
make="gmake"
736
need_memalign="no"
737
add_cflags "-pthread"
738
;;
739
GNU/kFreeBSD)
740 741
video4linux="no"
video4linux2="no"
742 743 744
bktr="yes"
audio_oss="yes"
dv1394="no"
745
add_cflags "-pthread"
746
;;
747
BSD/OS)
748 749
video4linux="no"
video4linux2="no"
750
bktr="yes"
Fabrice Bellard's avatar
Fabrice Bellard committed
751
audio_oss="yes"
752
dv1394="no"
753 754
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
755 756
strip="strip -d"
installstrip=""
757
;;
758
Darwin)
759
cc="cc"
760 761
video4linux="no"
video4linux2="no"
762
audio_oss="no"
763
dv1394="no"
764
need_memalign="no"
765
SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
766
VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
767
extralibs=""
768
strip="strip -x"
769
installstrip=""
770
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
771
SLIBSUF=".dylib"
772
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
773
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
774
FFSERVERLDFLAGS=-Wl,-bind_at_load
775
;;
776
MINGW32*)
Fabrice Bellard's avatar
Fabrice Bellard committed
777
# Note: the rest of the mingw32 config is done afterwards as mingw32
Diego Biurrun's avatar
Diego Biurrun committed
778
# can be forced on the command line for Linux cross compilation.
779 780
mingw32="yes"
;;
781
CYGWIN*)
782
targetos=CYGWIN
783
shlibdir="$bindir"
784 785
video4linux="no"
video4linux2="no"
786
audio_oss="yes"
787
dv1394="no"
788
VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
789
VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
790
extralibs=""
791
EXESUF=".exe"
792 793 794 795 796
SLIBPREF="cyg"
SLIBSUF=".dll"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
797
;;
798
Linux)
799
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
800
;;
801
IRIX*)
802
targetos=IRIX
803
ranlib="echo ignoring ranlib"
804 805
video4linux="no"
video4linux2="no"
806 807 808
audio_oss="no"
make="gmake"
;;
809 810
OS/2)
TMPE=$TMPE".exe"
811
ar="emxomfar -p128"
812 813
ranlib="echo ignoring ranlib"
strip="echo ignoring strip"
814
add_cflags "-Zomf"
815
FFLDFLAGS="-Zomf -Zstack 16384 -s"
816
SHFLAGS="-Zdll -Zomf"
817
FFSERVERLDFLAGS=""
818 819 820 821
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
Fabrice Bellard's avatar
Fabrice Bellard committed
822
EXESUF=".exe"
823
extralibs=""
824
pkg_requires=""
825 826
video4linux="no"
video4linux2="no"
827
audio_oss="no"
828
dv1394="no"