]> granicus.if.org Git - php/commitdiff
move testing for the alignment values into configure.
authorJames Cox <imajes@php.net>
Wed, 24 Jul 2002 17:04:11 +0000 (17:04 +0000)
committerJames Cox <imajes@php.net>
Wed, 24 Jul 2002 17:04:11 +0000 (17:04 +0000)
Zend/Zend.m4
Zend/zend_mm.c

index 44bd9a9f7132b62906d5ab614e8a19aa1402684f..dae379c8303be80c4e9b562decb8f215a07c4075 100644 (file)
@@ -183,3 +183,48 @@ AC_DEFUN(LIBZEND_CPLUSPLUS_CHECKS,[
 
 ])
 
+dnl test and set the alignment define for ZEND_MM
+dnl this also does the logarithmic test for ZEND_MM.
+
+AC_MSG_CHECKING(for MM alignment and log values)
+
+AC_TRY_RUN([#include <stdio.h>
+
+typedef union _mm_align_test {
+  void *ptr;
+  double dbl;
+  long lng;
+} mm_align_test;
+
+int main() {
+
+#if (defined (__GNUC__) && __GNUC__ >= 2)
+#define ZEND_MM_ALIGNMENT (__alignof__ (mm_align_test))
+#else
+#define ZEND_MM_ALIGNMENT (sizeof(mm_align_test))
+#endif
+
+int i = ZEND_MM_ALIGNMENT;
+int zeros = 0;
+FILE *f = fopen("conftest.zend", "w");
+
+while (i & ~0x1) {
+  zeros++;
+  i = i >> 1;
+}
+
+fprintf(f, "%d %d", ZEND_MM_ALIGNMENT, zeros);  
+
+ exit(0);
+}],zend_mm_test=true,zend_mm_test=false,zend_mm_test=false)
+
+if test $zend_mm_test = true; then
+
+       LIBZEND_MM_ALIGN=`cat ./conftest.zend | cut -d ' ' -f 1`
+       LIBZEND_MM_ALIGN_LOG2=`cat ./conftest.zend | cut -d ' ' -f 2`
+
+       AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT, $LIBZEND_MM_ALIGN, [ ])
+       AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT_LOG2, $LIBZEND_MM_ALIGN_LOG2, [ ]) 
+fi;
+
+AC_MSG_RESULT(done)
index dd184b8591d5b985fc2433b04a962e6edda2827b..c65ae3ab77104a26fa0487eabbe18a78e23b360a 100644 (file)
@@ -34,6 +34,7 @@
 #define MAX(a, b) (((a)>(b))?(a):(b))
 #endif
 
+#if 0
 /* Platform alignment test */
 typedef union _mm_align_test {
        void *ptr;
@@ -50,6 +51,7 @@ typedef union _mm_align_test {
 /* We're going to need some kind of configure test for this */
 #undef ZEND_MM_ALIGNMENT
 #define ZEND_MM_ALIGNMENT 8
+#endif
 
 #define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT-1)