summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure90
1 files changed, 66 insertions, 24 deletions
diff --git a/configure b/configure
index e55da52c98..2beae2fafc 100755
--- a/configure
+++ b/configure
@@ -440,6 +440,7 @@ Advanced options:
--enable-armv6 enable ARMv6 (ARM) [autodetect]
--enable-armv6t2 enable ARMv6t2 (ARM) [autodetect]
--enable-armvfp enable ARM VFP (ARM) [autodetect]
+ --enable-neon enable NEON (ARM) [autodetect]
--enable-iwmmxt enable iWMMXt (ARM) [autodetect]
--disable-fastmemcpy disable 3DNow!/SSE/MMX optimized memcpy [enable]
--enable-big-endian force byte order to big-endian [autodetect]
@@ -464,7 +465,7 @@ Use these options if autodetection fails:
--with-gtk-config=PATH path to gtk*-config
--with-sdl-config=PATH path to sdl*-config
--with-dvdnav-config=PATH path to dvdnav-config
- --with-dvdread-config=PATH path to dvdread-config
+ --with-dvdread-config=PATH path to dvdread-config
This configure script is NOT autoconf-based, even though its output is similar.
It will try to autodetect all configuration options. If you --enable an option
@@ -490,6 +491,7 @@ _armv5te=auto
_armv6=auto
_armv6t2=auto
_armvfp=auto
+neon=auto
_iwmmxt=auto
_mtrr=auto
_altivec=auto
@@ -1233,6 +1235,8 @@ for ac_option do
--disable-armv6t2) _armv6t2=no ;;
--enable-armvfp) _armvfp=yes ;;
--disable-armvfp) _armvfp=no ;;
+ --enable-neon) neon=yes ;;
+ --disable-neon) neon=no ;;
--enable-iwmmxt) _iwmmxt=yes ;;
--disable-iwmmxt) _iwmmxt=no ;;
--enable-mmx) _mmx=yes ;;
@@ -1266,6 +1270,9 @@ if test -z "$_target" ; then
case "$system_name" in
Linux|FreeBSD|NetBSD|OpenBSD|DragonFly|BSD/OS|Darwin|SunOS|QNX|GNU|BeOS|MorphOS|AIX|AmigaOS)
;;
+ Haiku)
+ system_name=BeOS
+ ;;
IRIX*)
system_name=IRIX
;;
@@ -1306,16 +1313,8 @@ if test -z "$_target" ; then
# x86/x86pc is used by QNX
case "$(uname -m 2>&1)" in
- i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
+ x86_64|amd64|i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
ia64) host_arch=ia64 ;;
- x86_64|amd64)
- if [ -n "$($_cc -dumpmachine | sed -n '/^x86_64-/p;/^amd64-/p')" -a \
- -z "$(echo $CFLAGS $_cc | grep -- -m32)" ]; then
- host_arch=x86_64
- else
- host_arch=i386
- fi
- ;;
macppc|ppc) host_arch=ppc ;;
ppc64) host_arch=ppc64 ;;
alpha) host_arch=alpha ;;
@@ -1356,14 +1355,6 @@ else # if test -z "$_target"
fi
fi
-echo "Detected operating system: $system_name"
-echo "Detected host architecture: $host_arch"
-
-if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
- die "Runtime CPU detection only works for x86, x86-64 and PPC!"
-fi
-
-
extra_cflags="-I. $extra_cflags"
_timer=timer-linux.c
_getch=getch2.c
@@ -1446,6 +1437,24 @@ echo configuration: $_configuration > "$TMPLOG"
echo >> "$TMPLOG"
+if test -z "$_target" && x86 ; then
+ cat > $TMPC << EOF
+int main(void) {
+ int test[sizeof(char *)-7];
+ return 0;
+}
+EOF
+ cc_check && host_arch=x86_64 || host_arch=i386
+fi
+
+echo "Detected operating system: $system_name"
+echo "Detected host architecture: $host_arch"
+
+if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
+ die "Runtime CPU detection only works for x86, x86-64 and PPC!"
+fi
+
+
# Checking CC version...
# Intel C++ Compilers (no autoselect, use CC=/some/binary ./configure)
if test "$(basename $_cc)" = "icc" || test "$(basename $_cc)" = "ecc"; then
@@ -2297,6 +2306,7 @@ EOF
cc_check -c || die "Symbol mangling check failed."
sym=$($_nm -P -g $TMPEXE)
extern_prefix=${sym%%ff_extern*}
+def_extern_asm="#define EXTERN_ASM $extern_prefix"
def_extern_prefix="#define EXTERN_PREFIX \"$extern_prefix\""
echores $extern_prefix
@@ -2467,6 +2477,26 @@ EOF
cc_check && ten_operands=yes && def_ten_operands='#define HAVE_TEN_OPERANDS 1'
echores $ten_operands
+echocheck "ebx availability"
+ebx_available=no
+def_ebx_available='#define HAVE_EBX_AVAILABLE 0'
+cat > $TMPC << EOF
+int main(void) {
+ int x;
+ __asm__ volatile(
+ "xor %0, %0"
+ :"=b"(x)
+ // just adding ebx to clobber list seems unreliable with some
+ // compilers, e.g. Haiku's gcc 2.95
+ );
+ // and the above check does not work for OSX 64 bit...
+ __asm__ volatile("":::"%ebx");
+ return 0;
+}
+EOF
+cc_check && ebx_available=yes && def_ebx_available='#define HAVE_EBX_AVAILABLE 1'
+echores $ebx_available
+
echocheck "yasm"
if test -z "$YASMFLAGS" ; then
if darwin ; then
@@ -2623,6 +2653,16 @@ EOF
fi
echores "$_armvfp"
+ echocheck "ARM NEON"
+ if test $neon = "auto" ; then
+ cat > $TMPC << EOF
+int main(void) { __asm__ volatile ("vadd.i16 q0, q0, q0"); return 0; }
+EOF
+ neon=no
+ cc_check && neon=yes
+ fi
+ echores "$neon"
+
echocheck "iWMMXt (Intel XScale SIMD instructions)"
if test $_iwmmxt = "auto" ; then
cat > $TMPC << EOF
@@ -2634,7 +2674,7 @@ EOF
echores "$_iwmmxt"
fi
-_cpuexts_all='ALTIVEC MMX MMX2 AMD3DNOW AMD3DNOWEXT SSE SSE2 SSSE3 FAST_CMOV CMOV PLD ARMV5TE ARMV6 ARMV6T2 ARMVFP IWMMXT MMI VIS MVI'
+_cpuexts_all='ALTIVEC MMX MMX2 AMD3DNOW AMD3DNOWEXT SSE SSE2 SSSE3 FAST_CMOV CMOV PLD ARMV5TE ARMV6 ARMV6T2 ARMVFP NEON IWMMXT MMI VIS MVI'
test "$_altivec" = yes && _cpuexts="ALTIVEC $_cpuexts"
test "$_mmx" = yes && _cpuexts="MMX $_cpuexts"
test "$_mmxext" = yes && _cpuexts="MMX2 $_cpuexts"
@@ -2650,6 +2690,7 @@ test "$_armv5te" = yes && _cpuexts="ARMV5TE $_cpuexts"
test "$_armv6" = yes && _cpuexts="ARMV6 $_cpuexts"
test "$_armv6t2" = yes && _cpuexts="ARMV6T2 $_cpuexts"
test "$_armvfp" = yes && _cpuexts="ARMVFP $_cpuexts"
+test "$neon" = yes && _cpuexts="NEON $_cpuexts"
test "$_iwmmxt" = yes && _cpuexts="IWMMXT $_cpuexts"
test "$_vis" = yes && _cpuexts="VIS $_cpuexts"
test "$_mvi" = yes && _cpuexts="MVI $_cpuexts"
@@ -6347,7 +6388,7 @@ echores "$_theora"
echocheck "internal mp3lib support"
if test "$_mp3lib" = auto ; then
- test "$cc_vendor" = intel && _mp3lib=no || _mp3lib=yes
+ test "$cc_vendor" = intel && test "$_cc_major" -le 10 -o "$_cc_major" -eq 11 -a "$_cc_minor" -eq 0 && _mp3lib=no || _mp3lib=yes
fi
if test "$_mp3lib" = yes ; then
def_mp3lib='#define CONFIG_MP3LIB 1'
@@ -6360,7 +6401,7 @@ echores "$_mp3lib"
echocheck "liba52 support"
if test "$_liba52_internal" = auto ; then
- test "$cc_vendor" = intel && _liba52_internal=no || _liba52_internal=yes
+ test "$cc_vendor" = intel && test "$_cc_major" -le 10 -o "$_cc_major" -eq 11 -a "$_cc_minor" -eq 0 && _liba52_internal=no || _liba52_internal=yes
fi
def_liba52='#undef CONFIG_LIBA52'
def_liba52_internal="#undef CONFIG_LIBA52_INTERNAL"
@@ -6945,8 +6986,8 @@ if test "$_x264" = auto ; then
cat > $TMPC << EOF
#include <inttypes.h>
#include <x264.h>
-#if X264_BUILD < 65
-#error We do not support old versions of x264. Get the latest from SVN.
+#if X264_BUILD < 76
+#error We do not support old versions of x264. Get the latest from git.
#endif
int main(void) { x264_encoder_open((void*)0); return 0; }
EOF
@@ -8097,6 +8138,7 @@ $def_vsscanf
$def_asmalign_pot
$def_builtin_expect
$def_dl
+$def_extern_asm
$def_extern_prefix
$def_iconv
$def_kstat
@@ -8404,7 +8446,7 @@ $def_yasm
#define CONFIG_RDFT 1
/* Use these registers in FFmpeg x86 inline asm. No proper detection yet. */
-#define HAVE_EBX_AVAILABLE 1
+$def_ebx_available
#ifndef MP_DEBUG
#define HAVE_EBP_AVAILABLE 1
#else