mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
major cleanup of compiler/library tests
Originally committed as revision 5439 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bb05edcf2e
commit
dcd479c033
385
configure
vendored
385
configure
vendored
@ -96,6 +96,83 @@ show_help(){
|
||||
exit 1
|
||||
}
|
||||
|
||||
save_flags(){
|
||||
(:${SAVE_CFLAGS?}) 2>/dev/null && return
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
SAVE_LDFLAGS="$LDFLAGS"
|
||||
SAVE_extralibs="$extralibs"
|
||||
}
|
||||
|
||||
restore_flags(){
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
LDFLAGS="$SAVE_LDFLAGS"
|
||||
extralibs="$SAVE_extralibs"
|
||||
unset SAVE_CFLAGS
|
||||
unset SAVE_LDFLAGS
|
||||
unset SAVE_extralibs
|
||||
}
|
||||
|
||||
temp_cflags(){
|
||||
save_flags
|
||||
CFLAGS="$CFLAGS $*"
|
||||
}
|
||||
|
||||
temp_ldflags(){
|
||||
save_flags
|
||||
LDFLAGS="$LDFLAGS $*"
|
||||
}
|
||||
|
||||
temp_extralibs(){
|
||||
save_flags
|
||||
extralibs="$extralibs $*"
|
||||
}
|
||||
|
||||
check_cc(){
|
||||
cat >$TMPC
|
||||
${cross_prefix}$cc $CFLAGS "$@" -c -o $TMPO $TMPC >/dev/null 2>&1
|
||||
}
|
||||
|
||||
check_ld(){
|
||||
cat >$TMPC
|
||||
${cross_prefix}$cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs >/dev/null 2>&1
|
||||
}
|
||||
|
||||
check_cflags(){
|
||||
check_cc "$@" <<EOF && CFLAGS="$CFLAGS $*"
|
||||
int x;
|
||||
EOF
|
||||
}
|
||||
|
||||
check_ldflags(){
|
||||
check_ld "$@" <<EOF && LDFLAGS="$LDFLAGS $*"
|
||||
int x;
|
||||
EOF
|
||||
}
|
||||
|
||||
check_header(){
|
||||
header=$1
|
||||
shift
|
||||
check_cc "$@" <<EOF
|
||||
#include <$header>
|
||||
int x;
|
||||
EOF
|
||||
}
|
||||
|
||||
check_func(){
|
||||
func=$1
|
||||
shift
|
||||
check_ld "$@" <<EOF
|
||||
extern int $func();
|
||||
int main(){
|
||||
$func();
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
check_exec(){
|
||||
check_ld "$@" && (test -z "$cross_prefix" && $TMPE || true)
|
||||
}
|
||||
|
||||
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
|
||||
show_help
|
||||
fi
|
||||
@ -691,20 +768,15 @@ if test "$gpl" != "yes"; then
|
||||
fi
|
||||
|
||||
if test "$faad" != "no" -o "$faadbin" != "no"; then
|
||||
cat > $TMPC << EOF
|
||||
#include <faad.h>
|
||||
int main( void ) { return 0; }
|
||||
EOF
|
||||
|
||||
if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
|
||||
cat > $TMPC << EOF
|
||||
if check_header faad.h; then
|
||||
check_cc << EOF
|
||||
#include <faad.h>
|
||||
#ifndef FAAD2_VERSION
|
||||
ok faad1
|
||||
#endif
|
||||
int main( void ) { return 0; }
|
||||
EOF
|
||||
if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
|
||||
if test $? = 0 ; then
|
||||
echo "FAAD2 is under GPL and --enable-gpl is not specified."
|
||||
fail="yes"
|
||||
fi
|
||||
@ -732,16 +804,12 @@ fi
|
||||
|
||||
# check iwmmxt support
|
||||
if test $iwmmxt = "default" -a $cpu = "armv4l"; then
|
||||
cat > $TMPC << EOF
|
||||
iwmmxt=no
|
||||
check_cc <<EOF && iwmmxt=yes
|
||||
int main(void) {
|
||||
__asm__ __volatile__ ("wunpckelub wr6, wr4");
|
||||
}
|
||||
EOF
|
||||
|
||||
iwmmxt=no
|
||||
if ${cross_prefix}${cc} -o $TMPO $TMPC 2> /dev/null ; then
|
||||
iwmmxt=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
#Darwin CC versions
|
||||
@ -855,30 +923,17 @@ if test $cpu = "powerpc"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# check if we have <altivec.h>
|
||||
cat > $TMPC << EOF
|
||||
#include <altivec.h>
|
||||
int main( void ) { return 0; }
|
||||
EOF
|
||||
|
||||
_altivec_h="no"
|
||||
if $cc $CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
|
||||
_altivec_h="yes"
|
||||
fi
|
||||
check_header altivec.h && _altivec_h=yes || _altivec_h=no
|
||||
|
||||
# check if our compiler supports Motorola AltiVec C API
|
||||
if test $altivec = "yes"; then
|
||||
if test $_altivec_h = "yes"; then
|
||||
cat > $TMPC << EOF
|
||||
#include <altivec.h>
|
||||
int main(void) {
|
||||
vector signed int v1, v2, v3;
|
||||
v1 = vec_add(v2,v3);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
inc_altivec_h="#include <altivec.h>"
|
||||
else
|
||||
cat > $TMPC << EOF
|
||||
inc_altivec_h=
|
||||
fi
|
||||
check_cc <<EOF || altivec=no
|
||||
$inc_altivec_h
|
||||
int main(void) {
|
||||
vector signed int v1, v2, v3;
|
||||
v1 = vec_add(v2,v3);
|
||||
@ -886,8 +941,6 @@ int main(void) {
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
$cc $CFLAGS -o $TMPE $TMPC 2> /dev/null || altivec="no"
|
||||
fi
|
||||
|
||||
# mmi only available on mips
|
||||
if test $mmi = "default"; then
|
||||
@ -900,13 +953,12 @@ fi
|
||||
|
||||
# check if our compiler supports mmi
|
||||
if test $mmi = "yes"; then
|
||||
cat > $TMPC << EOF
|
||||
check_cc <<EOF || mmi="no"
|
||||
int main(void) {
|
||||
__asm__ ("lq \$2, 0(\$2)");
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
|
||||
fi
|
||||
|
||||
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
|
||||
@ -946,7 +998,7 @@ if test -z "$cross_prefix" ; then
|
||||
|
||||
# ---
|
||||
# big/little-endian test
|
||||
cat > $TMPC << EOF
|
||||
check_ld <<EOF
|
||||
#include <inttypes.h>
|
||||
int main(int argc, char ** argv){
|
||||
volatile uint32_t i=0x01234567;
|
||||
@ -954,10 +1006,10 @@ int main(int argc, char ** argv){
|
||||
}
|
||||
EOF
|
||||
|
||||
if $cc -o $TMPE $TMPC 2>/dev/null ; then
|
||||
$TMPE && bigendian="yes"
|
||||
if test $? = 0 ; then
|
||||
$TMPE && bigendian="yes"
|
||||
else
|
||||
echo big/little test failed
|
||||
echo big/little test failed
|
||||
fi
|
||||
|
||||
else
|
||||
@ -971,18 +1023,11 @@ fi
|
||||
|
||||
# ---
|
||||
# *inttypes.h* test
|
||||
cat > $TMPC << EOF
|
||||
#include <inttypes.h>
|
||||
int main(int argc, char ** argv){
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
|
||||
$cc -o $TMPE $TMPC 2>/dev/null || inttypes="no"
|
||||
check_header inttypes.h || inttypes=no
|
||||
|
||||
# ---
|
||||
# *int_fast* test
|
||||
cat > $TMPC << EOF
|
||||
check_cc <<EOF || emu_fast_int=yes
|
||||
#include <inttypes.h>
|
||||
int main(int argc, char ** argv){
|
||||
volatile uint_fast64_t i=0x01234567;
|
||||
@ -990,32 +1035,15 @@ int main(int argc, char ** argv){
|
||||
}
|
||||
EOF
|
||||
|
||||
$cc -o $TMPE $TMPC 2>/dev/null || emu_fast_int="yes"
|
||||
|
||||
# ---
|
||||
# check availability of some header files
|
||||
|
||||
cat > $TMPC << EOF
|
||||
#include <malloc.h>
|
||||
int main( void ) { return 0; }
|
||||
EOF
|
||||
|
||||
_memalign=no
|
||||
_malloc_h=no
|
||||
if $cc -o $TMPE $TMPC 2> /dev/null ; then
|
||||
_malloc_h=yes
|
||||
_memalign=yes
|
||||
# check for memalign - atmos
|
||||
cat > $TMPC << EOF
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
int main ( void ) {
|
||||
char *string = NULL;
|
||||
string = memalign(64, sizeof(char));
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$cc -o $TMPE $TMPC 2> /dev/null || _memalign=no
|
||||
if check_header malloc.h; then
|
||||
_malloc_h=yes
|
||||
_memalign=yes
|
||||
check_func memalign || _memalign="no"
|
||||
fi
|
||||
|
||||
if test "$_memalign" = "no" -a "$mmx" = "yes" -a "$memalignhack" != "yes"; then
|
||||
@ -1023,81 +1051,50 @@ if test "$_memalign" = "no" -a "$mmx" = "yes" -a "$memalignhack" != "yes"; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat > $TMPC << EOF
|
||||
#include <time.h>
|
||||
int main( void ) { localtime_r(NULL, NULL); }
|
||||
EOF
|
||||
|
||||
localtime_r=no
|
||||
if $cc -o $TMPE $TMPC 2> /dev/null ; then
|
||||
localtime_r=yes
|
||||
fi
|
||||
check_func localtime_r && localtime_r=yes || localtime_r=no
|
||||
|
||||
if test "$zlib" = "yes"; then
|
||||
# check for zlib - mmu_man
|
||||
cat > $TMPC << EOF
|
||||
#include <zlib.h>
|
||||
int main ( void ) {
|
||||
if (zlibVersion() != ZLIB_VERSION)
|
||||
puts("zlib version differs !!!");
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$cc $CFLAGS $LDFLAGS -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
|
||||
# $TMPE 2> /dev/null > /dev/null || zlib="no"
|
||||
# XXX: more tests needed - runtime test
|
||||
temp_extralibs -lz
|
||||
check_header zlib.h && check_func zlibVersion || zlib="no"
|
||||
# XXX: more tests needed - runtime test
|
||||
restore_flags
|
||||
fi
|
||||
if test "$zlib" = "yes"; then
|
||||
extralibs="$extralibs -lz"
|
||||
extralibs="$extralibs -lz"
|
||||
fi
|
||||
|
||||
if test "$lzo" = "yes" -a "$gpl" = "yes"; then
|
||||
# check for liblzo
|
||||
cat > $TMPC << EOF
|
||||
#include <lzo1x.h>
|
||||
int main ( void ) {
|
||||
lzo_init();
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$cc $CFLAGS $LDFLAGS -o $TMPE $TMPC -llzo 2> /dev/null || lzo="no"
|
||||
temp_extralibs -llzo
|
||||
check_header lzo1x.h && check_func lzo_version || lzo="no"
|
||||
restore_flags
|
||||
else
|
||||
lzo="no"
|
||||
lzo="no"
|
||||
fi
|
||||
if test "$lzo" = "yes"; then
|
||||
extralibs="$extralibs -llzo"
|
||||
extralibs="$extralibs -llzo"
|
||||
fi
|
||||
|
||||
# test for lrintf in math.h
|
||||
cat > $TMPC << EOF
|
||||
check_exec <<EOF && have_lrintf=yes || have_lrintf=no
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#include <math.h>
|
||||
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
|
||||
EOF
|
||||
|
||||
have_lrintf="no"
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC $extralibs 2> /dev/null ; then
|
||||
have_lrintf="yes"
|
||||
# allanc@chickenandporn.com: cannot execute cross-compiled
|
||||
# code on the host. Only execute if not cross-compiling.
|
||||
if test -z "$cross_prefix" ; then
|
||||
$TMPE 2> /dev/null > /dev/null || have_lrintf="no"
|
||||
fi
|
||||
fi
|
||||
|
||||
_restrict=
|
||||
for restrict_keyword in restrict __restrict__ __restrict; do
|
||||
echo "void foo(char * $restrict_keyword p);" > $TMPC
|
||||
if $cc -c -o $TMPO $TMPC 2> /dev/null; then
|
||||
_restrict=$restrict_keyword
|
||||
break;
|
||||
fi
|
||||
check_cc <<EOF
|
||||
void foo(char * $restrict_keyword p);
|
||||
EOF
|
||||
if test $? = 0; then
|
||||
_restrict=$restrict_keyword
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
# test gcc version to see if vector builtins can be used
|
||||
# currently only used on i386 for MMX builtins
|
||||
cat > $TMPC << EOF
|
||||
check_cc -msse <<EOF && builtin_vector=yes || builtin_vector=no
|
||||
#include <xmmintrin.h>
|
||||
int main(void) {
|
||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
@ -1108,13 +1105,9 @@ return 0;
|
||||
}
|
||||
EOF
|
||||
|
||||
builtin_vector=no
|
||||
if $cc -msse -o $TMPO $TMPC 2> /dev/null ; then
|
||||
builtin_vector=yes
|
||||
fi
|
||||
|
||||
# test for mm3dnow.h
|
||||
cat > $TMPC << EOF
|
||||
test "$cpu" = "x86_64" && march=k8 || march=athlon
|
||||
check_cc -march=$march <<EOF && mm3dnow=yes || mm3dnow=no
|
||||
#include <mm3dnow.h>
|
||||
int main(void) {
|
||||
__m64 b1;
|
||||
@ -1124,57 +1117,22 @@ return 0;
|
||||
}
|
||||
EOF
|
||||
|
||||
mm3dnow=no
|
||||
march=athlon
|
||||
if test "$cpu" = "x86_64"; then
|
||||
march=k8
|
||||
fi
|
||||
if $cc -march=$march -o $TMPO $TMPC 2> /dev/null ; then
|
||||
mm3dnow=yes
|
||||
fi
|
||||
|
||||
# Probe for -Wdeclaration-after-statement
|
||||
if test "$cc" = "gcc"; then
|
||||
cat > $TMPC << EOF
|
||||
int main( void ) { return 0; }
|
||||
EOF
|
||||
|
||||
if $cc -Wdeclaration-after-statement -Werror -o $TMPE $TMPC 2> /dev/null ; then
|
||||
CFLAGS="$CFLAGS -Wdeclaration-after-statement"
|
||||
fi
|
||||
fi
|
||||
check_cflags -Wdeclaration-after-statement
|
||||
|
||||
# dlopen/dlfcn.h probing
|
||||
|
||||
cat > $TMPC << EOF
|
||||
#include <dlfcn.h>
|
||||
int main( void ) { return (int) dlopen("foo", 0); }
|
||||
EOF
|
||||
check_header dlfcn.h && dlfcn=yes
|
||||
|
||||
ldl=-ldl
|
||||
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC -ldl > /dev/null 2>&1 ; then
|
||||
dlfcn=yes
|
||||
dlopen=yes
|
||||
temp_extralibs -ldl
|
||||
if check_func dlopen; then
|
||||
dlopen=yes
|
||||
ldl=-ldl
|
||||
fi
|
||||
restore_flags
|
||||
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC > /dev/null 2>&1 ; then
|
||||
dlfcn=yes
|
||||
dlopen=yes
|
||||
ldl=""
|
||||
fi
|
||||
|
||||
cat > $TMPC << EOF
|
||||
int main( void ) { return (int) dlopen("foo", 0); }
|
||||
EOF
|
||||
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC -ldl > /dev/null 2>&1 ; then
|
||||
dlopen=yes
|
||||
fi
|
||||
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC > /dev/null 2>&1 ; then
|
||||
dlopen=yes
|
||||
ldl=""
|
||||
if check_func dlopen; then
|
||||
dlopen=yes
|
||||
ldl=
|
||||
fi
|
||||
|
||||
if test "$vhook" = "default" ; then
|
||||
@ -1189,55 +1147,53 @@ fi
|
||||
##########################################
|
||||
# imlib check
|
||||
|
||||
cat > $TMPC << EOF
|
||||
temp_extralibs -lImlib2
|
||||
check_ld <<EOF && imlib2=yes || imlib2=no
|
||||
#include <X11/Xlib.h>
|
||||
#include <Imlib2.h>
|
||||
int main( void ) { return (int) imlib_load_font("foo"); }
|
||||
EOF
|
||||
|
||||
imlib2=no
|
||||
if $cc $CFLAGS $LDFLAGS -o $TMPE $TMPC -lImlib2 -lm > /dev/null 2>&1 ; then
|
||||
imlib2=yes
|
||||
fi
|
||||
restore_flags
|
||||
|
||||
##########################################
|
||||
# FreeType check
|
||||
|
||||
cat > $TMPC << EOF
|
||||
#include <ft2build.h>
|
||||
int main( void ) { return (int) FT_Init_FreeType(0); }
|
||||
EOF
|
||||
|
||||
freetype2=no
|
||||
if test "x$targetos" != "xBeOS"; then
|
||||
if (freetype-config --version) >/dev/null 2>&1 ; then
|
||||
if $cc -o $TMPE $TMPC `freetype-config --cflags` `freetype-config --libs` > /dev/null 2>&1 ; then
|
||||
freetype2=yes
|
||||
fi
|
||||
temp_cflags `freetype-config --cflags`
|
||||
temp_extralibs `freetype-config --libs`
|
||||
check_ld <<EOF && freetype2=yes
|
||||
#include <ft2build.h>
|
||||
int main( void ) { return (int) FT_Init_FreeType(0); }
|
||||
EOF
|
||||
restore_flags
|
||||
fi
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# SDL check
|
||||
|
||||
cat > $TMPC << EOF
|
||||
#include <SDL.h>
|
||||
#undef main /* We don't want SDL to override our main() */
|
||||
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
|
||||
EOF
|
||||
|
||||
sdl_too_old=no
|
||||
sdl=no
|
||||
SDL_CONFIG="${cross_prefix}sdl-config"
|
||||
if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
|
||||
if $cc -o $TMPE `"${SDL_CONFIG}" --cflags` $TMPC `"${SDL_CONFIG}" --libs` > /dev/null 2>&1 ; then
|
||||
_sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
|
||||
if test "$_sdlversion" -lt 121 ; then
|
||||
sdl_too_old=yes
|
||||
else
|
||||
sdl=yes
|
||||
fi
|
||||
fi
|
||||
temp_cflags `"${SDL_CONFIG}" --cflags`
|
||||
temp_extralibs `"${SDL_CONFIG}" --libs`
|
||||
check_ld <<EOF
|
||||
#include <SDL.h>
|
||||
#undef main /* We don't want SDL to override our main() */
|
||||
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
|
||||
EOF
|
||||
restore_flags
|
||||
if test $? = 0; then
|
||||
_sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
|
||||
if test "$_sdlversion" -lt 121 ; then
|
||||
sdl_too_old=yes
|
||||
else
|
||||
sdl=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
##########################################
|
||||
@ -1248,11 +1204,10 @@ if (texi2html -version) >/dev/null 2>&1; then
|
||||
texi2html=yes
|
||||
fi
|
||||
|
||||
if test "$network" = "yes" ; then
|
||||
##########################################
|
||||
# IPv6 check
|
||||
|
||||
cat > $TMPC << EOF
|
||||
test "$network" = "yes" && check_ld <<EOF && ipv6=yes || ipv6=no
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
@ -1266,43 +1221,29 @@ int main( void ) {
|
||||
}
|
||||
EOF
|
||||
|
||||
ipv6=no
|
||||
if $cc -o $TMPE $TMPC > /dev/null 2>&1 ; then
|
||||
ipv6=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$v4l2" = "yes"; then
|
||||
# check for video4linux2 --- V4L2_PIX_FMT_YUV420
|
||||
cat > $TMPC << EOF
|
||||
test "$v4l2" = "yes" && check_cc <<EOF || v4l2="no"
|
||||
#include <sys/time.h>
|
||||
#include <asm/types.h>
|
||||
#include <linux/videodev2.h>
|
||||
int dummy = V4L2_PIX_FMT_YUV420;
|
||||
struct v4l2_buffer dummy1;
|
||||
EOF
|
||||
$cc -c -o $TMPE $TMPC 2> /dev/null || v4l2="no"
|
||||
fi
|
||||
|
||||
case "`$cc -v 2>&1 | grep version`" in
|
||||
*gcc*)
|
||||
CFLAGS="-Wall -Wno-switch $CFLAGS"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
check_cflags -Wall
|
||||
check_cflags -Wno-switch
|
||||
|
||||
if test "$sdl" = "no" ; then
|
||||
ffplay=no
|
||||
fi
|
||||
|
||||
if test "$debug" = "yes"; then
|
||||
CFLAGS="-g $CFLAGS"
|
||||
CFLAGS="-g $CFLAGS"
|
||||
fi
|
||||
|
||||
if test "$optimize" = "small"; then
|
||||
# CFLAGS=${CFLAGS//-O3/-Os}
|
||||
CFLAGS="$CFLAGS -Os"
|
||||
CFLAGS="$CFLAGS -Os"
|
||||
fi
|
||||
|
||||
if test "$optimize" = "yes"; then
|
||||
|
Loading…
Reference in New Issue
Block a user