wok annotate ffmpeg/stuff/configure @ rev 19159
/etc/init.d/*: use 'action' in pair with 'status'.
'action' returns translated message, so why not to add full translatable /etc/init.d/* content
'action' returns translated message, so why not to add full translatable /etc/init.d/* content
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Thu May 26 20:16:45 2016 +0300 (2016-05-26) |
parents | |
children |
rev | line source |
---|---|
jozee@2711 | 1 #!/bin/sh |
jozee@2711 | 2 # |
jozee@2711 | 3 # FFmpeg configure script |
jozee@2711 | 4 # |
jozee@2711 | 5 # Copyright (c) 2000-2002 Fabrice Bellard |
jozee@2711 | 6 # Copyright (c) 2005-2008 Diego Biurrun |
jozee@2711 | 7 # Copyright (c) 2005-2008 Mans Rullgard |
jozee@2711 | 8 # |
jozee@2711 | 9 |
jozee@2711 | 10 # Prevent locale nonsense from breaking basic text processing. |
jozee@2711 | 11 LC_ALL=C |
jozee@2711 | 12 export LC_ALL |
jozee@2711 | 13 |
jozee@2711 | 14 # make sure we are running under a compatible shell |
jozee@2711 | 15 # try to make this part work with most shells |
jozee@2711 | 16 |
jozee@2711 | 17 try_exec(){ |
jozee@2711 | 18 echo "Trying shell $1" |
jozee@2711 | 19 type "$1" > /dev/null 2>&1 && exec "$@" |
jozee@2711 | 20 } |
jozee@2711 | 21 |
jozee@2711 | 22 unset foo |
jozee@2711 | 23 (: ${foo%%bar}) 2> /dev/null |
jozee@2711 | 24 E1="$?" |
jozee@2711 | 25 |
jozee@2711 | 26 (: ${foo?}) 2> /dev/null |
jozee@2711 | 27 E2="$?" |
jozee@2711 | 28 |
jozee@2711 | 29 if test "$E1" != 0 || test "$E2" = 0; then |
jozee@2711 | 30 echo "Broken shell detected. Trying alternatives." |
jozee@2711 | 31 export FF_CONF_EXEC |
jozee@2711 | 32 if test "0$FF_CONF_EXEC" -lt 1; then |
jozee@2711 | 33 FF_CONF_EXEC=1 |
jozee@2711 | 34 try_exec bash "$0" "$@" |
jozee@2711 | 35 fi |
jozee@2711 | 36 if test "0$FF_CONF_EXEC" -lt 2; then |
jozee@2711 | 37 FF_CONF_EXEC=2 |
jozee@2711 | 38 try_exec ksh "$0" "$@" |
jozee@2711 | 39 fi |
jozee@2711 | 40 if test "0$FF_CONF_EXEC" -lt 3; then |
jozee@2711 | 41 FF_CONF_EXEC=3 |
jozee@2711 | 42 try_exec /usr/xpg4/bin/sh "$0" "$@" |
jozee@2711 | 43 fi |
jozee@2711 | 44 echo "No compatible shell script interpreter found." |
jozee@2711 | 45 echo "This configure script requires a POSIX-compatible shell" |
jozee@2711 | 46 echo "such as bash or ksh." |
jozee@2711 | 47 echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH." |
jozee@2711 | 48 echo "Instead, install a working POSIX-compatible shell." |
jozee@2711 | 49 echo "Disabling this configure test will create a broken FFmpeg." |
jozee@2711 | 50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then |
jozee@2711 | 51 echo "This bash version ($BASH_VERSION) is broken on your platform." |
jozee@2711 | 52 echo "Upgrade to a later version if available." |
jozee@2711 | 53 fi |
jozee@2711 | 54 exit 1 |
jozee@2711 | 55 fi |
jozee@2711 | 56 |
jozee@2711 | 57 show_help(){ |
jozee@2711 | 58 echo "Usage: configure [options]" |
jozee@2711 | 59 echo "Options: [defaults in brackets after descriptions]" |
jozee@2711 | 60 echo |
jozee@2711 | 61 echo "Standard options:" |
jozee@2711 | 62 echo " --help print this message" |
jozee@2711 | 63 echo " --logfile=FILE log tests and output to FILE [config.err]" |
jozee@2711 | 64 echo " --disable-logging do not log configure debug information" |
jozee@2711 | 65 echo " --prefix=PREFIX install in PREFIX [$prefix]" |
jozee@2711 | 66 echo " --bindir=DIR install binaries in DIR [PREFIX/bin]" |
jozee@2711 | 67 echo " --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]" |
jozee@2711 | 68 echo " --libdir=DIR install libs in DIR [PREFIX/lib]" |
jozee@2711 | 69 echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]" |
jozee@2711 | 70 echo " --incdir=DIR install includes in DIR [PREFIX/include]" |
jozee@2711 | 71 echo " --mandir=DIR install man page in DIR [PREFIX/share/man]" |
jozee@2711 | 72 echo |
jozee@2711 | 73 echo "Configuration options:" |
jozee@2711 | 74 echo " --disable-static do not build static libraries [no]" |
jozee@2711 | 75 echo " --enable-shared build shared libraries [no]" |
jozee@2711 | 76 echo " --enable-gpl allow use of GPL code, the resulting libs" |
jozee@2711 | 77 echo " and binaries will be under GPL [no]" |
jozee@2711 | 78 echo " --enable-nonfree allow use of nonfree code, the resulting libs" |
jozee@2711 | 79 echo " and binaries will be unredistributable [no]" |
jozee@2711 | 80 echo " --disable-ffmpeg disable ffmpeg build" |
jozee@2711 | 81 echo " --disable-ffplay disable ffplay build" |
jozee@2711 | 82 echo " --disable-ffserver disable ffserver build" |
jozee@2711 | 83 echo " --enable-postproc enable GPLed postprocessing support [no]" |
jozee@2711 | 84 echo " --enable-avfilter video filter support [no]" |
jozee@2711 | 85 echo " --enable-avfilter-lavf video filters dependent on avformat [no]" |
jozee@2711 | 86 echo " --enable-beosthreads use BeOS threads [no]" |
jozee@2711 | 87 echo " --enable-os2threads use OS/2 threads [no]" |
jozee@2711 | 88 echo " --enable-pthreads use pthreads [no]" |
jozee@2711 | 89 echo " --enable-w32threads use Win32 threads [no]" |
jozee@2711 | 90 echo " --enable-x11grab enable X11 grabbing [no]" |
jozee@2711 | 91 echo " --disable-network disable network support [no]" |
jozee@2711 | 92 echo " --disable-ipv6 disable IPv6 support [no]" |
jozee@2711 | 93 echo " --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]" |
jozee@2711 | 94 echo " --enable-gray enable full grayscale support (slower color)" |
jozee@2711 | 95 echo " --disable-swscale-alpha disable alpha channel support in swscale" |
jozee@2711 | 96 echo " --disable-fastdiv disable table-based division" |
jozee@2711 | 97 echo " --enable-small optimize for size instead of speed" |
jozee@2711 | 98 echo " --disable-aandct disable AAN DCT code" |
jozee@2711 | 99 echo " --disable-fft disable FFT code" |
jozee@2711 | 100 echo " --disable-golomb disable Golomb code" |
jozee@2711 | 101 echo " --disable-mdct disable MDCT code" |
jozee@2711 | 102 echo " --disable-rdft disable RDFT code" |
jozee@2711 | 103 echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation" |
jozee@2711 | 104 echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers" |
jozee@2711 | 105 echo " --enable-beos-netserver enable BeOS netserver" |
jozee@2711 | 106 echo " --disable-encoder=NAME disable encoder NAME" |
jozee@2711 | 107 echo " --enable-encoder=NAME enable encoder NAME" |
jozee@2711 | 108 echo " --disable-encoders disable all encoders" |
jozee@2711 | 109 echo " --disable-decoder=NAME disable decoder NAME" |
jozee@2711 | 110 echo " --enable-decoder=NAME enable decoder NAME" |
jozee@2711 | 111 echo " --disable-decoders disable all decoders" |
jozee@2711 | 112 echo " --disable-hwaccel=NAME disable hwaccel NAME" |
jozee@2711 | 113 echo " --enable-hwaccel=NAME enable hwaccel NAME" |
jozee@2711 | 114 echo " --disable-hwaccels disable all hwaccels" |
jozee@2711 | 115 echo " --disable-muxer=NAME disable muxer NAME" |
jozee@2711 | 116 echo " --enable-muxer=NAME enable muxer NAME" |
jozee@2711 | 117 echo " --disable-muxers disable all muxers" |
jozee@2711 | 118 echo " --disable-demuxer=NAME disable demuxer NAME" |
jozee@2711 | 119 echo " --enable-demuxer=NAME enable demuxer NAME" |
jozee@2711 | 120 echo " --disable-demuxers disable all demuxers" |
jozee@2711 | 121 echo " --enable-parser=NAME enable parser NAME" |
jozee@2711 | 122 echo " --disable-parser=NAME disable parser NAME" |
jozee@2711 | 123 echo " --disable-parsers disable all parsers" |
jozee@2711 | 124 echo " --enable-bsf=NAME enable bitstream filter NAME" |
jozee@2711 | 125 echo " --disable-bsf=NAME disable bitstream filter NAME" |
jozee@2711 | 126 echo " --disable-bsfs disable all bitstream filters" |
jozee@2711 | 127 echo " --enable-protocol=NAME enable protocol NAME" |
jozee@2711 | 128 echo " --disable-protocol=NAME disable protocol NAME" |
jozee@2711 | 129 echo " --disable-protocols disable all protocols" |
jozee@2711 | 130 echo " --disable-indevs disable input devices" |
jozee@2711 | 131 echo " --disable-outdevs disable output devices" |
jozee@2711 | 132 echo " --disable-devices disable all devices" |
jozee@2711 | 133 echo " --enable-filter=NAME enable filter NAME" |
jozee@2711 | 134 echo " --disable-filter=NAME disable filter NAME" |
jozee@2711 | 135 echo " --disable-filters disable all filters" |
jozee@2711 | 136 echo " --list-decoders show all available decoders" |
jozee@2711 | 137 echo " --list-encoders show all available encoders" |
jozee@2711 | 138 echo " --list-hwaccels show all available hardware accelerators" |
jozee@2711 | 139 echo " --list-muxers show all available muxers" |
jozee@2711 | 140 echo " --list-demuxers show all available demuxers" |
jozee@2711 | 141 echo " --list-parsers show all available parsers" |
jozee@2711 | 142 echo " --list-protocols show all available protocols" |
jozee@2711 | 143 echo " --list-bsfs show all available bitstream filters" |
jozee@2711 | 144 echo " --list-indevs show all available input devices" |
jozee@2711 | 145 echo " --list-outdevs show all available output devices" |
jozee@2711 | 146 echo " --list-filters show all available filters" |
jozee@2711 | 147 echo |
jozee@2711 | 148 echo "External library support:" |
jozee@2711 | 149 echo " --enable-avisynth enable reading of AVISynth script files [no]" |
jozee@2711 | 150 echo " --enable-bzlib enable bzlib [autodetect]" |
jozee@2711 | 151 echo " --enable-libamr-nb enable libamr-nb floating point audio codec [no]" |
jozee@2711 | 152 echo " --enable-libamr-wb enable libamr-wb floating point audio codec [no]" |
jozee@2711 | 153 echo " --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394" |
jozee@2711 | 154 echo " and libraw1394 [no]" |
jozee@2711 | 155 echo " --enable-libdirac enable Dirac support via libdirac [no]" |
jozee@2711 | 156 echo " --enable-libfaac enable FAAC support via libfaac [no]" |
jozee@2711 | 157 echo " --enable-libfaad enable FAAD support via libfaad [no]" |
jozee@2711 | 158 echo " --enable-libfaadbin open libfaad.so.0 at runtime [no]" |
jozee@2711 | 159 echo " --enable-libgsm enable GSM support via libgsm [no]" |
jozee@2711 | 160 echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [no]" |
jozee@2711 | 161 echo " --enable-libnut enable NUT (de)muxing via libnut," |
jozee@2711 | 162 echo " native (de)muxer exists [no]" |
jozee@2711 | 163 echo " --enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]" |
jozee@2711 | 164 echo " --enable-libschroedinger enable Dirac support via libschroedinger [no]" |
jozee@2711 | 165 echo " --enable-libspeex enable Speex decoding via libspeex [no]" |
jozee@2711 | 166 echo " --enable-libtheora enable Theora encoding via libtheora [no]" |
jozee@2711 | 167 echo " --enable-libvorbis enable Vorbis encoding via libvorbis," |
jozee@2711 | 168 echo " native implementation exists [no]" |
jozee@2711 | 169 echo " --enable-libx264 enable H.264 encoding via x264 [no]" |
jozee@2711 | 170 echo " --enable-libxvid enable Xvid encoding via xvidcore," |
jozee@2711 | 171 echo " native MPEG-4/Xvid encoder exists [no]" |
jozee@2711 | 172 echo " --enable-mlib enable Sun medialib [no]" |
jozee@2711 | 173 echo " --enable-zlib enable zlib [autodetect]" |
jozee@2711 | 174 echo "" |
jozee@2711 | 175 echo "Advanced options (experts only):" |
jozee@2711 | 176 echo " --source-path=PATH path to source code [$source_path]" |
jozee@2711 | 177 echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]" |
jozee@2711 | 178 echo " --enable-cross-compile assume a cross-compiler is used" |
jozee@2711 | 179 echo " --sysroot=PATH root of cross-build tree" |
jozee@2711 | 180 echo " --sysinclude=PATH location of cross-build system headers" |
jozee@2711 | 181 echo " --target-os=OS compiler targets OS [$target_os]" |
jozee@2711 | 182 echo " --target-exec=CMD command to run executables on target" |
jozee@2711 | 183 echo " --target-path=DIR path to view of build directory on target" |
jozee@2711 | 184 echo " --nm=NM use nm tool" |
jozee@2711 | 185 echo " --as=AS use assembler AS [$as_default]" |
jozee@2711 | 186 echo " --cc=CC use C compiler CC [$cc_default]" |
jozee@2711 | 187 echo " --host-cc=HOSTCC use host C compiler HOSTCC" |
jozee@2711 | 188 echo " --host-cflags=HCFLAGS use HCFLAGS when compiling for host" |
jozee@2711 | 189 echo " --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host" |
jozee@2711 | 190 echo " --host-libs=HLIBS use libs HLIBS when linking for host" |
jozee@2711 | 191 echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]" |
jozee@2711 | 192 echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]" |
jozee@2711 | 193 echo " --extra-libs=ELIBS add ELIBS [$ELIBS]" |
jozee@2711 | 194 echo " --extra-version=STRING version string suffix []" |
jozee@2711 | 195 echo " --build-suffix=SUFFIX library name suffix []" |
jozee@2711 | 196 echo " --arch=ARCH select architecture [$arch]" |
jozee@2711 | 197 echo " --cpu=CPU select the minimum required CPU (affects" |
jozee@2711 | 198 echo " instruction selection, may crash on older CPUs)" |
jozee@2711 | 199 echo " --enable-powerpc-perf enable performance report on PPC" |
jozee@2711 | 200 echo " (requires enabling PMC)" |
jozee@2711 | 201 echo " --disable-altivec disable AltiVec optimizations" |
jozee@2711 | 202 echo " --disable-amd3dnow disable 3DNow! optimizations" |
jozee@2711 | 203 echo " --disable-amd3dnowext disable 3DNow! extended optimizations" |
jozee@2711 | 204 echo " --disable-mmx disable MMX optimizations" |
jozee@2711 | 205 echo " --disable-mmx2 disable MMX2 optimizations" |
jozee@2711 | 206 echo " --disable-sse disable SSE optimizations" |
jozee@2711 | 207 echo " --disable-ssse3 disable SSSE3 optimizations" |
jozee@2711 | 208 echo " --disable-armv5te disable armv5te optimizations" |
jozee@2711 | 209 echo " --disable-armv6 disable armv6 optimizations" |
jozee@2711 | 210 echo " --disable-armv6t2 disable armv6t2 optimizations" |
jozee@2711 | 211 echo " --disable-armvfp disable ARM VFP optimizations" |
jozee@2711 | 212 echo " --disable-iwmmxt disable iwmmxt optimizations" |
jozee@2711 | 213 echo " --disable-mmi disable MMI optimizations" |
jozee@2711 | 214 echo " --disable-neon disable neon optimizations" |
jozee@2711 | 215 echo " --disable-vis disable VIS optimizations" |
jozee@2711 | 216 echo " --disable-yasm disable use of yasm assembler" |
jozee@2711 | 217 echo |
jozee@2711 | 218 echo "Developer options (useful when working on FFmpeg itself):" |
jozee@2711 | 219 echo " --disable-debug disable debugging symbols" |
jozee@2711 | 220 echo " --enable-debug=LEVEL set the debug level [$debuglevel]" |
jozee@2711 | 221 echo " --enable-gprof enable profiling with gprof [$gprof]" |
jozee@2711 | 222 echo " --disable-optimizations disable compiler optimizations" |
jozee@2711 | 223 echo " --enable-extra-warnings enable more compiler warnings" |
jozee@2711 | 224 echo " --disable-stripping disable stripping of executables and shared libraries" |
jozee@2711 | 225 echo "" |
jozee@2711 | 226 echo "NOTE: Object files are built at the place where configure is launched." |
jozee@2711 | 227 exit 0 |
jozee@2711 | 228 } |
jozee@2711 | 229 |
jozee@2711 | 230 log(){ |
jozee@2711 | 231 echo "$@" >> $logfile |
jozee@2711 | 232 } |
jozee@2711 | 233 |
jozee@2711 | 234 log_file(){ |
jozee@2711 | 235 log BEGIN $1 |
jozee@2711 | 236 cat $1 >> $logfile |
jozee@2711 | 237 log END $1 |
jozee@2711 | 238 } |
jozee@2711 | 239 |
jozee@2711 | 240 echolog(){ |
jozee@2711 | 241 log "$@" |
jozee@2711 | 242 echo "$@" |
jozee@2711 | 243 } |
jozee@2711 | 244 |
jozee@2711 | 245 die(){ |
jozee@2711 | 246 echolog "$@" |
jozee@2711 | 247 cat <<EOF |
jozee@2711 | 248 |
jozee@2711 | 249 If you think configure made a mistake, make sure you are using the latest |
jozee@2711 | 250 version from SVN. If the latest version fails, report the problem to the |
jozee@2711 | 251 ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net. |
jozee@2711 | 252 EOF |
jozee@2711 | 253 if disabled logging; then |
jozee@2711 | 254 cat <<EOF |
jozee@2711 | 255 Rerun configure with logging enabled (do not use --disable-logging), and |
jozee@2711 | 256 include the log this produces with your report. |
jozee@2711 | 257 EOF |
jozee@2711 | 258 else |
jozee@2711 | 259 cat <<EOF |
jozee@2711 | 260 Include the log file "$logfile" produced by configure as this will help |
jozee@2711 | 261 solving the problem. |
jozee@2711 | 262 EOF |
jozee@2711 | 263 fi |
jozee@2711 | 264 exit 1 |
jozee@2711 | 265 } |
jozee@2711 | 266 |
jozee@2711 | 267 # Avoid locale weirdness, besides we really just want to translate ASCII. |
jozee@2711 | 268 toupper(){ |
jozee@2711 | 269 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
jozee@2711 | 270 } |
jozee@2711 | 271 |
jozee@2711 | 272 tolower(){ |
jozee@2711 | 273 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz |
jozee@2711 | 274 } |
jozee@2711 | 275 |
jozee@2711 | 276 c_escape(){ |
jozee@2711 | 277 echo "$*" | sed 's/["\\]/\\\0/g' |
jozee@2711 | 278 } |
jozee@2711 | 279 |
jozee@2711 | 280 set_all(){ |
jozee@2711 | 281 value=$1 |
jozee@2711 | 282 shift |
jozee@2711 | 283 for var in $*; do |
jozee@2711 | 284 eval $var=$value |
jozee@2711 | 285 done |
jozee@2711 | 286 } |
jozee@2711 | 287 |
jozee@2711 | 288 set_weak(){ |
jozee@2711 | 289 value=$1 |
jozee@2711 | 290 shift |
jozee@2711 | 291 for var; do |
jozee@2711 | 292 eval : \${$var:=$value} |
jozee@2711 | 293 done |
jozee@2711 | 294 } |
jozee@2711 | 295 |
jozee@2711 | 296 pushvar(){ |
jozee@2711 | 297 for var in $*; do |
jozee@2711 | 298 eval level=\${${var}_level:=0} |
jozee@2711 | 299 eval ${var}_${level}="\$$var" |
jozee@2711 | 300 eval ${var}_level=$(($level+1)) |
jozee@2711 | 301 done |
jozee@2711 | 302 } |
jozee@2711 | 303 |
jozee@2711 | 304 popvar(){ |
jozee@2711 | 305 for var in $*; do |
jozee@2711 | 306 eval level=\${${var}_level:-0} |
jozee@2711 | 307 test $level = 0 && continue |
jozee@2711 | 308 eval level=$(($level-1)) |
jozee@2711 | 309 eval $var="\${${var}_${level}}" |
jozee@2711 | 310 eval ${var}_level=$level |
jozee@2711 | 311 eval unset ${var}_${level} |
jozee@2711 | 312 done |
jozee@2711 | 313 } |
jozee@2711 | 314 |
jozee@2711 | 315 enable(){ |
jozee@2711 | 316 set_all yes $* |
jozee@2711 | 317 } |
jozee@2711 | 318 |
jozee@2711 | 319 disable(){ |
jozee@2711 | 320 set_all no $* |
jozee@2711 | 321 } |
jozee@2711 | 322 |
jozee@2711 | 323 enable_weak(){ |
jozee@2711 | 324 set_weak yes $* |
jozee@2711 | 325 } |
jozee@2711 | 326 |
jozee@2711 | 327 disable_weak(){ |
jozee@2711 | 328 set_weak no $* |
jozee@2711 | 329 } |
jozee@2711 | 330 |
jozee@2711 | 331 enable_safe(){ |
jozee@2711 | 332 enable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') |
jozee@2711 | 333 } |
jozee@2711 | 334 |
jozee@2711 | 335 disable_safe(){ |
jozee@2711 | 336 disable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') |
jozee@2711 | 337 } |
jozee@2711 | 338 |
jozee@2711 | 339 do_enable_deep(){ |
jozee@2711 | 340 for var; do |
jozee@2711 | 341 enabled $var && continue |
jozee@2711 | 342 eval sel="\$${var}_select" |
jozee@2711 | 343 eval sgs="\$${var}_suggest" |
jozee@2711 | 344 pushvar var sgs |
jozee@2711 | 345 enable_deep $sel |
jozee@2711 | 346 popvar sgs |
jozee@2711 | 347 enable_deep_weak $sgs |
jozee@2711 | 348 popvar var |
jozee@2711 | 349 done |
jozee@2711 | 350 } |
jozee@2711 | 351 |
jozee@2711 | 352 enable_deep(){ |
jozee@2711 | 353 do_enable_deep $* |
jozee@2711 | 354 enable $* |
jozee@2711 | 355 } |
jozee@2711 | 356 |
jozee@2711 | 357 enable_deep_weak(){ |
jozee@2711 | 358 do_enable_deep $* |
jozee@2711 | 359 enable_weak $* |
jozee@2711 | 360 } |
jozee@2711 | 361 |
jozee@2711 | 362 enabled(){ |
jozee@2711 | 363 test "${1#!}" = "$1" && op== || op=!= |
jozee@2711 | 364 eval test "x\$${1#!}" $op "xyes" |
jozee@2711 | 365 } |
jozee@2711 | 366 |
jozee@2711 | 367 disabled(){ |
jozee@2711 | 368 test "${1#!}" = "$1" && op== || op=!= |
jozee@2711 | 369 eval test "x\$${1#!}" $op "xno" |
jozee@2711 | 370 } |
jozee@2711 | 371 |
jozee@2711 | 372 enabled_all(){ |
jozee@2711 | 373 for opt; do |
jozee@2711 | 374 enabled $opt || return 1 |
jozee@2711 | 375 done |
jozee@2711 | 376 } |
jozee@2711 | 377 |
jozee@2711 | 378 disabled_all(){ |
jozee@2711 | 379 for opt; do |
jozee@2711 | 380 disabled $opt || return 1 |
jozee@2711 | 381 done |
jozee@2711 | 382 } |
jozee@2711 | 383 |
jozee@2711 | 384 enabled_any(){ |
jozee@2711 | 385 for opt; do |
jozee@2711 | 386 enabled $opt && return 0 |
jozee@2711 | 387 done |
jozee@2711 | 388 } |
jozee@2711 | 389 |
jozee@2711 | 390 disabled_any(){ |
jozee@2711 | 391 for opt; do |
jozee@2711 | 392 disabled $opt && return 0 |
jozee@2711 | 393 done |
jozee@2711 | 394 return 1 |
jozee@2711 | 395 } |
jozee@2711 | 396 |
jozee@2711 | 397 set_default(){ |
jozee@2711 | 398 for opt; do |
jozee@2711 | 399 eval : \${$opt:=\$${opt}_default} |
jozee@2711 | 400 done |
jozee@2711 | 401 } |
jozee@2711 | 402 |
jozee@2711 | 403 is_in(){ |
jozee@2711 | 404 value=$1 |
jozee@2711 | 405 shift |
jozee@2711 | 406 for var in $*; do |
jozee@2711 | 407 [ $var = $value ] && return 0 |
jozee@2711 | 408 done |
jozee@2711 | 409 return 1 |
jozee@2711 | 410 } |
jozee@2711 | 411 |
jozee@2711 | 412 check_deps(){ |
jozee@2711 | 413 for cfg; do |
jozee@2711 | 414 cfg="${cfg#!}" |
jozee@2711 | 415 enabled ${cfg}_checking && die "Circular dependency for $cfg." |
jozee@2711 | 416 disabled ${cfg}_checking && continue |
jozee@2711 | 417 enable ${cfg}_checking |
jozee@2711 | 418 |
jozee@2711 | 419 eval dep_all="\$${cfg}_deps" |
jozee@2711 | 420 eval dep_any="\$${cfg}_deps_any" |
jozee@2711 | 421 eval dep_sel="\$${cfg}_select" |
jozee@2711 | 422 eval dep_sgs="\$${cfg}_suggest" |
jozee@2711 | 423 |
jozee@2711 | 424 pushvar cfg dep_all dep_any dep_sel dep_sgs |
jozee@2711 | 425 check_deps $dep_all $dep_any $dep_sel $dep_sgs |
jozee@2711 | 426 popvar cfg dep_all dep_any dep_sel dep_sgs |
jozee@2711 | 427 |
jozee@2711 | 428 enabled_all $dep_all || disable $cfg |
jozee@2711 | 429 enabled_any $dep_any || disable $cfg |
jozee@2711 | 430 disabled_any $dep_sel && disable $cfg |
jozee@2711 | 431 |
jozee@2711 | 432 if enabled $cfg; then |
jozee@2711 | 433 eval dep_extralibs="\$${cfg}_extralibs" |
jozee@2711 | 434 test -n "$dep_extralibs" && add_extralibs $dep_extralibs |
jozee@2711 | 435 enable_deep $dep_sel |
jozee@2711 | 436 enable_deep_weak $dep_sgs |
jozee@2711 | 437 fi |
jozee@2711 | 438 |
jozee@2711 | 439 disable ${cfg}_checking |
jozee@2711 | 440 done |
jozee@2711 | 441 } |
jozee@2711 | 442 |
jozee@2711 | 443 print_config(){ |
jozee@2711 | 444 pfx=$1 |
jozee@2711 | 445 header=$2 |
jozee@2711 | 446 makefile=$3 |
jozee@2711 | 447 shift 3 |
jozee@2711 | 448 for cfg; do |
jozee@2711 | 449 ucname="$(toupper $cfg)" |
jozee@2711 | 450 if enabled $cfg; then |
jozee@2711 | 451 echo "#define ${pfx}${ucname} 1" >> $header |
jozee@2711 | 452 echo "${pfx}${ucname}=yes" >> $makefile |
jozee@2711 | 453 else |
jozee@2711 | 454 echo "#define ${pfx}${ucname} 0" >> $header |
jozee@2711 | 455 fi |
jozee@2711 | 456 done |
jozee@2711 | 457 } |
jozee@2711 | 458 |
jozee@2711 | 459 flags_saved(){ |
jozee@2711 | 460 (: ${SAVE_CFLAGS?}) 2> /dev/null |
jozee@2711 | 461 } |
jozee@2711 | 462 |
jozee@2711 | 463 save_flags(){ |
jozee@2711 | 464 flags_saved && return |
jozee@2711 | 465 SAVE_CFLAGS="$CFLAGS" |
jozee@2711 | 466 SAVE_LDFLAGS="$LDFLAGS" |
jozee@2711 | 467 SAVE_extralibs="$extralibs" |
jozee@2711 | 468 } |
jozee@2711 | 469 |
jozee@2711 | 470 restore_flags(){ |
jozee@2711 | 471 flags_saved || return |
jozee@2711 | 472 CFLAGS="$SAVE_CFLAGS" |
jozee@2711 | 473 LDFLAGS="$SAVE_LDFLAGS" |
jozee@2711 | 474 extralibs="$SAVE_extralibs" |
jozee@2711 | 475 unset SAVE_CFLAGS |
jozee@2711 | 476 unset SAVE_LDFLAGS |
jozee@2711 | 477 unset SAVE_extralibs |
jozee@2711 | 478 } |
jozee@2711 | 479 |
jozee@2711 | 480 temp_cflags(){ |
jozee@2711 | 481 save_flags |
jozee@2711 | 482 CFLAGS="$CFLAGS $*" |
jozee@2711 | 483 } |
jozee@2711 | 484 |
jozee@2711 | 485 temp_ldflags(){ |
jozee@2711 | 486 save_flags |
jozee@2711 | 487 LDFLAGS="$LDFLAGS $*" |
jozee@2711 | 488 } |
jozee@2711 | 489 |
jozee@2711 | 490 temp_extralibs(){ |
jozee@2711 | 491 save_flags |
jozee@2711 | 492 extralibs="$extralibs $*" |
jozee@2711 | 493 } |
jozee@2711 | 494 |
jozee@2711 | 495 append(){ |
jozee@2711 | 496 var=$1 |
jozee@2711 | 497 shift |
jozee@2711 | 498 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\"" |
jozee@2711 | 499 eval "$var=\"\$$var $*\"" |
jozee@2711 | 500 } |
jozee@2711 | 501 |
jozee@2711 | 502 add_cflags(){ |
jozee@2711 | 503 append CFLAGS "$@" |
jozee@2711 | 504 } |
jozee@2711 | 505 |
jozee@2711 | 506 add_ldflags(){ |
jozee@2711 | 507 append LDFLAGS "$@" |
jozee@2711 | 508 } |
jozee@2711 | 509 |
jozee@2711 | 510 add_extralibs(){ |
jozee@2711 | 511 append extralibs "$@" |
jozee@2711 | 512 } |
jozee@2711 | 513 |
jozee@2711 | 514 check_cmd(){ |
jozee@2711 | 515 log "$@" |
jozee@2711 | 516 "$@" >> $logfile 2>&1 |
jozee@2711 | 517 } |
jozee@2711 | 518 |
jozee@2711 | 519 check_cc(){ |
jozee@2711 | 520 log check_cc "$@" |
jozee@2711 | 521 cat > $TMPC |
jozee@2711 | 522 log_file $TMPC |
jozee@2711 | 523 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC |
jozee@2711 | 524 } |
jozee@2711 | 525 |
jozee@2711 | 526 check_cpp(){ |
jozee@2711 | 527 log check_cpp "$@" |
jozee@2711 | 528 cat > $TMPC |
jozee@2711 | 529 log_file $TMPC |
jozee@2711 | 530 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC |
jozee@2711 | 531 } |
jozee@2711 | 532 |
jozee@2711 | 533 check_as(){ |
jozee@2711 | 534 log check_as "$@" |
jozee@2711 | 535 cat > $TMPC |
jozee@2711 | 536 log_file $TMPC |
jozee@2711 | 537 check_cmd $as $CFLAGS "$@" -c -o $TMPO $TMPC |
jozee@2711 | 538 } |
jozee@2711 | 539 |
jozee@2711 | 540 check_asm(){ |
jozee@2711 | 541 log check_asm "$@" |
jozee@2711 | 542 name="$1" |
jozee@2711 | 543 asm="$2" |
jozee@2711 | 544 shift 2 |
jozee@2711 | 545 check_as "$@" <<EOF && enable $name || disable $name |
jozee@2711 | 546 void foo(void){ __asm__ volatile($asm); } |
jozee@2711 | 547 EOF |
jozee@2711 | 548 } |
jozee@2711 | 549 |
jozee@2711 | 550 check_yasm(){ |
jozee@2711 | 551 log check_yasm "$@" |
jozee@2711 | 552 echo "$1" > $TMPS |
jozee@2711 | 553 log_file $TMPS |
jozee@2711 | 554 shift 1 |
jozee@2711 | 555 check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS |
jozee@2711 | 556 } |
jozee@2711 | 557 |
jozee@2711 | 558 check_ld(){ |
jozee@2711 | 559 log check_ld "$@" |
jozee@2711 | 560 check_cc || return |
jozee@2711 | 561 flags='' |
jozee@2711 | 562 libs='' |
jozee@2711 | 563 for f; do |
jozee@2711 | 564 test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f" |
jozee@2711 | 565 done |
jozee@2711 | 566 check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs |
jozee@2711 | 567 } |
jozee@2711 | 568 |
jozee@2711 | 569 check_cflags(){ |
jozee@2711 | 570 log check_cflags "$@" |
jozee@2711 | 571 check_cc "$@" <<EOF && add_cflags "$@" |
jozee@2711 | 572 int x; |
jozee@2711 | 573 EOF |
jozee@2711 | 574 } |
jozee@2711 | 575 |
jozee@2711 | 576 check_ldflags(){ |
jozee@2711 | 577 log check_ldflags "$@" |
jozee@2711 | 578 check_ld "$@" <<EOF && add_ldflags "$@" |
jozee@2711 | 579 int main(void){ return 0; } |
jozee@2711 | 580 EOF |
jozee@2711 | 581 } |
jozee@2711 | 582 |
jozee@2711 | 583 check_header(){ |
jozee@2711 | 584 log check_header "$@" |
jozee@2711 | 585 header=$1 |
jozee@2711 | 586 shift |
jozee@2711 | 587 disable_safe $header |
jozee@2711 | 588 check_cpp "$@" <<EOF && enable_safe $header |
jozee@2711 | 589 #include <$header> |
jozee@2711 | 590 int x; |
jozee@2711 | 591 EOF |
jozee@2711 | 592 } |
jozee@2711 | 593 |
jozee@2711 | 594 check_func(){ |
jozee@2711 | 595 log check_func "$@" |
jozee@2711 | 596 func=$1 |
jozee@2711 | 597 shift |
jozee@2711 | 598 disable $func |
jozee@2711 | 599 check_ld "$@" <<EOF && enable $func |
jozee@2711 | 600 extern int $func(); |
jozee@2711 | 601 int main(void){ $func(); } |
jozee@2711 | 602 EOF |
jozee@2711 | 603 } |
jozee@2711 | 604 |
jozee@2711 | 605 check_func_headers(){ |
jozee@2711 | 606 log check_func_headers "$@" |
jozee@2711 | 607 headers=$1 |
jozee@2711 | 608 func=$2 |
jozee@2711 | 609 shift 2 |
jozee@2711 | 610 disable $func |
jozee@2711 | 611 incs="" |
jozee@2711 | 612 for hdr in $headers; do |
jozee@2711 | 613 incs="$incs |
jozee@2711 | 614 #include <$hdr>" |
jozee@2711 | 615 done |
jozee@2711 | 616 check_ld "$@" <<EOF && enable $func && enable_safe $headers |
jozee@2711 | 617 $incs |
jozee@2711 | 618 int main(int argc, char **argv){ |
jozee@2711 | 619 (void) $func; |
jozee@2711 | 620 return 0; |
jozee@2711 | 621 } |
jozee@2711 | 622 EOF |
jozee@2711 | 623 } |
jozee@2711 | 624 |
jozee@2711 | 625 check_cpp_condition(){ |
jozee@2711 | 626 log check_cpp_condition "$@" |
jozee@2711 | 627 header=$1 |
jozee@2711 | 628 condition=$2 |
jozee@2711 | 629 check_cpp <<EOF |
jozee@2711 | 630 #include <$header> |
jozee@2711 | 631 #if !($condition) |
jozee@2711 | 632 #error "unsatisfied condition: $condition" |
jozee@2711 | 633 #endif |
jozee@2711 | 634 EOF |
jozee@2711 | 635 } |
jozee@2711 | 636 |
jozee@2711 | 637 check_lib(){ |
jozee@2711 | 638 log check_lib "$@" |
jozee@2711 | 639 header="$1" |
jozee@2711 | 640 func="$2" |
jozee@2711 | 641 shift 2 |
jozee@2711 | 642 temp_extralibs "$@" |
jozee@2711 | 643 check_header $header && check_func $func && add_extralibs "$@" |
jozee@2711 | 644 err=$? |
jozee@2711 | 645 restore_flags |
jozee@2711 | 646 return $err |
jozee@2711 | 647 } |
jozee@2711 | 648 |
jozee@2711 | 649 check_lib2(){ |
jozee@2711 | 650 log check_lib2 "$@" |
jozee@2711 | 651 headers="$1" |
jozee@2711 | 652 func="$2" |
jozee@2711 | 653 shift 2 |
jozee@2711 | 654 temp_extralibs "$@" |
jozee@2711 | 655 check_func_headers "$headers" $func && add_extralibs "$@" |
jozee@2711 | 656 err=$? |
jozee@2711 | 657 restore_flags |
jozee@2711 | 658 return $err |
jozee@2711 | 659 } |
jozee@2711 | 660 |
jozee@2711 | 661 check_exec(){ |
jozee@2711 | 662 check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } |
jozee@2711 | 663 } |
jozee@2711 | 664 |
jozee@2711 | 665 check_exec_crash(){ |
jozee@2711 | 666 code=$(cat) |
jozee@2711 | 667 |
jozee@2711 | 668 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX) |
jozee@2711 | 669 # are safe but may not be available everywhere. Thus we use |
jozee@2711 | 670 # raise(SIGTERM) instead. The check is run in a subshell so we |
jozee@2711 | 671 # can redirect the "Terminated" message from the shell. SIGBUS |
jozee@2711 | 672 # is not defined by standard C so it is used conditionally. |
jozee@2711 | 673 |
jozee@2711 | 674 (check_exec "$@") >> $logfile 2>&1 <<EOF |
jozee@2711 | 675 #include <signal.h> |
jozee@2711 | 676 static void sighandler(int sig){ |
jozee@2711 | 677 raise(SIGTERM); |
jozee@2711 | 678 } |
jozee@2711 | 679 int main(void){ |
jozee@2711 | 680 signal(SIGILL, sighandler); |
jozee@2711 | 681 signal(SIGFPE, sighandler); |
jozee@2711 | 682 signal(SIGSEGV, sighandler); |
jozee@2711 | 683 #ifdef SIGBUS |
jozee@2711 | 684 signal(SIGBUS, sighandler); |
jozee@2711 | 685 #endif |
jozee@2711 | 686 { $code } |
jozee@2711 | 687 } |
jozee@2711 | 688 EOF |
jozee@2711 | 689 } |
jozee@2711 | 690 |
jozee@2711 | 691 check_type(){ |
jozee@2711 | 692 log check_type "$@" |
jozee@2711 | 693 headers=$1 |
jozee@2711 | 694 type=$2 |
jozee@2711 | 695 shift 2 |
jozee@2711 | 696 disable $type |
jozee@2711 | 697 incs="" |
jozee@2711 | 698 for hdr in $headers; do |
jozee@2711 | 699 incs="$incs |
jozee@2711 | 700 #include <$hdr>" |
jozee@2711 | 701 done |
jozee@2711 | 702 check_cc "$@" <<EOF && enable $type |
jozee@2711 | 703 $incs |
jozee@2711 | 704 $type v; |
jozee@2711 | 705 EOF |
jozee@2711 | 706 } |
jozee@2711 | 707 |
jozee@2711 | 708 require(){ |
jozee@2711 | 709 name="$1" |
jozee@2711 | 710 header="$2" |
jozee@2711 | 711 func="$3" |
jozee@2711 | 712 shift 3 |
jozee@2711 | 713 check_lib $header $func "$@" || die "ERROR: $name not found" |
jozee@2711 | 714 } |
jozee@2711 | 715 |
jozee@2711 | 716 require2(){ |
jozee@2711 | 717 name="$1" |
jozee@2711 | 718 headers="$2" |
jozee@2711 | 719 func="$3" |
jozee@2711 | 720 shift 3 |
jozee@2711 | 721 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" |
jozee@2711 | 722 } |
jozee@2711 | 723 |
jozee@2711 | 724 check_foo_config(){ |
jozee@2711 | 725 cfg=$1 |
jozee@2711 | 726 pkg=$2 |
jozee@2711 | 727 header=$3 |
jozee@2711 | 728 func=$4 |
jozee@2711 | 729 shift 4 |
jozee@2711 | 730 disable $cfg |
jozee@2711 | 731 check_cmd ${pkg}-config --version |
jozee@2711 | 732 err=$? |
jozee@2711 | 733 if test "$err" = 0; then |
jozee@2711 | 734 temp_cflags $(${pkg}-config --cflags) |
jozee@2711 | 735 temp_extralibs $(${pkg}-config --libs) |
jozee@2711 | 736 check_lib "$@" $header $func && enable $cfg |
jozee@2711 | 737 fi |
jozee@2711 | 738 return $err |
jozee@2711 | 739 } |
jozee@2711 | 740 |
jozee@2711 | 741 apply(){ |
jozee@2711 | 742 file=$1 |
jozee@2711 | 743 shift |
jozee@2711 | 744 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" |
jozee@2711 | 745 } |
jozee@2711 | 746 |
jozee@2711 | 747 # CONFIG_LIST contains configurable options, while HAVE_LIST is for |
jozee@2711 | 748 # system-dependent things. |
jozee@2711 | 749 |
jozee@2711 | 750 COMPONENT_LIST=" |
jozee@2711 | 751 bsfs |
jozee@2711 | 752 decoders |
jozee@2711 | 753 demuxers |
jozee@2711 | 754 encoders |
jozee@2711 | 755 filters |
jozee@2711 | 756 hwaccels |
jozee@2711 | 757 indevs |
jozee@2711 | 758 muxers |
jozee@2711 | 759 outdevs |
jozee@2711 | 760 parsers |
jozee@2711 | 761 protocols |
jozee@2711 | 762 " |
jozee@2711 | 763 |
jozee@2711 | 764 CONFIG_LIST=" |
jozee@2711 | 765 $COMPONENT_LIST |
jozee@2711 | 766 aandct |
jozee@2711 | 767 avfilter |
jozee@2711 | 768 avfilter_lavf |
jozee@2711 | 769 avisynth |
jozee@2711 | 770 beos_netserver |
jozee@2711 | 771 bzlib |
jozee@2711 | 772 fastdiv |
jozee@2711 | 773 ffmpeg |
jozee@2711 | 774 ffplay |
jozee@2711 | 775 ffserver |
jozee@2711 | 776 fft |
jozee@2711 | 777 golomb |
jozee@2711 | 778 gpl |
jozee@2711 | 779 gprof |
jozee@2711 | 780 gray |
jozee@2711 | 781 hardcoded_tables |
jozee@2711 | 782 ipv6 |
jozee@2711 | 783 libamr_nb |
jozee@2711 | 784 libamr_wb |
jozee@2711 | 785 libdc1394 |
jozee@2711 | 786 libdirac |
jozee@2711 | 787 libfaac |
jozee@2711 | 788 libfaad |
jozee@2711 | 789 libfaadbin |
jozee@2711 | 790 libgsm |
jozee@2711 | 791 libmp3lame |
jozee@2711 | 792 libnut |
jozee@2711 | 793 libopenjpeg |
jozee@2711 | 794 libschroedinger |
jozee@2711 | 795 libspeex |
jozee@2711 | 796 libtheora |
jozee@2711 | 797 libvorbis |
jozee@2711 | 798 libx264 |
jozee@2711 | 799 libxvid |
jozee@2711 | 800 mdct |
jozee@2711 | 801 memalign_hack |
jozee@2711 | 802 mlib |
jozee@2711 | 803 mpegaudio_hp |
jozee@2711 | 804 network |
jozee@2711 | 805 nonfree |
jozee@2711 | 806 postproc |
jozee@2711 | 807 powerpc_perf |
jozee@2711 | 808 rdft |
jozee@2711 | 809 shared |
jozee@2711 | 810 small |
jozee@2711 | 811 static |
jozee@2711 | 812 swscale_alpha |
jozee@2711 | 813 x11grab |
jozee@2711 | 814 zlib |
jozee@2711 | 815 " |
jozee@2711 | 816 |
jozee@2711 | 817 THREADS_LIST=' |
jozee@2711 | 818 beosthreads |
jozee@2711 | 819 os2threads |
jozee@2711 | 820 pthreads |
jozee@2711 | 821 w32threads |
jozee@2711 | 822 ' |
jozee@2711 | 823 |
jozee@2711 | 824 ARCH_LIST=' |
jozee@2711 | 825 alpha |
jozee@2711 | 826 arm |
jozee@2711 | 827 bfin |
jozee@2711 | 828 ia64 |
jozee@2711 | 829 m68k |
jozee@2711 | 830 mips |
jozee@2711 | 831 parisc |
jozee@2711 | 832 ppc |
jozee@2711 | 833 s390 |
jozee@2711 | 834 sh4 |
jozee@2711 | 835 sparc |
jozee@2711 | 836 sparc64 |
jozee@2711 | 837 x86 |
jozee@2711 | 838 x86_32 |
jozee@2711 | 839 x86_64 |
jozee@2711 | 840 ' |
jozee@2711 | 841 |
jozee@2711 | 842 ARCH_EXT_LIST=' |
jozee@2711 | 843 altivec |
jozee@2711 | 844 amd3dnow |
jozee@2711 | 845 amd3dnowext |
jozee@2711 | 846 armv5te |
jozee@2711 | 847 armv6 |
jozee@2711 | 848 armv6t2 |
jozee@2711 | 849 armvfp |
jozee@2711 | 850 iwmmxt |
jozee@2711 | 851 mmi |
jozee@2711 | 852 mmx |
jozee@2711 | 853 mmx2 |
jozee@2711 | 854 neon |
jozee@2711 | 855 ppc4xx |
jozee@2711 | 856 sse |
jozee@2711 | 857 ssse3 |
jozee@2711 | 858 vis |
jozee@2711 | 859 ' |
jozee@2711 | 860 |
jozee@2711 | 861 HAVE_LIST=" |
jozee@2711 | 862 $ARCH_EXT_LIST |
jozee@2711 | 863 $THREADS_LIST |
jozee@2711 | 864 alsa_asoundlib_h |
jozee@2711 | 865 altivec_h |
jozee@2711 | 866 arpa_inet_h |
jozee@2711 | 867 bswap |
jozee@2711 | 868 closesocket |
jozee@2711 | 869 cmov |
jozee@2711 | 870 conio_h |
jozee@2711 | 871 dcbzl |
jozee@2711 | 872 dev_bktr_ioctl_bt848_h |
jozee@2711 | 873 dev_bktr_ioctl_meteor_h |
jozee@2711 | 874 dev_ic_bt8xx_h |
jozee@2711 | 875 dev_video_meteor_ioctl_meteor_h |
jozee@2711 | 876 dev_video_bktr_ioctl_bt848_h |
jozee@2711 | 877 dlfcn_h |
jozee@2711 | 878 dlopen |
jozee@2711 | 879 dos_paths |
jozee@2711 | 880 ebp_available |
jozee@2711 | 881 ebx_available |
jozee@2711 | 882 fast_64bit |
jozee@2711 | 883 fast_cmov |
jozee@2711 | 884 fast_unaligned |
jozee@2711 | 885 fork |
jozee@2711 | 886 gethrtime |
jozee@2711 | 887 GetProcessTimes |
jozee@2711 | 888 getrusage |
jozee@2711 | 889 inet_aton |
jozee@2711 | 890 inline_asm |
jozee@2711 | 891 libdc1394_1 |
jozee@2711 | 892 libdc1394_2 |
jozee@2711 | 893 llrint |
jozee@2711 | 894 lrint |
jozee@2711 | 895 lrintf |
jozee@2711 | 896 machine_ioctl_bt848_h |
jozee@2711 | 897 machine_ioctl_meteor_h |
jozee@2711 | 898 malloc_h |
jozee@2711 | 899 memalign |
jozee@2711 | 900 mkstemp |
jozee@2711 | 901 pld |
jozee@2711 | 902 posix_memalign |
jozee@2711 | 903 ppc64 |
jozee@2711 | 904 round |
jozee@2711 | 905 roundf |
jozee@2711 | 906 sdl |
jozee@2711 | 907 sdl_video_size |
jozee@2711 | 908 setmode |
jozee@2711 | 909 socklen_t |
jozee@2711 | 910 soundcard_h |
jozee@2711 | 911 poll_h |
jozee@2711 | 912 sys_mman_h |
jozee@2711 | 913 sys_resource_h |
jozee@2711 | 914 sys_select_h |
jozee@2711 | 915 sys_soundcard_h |
jozee@2711 | 916 sys_videoio_h |
jozee@2711 | 917 ten_operands |
jozee@2711 | 918 termios_h |
jozee@2711 | 919 threads |
jozee@2711 | 920 truncf |
jozee@2711 | 921 VirtualAlloc |
jozee@2711 | 922 winsock2_h |
jozee@2711 | 923 yasm |
jozee@2711 | 924 " |
jozee@2711 | 925 |
jozee@2711 | 926 # options emitted with CONFIG_ prefix but not available on command line |
jozee@2711 | 927 CONFIG_EXTRA=" |
jozee@2711 | 928 " |
jozee@2711 | 929 |
jozee@2711 | 930 CMDLINE_SELECT=" |
jozee@2711 | 931 $ARCH_EXT_LIST |
jozee@2711 | 932 $CONFIG_LIST |
jozee@2711 | 933 $THREADS_LIST |
jozee@2711 | 934 cross_compile |
jozee@2711 | 935 debug |
jozee@2711 | 936 extra_warnings |
jozee@2711 | 937 logging |
jozee@2711 | 938 optimizations |
jozee@2711 | 939 stripping |
jozee@2711 | 940 yasm |
jozee@2711 | 941 " |
jozee@2711 | 942 |
jozee@2711 | 943 PATHS_LIST=' |
jozee@2711 | 944 bindir |
jozee@2711 | 945 datadir |
jozee@2711 | 946 incdir |
jozee@2711 | 947 libdir |
jozee@2711 | 948 mandir |
jozee@2711 | 949 prefix |
jozee@2711 | 950 shlibdir |
jozee@2711 | 951 ' |
jozee@2711 | 952 |
jozee@2711 | 953 CMDLINE_SET=" |
jozee@2711 | 954 $PATHS_LIST |
jozee@2711 | 955 arch |
jozee@2711 | 956 as |
jozee@2711 | 957 build_suffix |
jozee@2711 | 958 cc |
jozee@2711 | 959 cpu |
jozee@2711 | 960 cross_prefix |
jozee@2711 | 961 extra_version |
jozee@2711 | 962 host_cc |
jozee@2711 | 963 host_cflags |
jozee@2711 | 964 host_ldflags |
jozee@2711 | 965 host_libs |
jozee@2711 | 966 host_os |
jozee@2711 | 967 logfile |
jozee@2711 | 968 nm |
jozee@2711 | 969 source_path |
jozee@2711 | 970 sysinclude |
jozee@2711 | 971 sysroot |
jozee@2711 | 972 target_exec |
jozee@2711 | 973 target_os |
jozee@2711 | 974 target_path |
jozee@2711 | 975 " |
jozee@2711 | 976 |
jozee@2711 | 977 # code dependency declarations |
jozee@2711 | 978 |
jozee@2711 | 979 # architecture extensions |
jozee@2711 | 980 altivec_deps="ppc" |
jozee@2711 | 981 amd3dnow_deps="mmx" |
jozee@2711 | 982 amd3dnowext_deps="amd3dnow" |
jozee@2711 | 983 armv5te_deps="arm" |
jozee@2711 | 984 armv6_deps="arm" |
jozee@2711 | 985 armv6t2_deps="arm" |
jozee@2711 | 986 armvfp_deps="arm" |
jozee@2711 | 987 iwmmxt_deps="arm" |
jozee@2711 | 988 mmi_deps="mips" |
jozee@2711 | 989 mmx_deps="x86" |
jozee@2711 | 990 mmx2_deps="mmx" |
jozee@2711 | 991 neon_deps="arm" |
jozee@2711 | 992 ppc4xx_deps="ppc" |
jozee@2711 | 993 sse_deps="mmx" |
jozee@2711 | 994 ssse3_deps="sse" |
jozee@2711 | 995 vis_deps="sparc" |
jozee@2711 | 996 |
jozee@2711 | 997 # decoders / encoders / hardware accelerators |
jozee@2711 | 998 aac_decoder_select="fft mdct" |
jozee@2711 | 999 ac3_decoder_deps="gpl" |
jozee@2711 | 1000 ac3_decoder_select="fft mdct" |
jozee@2711 | 1001 atrac3_decoder_select="fft mdct" |
jozee@2711 | 1002 cavs_decoder_select="golomb" |
jozee@2711 | 1003 cook_decoder_select="fft mdct" |
jozee@2711 | 1004 cscd_decoder_suggest="zlib" |
jozee@2711 | 1005 dca_decoder_select="fft mdct" |
jozee@2711 | 1006 dnxhd_encoder_select="aandct" |
jozee@2711 | 1007 dxa_decoder_select="zlib" |
jozee@2711 | 1008 eac3_decoder_deps="gpl" |
jozee@2711 | 1009 eac3_decoder_select="fft mdct" |
jozee@2711 | 1010 eatgq_decoder_select="aandct" |
jozee@2711 | 1011 eatqi_decoder_select="aandct" |
jozee@2711 | 1012 ffv1_decoder_select="golomb" |
jozee@2711 | 1013 flac_decoder_select="golomb" |
jozee@2711 | 1014 flac_encoder_select="golomb" |
jozee@2711 | 1015 flashsv_decoder_select="zlib" |
jozee@2711 | 1016 flashsv_encoder_select="zlib" |
jozee@2711 | 1017 flv_encoder_select="aandct" |
jozee@2711 | 1018 h261_encoder_select="aandct" |
jozee@2711 | 1019 h263_encoder_select="aandct" |
jozee@2711 | 1020 h263_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1021 h263p_encoder_select="aandct" |
jozee@2711 | 1022 h264_decoder_select="golomb" |
jozee@2711 | 1023 h264_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1024 h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
jozee@2711 | 1025 imc_decoder_select="fft mdct" |
jozee@2711 | 1026 jpegls_decoder_select="golomb" |
jozee@2711 | 1027 jpegls_encoder_select="golomb" |
jozee@2711 | 1028 ljpeg_encoder_select="aandct" |
jozee@2711 | 1029 loco_decoder_select="golomb" |
jozee@2711 | 1030 mjpeg_encoder_select="aandct" |
jozee@2711 | 1031 mpeg1video_encoder_select="aandct" |
jozee@2711 | 1032 mpeg2video_encoder_select="aandct" |
jozee@2711 | 1033 mpeg4_encoder_select="aandct" |
jozee@2711 | 1034 mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
jozee@2711 | 1035 mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
jozee@2711 | 1036 mpeg2_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1037 mpeg4_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1038 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" |
jozee@2711 | 1039 msmpeg4v1_encoder_select="aandct" |
jozee@2711 | 1040 msmpeg4v2_encoder_select="aandct" |
jozee@2711 | 1041 msmpeg4v3_encoder_select="aandct" |
jozee@2711 | 1042 nellymoser_decoder_select="fft mdct" |
jozee@2711 | 1043 nellymoser_encoder_select="fft mdct" |
jozee@2711 | 1044 png_decoder_select="zlib" |
jozee@2711 | 1045 png_encoder_select="zlib" |
jozee@2711 | 1046 qdm2_decoder_select="fft mdct rdft" |
jozee@2711 | 1047 rv10_encoder_select="aandct" |
jozee@2711 | 1048 rv20_encoder_select="aandct" |
jozee@2711 | 1049 rv30_decoder_select="golomb" |
jozee@2711 | 1050 rv40_decoder_select="golomb" |
jozee@2711 | 1051 shorten_decoder_select="golomb" |
jozee@2711 | 1052 sonic_decoder_select="golomb" |
jozee@2711 | 1053 sonic_encoder_select="golomb" |
jozee@2711 | 1054 sonic_ls_encoder_select="golomb" |
jozee@2711 | 1055 svq3_decoder_select="golomb" |
jozee@2711 | 1056 svq3_decoder_suggest="zlib" |
jozee@2711 | 1057 tiff_decoder_suggest="zlib" |
jozee@2711 | 1058 tiff_encoder_suggest="zlib" |
jozee@2711 | 1059 tscc_decoder_select="zlib" |
jozee@2711 | 1060 vc1_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1061 vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
jozee@2711 | 1062 vorbis_decoder_select="fft mdct" |
jozee@2711 | 1063 vorbis_encoder_select="fft mdct" |
jozee@2711 | 1064 wmav1_decoder_select="fft mdct" |
jozee@2711 | 1065 wmav1_encoder_select="fft mdct" |
jozee@2711 | 1066 wmav2_decoder_select="fft mdct" |
jozee@2711 | 1067 wmav2_encoder_select="fft mdct" |
jozee@2711 | 1068 wmv1_encoder_select="aandct" |
jozee@2711 | 1069 wmv2_encoder_select="aandct" |
jozee@2711 | 1070 wmv3_vaapi_hwaccel_deps="va_va_h" |
jozee@2711 | 1071 wmv3_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
jozee@2711 | 1072 zlib_decoder_select="zlib" |
jozee@2711 | 1073 zlib_encoder_select="zlib" |
jozee@2711 | 1074 zmbv_decoder_select="zlib" |
jozee@2711 | 1075 zmbv_encoder_select="zlib" |
jozee@2711 | 1076 |
jozee@2711 | 1077 # external libraries |
jozee@2711 | 1078 libamr_nb_decoder_deps="libamr_nb" |
jozee@2711 | 1079 libamr_nb_encoder_deps="libamr_nb" |
jozee@2711 | 1080 libamr_wb_decoder_deps="libamr_wb" |
jozee@2711 | 1081 libamr_wb_encoder_deps="libamr_wb" |
jozee@2711 | 1082 libdirac_decoder_deps="libdirac !libschroedinger" |
jozee@2711 | 1083 libdirac_encoder_deps="libdirac" |
jozee@2711 | 1084 libfaac_encoder_deps="libfaac" |
jozee@2711 | 1085 libfaad_decoder_deps="libfaad" |
jozee@2711 | 1086 libfaadbin_decoder_extralibs='$ldl' |
jozee@2711 | 1087 libgsm_decoder_deps="libgsm" |
jozee@2711 | 1088 libgsm_encoder_deps="libgsm" |
jozee@2711 | 1089 libgsm_ms_decoder_deps="libgsm" |
jozee@2711 | 1090 libgsm_ms_encoder_deps="libgsm" |
jozee@2711 | 1091 libmp3lame_encoder_deps="libmp3lame" |
jozee@2711 | 1092 libopenjpeg_decoder_deps="libopenjpeg" |
jozee@2711 | 1093 libschroedinger_decoder_deps="libschroedinger" |
jozee@2711 | 1094 libschroedinger_encoder_deps="libschroedinger" |
jozee@2711 | 1095 libspeex_decoder_deps="libspeex" |
jozee@2711 | 1096 libtheora_encoder_deps="libtheora" |
jozee@2711 | 1097 libvorbis_encoder_deps="libvorbis" |
jozee@2711 | 1098 libx264_encoder_deps="libx264" |
jozee@2711 | 1099 libxvid_encoder_deps="libxvid" |
jozee@2711 | 1100 |
jozee@2711 | 1101 # demuxers / muxers |
jozee@2711 | 1102 ac3_demuxer_deps="ac3_parser" |
jozee@2711 | 1103 alsa_demuxer_deps="alsa_asoundlib_h snd_pcm_htimestamp" |
jozee@2711 | 1104 alsa_demuxer_extralibs="-lasound" |
jozee@2711 | 1105 alsa_muxer_deps="alsa_asoundlib_h" |
jozee@2711 | 1106 alsa_muxer_extralibs="-lasound" |
jozee@2711 | 1107 audio_beos_demuxer_deps="audio_beos" |
jozee@2711 | 1108 audio_beos_demuxer_extralibs="-lmedia -lbe" |
jozee@2711 | 1109 audio_beos_muxer_deps="audio_beos" |
jozee@2711 | 1110 audio_beos_muxer_extralibs="-lmedia -lbe" |
jozee@2711 | 1111 avisynth_demuxer_deps="avisynth" |
jozee@2711 | 1112 bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" |
jozee@2711 | 1113 dirac_demuxer_deps="dirac_parser" |
jozee@2711 | 1114 dv1394_demuxer_deps="dv1394 dv_demuxer" |
jozee@2711 | 1115 jack_demuxer_deps="jack_jack_h" |
jozee@2711 | 1116 jack_demuxer_extralibs="-ljack" |
jozee@2711 | 1117 libdc1394_demuxer_deps="libdc1394" |
jozee@2711 | 1118 libnut_demuxer_deps="libnut" |
jozee@2711 | 1119 libnut_muxer_deps="libnut" |
jozee@2711 | 1120 matroska_demuxer_suggest="zlib bzlib" |
jozee@2711 | 1121 mov_demuxer_suggest="zlib" |
jozee@2711 | 1122 mp3_demuxer_deps="mpegaudio_parser" |
jozee@2711 | 1123 oss_demuxer_deps_any="soundcard_h sys_soundcard_h" |
jozee@2711 | 1124 oss_muxer_deps_any="soundcard_h sys_soundcard_h" |
jozee@2711 | 1125 redir_demuxer_deps="network" |
jozee@2711 | 1126 rtp_muxer_deps="network rtp_protocol" |
jozee@2711 | 1127 rtsp_demuxer_deps="sdp_demuxer" |
jozee@2711 | 1128 sdp_demuxer_deps="rtp_protocol mpegts_demuxer" |
jozee@2711 | 1129 v4l_demuxer_deps="linux_videodev_h" |
jozee@2711 | 1130 v4l2_demuxer_deps_any="linux_videodev2_h sys_videoio_h" |
jozee@2711 | 1131 vfwcap_demuxer_deps="capCreateCaptureWindow" |
jozee@2711 | 1132 vfwcap_demuxer_extralibs="-lvfw32" |
jozee@2711 | 1133 x11_grab_device_demuxer_deps="x11grab XShmCreateImage" |
jozee@2711 | 1134 x11_grab_device_demuxer_extralibs="-lX11 -lXext" |
jozee@2711 | 1135 |
jozee@2711 | 1136 # protocols |
jozee@2711 | 1137 gopher_protocol_deps="network" |
jozee@2711 | 1138 http_protocol_deps="network" |
jozee@2711 | 1139 rtp_protocol_deps="udp_protocol" |
jozee@2711 | 1140 tcp_protocol_deps="network" |
jozee@2711 | 1141 udp_protocol_deps="network" |
jozee@2711 | 1142 |
jozee@2711 | 1143 # filters |
jozee@2711 | 1144 movie_filter_deps="avfilter_lavf" |
jozee@2711 | 1145 |
jozee@2711 | 1146 # programs |
jozee@2711 | 1147 ffplay_deps="sdl" |
jozee@2711 | 1148 ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer" |
jozee@2711 | 1149 ffserver_extralibs='$ldl' |
jozee@2711 | 1150 |
jozee@2711 | 1151 |
jozee@2711 | 1152 # default parameters |
jozee@2711 | 1153 |
jozee@2711 | 1154 logfile="config.err" |
jozee@2711 | 1155 |
jozee@2711 | 1156 # installation paths |
jozee@2711 | 1157 prefix_default="/usr/local" |
jozee@2711 | 1158 bindir_default='${prefix}/bin' |
jozee@2711 | 1159 datadir_default='${prefix}/share/ffmpeg' |
jozee@2711 | 1160 incdir_default='${prefix}/include' |
jozee@2711 | 1161 libdir_default='${prefix}/lib' |
jozee@2711 | 1162 mandir_default='${prefix}/share/man' |
jozee@2711 | 1163 shlibdir_default="$libdir_default" |
jozee@2711 | 1164 |
jozee@2711 | 1165 # toolchain |
jozee@2711 | 1166 ar="ar" |
jozee@2711 | 1167 cc_default="gcc" |
jozee@2711 | 1168 host_cc_default="gcc" |
jozee@2711 | 1169 ln_s="ln -sf" |
jozee@2711 | 1170 nm_default="nm" |
jozee@2711 | 1171 objformat="elf" |
jozee@2711 | 1172 ranlib="ranlib" |
jozee@2711 | 1173 strip="strip" |
jozee@2711 | 1174 yasmexe="yasm" |
jozee@2711 | 1175 |
jozee@2711 | 1176 # machine |
jozee@2711 | 1177 arch=$(uname -m) |
jozee@2711 | 1178 cpu="generic" |
jozee@2711 | 1179 |
jozee@2711 | 1180 # OS |
jozee@2711 | 1181 target_os=$(tolower $(uname -s)) |
jozee@2711 | 1182 host_os=$target_os |
jozee@2711 | 1183 |
jozee@2711 | 1184 # configurable options |
jozee@2711 | 1185 enable debug |
jozee@2711 | 1186 enable fastdiv |
jozee@2711 | 1187 enable ffmpeg |
jozee@2711 | 1188 enable ffplay |
jozee@2711 | 1189 enable ffserver |
jozee@2711 | 1190 enable ipv6 |
jozee@2711 | 1191 enable mpegaudio_hp |
jozee@2711 | 1192 enable network |
jozee@2711 | 1193 enable optimizations |
jozee@2711 | 1194 enable protocols |
jozee@2711 | 1195 enable static |
jozee@2711 | 1196 enable stripping |
jozee@2711 | 1197 enable swscale_alpha |
jozee@2711 | 1198 |
jozee@2711 | 1199 # build settings |
jozee@2711 | 1200 add_cflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 |
jozee@2711 | 1201 SHFLAGS='-shared -Wl,-soname,$$(@F)' |
jozee@2711 | 1202 FFSERVERLDFLAGS=-Wl,-E |
jozee@2711 | 1203 LIBPREF="lib" |
jozee@2711 | 1204 LIBSUF=".a" |
jozee@2711 | 1205 FULLNAME='$(NAME)$(BUILDSUF)' |
jozee@2711 | 1206 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' |
jozee@2711 | 1207 SLIBPREF="lib" |
jozee@2711 | 1208 SLIBSUF=".so" |
jozee@2711 | 1209 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' |
jozee@2711 | 1210 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' |
jozee@2711 | 1211 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' |
jozee@2711 | 1212 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' |
jozee@2711 | 1213 |
jozee@2711 | 1214 host_cflags='-O3 -g -Wall' |
jozee@2711 | 1215 host_libs='-lm' |
jozee@2711 | 1216 |
jozee@2711 | 1217 target_path='.' |
jozee@2711 | 1218 |
jozee@2711 | 1219 # gcc stupidly only outputs the basename of targets with -MM, but we need the |
jozee@2711 | 1220 # full relative path for objects in subdirectories for non-recursive Make. |
jozee@2711 | 1221 DEPEND_CMD='$(CC) $(CFLAGS) -MM $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o,"' |
jozee@2711 | 1222 |
jozee@2711 | 1223 # find source path |
jozee@2711 | 1224 source_path="$(dirname "$0")" |
jozee@2711 | 1225 enable source_path_used |
jozee@2711 | 1226 if test -z "$source_path" -o "$source_path" = "." ; then |
jozee@2711 | 1227 source_path="$(pwd)" |
jozee@2711 | 1228 disable source_path_used |
jozee@2711 | 1229 else |
jozee@2711 | 1230 source_path="$(cd "$source_path"; pwd)" |
jozee@2711 | 1231 echo "$source_path" | grep -q '[[:blank:]]' && |
jozee@2711 | 1232 die "Out of tree builds are impossible with whitespace in source path." |
jozee@2711 | 1233 test -e "$source_path/config.h" && |
jozee@2711 | 1234 die "Out of tree builds are impossible with config.h in source dir." |
jozee@2711 | 1235 fi |
jozee@2711 | 1236 |
jozee@2711 | 1237 for v in "$@"; do |
jozee@2711 | 1238 r="${v#*=}" |
jozee@2711 | 1239 l="${v%$r}" |
jozee@2711 | 1240 test "$r" = "${r#* }" || r="'$r'" |
jozee@2711 | 1241 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" |
jozee@2711 | 1242 done |
jozee@2711 | 1243 |
jozee@2711 | 1244 find_things(){ |
jozee@2711 | 1245 thing=$1 |
jozee@2711 | 1246 pattern=$2 |
jozee@2711 | 1247 file=$source_path/$3 |
jozee@2711 | 1248 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file" |
jozee@2711 | 1249 } |
jozee@2711 | 1250 |
jozee@2711 | 1251 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c) |
jozee@2711 | 1252 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c) |
jozee@2711 | 1253 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) |
jozee@2711 | 1254 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c) |
jozee@2711 | 1255 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c) |
jozee@2711 | 1256 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) |
jozee@2711 | 1257 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) |
jozee@2711 | 1258 OUTDEV_LIST=$(find_things muxer _MUX libavdevice/alldevices.c) |
jozee@2711 | 1259 INDEV_LIST=$(find_things demuxer DEMUX libavdevice/alldevices.c) |
jozee@2711 | 1260 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) |
jozee@2711 | 1261 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) |
jozee@2711 | 1262 |
jozee@2711 | 1263 enable $ARCH_EXT_LIST \ |
jozee@2711 | 1264 $DECODER_LIST \ |
jozee@2711 | 1265 $ENCODER_LIST \ |
jozee@2711 | 1266 $HWACCEL_LIST \ |
jozee@2711 | 1267 $PARSER_LIST \ |
jozee@2711 | 1268 $BSF_LIST \ |
jozee@2711 | 1269 $DEMUXER_LIST \ |
jozee@2711 | 1270 $MUXER_LIST \ |
jozee@2711 | 1271 $FILTER_LIST \ |
jozee@2711 | 1272 $PROTOCOL_LIST \ |
jozee@2711 | 1273 $INDEV_LIST \ |
jozee@2711 | 1274 $OUTDEV_LIST \ |
jozee@2711 | 1275 |
jozee@2711 | 1276 die_unknown(){ |
jozee@2711 | 1277 echo "Unknown option \"$1\"." |
jozee@2711 | 1278 echo "See $0 --help for available options." |
jozee@2711 | 1279 exit 1 |
jozee@2711 | 1280 } |
jozee@2711 | 1281 |
jozee@2711 | 1282 show_list() { |
jozee@2711 | 1283 suffix=_$1 |
jozee@2711 | 1284 shift |
jozee@2711 | 1285 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort |
jozee@2711 | 1286 exit 0 |
jozee@2711 | 1287 } |
jozee@2711 | 1288 |
jozee@2711 | 1289 for opt do |
jozee@2711 | 1290 optval="${opt#*=}" |
jozee@2711 | 1291 case "$opt" in |
jozee@2711 | 1292 --extra-cflags=*) add_cflags $optval |
jozee@2711 | 1293 ;; |
jozee@2711 | 1294 --extra-ldflags=*) add_ldflags $optval |
jozee@2711 | 1295 ;; |
jozee@2711 | 1296 --extra-libs=*) add_extralibs $optval |
jozee@2711 | 1297 ;; |
jozee@2711 | 1298 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST |
jozee@2711 | 1299 ;; |
jozee@2711 | 1300 --enable-debug=*) debuglevel="$optval" |
jozee@2711 | 1301 ;; |
jozee@2711 | 1302 --enable-*=*|--disable-*=*) |
jozee@2711 | 1303 eval $(echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/') |
jozee@2711 | 1304 case "$thing" in |
jozee@2711 | 1305 encoder|decoder|hwaccel|muxer|demuxer|parser|bsf|protocol|filter) $action ${optval}_${thing} ;; |
jozee@2711 | 1306 *) die_unknown "$opt" ;; |
jozee@2711 | 1307 esac |
jozee@2711 | 1308 ;; |
jozee@2711 | 1309 --enable-?*|--disable-?*) |
jozee@2711 | 1310 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') |
jozee@2711 | 1311 if is_in $option $COMPONENT_LIST; then |
jozee@2711 | 1312 eval $action \$$(toupper ${option%s})_LIST |
jozee@2711 | 1313 elif is_in $option $CMDLINE_SELECT; then |
jozee@2711 | 1314 $action $option |
jozee@2711 | 1315 else |
jozee@2711 | 1316 die_unknown $opt |
jozee@2711 | 1317 fi |
jozee@2711 | 1318 ;; |
jozee@2711 | 1319 --list-*) |
jozee@2711 | 1320 NAME="${opt#--list-}" |
jozee@2711 | 1321 is_in $NAME $COMPONENT_LIST || die_unknown $opt |
jozee@2711 | 1322 NAME=${NAME%s} |
jozee@2711 | 1323 eval show_list $NAME \$$(toupper $NAME)_LIST |
jozee@2711 | 1324 ;; |
jozee@2711 | 1325 --help|-h) show_help |
jozee@2711 | 1326 ;; |
jozee@2711 | 1327 *) |
jozee@2711 | 1328 optname="${opt%%=*}" |
jozee@2711 | 1329 optname="${optname#--}" |
jozee@2711 | 1330 optname=$(echo "$optname" | sed 's/-/_/g') |
jozee@2711 | 1331 is_in $optname $CMDLINE_SET || die_unknown $opt |
jozee@2711 | 1332 eval $optname='$optval' |
jozee@2711 | 1333 ;; |
jozee@2711 | 1334 esac |
jozee@2711 | 1335 done |
jozee@2711 | 1336 |
jozee@2711 | 1337 disabled logging && logfile=/dev/null |
jozee@2711 | 1338 |
jozee@2711 | 1339 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile |
jozee@2711 | 1340 set >> $logfile |
jozee@2711 | 1341 |
jozee@2711 | 1342 test -n "$cross_prefix" && enable cross_compile |
jozee@2711 | 1343 |
jozee@2711 | 1344 ar="${cross_prefix}${ar}" |
jozee@2711 | 1345 cc_default="${cross_prefix}${cc_default}" |
jozee@2711 | 1346 nm_default="${cross_prefix}${nm_default}" |
jozee@2711 | 1347 ranlib="${cross_prefix}${ranlib}" |
jozee@2711 | 1348 strip="${cross_prefix}${strip}" |
jozee@2711 | 1349 |
jozee@2711 | 1350 sysinclude_default="${sysroot}/usr/include" |
jozee@2711 | 1351 |
jozee@2711 | 1352 set_default cc nm sysinclude |
jozee@2711 | 1353 as_default=$cc |
jozee@2711 | 1354 enabled cross_compile || host_cc_default=$cc |
jozee@2711 | 1355 set_default host_cc |
jozee@2711 | 1356 |
jozee@2711 | 1357 exesuf() { |
jozee@2711 | 1358 case $1 in |
jozee@2711 | 1359 mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;; |
jozee@2711 | 1360 esac |
jozee@2711 | 1361 } |
jozee@2711 | 1362 |
jozee@2711 | 1363 EXESUF=$(exesuf $target_os) |
jozee@2711 | 1364 HOSTEXESUF=$(exesuf $host_os) |
jozee@2711 | 1365 |
jozee@2711 | 1366 # set temporary file name |
jozee@2711 | 1367 : ${TMPDIR:=$TEMPDIR} |
jozee@2711 | 1368 : ${TMPDIR:=$TMP} |
jozee@2711 | 1369 : ${TMPDIR:=/tmp} |
jozee@2711 | 1370 |
jozee@2711 | 1371 TMPC="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c" |
jozee@2711 | 1372 TMPE="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}" |
jozee@2711 | 1373 TMPH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h" |
jozee@2711 | 1374 TMPO="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o" |
jozee@2711 | 1375 TMPS="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S" |
jozee@2711 | 1376 TMPSH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh" |
jozee@2711 | 1377 |
jozee@2711 | 1378 # make sure we can execute files in $TMPDIR |
jozee@2711 | 1379 cat > $TMPSH 2>> $logfile <<EOF |
jozee@2711 | 1380 #! /bin/sh |
jozee@2711 | 1381 EOF |
jozee@2711 | 1382 chmod +x $TMPSH >> $logfile 2>&1 |
jozee@2711 | 1383 if ! $TMPSH >> $logfile 2>&1; then |
jozee@2711 | 1384 cat <<EOF |
jozee@2711 | 1385 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment |
jozee@2711 | 1386 variable to another directory and make sure that it is not mounted noexec. |
jozee@2711 | 1387 EOF |
jozee@2711 | 1388 die "Sanity test failed." |
jozee@2711 | 1389 fi |
jozee@2711 | 1390 |
jozee@2711 | 1391 if $cc --version 2>/dev/null | grep -qi gcc; then |
jozee@2711 | 1392 cc_type=gcc |
jozee@2711 | 1393 elif $cc --version 2>/dev/null | grep -q Intel; then |
jozee@2711 | 1394 cc_type=icc |
jozee@2711 | 1395 elif $cc -v 2>&1 | grep -q xlc; then |
jozee@2711 | 1396 cc_type=xlc |
jozee@2711 | 1397 elif $cc -V 2>/dev/null | grep -q Compaq; then |
jozee@2711 | 1398 cc_type=ccc |
jozee@2711 | 1399 DEPEND_CMD='$(CC) $(CFLAGS) -M $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o,"' |
jozee@2711 | 1400 debuglevel=3 |
jozee@2711 | 1401 add_ldflags -Wl,-z,now # calls to libots crash without this |
jozee@2711 | 1402 elif $cc --vsn 2>/dev/null | grep -q RVCT; then |
jozee@2711 | 1403 test -d "$sysroot" || die "No valid sysroot specified." |
jozee@2711 | 1404 cc_type=armcc |
jozee@2711 | 1405 armcc_conf="$PWD/armcc.conf" |
jozee@2711 | 1406 $cc --arm_linux_configure \ |
jozee@2711 | 1407 --arm_linux_config_file="$armcc_conf" \ |
jozee@2711 | 1408 --configure_sysroot="$sysroot" \ |
jozee@2711 | 1409 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || |
jozee@2711 | 1410 die "Error creating armcc configuration file." |
jozee@2711 | 1411 cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc" |
jozee@2711 | 1412 as_default="${cross_prefix}gcc" |
jozee@2711 | 1413 fi |
jozee@2711 | 1414 |
jozee@2711 | 1415 test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc" |
jozee@2711 | 1416 |
jozee@2711 | 1417 set_default as |
jozee@2711 | 1418 |
jozee@2711 | 1419 if test -n "$sysroot"; then |
jozee@2711 | 1420 case "$cc_type" in |
jozee@2711 | 1421 gcc) |
jozee@2711 | 1422 add_cflags --sysroot="$sysroot" |
jozee@2711 | 1423 add_ldflags --sysroot="$sysroot" |
jozee@2711 | 1424 ;; |
jozee@2711 | 1425 esac |
jozee@2711 | 1426 fi |
jozee@2711 | 1427 |
jozee@2711 | 1428 # compiler sanity check |
jozee@2711 | 1429 check_exec <<EOF |
jozee@2711 | 1430 int main(void){ return 0; } |
jozee@2711 | 1431 EOF |
jozee@2711 | 1432 if test "$?" != 0; then |
jozee@2711 | 1433 echo "$cc is unable to create an executable file." |
jozee@2711 | 1434 if test -z "$cross_prefix" && ! enabled cross_compile ; then |
jozee@2711 | 1435 echo "If $cc is a cross-compiler, use the --enable-cross-compile option." |
jozee@2711 | 1436 echo "Only do this if you know what cross compiling means." |
jozee@2711 | 1437 fi |
jozee@2711 | 1438 die "C compiler test failed." |
jozee@2711 | 1439 fi |
jozee@2711 | 1440 |
jozee@2711 | 1441 check_cflags -std=c99 |
jozee@2711 | 1442 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cflags -D_FILE_OFFSET_BITS=64 |
jozee@2711 | 1443 #include <stdlib.h> |
jozee@2711 | 1444 EOF |
jozee@2711 | 1445 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cflags -D_LARGEFILE_SOURCE |
jozee@2711 | 1446 #include <stdlib.h> |
jozee@2711 | 1447 EOF |
jozee@2711 | 1448 |
jozee@2711 | 1449 case "$arch" in |
jozee@2711 | 1450 alpha) |
jozee@2711 | 1451 arch="alpha" |
jozee@2711 | 1452 enable fast_64bit |
jozee@2711 | 1453 check_cflags -mieee |
jozee@2711 | 1454 ;; |
jozee@2711 | 1455 arm|armv[4567]*l) |
jozee@2711 | 1456 arch="arm" |
jozee@2711 | 1457 ;; |
jozee@2711 | 1458 avr32) |
jozee@2711 | 1459 ;; |
jozee@2711 | 1460 bfin) |
jozee@2711 | 1461 arch="bfin" |
jozee@2711 | 1462 ;; |
jozee@2711 | 1463 ia64) |
jozee@2711 | 1464 arch="ia64" |
jozee@2711 | 1465 enable fast_64bit |
jozee@2711 | 1466 ;; |
jozee@2711 | 1467 m68k) |
jozee@2711 | 1468 arch="m68k" |
jozee@2711 | 1469 ;; |
jozee@2711 | 1470 mips|mipsel|IP*) |
jozee@2711 | 1471 arch="mips" |
jozee@2711 | 1472 ;; |
jozee@2711 | 1473 mips64) |
jozee@2711 | 1474 arch="mips" |
jozee@2711 | 1475 enable fast_64bit |
jozee@2711 | 1476 ;; |
jozee@2711 | 1477 parisc|hppa) |
jozee@2711 | 1478 arch="parisc" |
jozee@2711 | 1479 ;; |
jozee@2711 | 1480 parisc64|hppa64) |
jozee@2711 | 1481 arch="parisc" |
jozee@2711 | 1482 enable fast_64bit |
jozee@2711 | 1483 ;; |
jozee@2711 | 1484 "Power Macintosh"|ppc|powerpc) |
jozee@2711 | 1485 arch="ppc" |
jozee@2711 | 1486 enable fast_unaligned |
jozee@2711 | 1487 ;; |
jozee@2711 | 1488 ppc64) |
jozee@2711 | 1489 arch="ppc" |
jozee@2711 | 1490 enable fast_64bit |
jozee@2711 | 1491 enable fast_unaligned |
jozee@2711 | 1492 ;; |
jozee@2711 | 1493 s390|s390x) |
jozee@2711 | 1494 arch="s390" |
jozee@2711 | 1495 ;; |
jozee@2711 | 1496 sh4|sh) |
jozee@2711 | 1497 arch="sh4" |
jozee@2711 | 1498 ;; |
jozee@2711 | 1499 sparc) |
jozee@2711 | 1500 arch="sparc" |
jozee@2711 | 1501 ;; |
jozee@2711 | 1502 sun4u|sparc64) |
jozee@2711 | 1503 arch="sparc" |
jozee@2711 | 1504 subarch="sparc64" |
jozee@2711 | 1505 enable fast_64bit |
jozee@2711 | 1506 ;; |
jozee@2711 | 1507 i386|i486|i586|i686|i86pc|BePC) |
jozee@2711 | 1508 arch="x86" |
jozee@2711 | 1509 subarch="x86_32" |
jozee@2711 | 1510 enable fast_unaligned |
jozee@2711 | 1511 ;; |
jozee@2711 | 1512 x86_64|amd64) |
jozee@2711 | 1513 arch="x86" |
jozee@2711 | 1514 subarch="x86_32" |
jozee@2711 | 1515 enable cmov |
jozee@2711 | 1516 enable fast_cmov |
jozee@2711 | 1517 enable fast_unaligned |
jozee@2711 | 1518 check_cc <<EOF && enable fast_64bit && subarch="x86_64" |
jozee@2711 | 1519 int test[sizeof(char*) - 7]; |
jozee@2711 | 1520 EOF |
jozee@2711 | 1521 ;; |
jozee@2711 | 1522 *) |
jozee@2711 | 1523 arch="unknown" |
jozee@2711 | 1524 ;; |
jozee@2711 | 1525 esac |
jozee@2711 | 1526 |
jozee@2711 | 1527 enable $arch $subarch |
jozee@2711 | 1528 |
jozee@2711 | 1529 # OS specific |
jozee@2711 | 1530 case $target_os in |
jozee@2711 | 1531 beos|haiku|zeta) |
jozee@2711 | 1532 prefix_default="$HOME/config" |
jozee@2711 | 1533 # helps building libavcodec |
jozee@2711 | 1534 add_cflags -DPIC -fomit-frame-pointer |
jozee@2711 | 1535 # 3 gcc releases known for BeOS, each with ugly bugs |
jozee@2711 | 1536 gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)" |
jozee@2711 | 1537 case "$gcc_version" in |
jozee@2711 | 1538 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc" |
jozee@2711 | 1539 disable mmx |
jozee@2711 | 1540 ;; |
jozee@2711 | 1541 *20010315*) echo "BeBits gcc" |
jozee@2711 | 1542 add_cflags -fno-expensive-optimizations |
jozee@2711 | 1543 ;; |
jozee@2711 | 1544 esac |
jozee@2711 | 1545 SHFLAGS=-nostart |
jozee@2711 | 1546 # enable BeOS things |
jozee@2711 | 1547 enable audio_beos |
jozee@2711 | 1548 # no need for libm, but the inet stuff |
jozee@2711 | 1549 # Check for BONE |
jozee@2711 | 1550 # XXX: actually should check for NOT net_server |
jozee@2711 | 1551 if echo $BEINCLUDES | grep -q 'headers/be/bone'; then |
jozee@2711 | 1552 network_extralibs="-lbind -lsocket" |
jozee@2711 | 1553 else |
jozee@2711 | 1554 enable beos_netserver |
jozee@2711 | 1555 network_extralibs="-lnet" |
jozee@2711 | 1556 fi ;; |
jozee@2711 | 1557 sunos) |
jozee@2711 | 1558 FFSERVERLDFLAGS="" |
jozee@2711 | 1559 SHFLAGS='-shared -Wl,-h,$$(@F)' |
jozee@2711 | 1560 network_extralibs="-lsocket -lnsl" |
jozee@2711 | 1561 add_cflags -D__EXTENSIONS__ |
jozee@2711 | 1562 ;; |
jozee@2711 | 1563 netbsd) |
jozee@2711 | 1564 oss_demuxer_extralibs="-lossaudio" |
jozee@2711 | 1565 oss_muxer_extralibs="-lossaudio" |
jozee@2711 | 1566 ;; |
jozee@2711 | 1567 openbsd) |
jozee@2711 | 1568 disable need_memalign |
jozee@2711 | 1569 LIBOBJFLAGS='$(PIC)' |
jozee@2711 | 1570 SHFLAGS='-shared' |
jozee@2711 | 1571 oss_demuxer_extralibs="-lossaudio" |
jozee@2711 | 1572 oss_muxer_extralibs="-lossaudio" |
jozee@2711 | 1573 ;; |
jozee@2711 | 1574 freebsd) |
jozee@2711 | 1575 disable need_memalign |
jozee@2711 | 1576 ;; |
jozee@2711 | 1577 bsd/os) |
jozee@2711 | 1578 osextralibs="-lpoll -lgnugetopt" |
jozee@2711 | 1579 strip="strip -d" |
jozee@2711 | 1580 ;; |
jozee@2711 | 1581 darwin) |
jozee@2711 | 1582 disable need_memalign |
jozee@2711 | 1583 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress' |
jozee@2711 | 1584 strip="strip -x" |
jozee@2711 | 1585 FFLDFLAGS="-Wl,-dynamic,-search_paths_first" |
jozee@2711 | 1586 SLIBSUF=".dylib" |
jozee@2711 | 1587 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' |
jozee@2711 | 1588 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' |
jozee@2711 | 1589 FFSERVERLDFLAGS=-Wl,-bind_at_load |
jozee@2711 | 1590 objformat="macho" |
jozee@2711 | 1591 enabled x86_64 && objformat="macho64" |
jozee@2711 | 1592 ;; |
jozee@2711 | 1593 mingw32*) |
jozee@2711 | 1594 target_os=mingw32 |
jozee@2711 | 1595 LIBTARGET=i386 |
jozee@2711 | 1596 if enabled x86_64; then |
jozee@2711 | 1597 disable need_memalign |
jozee@2711 | 1598 LIBTARGET=x64 |
jozee@2711 | 1599 fi |
jozee@2711 | 1600 shlibdir_default="$bindir_default" |
jozee@2711 | 1601 disable ffserver |
jozee@2711 | 1602 SLIBPREF="" |
jozee@2711 | 1603 SLIBSUF=".dll" |
jozee@2711 | 1604 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
jozee@2711 | 1605 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
jozee@2711 | 1606 SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)' |
jozee@2711 | 1607 SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \ |
jozee@2711 | 1608 install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"' |
jozee@2711 | 1609 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' |
jozee@2711 | 1610 SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' |
jozee@2711 | 1611 objformat="win32" |
jozee@2711 | 1612 enable dos_paths |
jozee@2711 | 1613 if ! enabled x86_64; then |
jozee@2711 | 1614 check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || |
jozee@2711 | 1615 die "ERROR: MinGW runtime version must be >= 3.15." |
jozee@2711 | 1616 enabled_any avisynth vfwcap_demuxer && |
jozee@2711 | 1617 { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" || |
jozee@2711 | 1618 die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; } |
jozee@2711 | 1619 fi |
jozee@2711 | 1620 ;; |
jozee@2711 | 1621 cygwin*) |
jozee@2711 | 1622 target_os=cygwin |
jozee@2711 | 1623 shlibdir_default="$bindir_default" |
jozee@2711 | 1624 SLIBPREF="cyg" |
jozee@2711 | 1625 SLIBSUF=".dll" |
jozee@2711 | 1626 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
jozee@2711 | 1627 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
jozee@2711 | 1628 SHFLAGS='-shared -Wl,--enable-auto-image-base' |
jozee@2711 | 1629 objformat="win32" |
jozee@2711 | 1630 enable dos_paths |
jozee@2711 | 1631 ;; |
jozee@2711 | 1632 *-dos|freedos|opendos) |
jozee@2711 | 1633 disable ffplay ffserver |
jozee@2711 | 1634 disable $INDEV_LIST $OUTDEV_LIST |
jozee@2711 | 1635 network_extralibs="-lsocket" |
jozee@2711 | 1636 objformat="coff" |
jozee@2711 | 1637 enable dos_paths |
jozee@2711 | 1638 ;; |
jozee@2711 | 1639 linux) |
jozee@2711 | 1640 enable dv1394 |
jozee@2711 | 1641 ;; |
jozee@2711 | 1642 irix*) |
jozee@2711 | 1643 target_os=irix |
jozee@2711 | 1644 ranlib="echo ignoring ranlib" |
jozee@2711 | 1645 ;; |
jozee@2711 | 1646 os/2*) |
jozee@2711 | 1647 strip="lxlite" |
jozee@2711 | 1648 ln_s="cp -f" |
jozee@2711 | 1649 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap" |
jozee@2711 | 1650 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' |
jozee@2711 | 1651 FFSERVERLDFLAGS="" |
jozee@2711 | 1652 LIBSUF="_s.a" |
jozee@2711 | 1653 SLIBPREF="" |
jozee@2711 | 1654 SLIBSUF=".dll" |
jozee@2711 | 1655 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' |
jozee@2711 | 1656 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' |
jozee@2711 | 1657 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1658 echo PROTMODE >> $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1659 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1660 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1661 echo EXPORTS >> $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1662 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' |
jozee@2711 | 1663 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ |
jozee@2711 | 1664 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' |
jozee@2711 | 1665 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"' |
jozee@2711 | 1666 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib' |
jozee@2711 | 1667 enable dos_paths |
jozee@2711 | 1668 ;; |
jozee@2711 | 1669 |
jozee@2711 | 1670 *) |
jozee@2711 | 1671 die "Unknown OS '$target_os'." |
jozee@2711 | 1672 ;; |
jozee@2711 | 1673 esac |
jozee@2711 | 1674 |
jozee@2711 | 1675 set_default $PATHS_LIST |
jozee@2711 | 1676 |
jozee@2711 | 1677 add_extralibs $osextralibs |
jozee@2711 | 1678 |
jozee@2711 | 1679 # Combine FFLDFLAGS and the LDFLAGS environment variable. |
jozee@2711 | 1680 LDFLAGS="$FFLDFLAGS $LDFLAGS" |
jozee@2711 | 1681 |
jozee@2711 | 1682 # we need to build at least one lib type |
jozee@2711 | 1683 if ! enabled_any static shared; then |
jozee@2711 | 1684 cat <<EOF |
jozee@2711 | 1685 At least one library type must be built. |
jozee@2711 | 1686 Specify --enable-static to build the static libraries or --enable-shared to |
jozee@2711 | 1687 build the shared libraries as well. To only build the shared libraries specify |
jozee@2711 | 1688 --disable-static in addition to --enable-shared. |
jozee@2711 | 1689 EOF |
jozee@2711 | 1690 exit 1; |
jozee@2711 | 1691 fi |
jozee@2711 | 1692 |
jozee@2711 | 1693 disabled static && LIBNAME="" |
jozee@2711 | 1694 |
jozee@2711 | 1695 if enabled_any libfaad libfaadbin ; then |
jozee@2711 | 1696 if check_header faad.h; then |
jozee@2711 | 1697 check_cc <<EOF |
jozee@2711 | 1698 #include <faad.h> |
jozee@2711 | 1699 #ifndef FAAD2_VERSION |
jozee@2711 | 1700 ok faad1 |
jozee@2711 | 1701 #endif |
jozee@2711 | 1702 int main(void) { return 0; } |
jozee@2711 | 1703 EOF |
jozee@2711 | 1704 test $? = 0 && enable libfaad2 |
jozee@2711 | 1705 else |
jozee@2711 | 1706 die "FAAD test failed." |
jozee@2711 | 1707 fi |
jozee@2711 | 1708 fi |
jozee@2711 | 1709 |
jozee@2711 | 1710 |
jozee@2711 | 1711 if ! enabled gpl; then |
jozee@2711 | 1712 die_gpl_disabled(){ |
jozee@2711 | 1713 name=$1 |
jozee@2711 | 1714 shift |
jozee@2711 | 1715 enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified." |
jozee@2711 | 1716 } |
jozee@2711 | 1717 die_gpl_disabled "The Postprocessing code" postproc |
jozee@2711 | 1718 die_gpl_disabled "libx264" libx264 |
jozee@2711 | 1719 die_gpl_disabled "libxvidcore" libxvid |
jozee@2711 | 1720 die_gpl_disabled "FAAD2" libfaad2 |
jozee@2711 | 1721 die_gpl_disabled "The X11 grabber" x11grab |
jozee@2711 | 1722 fi |
jozee@2711 | 1723 |
jozee@2711 | 1724 if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then |
jozee@2711 | 1725 die "libamr is nonfree and --enable-nonfree is not specified." |
jozee@2711 | 1726 fi |
jozee@2711 | 1727 |
jozee@2711 | 1728 check_deps $ARCH_EXT_LIST |
jozee@2711 | 1729 |
jozee@2711 | 1730 test -z "$need_memalign" && need_memalign="$mmx" |
jozee@2711 | 1731 |
jozee@2711 | 1732 #Darwin CC versions |
jozee@2711 | 1733 if test $target_os = darwin; then |
jozee@2711 | 1734 if enabled xlc; then |
jozee@2711 | 1735 add_cflags -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto |
jozee@2711 | 1736 else |
jozee@2711 | 1737 add_cflags -pipe |
jozee@2711 | 1738 check_cflags -force_cpusubtype_ALL |
jozee@2711 | 1739 check_cflags -Wno-sign-compare |
jozee@2711 | 1740 enabled shared || check_cflags -mdynamic-no-pic |
jozee@2711 | 1741 fi |
jozee@2711 | 1742 fi |
jozee@2711 | 1743 |
jozee@2711 | 1744 disabled optimizations || check_cflags -fomit-frame-pointer |
jozee@2711 | 1745 |
jozee@2711 | 1746 # Add processor-specific flags |
jozee@2711 | 1747 if test $cpu != "generic"; then |
jozee@2711 | 1748 warn_altivec(){ |
jozee@2711 | 1749 $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1."; |
jozee@2711 | 1750 } |
jozee@2711 | 1751 case $cpu in |
jozee@2711 | 1752 601|ppc601|PowerPC601) |
jozee@2711 | 1753 add_cflags -mcpu=601 |
jozee@2711 | 1754 warn_altivec enabled PPC601 |
jozee@2711 | 1755 ;; |
jozee@2711 | 1756 603*|ppc603*|PowerPC603*) |
jozee@2711 | 1757 add_cflags -mcpu=603 |
jozee@2711 | 1758 warn_altivec enabled PPC603 |
jozee@2711 | 1759 ;; |
jozee@2711 | 1760 604*|ppc604*|PowerPC604*) |
jozee@2711 | 1761 add_cflags -mcpu=604 |
jozee@2711 | 1762 warn_altivec enabled PPC604 |
jozee@2711 | 1763 ;; |
jozee@2711 | 1764 G3|g3|75*|ppc75*|PowerPC75*) |
jozee@2711 | 1765 add_cflags -mcpu=750 -mpowerpc-gfxopt |
jozee@2711 | 1766 warn_altivec enabled PPC75x |
jozee@2711 | 1767 ;; |
jozee@2711 | 1768 G4|g4|745*|ppc745*|PowerPC745*) |
jozee@2711 | 1769 add_cflags -mcpu=7450 -mpowerpc-gfxopt |
jozee@2711 | 1770 warn_altivec disabled PPC745x |
jozee@2711 | 1771 ;; |
jozee@2711 | 1772 74*|ppc74*|PowerPC74*) |
jozee@2711 | 1773 add_cflags -mcpu=7400 -mpowerpc-gfxopt |
jozee@2711 | 1774 warn_altivec disabled PPC74xx |
jozee@2711 | 1775 ;; |
jozee@2711 | 1776 G5|g5|970|ppc970|PowerPC970|power4*|Power4*) |
jozee@2711 | 1777 add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64 |
jozee@2711 | 1778 warn_altivec disabled PPC970 |
jozee@2711 | 1779 enable ppc64 |
jozee@2711 | 1780 ;; |
jozee@2711 | 1781 Cell|CELL|cell) |
jozee@2711 | 1782 add_cflags -mcpu=cell |
jozee@2711 | 1783 warn_altivec disabled Cell |
jozee@2711 | 1784 enable ppc64 |
jozee@2711 | 1785 ;; |
jozee@2711 | 1786 # targets that do NOT support conditional mov (cmov) |
jozee@2711 | 1787 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) |
jozee@2711 | 1788 add_cflags -march=$cpu |
jozee@2711 | 1789 disable cmov |
jozee@2711 | 1790 ;; |
jozee@2711 | 1791 # targets that do support conditional mov (cmov) |
jozee@2711 | 1792 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2) |
jozee@2711 | 1793 add_cflags -march=$cpu |
jozee@2711 | 1794 enable cmov |
jozee@2711 | 1795 enable fast_cmov |
jozee@2711 | 1796 ;; |
jozee@2711 | 1797 # targets that do support conditional mov but on which it's slow |
jozee@2711 | 1798 pentium4|pentium4m|prescott|nocona) |
jozee@2711 | 1799 add_cflags -march=$cpu |
jozee@2711 | 1800 enable cmov |
jozee@2711 | 1801 disable fast_cmov |
jozee@2711 | 1802 ;; |
jozee@2711 | 1803 sparc64) |
jozee@2711 | 1804 add_cflags -mcpu=v9 |
jozee@2711 | 1805 ;; |
jozee@2711 | 1806 arm11*|cortex*) |
jozee@2711 | 1807 add_cflags -mcpu=$cpu |
jozee@2711 | 1808 enable fast_unaligned |
jozee@2711 | 1809 ;; |
jozee@2711 | 1810 armv*) |
jozee@2711 | 1811 add_cflags -march=$cpu |
jozee@2711 | 1812 ;; |
jozee@2711 | 1813 arm*) |
jozee@2711 | 1814 add_cflags -mcpu=$cpu |
jozee@2711 | 1815 ;; |
jozee@2711 | 1816 ev4|ev45|ev5|ev56|pca56|ev6|ev67) |
jozee@2711 | 1817 enabled ccc && add_cflags -arch $cpu || add_cflags -mcpu=$cpu |
jozee@2711 | 1818 ;; |
jozee@2711 | 1819 *) |
jozee@2711 | 1820 echo "WARNING: Unknown CPU \"$cpu\", ignored." |
jozee@2711 | 1821 ;; |
jozee@2711 | 1822 esac |
jozee@2711 | 1823 fi |
jozee@2711 | 1824 |
jozee@2711 | 1825 check_cc <<EOF || die "Symbol mangling check failed." |
jozee@2711 | 1826 int ff_extern; |
jozee@2711 | 1827 EOF |
jozee@2711 | 1828 sym=$($nm -P -g $TMPO | grep ff_extern) |
jozee@2711 | 1829 extern_prefix=${sym%%ff_extern*} |
jozee@2711 | 1830 |
jozee@2711 | 1831 check_cc <<EOF && enable inline_asm |
jozee@2711 | 1832 void foo(void) { __asm__ volatile ("" ::); } |
jozee@2711 | 1833 EOF |
jozee@2711 | 1834 |
jozee@2711 | 1835 if enabled x86; then |
jozee@2711 | 1836 # check whether EBP is available on x86 |
jozee@2711 | 1837 # As 'i' is stored on the stack, this program will crash |
jozee@2711 | 1838 # if the base pointer is used to access it because the |
jozee@2711 | 1839 # base pointer is cleared in the inline assembly code. |
jozee@2711 | 1840 check_exec_crash <<EOF && enable ebp_available |
jozee@2711 | 1841 volatile int i=0; |
jozee@2711 | 1842 __asm__ volatile ( |
jozee@2711 | 1843 "xorl %%ebp, %%ebp" |
jozee@2711 | 1844 ::: "%ebp"); |
jozee@2711 | 1845 return i; |
jozee@2711 | 1846 EOF |
jozee@2711 | 1847 |
jozee@2711 | 1848 # check wether EBX is available on x86 |
jozee@2711 | 1849 check_asm ebx_available '"":::"%ebx"' |
jozee@2711 | 1850 |
jozee@2711 | 1851 # check whether more than 10 operands are supported |
jozee@2711 | 1852 check_cc <<EOF && enable ten_operands |
jozee@2711 | 1853 int main(void) { |
jozee@2711 | 1854 int x=0; |
jozee@2711 | 1855 __asm__ volatile( |
jozee@2711 | 1856 "" |
jozee@2711 | 1857 :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x) |
jozee@2711 | 1858 ); |
jozee@2711 | 1859 return 0; |
jozee@2711 | 1860 } |
jozee@2711 | 1861 EOF |
jozee@2711 | 1862 |
jozee@2711 | 1863 # check whether binutils is new enough to compile SSSE3/MMX2 |
jozee@2711 | 1864 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"' |
jozee@2711 | 1865 enabled mmx2 && check_asm mmx2 '"pmaxub %mm0, %mm1"' |
jozee@2711 | 1866 |
jozee@2711 | 1867 check_asm bswap '"bswap %%eax" ::: "%eax"' |
jozee@2711 | 1868 |
jozee@2711 | 1869 YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)" |
jozee@2711 | 1870 enabled x86_64 && append YASMFLAGS "-m amd64" |
jozee@2711 | 1871 enabled_all x86_64 shared && append YASMFLAGS "-DPIC" |
jozee@2711 | 1872 case "$objformat" in |
jozee@2711 | 1873 elf) enabled debug && append YASMFLAGS "-g dwarf2" ;; |
jozee@2711 | 1874 macho64) append YASMFLAGS "-DPIC -DPREFIX" ;; |
jozee@2711 | 1875 *) append YASMFLAGS "-DPREFIX" ;; |
jozee@2711 | 1876 esac |
jozee@2711 | 1877 disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; } |
jozee@2711 | 1878 fi |
jozee@2711 | 1879 |
jozee@2711 | 1880 # check for assembler specific support |
jozee@2711 | 1881 |
jozee@2711 | 1882 enabled ppc && check_asm dcbzl '"dcbzl 0, 1"' |
jozee@2711 | 1883 enabled ppc && check_asm ppc4xx '"maclhw r10, r11, r12"' |
jozee@2711 | 1884 |
jozee@2711 | 1885 # check for SIMD availability |
jozee@2711 | 1886 |
jozee@2711 | 1887 # AltiVec flags: The FSF version of GCC differs from the Apple version |
jozee@2711 | 1888 if enabled altivec; then |
jozee@2711 | 1889 check_cflags -maltivec -mabi=altivec && |
jozee@2711 | 1890 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } || |
jozee@2711 | 1891 check_cflags -faltivec |
jozee@2711 | 1892 |
jozee@2711 | 1893 # check if our compiler supports Motorola AltiVec C API |
jozee@2711 | 1894 check_cc <<EOF || disable altivec |
jozee@2711 | 1895 $inc_altivec_h |
jozee@2711 | 1896 int main(void) { |
jozee@2711 | 1897 vector signed int v1, v2, v3; |
jozee@2711 | 1898 v1 = vec_add(v2,v3); |
jozee@2711 | 1899 return 0; |
jozee@2711 | 1900 } |
jozee@2711 | 1901 EOF |
jozee@2711 | 1902 |
jozee@2711 | 1903 # check if our compiler supports braces for vector declarations |
jozee@2711 | 1904 check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations." |
jozee@2711 | 1905 $inc_altivec_h |
jozee@2711 | 1906 int main (void) { (vector int) {1}; return 0; } |
jozee@2711 | 1907 EOF |
jozee@2711 | 1908 fi |
jozee@2711 | 1909 |
jozee@2711 | 1910 # We have to check if pld is a nop and disable it. |
jozee@2711 | 1911 enabled arm && check_asm pld '"pld [r0]"' |
jozee@2711 | 1912 enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"' |
jozee@2711 | 1913 enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"' |
jozee@2711 | 1914 enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"' |
jozee@2711 | 1915 enabled armvfp && check_asm armvfp '"fadds s0, s0, s0"' |
jozee@2711 | 1916 enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"' |
jozee@2711 | 1917 enabled mmi && check_asm mmi '"lq $2, 0($2)"' |
jozee@2711 | 1918 enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"' |
jozee@2711 | 1919 enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc |
jozee@2711 | 1920 |
jozee@2711 | 1921 enabled vis && add_cflags -mcpu=ultrasparc -mtune=ultrasparc |
jozee@2711 | 1922 |
jozee@2711 | 1923 # --- |
jozee@2711 | 1924 # big/little-endian test |
jozee@2711 | 1925 check_cc <<EOF || die "endian test failed" |
jozee@2711 | 1926 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; |
jozee@2711 | 1927 EOF |
jozee@2711 | 1928 od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian |
jozee@2711 | 1929 |
jozee@2711 | 1930 # --- |
jozee@2711 | 1931 # check availability of some header files |
jozee@2711 | 1932 |
jozee@2711 | 1933 if check_func dlopen; then |
jozee@2711 | 1934 ldl= |
jozee@2711 | 1935 elif check_func dlopen -ldl; then |
jozee@2711 | 1936 ldl=-ldl |
jozee@2711 | 1937 fi |
jozee@2711 | 1938 |
jozee@2711 | 1939 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that |
jozee@2711 | 1940 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; } |
jozee@2711 | 1941 |
jozee@2711 | 1942 check_func fork |
jozee@2711 | 1943 check_func gethrtime |
jozee@2711 | 1944 check_func getrusage |
jozee@2711 | 1945 check_func inet_aton $network_extralibs |
jozee@2711 | 1946 check_func memalign |
jozee@2711 | 1947 check_func mkstemp |
jozee@2711 | 1948 check_func posix_memalign |
jozee@2711 | 1949 check_func_headers io.h setmode |
jozee@2711 | 1950 check_func_headers windows.h GetProcessTimes |
jozee@2711 | 1951 check_func_headers windows.h VirtualAlloc |
jozee@2711 | 1952 |
jozee@2711 | 1953 check_header conio.h |
jozee@2711 | 1954 check_header dlfcn.h |
jozee@2711 | 1955 check_header malloc.h |
jozee@2711 | 1956 check_header poll.h |
jozee@2711 | 1957 check_header sys/mman.h |
jozee@2711 | 1958 check_header sys/resource.h |
jozee@2711 | 1959 check_header sys/select.h |
jozee@2711 | 1960 check_header termios.h |
jozee@2711 | 1961 check_header vdpau/vdpau.h |
jozee@2711 | 1962 check_header vdpau/vdpau_x11.h |
jozee@2711 | 1963 check_header X11/extensions/XvMClib.h |
jozee@2711 | 1964 |
jozee@2711 | 1965 if ! enabled_any memalign memalign_hack posix_memalign && enabled need_memalign ; then |
jozee@2711 | 1966 die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack." |
jozee@2711 | 1967 fi |
jozee@2711 | 1968 |
jozee@2711 | 1969 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib |
jozee@2711 | 1970 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib |
jozee@2711 | 1971 |
jozee@2711 | 1972 # check for some common methods of building with pthread support |
jozee@2711 | 1973 # do this before the optional library checks as some of them require pthreads |
jozee@2711 | 1974 if enabled pthreads; then |
jozee@2711 | 1975 if check_func pthread_create; then |
jozee@2711 | 1976 : |
jozee@2711 | 1977 elif check_func pthread_create -pthread; then |
jozee@2711 | 1978 add_cflags -pthread |
jozee@2711 | 1979 add_extralibs -pthread |
jozee@2711 | 1980 elif check_func pthread_create -pthreads; then |
jozee@2711 | 1981 add_cflags -pthreads |
jozee@2711 | 1982 add_extralibs -pthreads |
jozee@2711 | 1983 elif check_func pthread_create -lpthreadGC2; then |
jozee@2711 | 1984 add_extralibs -lpthreadGC2 |
jozee@2711 | 1985 elif ! check_lib pthread.h pthread_create -lpthread; then |
jozee@2711 | 1986 die "ERROR: can't find pthreads library" |
jozee@2711 | 1987 fi |
jozee@2711 | 1988 fi |
jozee@2711 | 1989 |
jozee@2711 | 1990 for thread in $THREADS_LIST; do |
jozee@2711 | 1991 if enabled $thread; then |
jozee@2711 | 1992 test -n "$thread_type" && |
jozee@2711 | 1993 die "ERROR: Only one thread type must be selected." || |
jozee@2711 | 1994 thread_type="$thread" |
jozee@2711 | 1995 fi |
jozee@2711 | 1996 done |
jozee@2711 | 1997 |
jozee@2711 | 1998 check_lib math.h sin -lm |
jozee@2711 | 1999 check_lib va/va.h vaInitialize -lva |
jozee@2711 | 2000 |
jozee@2711 | 2001 # test for C99 functions in math.h |
jozee@2711 | 2002 for func in llrint lrint lrintf round roundf truncf; do |
jozee@2711 | 2003 check_exec <<EOF && enable $func || disable $func |
jozee@2711 | 2004 #include <math.h> |
jozee@2711 | 2005 int main(void) { return ($func(3.999f) > 0)?0:1; } |
jozee@2711 | 2006 EOF |
jozee@2711 | 2007 done |
jozee@2711 | 2008 |
jozee@2711 | 2009 # these are off by default, so fail if requested and not available |
jozee@2711 | 2010 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32 |
jozee@2711 | 2011 enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm |
jozee@2711 | 2012 enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm |
jozee@2711 | 2013 enabled libdirac && add_cflags $(pkg-config --cflags dirac) && |
jozee@2711 | 2014 require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init -ldirac_decoder && |
jozee@2711 | 2015 require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init -ldirac_encoder |
jozee@2711 | 2016 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac |
jozee@2711 | 2017 enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad |
jozee@2711 | 2018 enabled libgsm && require libgsm gsm.h gsm_create -lgsm |
jozee@2711 | 2019 enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm |
jozee@2711 | 2020 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut |
jozee@2711 | 2021 enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg |
jozee@2711 | 2022 enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) && |
jozee@2711 | 2023 require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0) |
jozee@2711 | 2024 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex |
jozee@2711 | 2025 enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg |
jozee@2711 | 2026 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg |
jozee@2711 | 2027 enabled libx264 && require libx264 x264.h x264_encoder_open -lx264 -lm && |
jozee@2711 | 2028 { check_cpp_condition x264.h "X264_BUILD >= 65" || |
jozee@2711 | 2029 die "ERROR: libx264 version must be >= 0.65."; } |
jozee@2711 | 2030 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore |
jozee@2711 | 2031 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib |
jozee@2711 | 2032 |
jozee@2711 | 2033 # libdc1394 check |
jozee@2711 | 2034 if enabled libdc1394; then |
jozee@2711 | 2035 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && |
jozee@2711 | 2036 enable libdc1394_2; } || |
jozee@2711 | 2037 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 && |
jozee@2711 | 2038 enable libdc1394_1; } || |
jozee@2711 | 2039 die "ERROR: No version of libdc1394 found " |
jozee@2711 | 2040 fi |
jozee@2711 | 2041 |
jozee@2711 | 2042 |
jozee@2711 | 2043 _restrict= |
jozee@2711 | 2044 for restrict_keyword in restrict __restrict__ __restrict; do |
jozee@2711 | 2045 check_cc <<EOF && _restrict=$restrict_keyword && break |
jozee@2711 | 2046 void foo(char * $restrict_keyword p); |
jozee@2711 | 2047 EOF |
jozee@2711 | 2048 done |
jozee@2711 | 2049 |
jozee@2711 | 2050 ########################################## |
jozee@2711 | 2051 # SDL check |
jozee@2711 | 2052 |
jozee@2711 | 2053 disable sdl_too_old |
jozee@2711 | 2054 disable sdl |
jozee@2711 | 2055 SDL_CONFIG="${cross_prefix}sdl-config" |
jozee@2711 | 2056 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then |
jozee@2711 | 2057 sdl_cflags=$("${SDL_CONFIG}" --cflags) |
jozee@2711 | 2058 temp_cflags $sdl_cflags |
jozee@2711 | 2059 temp_extralibs $("${SDL_CONFIG}" --libs) |
jozee@2711 | 2060 if check_lib2 SDL.h SDL_Init; then |
jozee@2711 | 2061 _sdlversion=$("${SDL_CONFIG}" --version | sed 's/[^0-9]//g') |
jozee@2711 | 2062 if test "$_sdlversion" -lt 121 ; then |
jozee@2711 | 2063 enable sdl_too_old |
jozee@2711 | 2064 else |
jozee@2711 | 2065 enable sdl |
jozee@2711 | 2066 check_cc $sdl_cflags <<EOF && enable sdl_video_size |
jozee@2711 | 2067 #include <SDL.h> |
jozee@2711 | 2068 int main(int argc, char **argv){ |
jozee@2711 | 2069 const SDL_VideoInfo *vi = SDL_GetVideoInfo(); |
jozee@2711 | 2070 int w = vi->current_w; |
jozee@2711 | 2071 return 0; |
jozee@2711 | 2072 } |
jozee@2711 | 2073 EOF |
jozee@2711 | 2074 fi |
jozee@2711 | 2075 fi |
jozee@2711 | 2076 restore_flags |
jozee@2711 | 2077 fi |
jozee@2711 | 2078 |
jozee@2711 | 2079 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html |
jozee@2711 | 2080 |
jozee@2711 | 2081 ########################################## |
jozee@2711 | 2082 # Network check |
jozee@2711 | 2083 |
jozee@2711 | 2084 if enabled network; then |
jozee@2711 | 2085 check_type "sys/types.h sys/socket.h" socklen_t |
jozee@2711 | 2086 # Prefer arpa/inet.h over winsock2 |
jozee@2711 | 2087 if check_header arpa/inet.h ; then |
jozee@2711 | 2088 check_func closesocket |
jozee@2711 | 2089 elif check_header winsock2.h ; then |
jozee@2711 | 2090 network_extralibs="-lws2_32" |
jozee@2711 | 2091 check_type ws2tcpip.h socklen_t |
jozee@2711 | 2092 check_func_headers winsock2.h closesocket |
jozee@2711 | 2093 fi |
jozee@2711 | 2094 fi |
jozee@2711 | 2095 |
jozee@2711 | 2096 ########################################## |
jozee@2711 | 2097 # IPv6 check |
jozee@2711 | 2098 |
jozee@2711 | 2099 enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6 |
jozee@2711 | 2100 #include <sys/types.h> |
jozee@2711 | 2101 #include <sys/socket.h> |
jozee@2711 | 2102 #include <netinet/in.h> |
jozee@2711 | 2103 #include <netdb.h> |
jozee@2711 | 2104 int main(void) { |
jozee@2711 | 2105 struct sockaddr_storage saddr; |
jozee@2711 | 2106 struct ipv6_mreq mreq6; |
jozee@2711 | 2107 getaddrinfo(0,0,0,0); |
jozee@2711 | 2108 getnameinfo(0,0,0,0,0,0,0); |
jozee@2711 | 2109 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0); |
jozee@2711 | 2110 } |
jozee@2711 | 2111 EOF |
jozee@2711 | 2112 |
jozee@2711 | 2113 check_header linux/videodev.h |
jozee@2711 | 2114 check_header linux/videodev2.h |
jozee@2711 | 2115 check_header sys/videoio.h |
jozee@2711 | 2116 |
jozee@2711 | 2117 check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32 |
jozee@2711 | 2118 |
jozee@2711 | 2119 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives |
jozee@2711 | 2120 { check_header dev/bktr/ioctl_meteor.h && |
jozee@2711 | 2121 check_header dev/bktr/ioctl_bt848.h; } || |
jozee@2711 | 2122 { check_header machine/ioctl_meteor.h && |
jozee@2711 | 2123 check_header machine/ioctl_bt848.h; } || |
jozee@2711 | 2124 { check_header dev/video/meteor/ioctl_meteor.h && |
jozee@2711 | 2125 check_header dev/video/bktr/ioctl_bt848.h; } || |
jozee@2711 | 2126 check_header dev/ic/bt8xx.h |
jozee@2711 | 2127 |
jozee@2711 | 2128 check_header sys/soundcard.h |
jozee@2711 | 2129 check_header soundcard.h |
jozee@2711 | 2130 |
jozee@2711 | 2131 check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound |
jozee@2711 | 2132 |
jozee@2711 | 2133 check_lib2 jack/jack.h jack_client_open -ljack |
jozee@2711 | 2134 |
jozee@2711 | 2135 # deal with the X11 frame grabber |
jozee@2711 | 2136 enabled x11grab && |
jozee@2711 | 2137 check_header X11/Xlib.h && |
jozee@2711 | 2138 check_header X11/extensions/XShm.h && |
jozee@2711 | 2139 check_func XOpenDisplay -lX11 && |
jozee@2711 | 2140 check_func XShmCreateImage -lX11 -lXext |
jozee@2711 | 2141 |
jozee@2711 | 2142 enabled debug && add_cflags -g"$debuglevel" |
jozee@2711 | 2143 |
jozee@2711 | 2144 # add some useful compiler flags if supported |
jozee@2711 | 2145 check_cflags -Wdeclaration-after-statement |
jozee@2711 | 2146 check_cflags -Wall |
jozee@2711 | 2147 check_cflags -Wno-switch |
jozee@2711 | 2148 check_cflags -Wdisabled-optimization |
jozee@2711 | 2149 check_cflags -Wpointer-arith |
jozee@2711 | 2150 check_cflags -Wredundant-decls |
jozee@2711 | 2151 check_cflags -Wno-pointer-sign |
jozee@2711 | 2152 check_cflags -Wcast-qual |
jozee@2711 | 2153 check_cflags -Wwrite-strings |
jozee@2711 | 2154 check_cflags -Wtype-limits |
jozee@2711 | 2155 check_cflags -Wundef |
jozee@2711 | 2156 enabled extra_warnings && check_cflags -Winline |
jozee@2711 | 2157 |
jozee@2711 | 2158 # add some linker flags |
jozee@2711 | 2159 check_ldflags -Wl,--warn-common |
jozee@2711 | 2160 check_ldflags -Wl,--as-needed |
jozee@2711 | 2161 check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' |
jozee@2711 | 2162 check_ldflags -Wl,-Bsymbolic |
jozee@2711 | 2163 |
jozee@2711 | 2164 if enabled small; then |
jozee@2711 | 2165 check_cflags -Os # not all compilers support -Os |
jozee@2711 | 2166 optimizations="small" |
jozee@2711 | 2167 elif enabled optimizations; then |
jozee@2711 | 2168 if enabled xlc; then |
jozee@2711 | 2169 add_cflags -O5 |
jozee@2711 | 2170 add_ldflags -O5 |
jozee@2711 | 2171 elif enabled ccc; then |
jozee@2711 | 2172 add_cflags -fast |
jozee@2711 | 2173 else |
jozee@2711 | 2174 add_cflags -O3 |
jozee@2711 | 2175 fi |
jozee@2711 | 2176 fi |
jozee@2711 | 2177 check_cflags -fno-math-errno |
jozee@2711 | 2178 check_cflags -fno-signed-zeros |
jozee@2711 | 2179 |
jozee@2711 | 2180 # add some flags for Intel C Compiler |
jozee@2711 | 2181 if enabled icc; then |
jozee@2711 | 2182 # Just warnings, no remarks |
jozee@2711 | 2183 check_cflags -w1 |
jozee@2711 | 2184 # -wd: Disable following warnings |
jozee@2711 | 2185 # 144, 167, 556: -Wno-pointer-sign |
jozee@2711 | 2186 # 10006: ignoring unknown option -fno-signed-zeros |
jozee@2711 | 2187 # 10156: ignoring option '-W'; no argument required |
jozee@2711 | 2188 check_cflags -wd144,167,556,10006,10156 |
jozee@2711 | 2189 # 11030: Warning unknown option --as-needed |
jozee@2711 | 2190 # 10156: ignoring option '-export'; no argument required |
jozee@2711 | 2191 check_ldflags -wd10156,11030 |
jozee@2711 | 2192 # Allow to compile with optimizations |
jozee@2711 | 2193 check_ldflags -march=$cpu |
jozee@2711 | 2194 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test |
jozee@2711 | 2195 enable ebp_available |
jozee@2711 | 2196 elif enabled ccc; then |
jozee@2711 | 2197 # disable some annoying warnings |
jozee@2711 | 2198 add_cflags -msg_disable cvtu32to64 |
jozee@2711 | 2199 add_cflags -msg_disable embedcomment |
jozee@2711 | 2200 add_cflags -msg_disable needconstext |
jozee@2711 | 2201 add_cflags -msg_disable nomainieee |
jozee@2711 | 2202 add_cflags -msg_disable ptrmismatch1 |
jozee@2711 | 2203 add_cflags -msg_disable unreachcode |
jozee@2711 | 2204 fi |
jozee@2711 | 2205 |
jozee@2711 | 2206 # PIC flags for shared library objects where they are needed |
jozee@2711 | 2207 if enabled shared; then |
jozee@2711 | 2208 # LIBOBJFLAGS may have already been set in the OS configuration |
jozee@2711 | 2209 if test -z "$LIBOBJFLAGS" ; then |
jozee@2711 | 2210 case "${subarch-$arch}" in |
jozee@2711 | 2211 x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;; |
jozee@2711 | 2212 esac |
jozee@2711 | 2213 fi |
jozee@2711 | 2214 fi |
jozee@2711 | 2215 |
jozee@2711 | 2216 if enabled gprof; then |
jozee@2711 | 2217 add_cflags -p |
jozee@2711 | 2218 add_ldflags -p |
jozee@2711 | 2219 fi |
jozee@2711 | 2220 |
jozee@2711 | 2221 # Find out if the .align argument is a power of two or not. |
jozee@2711 | 2222 check_asm asmalign_pot '".align 3"' |
jozee@2711 | 2223 |
jozee@2711 | 2224 enabled_any $DECODER_LIST && enable decoders |
jozee@2711 | 2225 enabled_any $ENCODER_LIST && enable encoders |
jozee@2711 | 2226 enabled_any $HWACCEL_LIST && enable hwaccels |
jozee@2711 | 2227 enabled_any $BSF_LIST && enable bsfs |
jozee@2711 | 2228 enabled_any $DEMUXER_LIST && enable demuxers |
jozee@2711 | 2229 enabled_any $MUXER_LIST && enable muxers |
jozee@2711 | 2230 enabled_any $FILTER_LIST && enable filters |
jozee@2711 | 2231 enabled_any $INDEV_LIST && enable demuxers |
jozee@2711 | 2232 enabled_any $OUTDEV_LIST && enable muxers |
jozee@2711 | 2233 enabled_any $PROTOCOL_LIST && enable protocols |
jozee@2711 | 2234 |
jozee@2711 | 2235 enabled_any $THREADS_LIST && enable threads |
jozee@2711 | 2236 |
jozee@2711 | 2237 check_deps $CONFIG_LIST \ |
jozee@2711 | 2238 $CONFIG_EXTRA \ |
jozee@2711 | 2239 $HAVE_LIST \ |
jozee@2711 | 2240 $DECODER_LIST \ |
jozee@2711 | 2241 $ENCODER_LIST \ |
jozee@2711 | 2242 $HWACCEL_LIST \ |
jozee@2711 | 2243 $PARSER_LIST \ |
jozee@2711 | 2244 $BSF_LIST \ |
jozee@2711 | 2245 $DEMUXER_LIST \ |
jozee@2711 | 2246 $MUXER_LIST \ |
jozee@2711 | 2247 $FILTER_LIST \ |
jozee@2711 | 2248 $INDEV_LIST \ |
jozee@2711 | 2249 $OUTDEV_LIST \ |
jozee@2711 | 2250 $PROTOCOL_LIST \ |
jozee@2711 | 2251 |
jozee@2711 | 2252 echo "install prefix $prefix" |
jozee@2711 | 2253 echo "source path $source_path" |
jozee@2711 | 2254 echo "C compiler $cc" |
jozee@2711 | 2255 echo ".align is power-of-two $asmalign_pot" |
jozee@2711 | 2256 echo "ARCH $arch ($cpu)" |
jozee@2711 | 2257 if test "$build_suffix" != ""; then |
jozee@2711 | 2258 echo "build suffix $build_suffix" |
jozee@2711 | 2259 fi |
jozee@2711 | 2260 if test "$extra_version" != ""; then |
jozee@2711 | 2261 echo "version string suffix $extra_version" |
jozee@2711 | 2262 fi |
jozee@2711 | 2263 echo "big-endian ${bigendian-no}" |
jozee@2711 | 2264 if enabled x86; then |
jozee@2711 | 2265 echo "yasm ${yasm-no}" |
jozee@2711 | 2266 echo "MMX enabled ${mmx-no}" |
jozee@2711 | 2267 echo "MMX2 enabled ${mmx2-no}" |
jozee@2711 | 2268 echo "3DNow! enabled ${amd3dnow-no}" |
jozee@2711 | 2269 echo "3DNow! extended enabled ${amd3dnowext-no}" |
jozee@2711 | 2270 echo "SSE enabled ${sse-no}" |
jozee@2711 | 2271 echo "SSSE3 enabled ${ssse3-no}" |
jozee@2711 | 2272 echo "CMOV enabled ${cmov-no}" |
jozee@2711 | 2273 echo "CMOV is fast ${fast_cmov-no}" |
jozee@2711 | 2274 echo "EBX available ${ebx_available-no}" |
jozee@2711 | 2275 echo "EBP available ${ebp_available-no}" |
jozee@2711 | 2276 echo "10 operands supported ${ten_operands-no}" |
jozee@2711 | 2277 fi |
jozee@2711 | 2278 if enabled arm; then |
jozee@2711 | 2279 echo "ARMv5TE enabled ${armv5te-no}" |
jozee@2711 | 2280 echo "ARMv6 enabled ${armv6-no}" |
jozee@2711 | 2281 echo "ARMv6T2 enabled ${armv6t2-no}" |
jozee@2711 | 2282 echo "ARM VFP enabled ${armvfp-no}" |
jozee@2711 | 2283 echo "IWMMXT enabled ${iwmmxt-no}" |
jozee@2711 | 2284 echo "NEON enabled ${neon-no}" |
jozee@2711 | 2285 fi |
jozee@2711 | 2286 if enabled mips; then |
jozee@2711 | 2287 echo "MMI enabled ${mmi-no}" |
jozee@2711 | 2288 fi |
jozee@2711 | 2289 if enabled ppc; then |
jozee@2711 | 2290 echo "AltiVec enabled ${altivec-no}" |
jozee@2711 | 2291 echo "PPC 4xx optimizations ${ppc4xx-no}" |
jozee@2711 | 2292 echo "dcbzl available ${dcbzl-no}" |
jozee@2711 | 2293 echo "performance report ${powerpc_perf-no}" |
jozee@2711 | 2294 fi |
jozee@2711 | 2295 if enabled sparc; then |
jozee@2711 | 2296 echo "VIS enabled ${vis-no}" |
jozee@2711 | 2297 fi |
jozee@2711 | 2298 echo "gprof enabled ${gprof-no}" |
jozee@2711 | 2299 echo "debug symbols ${debug-no}" |
jozee@2711 | 2300 echo "strip symbols ${stripping-no}" |
jozee@2711 | 2301 echo "optimizations ${optimizations-no}" |
jozee@2711 | 2302 echo "static ${static-no}" |
jozee@2711 | 2303 echo "shared ${shared-no}" |
jozee@2711 | 2304 echo "postprocessing support ${postproc-no}" |
jozee@2711 | 2305 echo "new filter support ${avfilter-no}" |
jozee@2711 | 2306 echo "filters using lavformat ${avfilter_lavf-no}" |
jozee@2711 | 2307 echo "network support ${network-no}" |
jozee@2711 | 2308 if enabled network; then |
jozee@2711 | 2309 echo "IPv6 support ${ipv6-no}" |
jozee@2711 | 2310 fi |
jozee@2711 | 2311 echo "threading support ${thread_type-no}" |
jozee@2711 | 2312 echo "SDL support ${sdl-no}" |
jozee@2711 | 2313 if enabled sdl_too_old; then |
jozee@2711 | 2314 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support." |
jozee@2711 | 2315 fi |
jozee@2711 | 2316 echo "Sun medialib support ${mlib-no}" |
jozee@2711 | 2317 echo "AVISynth enabled ${avisynth-no}" |
jozee@2711 | 2318 echo "libamr-nb support ${libamr_nb-no}" |
jozee@2711 | 2319 echo "libamr-wb support ${libamr_wb-no}" |
jozee@2711 | 2320 echo "libdc1394 support ${libdc1394-no}" |
jozee@2711 | 2321 echo "libdirac enabled ${libdirac-no}" |
jozee@2711 | 2322 echo "libfaac enabled ${libfaac-no}" |
jozee@2711 | 2323 echo "libfaad enabled ${libfaad-no}" |
jozee@2711 | 2324 echo "libfaad dlopened ${libfaadbin-no}" |
jozee@2711 | 2325 echo "libgsm enabled ${libgsm-no}" |
jozee@2711 | 2326 echo "libmp3lame enabled ${libmp3lame-no}" |
jozee@2711 | 2327 echo "libnut enabled ${libnut-no}" |
jozee@2711 | 2328 echo "libopenjpeg enabled ${libopenjpeg-no}" |
jozee@2711 | 2329 echo "libschroedinger enabled ${libschroedinger-no}" |
jozee@2711 | 2330 echo "libspeex enabled ${libspeex-no}" |
jozee@2711 | 2331 echo "libtheora enabled ${libtheora-no}" |
jozee@2711 | 2332 echo "libvorbis enabled ${libvorbis-no}" |
jozee@2711 | 2333 echo "libx264 enabled ${libx264-no}" |
jozee@2711 | 2334 echo "libxvid enabled ${libxvid-no}" |
jozee@2711 | 2335 echo "zlib enabled ${zlib-no}" |
jozee@2711 | 2336 echo "bzlib enabled ${bzlib-no}" |
jozee@2711 | 2337 echo |
jozee@2711 | 2338 |
jozee@2711 | 2339 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do |
jozee@2711 | 2340 echo "Enabled ${type}s:" |
jozee@2711 | 2341 eval list=\$$(toupper $type)_LIST |
jozee@2711 | 2342 for part in $list; do |
jozee@2711 | 2343 enabled $part && echo ${part%_*} |
jozee@2711 | 2344 done | sort | cat |
jozee@2711 | 2345 echo |
jozee@2711 | 2346 done |
jozee@2711 | 2347 |
jozee@2711 | 2348 license="LGPL" |
jozee@2711 | 2349 if enabled nonfree; then |
jozee@2711 | 2350 license="unredistributable" |
jozee@2711 | 2351 elif enabled gpl; then |
jozee@2711 | 2352 license="GPL" |
jozee@2711 | 2353 fi |
jozee@2711 | 2354 |
jozee@2711 | 2355 echo "License: $license" |
jozee@2711 | 2356 |
jozee@2711 | 2357 echo "Creating config.mak and config.h..." |
jozee@2711 | 2358 |
jozee@2711 | 2359 echo "# Automatically generated by configure - do not modify!" > config.mak |
jozee@2711 | 2360 echo "/* Automatically generated by configure - do not modify! */" > $TMPH |
jozee@2711 | 2361 echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH |
jozee@2711 | 2362 echo "#define FFMPEG_CONFIG_H" >> $TMPH |
jozee@2711 | 2363 echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH |
jozee@2711 | 2364 echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH |
jozee@2711 | 2365 |
jozee@2711 | 2366 echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak |
jozee@2711 | 2367 echo "prefix=$prefix" >> config.mak |
jozee@2711 | 2368 echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak |
jozee@2711 | 2369 echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak |
jozee@2711 | 2370 echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak |
jozee@2711 | 2371 echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak |
jozee@2711 | 2372 echo "DATADIR=\$(DESTDIR)$datadir" >> config.mak |
jozee@2711 | 2373 echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak |
jozee@2711 | 2374 echo "SRC_PATH=\"$source_path\"" >> config.mak |
jozee@2711 | 2375 echo "SRC_PATH_BARE=$source_path" >> config.mak |
jozee@2711 | 2376 echo "BUILD_ROOT=\"$PWD\"" >> config.mak |
jozee@2711 | 2377 echo "CC=$cc" >> config.mak |
jozee@2711 | 2378 echo "AS=$as" >> config.mak |
jozee@2711 | 2379 echo "YASM=$yasmexe" >> config.mak |
jozee@2711 | 2380 echo "AR=$ar" >> config.mak |
jozee@2711 | 2381 echo "RANLIB=$ranlib" >> config.mak |
jozee@2711 | 2382 echo "LN_S=$ln_s" >> config.mak |
jozee@2711 | 2383 enabled stripping && |
jozee@2711 | 2384 echo "STRIP=$strip" >> config.mak || |
jozee@2711 | 2385 echo "STRIP=echo ignoring strip" >> config.mak |
jozee@2711 | 2386 |
jozee@2711 | 2387 echo "OPTFLAGS=$CFLAGS" >> config.mak |
jozee@2711 | 2388 echo "LDFLAGS=$LDFLAGS" >> config.mak |
jozee@2711 | 2389 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak |
jozee@2711 | 2390 echo "SHFLAGS=$SHFLAGS" >> config.mak |
jozee@2711 | 2391 echo "YASMFLAGS=$YASMFLAGS" >> config.mak |
jozee@2711 | 2392 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak |
jozee@2711 | 2393 echo "BUILD_STATIC=$static" >> config.mak |
jozee@2711 | 2394 echo "BUILDSUF=$build_suffix" >> config.mak |
jozee@2711 | 2395 echo "FULLNAME=$FULLNAME" >> config.mak |
jozee@2711 | 2396 echo "LIBPREF=$LIBPREF" >> config.mak |
jozee@2711 | 2397 echo "LIBSUF=$LIBSUF" >> config.mak |
jozee@2711 | 2398 echo "LIBNAME=$LIBNAME" >> config.mak |
jozee@2711 | 2399 echo "SLIBPREF=$SLIBPREF" >> config.mak |
jozee@2711 | 2400 echo "SLIBSUF=$SLIBSUF" >> config.mak |
jozee@2711 | 2401 echo "EXESUF=$EXESUF" >> config.mak |
jozee@2711 | 2402 echo "EXTRA_VERSION=$extra_version" >> config.mak |
jozee@2711 | 2403 echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak |
jozee@2711 | 2404 echo "HOSTCC=$host_cc" >> config.mak |
jozee@2711 | 2405 echo "HOSTCFLAGS=$host_cflags" >> config.mak |
jozee@2711 | 2406 echo "HOSTEXESUF=$HOSTEXESUF" >> config.mak |
jozee@2711 | 2407 echo "HOSTLDFLAGS=$host_ldflags" >> config.mak |
jozee@2711 | 2408 echo "HOSTLIBS=$host_libs" >> config.mak |
jozee@2711 | 2409 echo "TARGET_EXEC=$target_exec" >> config.mak |
jozee@2711 | 2410 echo "TARGET_PATH=$target_path" >> config.mak |
jozee@2711 | 2411 |
jozee@2711 | 2412 if enabled bigendian; then |
jozee@2711 | 2413 echo "WORDS_BIGENDIAN=yes" >> config.mak |
jozee@2711 | 2414 echo "#define WORDS_BIGENDIAN 1" >> $TMPH |
jozee@2711 | 2415 fi |
jozee@2711 | 2416 |
jozee@2711 | 2417 if enabled sdl; then |
jozee@2711 | 2418 echo "SDL_LIBS=$("${SDL_CONFIG}" --libs)" >> config.mak |
jozee@2711 | 2419 echo "SDL_CFLAGS=$("${SDL_CONFIG}" --cflags)" >> config.mak |
jozee@2711 | 2420 fi |
jozee@2711 | 2421 if enabled texi2html; then |
jozee@2711 | 2422 echo "BUILD_DOC=yes" >> config.mak |
jozee@2711 | 2423 fi |
jozee@2711 | 2424 |
jozee@2711 | 2425 get_version(){ |
jozee@2711 | 2426 name=$1 |
jozee@2711 | 2427 file=$source_path/$2 |
jozee@2711 | 2428 eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }') |
jozee@2711 | 2429 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO |
jozee@2711 | 2430 lcname=$(tolower $name) |
jozee@2711 | 2431 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak |
jozee@2711 | 2432 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak |
jozee@2711 | 2433 } |
jozee@2711 | 2434 |
jozee@2711 | 2435 get_version LIBSWSCALE libswscale/swscale.h |
jozee@2711 | 2436 get_version LIBPOSTPROC libpostproc/postprocess.h |
jozee@2711 | 2437 get_version LIBAVCODEC libavcodec/avcodec.h |
jozee@2711 | 2438 get_version LIBAVDEVICE libavdevice/avdevice.h |
jozee@2711 | 2439 get_version LIBAVFORMAT libavformat/avformat.h |
jozee@2711 | 2440 get_version LIBAVUTIL libavutil/avutil.h |
jozee@2711 | 2441 get_version LIBAVFILTER libavfilter/avfilter.h |
jozee@2711 | 2442 |
jozee@2711 | 2443 if enabled shared; then |
jozee@2711 | 2444 echo "BUILD_SHARED=yes" >> config.mak |
jozee@2711 | 2445 echo "PIC=-fPIC -DPIC" >> config.mak |
jozee@2711 | 2446 echo "LIBTARGET=${LIBTARGET}" >> config.mak |
jozee@2711 | 2447 echo "SLIBNAME=${SLIBNAME}" >> config.mak |
jozee@2711 | 2448 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak |
jozee@2711 | 2449 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak |
jozee@2711 | 2450 echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak |
jozee@2711 | 2451 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak |
jozee@2711 | 2452 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak |
jozee@2711 | 2453 echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak |
jozee@2711 | 2454 fi |
jozee@2711 | 2455 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak |
jozee@2711 | 2456 echo "EXTRALIBS=$extralibs" >> config.mak |
jozee@2711 | 2457 |
jozee@2711 | 2458 echo "ARCH=$arch" >> config.mak |
jozee@2711 | 2459 |
jozee@2711 | 2460 print_config ARCH_ $TMPH config.mak $ARCH_LIST |
jozee@2711 | 2461 print_config HAVE_ $TMPH config.mak $HAVE_LIST |
jozee@2711 | 2462 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ |
jozee@2711 | 2463 $CONFIG_EXTRA \ |
jozee@2711 | 2464 $DECODER_LIST \ |
jozee@2711 | 2465 $ENCODER_LIST \ |
jozee@2711 | 2466 $HWACCEL_LIST \ |
jozee@2711 | 2467 $PARSER_LIST \ |
jozee@2711 | 2468 $BSF_LIST \ |
jozee@2711 | 2469 $DEMUXER_LIST \ |
jozee@2711 | 2470 $MUXER_LIST \ |
jozee@2711 | 2471 $FILTER_LIST \ |
jozee@2711 | 2472 $PROTOCOL_LIST \ |
jozee@2711 | 2473 $INDEV_LIST \ |
jozee@2711 | 2474 $OUTDEV_LIST \ |
jozee@2711 | 2475 |
jozee@2711 | 2476 echo "#define restrict $_restrict" >> $TMPH |
jozee@2711 | 2477 |
jozee@2711 | 2478 if enabled small; then |
jozee@2711 | 2479 echo "#define av_always_inline" >> $TMPH |
jozee@2711 | 2480 fi |
jozee@2711 | 2481 |
jozee@2711 | 2482 |
jozee@2711 | 2483 # Apparently it's not possible to portably echo a backslash. |
jozee@2711 | 2484 enabled asmalign_pot && |
jozee@2711 | 2485 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH || |
jozee@2711 | 2486 printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH |
jozee@2711 | 2487 |
jozee@2711 | 2488 echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH |
jozee@2711 | 2489 |
jozee@2711 | 2490 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH |
jozee@2711 | 2491 |
jozee@2711 | 2492 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. |
jozee@2711 | 2493 cmp -s $TMPH config.h && |
jozee@2711 | 2494 echo "config.h is unchanged" || |
jozee@2711 | 2495 mv -f $TMPH config.h |
jozee@2711 | 2496 |
jozee@2711 | 2497 # build tree in object directory if source path is different from current one |
jozee@2711 | 2498 if enabled source_path_used; then |
jozee@2711 | 2499 DIRS="\ |
jozee@2711 | 2500 doc \ |
jozee@2711 | 2501 libavcodec \ |
jozee@2711 | 2502 libavcodec/alpha \ |
jozee@2711 | 2503 libavcodec/arm \ |
jozee@2711 | 2504 libavcodec/bfin \ |
jozee@2711 | 2505 libavcodec/mlib \ |
jozee@2711 | 2506 libavcodec/ppc \ |
jozee@2711 | 2507 libavcodec/sh4 \ |
jozee@2711 | 2508 libavcodec/sparc \ |
jozee@2711 | 2509 libavcodec/x86 \ |
jozee@2711 | 2510 libavdevice \ |
jozee@2711 | 2511 libavfilter \ |
jozee@2711 | 2512 libavformat \ |
jozee@2711 | 2513 libavutil \ |
jozee@2711 | 2514 libpostproc \ |
jozee@2711 | 2515 libswscale \ |
jozee@2711 | 2516 libswscale/bfin \ |
jozee@2711 | 2517 libswscale/mlib \ |
jozee@2711 | 2518 libswscale/ppc \ |
jozee@2711 | 2519 libswscale/sparc \ |
jozee@2711 | 2520 libswscale/x86 \ |
jozee@2711 | 2521 tests \ |
jozee@2711 | 2522 tools \ |
jozee@2711 | 2523 " |
jozee@2711 | 2524 FILES="\ |
jozee@2711 | 2525 Makefile \ |
jozee@2711 | 2526 common.mak \ |
jozee@2711 | 2527 subdir.mak \ |
jozee@2711 | 2528 doc/texi2pod.pl \ |
jozee@2711 | 2529 libavcodec/Makefile \ |
jozee@2711 | 2530 libavdevice/Makefile \ |
jozee@2711 | 2531 libavfilter/Makefile \ |
jozee@2711 | 2532 libavformat/Makefile \ |
jozee@2711 | 2533 libavutil/Makefile \ |
jozee@2711 | 2534 libpostproc/Makefile \ |
jozee@2711 | 2535 libswscale/Makefile \ |
jozee@2711 | 2536 " |
jozee@2711 | 2537 for dir in $DIRS ; do |
jozee@2711 | 2538 mkdir -p $dir |
jozee@2711 | 2539 done |
jozee@2711 | 2540 for f in $FILES ; do |
jozee@2711 | 2541 $ln_s "$source_path/$f" $f |
jozee@2711 | 2542 done |
jozee@2711 | 2543 fi |
jozee@2711 | 2544 |
jozee@2711 | 2545 |
jozee@2711 | 2546 # build pkg-config files |
jozee@2711 | 2547 |
jozee@2711 | 2548 pkgconfig_generate(){ |
jozee@2711 | 2549 name=$1 |
jozee@2711 | 2550 shortname=${name#lib}${build_suffix} |
jozee@2711 | 2551 comment=$2 |
jozee@2711 | 2552 version=$3 |
jozee@2711 | 2553 libs=$4 |
jozee@2711 | 2554 requires=$5 |
jozee@2711 | 2555 cat <<EOF > $name/$name.pc |
jozee@2711 | 2556 prefix=$prefix |
jozee@2711 | 2557 exec_prefix=\${prefix} |
jozee@2711 | 2558 libdir=$libdir |
jozee@2711 | 2559 includedir=$incdir |
jozee@2711 | 2560 |
jozee@2711 | 2561 Name: $name |
jozee@2711 | 2562 Description: $comment |
jozee@2711 | 2563 Version: $version |
jozee@2711 | 2564 Requires: $(disabled shared && echo $requires) |
jozee@2711 | 2565 Requires.private: $(enabled shared && echo $requires) |
jozee@2711 | 2566 Conflicts: |
jozee@2711 | 2567 Libs: -L\${libdir} -l${shortname} $(disabled shared && echo $libs) |
jozee@2711 | 2568 Libs.private: $(enabled shared && echo $libs) |
jozee@2711 | 2569 Cflags: -I\${includedir} |
jozee@2711 | 2570 EOF |
jozee@2711 | 2571 cat <<EOF > $name/$name-uninstalled.pc |
jozee@2711 | 2572 prefix= |
jozee@2711 | 2573 exec_prefix= |
jozee@2711 | 2574 libdir=\${pcfiledir} |
jozee@2711 | 2575 includedir=${source_path} |
jozee@2711 | 2576 |
jozee@2711 | 2577 Name: $name |
jozee@2711 | 2578 Description: $comment |
jozee@2711 | 2579 Version: $version |
jozee@2711 | 2580 Requires: $requires |
jozee@2711 | 2581 Conflicts: |
jozee@2711 | 2582 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs |
jozee@2711 | 2583 Cflags: -I\${includedir} |
jozee@2711 | 2584 EOF |
jozee@2711 | 2585 } |
jozee@2711 | 2586 |
jozee@2711 | 2587 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" |
jozee@2711 | 2588 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" |
jozee@2711 | 2589 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" |
jozee@2711 | 2590 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" |
jozee@2711 | 2591 enabled avfilter && |
jozee@2711 | 2592 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" |
jozee@2711 | 2593 enabled postproc && |
jozee@2711 | 2594 pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" |
jozee@2711 | 2595 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" |