]> git.sesse.net Git - vlc/commitdiff
* configure.ac: reworked the AltiVec checks.
authorSam Hocevar <sam@videolan.org>
Tue, 23 Aug 2005 22:57:07 +0000 (22:57 +0000)
committerSam Hocevar <sam@videolan.org>
Tue, 23 Aug 2005 22:57:07 +0000 (22:57 +0000)
configure.ac

index 16fc627833b79c2d068aebc7abc23cd151aed626..a85e852aef74d191609bf8f4dc755d1ff4b1f3d2 100644 (file)
@@ -1112,43 +1112,58 @@ if test "${ac_cv_altivec_inline}" != "no"; then
   ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
 fi
 
-dnl Check for <altivec.h>, gcc 4.x needs -maltivec for it
-AC_CACHE_CHECK([if \$CC accepts -maltivec],
-    [ac_cv_c_maltivec],
-    [CFLAGS="${CFLAGS_save} -maltivec"
-     AC_TRY_COMPILE([],,ac_cv_c_maltivec=yes, ac_cv_c_maltivec=no)])
+dnl The AltiVec C extensions
+dnl
+dnl There are several possible cases:
+dnl - OS X PPC, gcc 4.x: use -mpim-altivec, don't need <altivec.h>
+dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
+dnl - Linux PPC, gcc 4.x: need <altivec.h> which itself requires -maltivec
+dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
+dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
+dnl - Others: test should fail
+AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
+  [ac_cv_c_altivec],
+  [# OS X/PPC test (gcc 4.x)
+   CFLAGS="${CFLAGS_save} -mpim-altivec"
+   AC_TRY_COMPILE([],
+     [vec_ld(0, (unsigned char *)0);],
+     [ac_cv_c_altivec="-mpim-altivec"],
+     [# OS X/PPC test (gcc 3.x)
+      CFLAGS="${CFLAGS_save} -faltivec"
+      AC_TRY_COMPILE([],
+        [vec_ld(0, (unsigned char *)0);],
+        [ac_cv_c_altivec="-faltivec"],
+        dnl Below this are the Linux tests
+        [# Linux/PPC test (gcc 4.x)
+         CFLAGS="${CFLAGS_save} -maltivec"
+         AC_TRY_COMPILE([#include <altivec.h>],
+           [vec_ld(0, (unsigned char *)0);],
+           [ac_cv_c_altivec="-maltivec"],
+           [# Linux/PPC test (gcc 3.3)
+            CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
+            AC_TRY_COMPILE([#include <altivec.h>],
+              [vec_ld(0, (unsigned char *)0);],
+              [ac_cv_c_altivec=""
+               ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
+              [# Linux/PPC test (gcc 3.3)
+               CFLAGS="${CFLAGS_save} -fvec"
+               AC_TRY_COMPILE([#include <altivec.h>],
+                 [vec_ld(0, (unsigned char *)0);],
+                 [ac_cv_c_altivec="-fvec"],
+                 [ac_cv_c_altivec=no])
+              ])
+           ])
+        ])
+     ])
+   CFLAGS="${CFLAGS_save}"
+  ])
+
 if test "${ac_cv_c_maltivec}" != "no"; then
   CPPFLAGS="${CPPFLAGS_save} -maltivec"
 fi
 AC_CHECK_HEADERS(altivec.h)
 CPPFLAGS="${CPPFLAGS_save}"
 
-AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
-    [ac_cv_c_altivec],
-    [# Linux/PPC test (no flags)
-     CFLAGS="${CFLAGS_save} ${CFLAGS_idctaltivec} -maltivec -mabi=altivec"
-     AC_TRY_COMPILE([#ifdef HAVE_ALTIVEC_H
-                     #include <altivec.h>
-                     #endif],
-       [vec_ld(0, (unsigned char *)0);],
-       [ac_cv_c_altivec=""
-        ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
-       [# Darwin test
-        CFLAGS="${CFLAGS_save} -faltivec"
-        AC_TRY_COMPILE([],
-          [vec_ld(0, (unsigned char *)0);],
-          [ac_cv_c_altivec="-faltivec"],
-          [# Linux/PPC test (old GCC versions)
-           CFLAGS="${CFLAGS_save} ${CFLAGS_idctaltivec} -fvec"
-           AC_TRY_COMPILE([#ifdef HAVE_ALTIVEC_H
-                           #include <altivec.h>
-                           #endif],
-             [vec_ld(0, (unsigned char *)0);],
-             [ac_cv_c_altivec="-fvec"],
-             [ac_cv_c_altivec=no])
-           ])
-        ])
-     CFLAGS="${CFLAGS_save}"])
 if test "${ac_cv_c_altivec}" != "no"; then
   AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, Define if your compiler groks C AltiVec extensions.)
   VLC_ADD_CFLAGS([vlc],[${ac_cv_c_altivec}])