diff options
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | m4/curl-compilers.m4 | 38 |
2 files changed, 38 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index b8268b392..565488dac 100644 --- a/configure.ac +++ b/configure.ac @@ -340,6 +340,7 @@ fi CURL_CHECK_COMPILER_HALT_ON_ERROR CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE +CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH CURL_CHECK_COMPILER_SYMBOL_HIDING CURL_CHECK_NO_UNDEFINED diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4 index 819bbd9c8..0879a48e0 100644 --- a/m4/curl-compilers.m4 +++ b/m4/curl-compilers.m4 @@ -21,7 +21,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 63 +# serial 64 dnl CURL_CHECK_COMPILER @@ -1495,6 +1495,42 @@ AC_DEFUN([CURL_CHECK_COMPILER_SYMBOL_HIDING], [ ]) +dnl CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH +dnl ------------------------------------------------- +dnl Verifies if the compiler actually halts after the +dnl compilation phase without generating any object +dnl code file, when the source code tries to redefine +dnl a prototype which does not match previous one. + +AC_DEFUN([CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH], [ + AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl + AC_MSG_CHECKING([if compiler halts on function prototype mismatch]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +# include <stdlib.h> + int rand(int n); + int rand(int n) + { + if(n) + return ++n; + else + return n; + } + ]],[[ + int i[2]; + int j = rand(i[0]); + if(j) + return j; + ]]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([compiler does not halt on function prototype mismatch.]) + ],[ + AC_MSG_RESULT([yes]) + ]) +]) + + dnl CURL_VAR_MATCH (VARNAME, VALUE) dnl ------------------------------------------------- dnl Verifies if shell variable VARNAME contains VALUE. |