Proper naming for the experimental compiler test and moved to *-compilers.m4
authorYang Tse <yangsita@gmail.com>
Thu, 7 May 2009 13:58:15 +0000 (13:58 +0000)
committerYang Tse <yangsita@gmail.com>
Thu, 7 May 2009 13:58:15 +0000 (13:58 +0000)
acinclude.m4
ares/configure.ac
ares/m4/cares-compilers.m4
configure.ac
m4/curl-compilers.m4

index c259e89..436adb6 100644 (file)
@@ -2361,59 +2361,6 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
 ])
 
 
-dnl CURL_A_COUPLE_OF_EXPERIMENTAL_COMPILER_TESTS
-dnl -------------------------------------------------
-dnl Use autobuilds to verify if these two tests pass.
-dnl To be removed in 24 or 48 hours.
-
-AC_DEFUN([CURL_A_COUPLE_OF_EXPERIMENTAL_COMPILER_TESTS], [
-  AC_MSG_CHECKING([compiler test 01])
-  AC_COMPILE_IFELSE([
-    AC_LANG_PROGRAM([[
-      struct mystruct {
-        int              member1;
-        char            *member2;
-        struct mystruct *next;
-      };
-      typedef struct mystruct mystruct;
-      struct mystruct myfunc();
-      typedef char __my_arr_01__
-        [sizeof(myfunc().member1) == sizeof(int) ? 1 : -1];
-    ]],[[
-      /* this should compile ok to pass test 01 */
-      struct mystruct dummy;
-    ]])
-  ],[
-    AC_MSG_RESULT([pass])
-  ],[
-    AC_MSG_RESULT([FAIL])
-    sed 's/^/cc-src: /' conftest.$ac_ext >&6
-    sed 's/^/cc-err: /' conftest.err >&6
-  ])
-  AC_MSG_CHECKING([compiler test 02])
-  AC_COMPILE_IFELSE([
-    AC_LANG_PROGRAM([[
-      struct mystruct {
-        int              member1;
-        char            *member2;
-        struct mystruct *next;
-      };
-      typedef struct mystruct mystruct;
-      struct mystruct myfunc();
-      typedef char __my_arr_02__
-        [sizeof(myfunc().member1) == sizeof(char) ? 1 : -1];
-    ]],[[
-      /* this should fail compilation to pass test 02 */
-      struct mystruct dummy;
-    ]])
-  ],[
-    AC_MSG_RESULT([FAIL])
-  ],[
-    AC_MSG_RESULT([pass])
-  ])
-])
-
-
 dnl CURL_CHECK_FUNC_SELECT
 dnl -------------------------------------------------
 dnl Test if the socket select() function is available,
index 14f580c..b779c2f 100644 (file)
@@ -160,6 +160,7 @@ esac
 
 CARES_CHECK_COMPILER_HALT_ON_ERROR
 CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
+CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE
 
 dnl **********************************************************************
 dnl Compilation based checks should not be done before this point.
index 80f4d1b..2bfe856 100644 (file)
@@ -16,7 +16,7 @@
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 49
+# serial 50
 
 
 dnl CARES_CHECK_COMPILER
@@ -1168,6 +1168,68 @@ AC_DEFUN([CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
 ])
 
 
+dnl CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE
+dnl -------------------------------------------------
+dnl Verifies if the compiler is capable of handling the
+dnl size of a struct member, struct which is a function
+dnl result, as a compilation-time condition inside the
+dnl type definition of a constant array.
+
+AC_DEFUN([CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
+  AC_REQUIRE([CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE])dnl
+  AC_MSG_CHECKING([if compiler struct member size checking works])
+  tst_compiler_check_one_works="unknown"
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([[
+      struct mystruct {
+        int  mi;
+        char mc;
+        struct mystruct *next;
+      };
+      struct mystruct myfunc();
+      typedef char good_t1[sizeof(myfunc().mi) == sizeof(int)  ? 1 : -1 ];
+      typedef char good_t2[sizeof(myfunc().mc) == sizeof(char) ? 1 : -1 ];
+    ]],[[
+      good_t1 dummy1;
+      good_t2 dummy2;
+    ]])
+  ],[
+    tst_compiler_check_one_works="yes"
+  ],[
+    tst_compiler_check_one_works="no"
+    sed 's/^/cc-src: /' conftest.$ac_ext >&6
+    sed 's/^/cc-err: /' conftest.err >&6
+  ])
+  tst_compiler_check_two_works="unknown"
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([[
+      struct mystruct {
+        int  mi;
+        char mc;
+        struct mystruct *next;
+      };
+      struct mystruct myfunc();
+      typedef char bad_t1[sizeof(myfunc().mi) != sizeof(int)  ? 1 : -1 ];
+      typedef char bad_t2[sizeof(myfunc().mc) != sizeof(char) ? 1 : -1 ];
+    ]],[[
+      bad_t1 dummy1;
+      bad_t2 dummy2;
+    ]])
+  ],[
+    tst_compiler_check_two_works="no"
+  ],[
+    tst_compiler_check_two_works="yes"
+  ])
+  if test "$tst_compiler_check_one_works" = "yes" &&
+    test "$tst_compiler_check_two_works" = "yes"; then
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([compiler fails struct member size checking.])
+  fi
+])
+
+
 dnl CARES_VAR_MATCH (VARNAME, VALUE)
 dnl -------------------------------------------------
 dnl Verifies if shell variable VARNAME contains VALUE.
index 0e0a1bf..391d738 100644 (file)
@@ -269,6 +269,7 @@ esac
 
 CURL_CHECK_COMPILER_HALT_ON_ERROR
 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
+CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE
 
 dnl **********************************************************************
 dnl Compilation based checks should not be done before this point.
@@ -1999,8 +2000,6 @@ AC_CHECK_TYPE([bool],[
 #endif
 ])
 
-CURL_A_COUPLE_OF_EXPERIMENTAL_COMPILER_TESTS
-
 CURL_CONFIGURE_CURL_SOCKLEN_T
 
 TYPE_IN_ADDR_T
index adff294..e1337d9 100644 (file)
@@ -22,7 +22,7 @@
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 49
+# serial 50
 
 
 dnl CURL_CHECK_COMPILER
@@ -1160,6 +1160,68 @@ AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
 ])
 
 
+dnl CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE
+dnl -------------------------------------------------
+dnl Verifies if the compiler is capable of handling the
+dnl size of a struct member, struct which is a function
+dnl result, as a compilation-time condition inside the
+dnl type definition of a constant array.
+
+AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
+  AC_REQUIRE([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE])dnl
+  AC_MSG_CHECKING([if compiler struct member size checking works])
+  tst_compiler_check_one_works="unknown"
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([[
+      struct mystruct {
+        int  mi;
+        char mc;
+        struct mystruct *next;
+      };
+      struct mystruct myfunc();
+      typedef char good_t1[sizeof(myfunc().mi) == sizeof(int)  ? 1 : -1 ];
+      typedef char good_t2[sizeof(myfunc().mc) == sizeof(char) ? 1 : -1 ];
+    ]],[[
+      good_t1 dummy1;
+      good_t2 dummy2;
+    ]])
+  ],[
+    tst_compiler_check_one_works="yes"
+  ],[
+    tst_compiler_check_one_works="no"
+    sed 's/^/cc-src: /' conftest.$ac_ext >&6
+    sed 's/^/cc-err: /' conftest.err >&6
+  ])
+  tst_compiler_check_two_works="unknown"
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([[
+      struct mystruct {
+        int  mi;
+        char mc;
+        struct mystruct *next;
+      };
+      struct mystruct myfunc();
+      typedef char bad_t1[sizeof(myfunc().mi) != sizeof(int)  ? 1 : -1 ];
+      typedef char bad_t2[sizeof(myfunc().mc) != sizeof(char) ? 1 : -1 ];
+    ]],[[
+      bad_t1 dummy1;
+      bad_t2 dummy2;
+    ]])
+  ],[
+    tst_compiler_check_two_works="no"
+  ],[
+    tst_compiler_check_two_works="yes"
+  ])
+  if test "$tst_compiler_check_one_works" = "yes" &&
+    test "$tst_compiler_check_two_works" = "yes"; then
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([compiler fails struct member size checking.])
+  fi
+])
+
+
 dnl CURL_VAR_MATCH (VARNAME, VALUE)
 dnl -------------------------------------------------
 dnl Verifies if shell variable VARNAME contains VALUE.