diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2006-08-07 20:08:57 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2006-08-07 20:08:57 +0000 |
commit | 01c74da47e6b5e284ea40a58cae8d0c739ca9507 (patch) | |
tree | 38011acdafe23099f65af5beed073435c5aad660 | |
parent | 9a7788fb4d9eecd44c87cb69d2b52512e804c5a7 (diff) | |
download | postgresql-01c74da47e6b5e284ea40a58cae8d0c739ca9507.tar.gz postgresql-01c74da47e6b5e284ea40a58cae8d0c739ca9507.zip |
Back-port HEAD's configure fixes to select appropriate compiler switches
for Intel's icc and AIX's xlc.
-rwxr-xr-x | configure | 119 | ||||
-rw-r--r-- | configure.in | 31 |
2 files changed, 132 insertions, 18 deletions
diff --git a/configure b/configure index 88fbc9b0b94..e55ca83bd90 100755 --- a/configure +++ b/configure @@ -2432,12 +2432,58 @@ else fi fi +# Some versions of GCC support some additional useful warning flags. +# Check whether they are supported, and add them to CFLAGS if so. + if test "$GCC" = yes; then - CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith" - # Some versions of GCC support some additional useful warning flags. - # Check whether they are supported, and add them to CFLAGS if so. - echo "$as_me:$LINENO: checking if $CC supports -Wdeclaration-after-statement" >&5 +# ICC pretends to be GCC but it's lying; it doesn't support these options. +# So we have to check if "GCC" is really ICC. + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef __INTEL_COMPILER +choke me +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ICC=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ICC=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + if test "$ICC" = no; then + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith" + + echo "$as_me:$LINENO: checking if $CC supports -Wdeclaration-after-statement" >&5 echo $ECHO_N "checking if $CC supports -Wdeclaration-after-statement... $ECHO_C" >&6 pgac_save_CFLAGS=$CFLAGS CFLAGS="$pgac_save_CFLAGS -Wdeclaration-after-statement" @@ -2482,10 +2528,10 @@ echo "${ECHO_T}no" >&6 fi rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:$LINENO: checking if $CC supports -Wold-style-definition" >&5 -echo $ECHO_N "checking if $CC supports -Wold-style-definition... $ECHO_C" >&6 + echo "$as_me:$LINENO: checking if $CC supports -Wendif-labels" >&5 +echo $ECHO_N "checking if $CC supports -Wendif-labels... $ECHO_C" >&6 pgac_save_CFLAGS=$CFLAGS -CFLAGS="$pgac_save_CFLAGS -Wold-style-definition" +CFLAGS="$pgac_save_CFLAGS -Wendif-labels" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @@ -2527,10 +2573,14 @@ echo "${ECHO_T}no" >&6 fi rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:$LINENO: checking if $CC supports -Wendif-labels" >&5 -echo $ECHO_N "checking if $CC supports -Wendif-labels... $ECHO_C" >&6 + else + # Intel compiler has a bug/misoptimization in checking for + # division by NAN (NaN == 0), -mp1 fixes it, so add it to the + # CFLAGS. + echo "$as_me:$LINENO: checking if $CC supports -mp1" >&5 +echo $ECHO_N "checking if $CC supports -mp1... $ECHO_C" >&6 pgac_save_CFLAGS=$CFLAGS -CFLAGS="$pgac_save_CFLAGS -Wendif-labels" +CFLAGS="$pgac_save_CFLAGS -mp1" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @@ -2572,6 +2622,7 @@ echo "${ECHO_T}no" >&6 fi rm -f conftest.$ac_objext conftest.$ac_ext + fi # Disable strict-aliasing rules; needed for gcc 3.3+ echo "$as_me:$LINENO: checking if $CC supports -fno-strict-aliasing" >&5 @@ -2619,6 +2670,53 @@ echo "${ECHO_T}no" >&6 fi rm -f conftest.$ac_objext conftest.$ac_ext +elif test x"${CC}" = x"xlc"; then + # AIX xlc has to have strict aliasing turned off too + echo "$as_me:$LINENO: checking if $CC supports -qnoansialias" >&5 +echo $ECHO_N "checking if $CC supports -qnoansialias... $ECHO_C" >&6 +pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -qnoansialias" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +CFLAGS="$pgac_save_CFLAGS" + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + fi # supply -g if --enable-debug @@ -2637,7 +2735,6 @@ fi # Check if the compiler still works with the template settings echo "$as_me:$LINENO: checking whether the C compiler still works" >&5 echo $ECHO_N "checking whether the C compiler still works... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" diff --git a/configure.in b/configure.in index e15997fbe40..5f5a3a39061 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.398.4.12 2006/05/21 21:53:31 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.398.4.13 2006/08/07 20:08:57 tgl Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -250,17 +250,34 @@ else fi fi +# Some versions of GCC support some additional useful warning flags. +# Check whether they are supported, and add them to CFLAGS if so. + if test "$GCC" = yes; then - CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith" - # Some versions of GCC support some additional useful warning flags. - # Check whether they are supported, and add them to CFLAGS if so. - PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement]) - PGAC_PROG_CC_CFLAGS_OPT([-Wold-style-definition]) - PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels]) +# ICC pretends to be GCC but it's lying; it doesn't support these options. +# So we have to check if "GCC" is really ICC. +AC_TRY_COMPILE([], [@%:@ifndef __INTEL_COMPILER +choke me +@%:@endif], [ICC=[yes]], [ICC=[no]]) + + if test "$ICC" = no; then + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith" + + PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement]) + PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels]) + else + # Intel compiler has a bug/misoptimization in checking for + # division by NAN (NaN == 0), -mp1 fixes it, so add it to the + # CFLAGS. + PGAC_PROG_CC_CFLAGS_OPT([-mp1]) + fi # Disable strict-aliasing rules; needed for gcc 3.3+ PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing]) +elif test x"${CC}" = x"xlc"; then + # AIX xlc has to have strict aliasing turned off too + PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias]) fi # supply -g if --enable-debug |