From 5626fc5a39d49c74b2484dfa930880daaf18e9b2 Mon Sep 17 00:00:00 2001 From: James Cox Date: Wed, 24 Jul 2002 17:04:11 +0000 Subject: [PATCH] move testing for the alignment values into configure. --- Zend/Zend.m4 | 45 +++++++++++++++++++++++++++++++++++++++++++++ Zend/zend_mm.c | 2 ++ 2 files changed, 47 insertions(+) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index 44bd9a9f71..dae379c830 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -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 + +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) diff --git a/Zend/zend_mm.c b/Zend/zend_mm.c index dd184b8591..c65ae3ab77 100644 --- a/Zend/zend_mm.c +++ b/Zend/zend_mm.c @@ -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) -- 2.40.0