append LDFLAGS $($ldflags_filter "$@")
}
+add_stripflags(){
+ append STRIPFLAGS "$@"
+}
+
add_extralibs(){
prepend extralibs $($ldflags_filter "$@")
}
test_ldflags "$@" && add_ldflags "$@"
}
+test_stripflags(){
+ log test_stripflags "$@"
+ # call check_cc to get a fresh TMPO
+ check_cc <<EOF
+int main(void) { return 0; }
+EOF
+ check_cmd $strip $STRIPFLAGS "$@" $TMPO
+}
+
+check_stripflags(){
+ log check_stripflags "$@"
+ test_stripflags "$@" && add_stripflags "$@"
+}
+
check_header(){
log check_header "$@"
header=$1
add_extralibs $(get_safe ${pkg}_libs)
}
+hostcc_e(){
+ eval printf '%s\\n' $HOSTCC_E
+}
+
hostcc_o(){
eval printf '%s\\n' $HOSTCC_O
}
check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
}
+check_host_cpp(){
+ log check_host_cpp "$@"
+ cat > $TMPC
+ log_file $TMPC
+ check_cmd $host_cc $HOSTCPPFLAGS $HOSTCFLAGS "$@" $(hostcc_e $TMPO) $TMPC
+}
+
check_host_cppflags(){
log check_host_cppflags "$@"
check_host_cc "$@" <<EOF && append host_cppflags "$@"
EOF
}
+check_host_cpp_condition(){
+ log check_host_cpp_condition "$@"
+ header=$1
+ condition=$2
+ shift 2
+ check_host_cpp "$@" <<EOF
+#include <$header>
+#if !($condition)
+#error "unsatisfied condition: $condition"
+#endif
+EOF
+}
+
apply(){
file=$1
shift
EXAMPLE_LIST="
output_example
+ transcode_aac_example
"
EXTERNAL_LIBRARY_LIST="
memalign_hack
network
nonfree
- perl
+ pod2man
pic
rdft
runtime_cpudetect
isatty
jack_port_get_latency_range
ldbrx
+ libc_msvcrt
libdc1394_1
libdc1394_2
local_aligned_16
mm_empty
mmap
mprotect
- msvcrt
nanosleep
poll_h
posix_memalign
fast_clz_if_any="alpha avr32 mips ppc x86"
fast_unaligned_if_any="ppc x86"
-inline_asm_deps="!tms470"
need_memalign="altivec neon sse"
-symver_if_any="symver_asm_label symver_gnu_asm"
+# system capabilities
+log2_deps="!libc_msvcrt"
-log2_deps="!msvcrt"
+symver_if_any="symver_asm_label symver_gnu_asm"
# subsystems
dct_select="rdft"
# examples
output_example_deps="avcodec avformat avutil swscale"
+transcode_aac_example_deps="avcodec avformat avresample"
# libraries
avcodec_deps="avutil"
avserver_extralibs='$ldl'
# documentation
-perl_deps="doc"
+pod2man_deps="doc"
texi2html_deps="doc"
# default parameters
LD_LIB='-l%'
LD_PATH='-L'
HOSTCC_C='-c'
+HOSTCC_E='-E -o $@'
HOSTCC_O='-o $@'
HOSTLD_O='-o $@'
host_cflags='-O3 -g'
-host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
+host_cppflags='-D_ISOC99_SOURCE'
host_libs='-lm'
host_cflags_filter=echo
host_ldflags_filter=echo
SHFLAGS='-shared -Wl,-h,$$(@F)'
enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
network_extralibs="-lsocket -lnsl"
- add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
# When using suncc to build, the Solaris linker will mark
# an executable with each instruction set encountered by
# the Solaris assembler. As our libraries contain their own
# determine libc flavour
-# uclibc defines __GLIBC__, so it needs to be checked before glibc.
-if check_cpp_condition features.h "defined __UCLIBC__"; then
- libc_type=uclibc
- add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
-elif check_cpp_condition features.h "defined __GLIBC__"; then
- libc_type=glibc
- add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
-# MinGW headers can be installed on Cygwin, so check for newlib first.
-elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
- libc_type=newlib
- add_cppflags -U__STRICT_ANSI__
-elif check_header _mingw.h; then
- libc_type=mingw
- check_cpp_condition _mingw.h \
- "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
+probe_libc(){
+ pfx=$1
+ # uclibc defines __GLIBC__, so it needs to be checked before glibc.
+ if check_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
+ eval ${pfx}libc_type=uclibc
+ add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
+ elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then
+ eval ${pfx}libc_type=glibc
+ add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
+ # MinGW headers can be installed on Cygwin, so check for newlib first.
+ elif check_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
+ eval ${pfx}libc_type=newlib
+ add_${pfx}cppflags -U__STRICT_ANSI__
+ # MinGW64 is backwards compatible with MinGW32, so check for it first.
+ elif check_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
+ eval ${pfx}libc_type=mingw64
+ add_${pfx}cppflags -U__STRICT_ANSI__
+ elif check_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
+ eval ${pfx}libc_type=mingw32
+ check_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
(__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
- die "ERROR: MinGW runtime version must be >= 3.15."
- add_cppflags -U__STRICT_ANSI__
-elif check_func_headers stdlib.h _get_doserrno; then
- libc_type=msvcrt
- add_compat strtod.o strtod=avpriv_strtod
- add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
- _snprintf=avpriv_snprintf \
- vsnprintf=avpriv_vsnprintf
- # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
- # 0x601 by default unless something else is set by the user.
- # This can easily lead to us detecting functions only present
- # in such new versions and producing binaries requiring windows 7.0.
- # Therefore explicitly set the default to XP unless the user has
- # set something else on the command line.
- check_cpp_condition stdlib.h "defined(_WIN32_WINNT)" || add_cppflags -D_WIN32_WINNT=0x0502
-elif check_cpp_condition stddef.h "defined __KLIBC__"; then
- libc_type=klibc
-elif check_cpp_condition sys/cdefs.h "defined __BIONIC__"; then
- libc_type=bionic
- add_compat strtod.o strtod=avpriv_strtod
-fi
+ die "ERROR: MinGW32 runtime version must be >= 3.15."
+ add_${pfx}cppflags -U__STRICT_ANSI__
+ elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
+ eval ${pfx}libc_type=msvcrt
+ # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
+ # 0x601 by default unless something else is set by the user.
+ # This can easily lead to us detecting functions only present
+ # in such new versions and producing binaries requiring windows 7.0.
+ # Therefore explicitly set the default to XP unless the user has
+ # set something else on the command line.
+ check_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
+ add_${pfx}cppflags -D_WIN32_WINNT=0x0502
+ elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
+ eval ${pfx}libc_type=klibc
+ elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
+ eval ${pfx}libc_type=bionic
+ elif check_${pfx}cpp_condition sys/brand.h "defined SOLARIS_BRAND_NAME"; then
+ eval ${pfx}libc_type=solaris
+ add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
+ fi
+}
-test -n "$libc_type" && enable $libc_type
+probe_libc
+test -n "$libc_type" && enable libc_$libc_type
+probe_libc host_
+test -n "$host_libc_type" && enable host_libc_$host_libc_type
+
+case $libc_type in
+ bionic)
+ add_compat strtod.o strtod=avpriv_strtod
+ ;;
+ msvcrt)
+ add_compat strtod.o strtod=avpriv_strtod
+ add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
+ _snprintf=avpriv_snprintf \
+ vsnprintf=avpriv_vsnprintf
+ ;;
+esac
# hacks for compiler/libc/os combinations
-if enabled_all tms470 glibc; then
+if enabled_all tms470 libc_glibc; then
CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
add_cppflags -D__USER_LABEL_PREFIX__=
add_cppflags -D__builtin_memset=memset
add_cflags -pds=48 # incompatible redefinition of macro
fi
-if enabled_all ccc glibc; then
+if enabled_all ccc libc_glibc; then
add_ldflags -Wl,-z,now # calls to libots crash without this
fi
# do this before the optional library checks as some of them require pthreads
if ! disabled pthreads && ! enabled w32threads; then
enable pthreads
- if check_func pthread_create; then
+ if check_func pthread_join; then
:
- elif check_func pthread_create -pthread; then
+ elif check_func pthread_join -pthread; then
add_cflags -pthread
add_extralibs -pthread
- elif check_func pthread_create -pthreads; then
+ elif check_func pthread_join -pthreads; then
add_cflags -pthreads
add_extralibs -pthreads
- elif check_func pthread_create -lpthreadGC2; then
+ elif check_func pthread_join -lpthreadGC2; then
add_extralibs -lpthreadGC2
- elif ! check_lib pthread.h pthread_create -lpthread; then
+ elif ! check_lib pthread.h pthread_join -lpthread; then
disable pthreads
fi
fi
done
# these are off by default, so fail if requested and not available
-enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
+enabled avisynth && { { check_header "avisynth/avisynth_c.h" && check_lib2 "windows.h" LoadLibrary; } ||
+ { check_header "avxsynth/avxsynth_c.h" && check_lib2 "dlfcn.h" dlopen -ldl; } ||
+ die "ERROR: LoadLibrary/dlopen not found, or avisynth header not found"; }
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enable sdl
fi
-perl -v > /dev/null 2>&1 && enable perl || disable perl
+pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
check_header linux/fb.h
check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
+# add some strip flags
+# -wN '..@*' is more selective than -x, but not available everywhere.
+check_stripflags -wN \'..@*\' || check_stripflags -x || strip='true'
+
enabled xmm_clobber_test &&
check_ldflags -Wl,--wrap,avcodec_open2 \
-Wl,--wrap,avcodec_decode_audio4 \
add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
elif enabled tms470; then
add_cflags -pds=824 -pds=837
+ disable inline_asm
elif enabled pathscale; then
add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
elif enabled_any msvc icl; then
echo "install prefix $prefix"
echo "source path $source_path"
echo "C compiler $cc"
+echo "C library $libc_type"
+if test "$host_cc" != "$cc"; then
+ echo "host C compiler $host_cc"
+ echo "host C library $host_libc_type"
+fi
echo "ARCH $arch ($cpu)"
if test "$build_suffix" != ""; then
echo "build suffix $build_suffix"
DLLTOOL=$dlltool
LDFLAGS=$LDFLAGS
SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
+STRIPFLAGS=$STRIPFLAGS
YASMFLAGS=$YASMFLAGS
BUILDSUF=$build_suffix
FULLNAME=$FULLNAME