]> jfr.im git - irc/unrealircd/unrealircd.git/commitdiff
Make check for -fno-strict-aliasing / -Wno-pointer-sign work with clang.
authorBram Matthys <redacted>
Sun, 22 Apr 2018 14:50:51 +0000 (16:50 +0200)
committerBram Matthys <redacted>
Sun, 22 Apr 2018 14:50:51 +0000 (16:50 +0200)
configure
configure.ac

index 5ce8ebdfc88009d0f7213665181b0cbdb995e8d7..b0c5db4ba76af34664ac92bf3928e15ccca7fac5 100755 (executable)
--- a/configure
+++ b/configure
@@ -3394,14 +3394,73 @@ CFLAGS="-pipe $CFLAGS"
 fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc has a working -fno-strict-aliasing" >&5
+$as_echo_n "checking if gcc has a working -fno-strict-aliasing... " >&6; }
+if ${ac_cv_nsa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
 
-case "`$CC -v --help 2>&1`" in
-       *-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
-esac
+       save_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -fno-strict-aliasing"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-case "`$CC -v --help 2>&1`" in
-       *-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
-esac
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_nsa="yes"
+else
+  ac_cv_nsa="no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       CFLAGS="$save_cflags"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_nsa" >&5
+$as_echo "$ac_cv_nsa" >&6; }
+if test "$ac_cv_nsa" = "yes"; then
+CFLAGS="$CFLAGS -fno-strict-aliasing"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc has a working -Wno-pointer-sign" >&5
+$as_echo_n "checking if gcc has a working -Wno-pointer-sign... " >&6; }
+if ${ac_cv_nps+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+       save_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -Wno-pointer-sign"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_nps="yes"
+else
+  ac_cv_nps="no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       CFLAGS="$save_cflags"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_nps" >&5
+$as_echo "$ac_cv_nps" >&6; }
+if test "$ac_cv_nps" = "yes"; then
+CFLAGS="$CFLAGS -Wno-pointer-sign"
+fi
 
 # Extract the first word of "rm", so it can be a program name with args.
 set dummy rm; ac_word=$2
index 2b7798f4e83706a34c579c3ac1a0de6bfa85e217..dec2b5914a11d6a2c153409d7f09d9832b2ae802 100644 (file)
@@ -59,19 +59,29 @@ CFLAGS="-pipe $CFLAGS"
 fi
 fi
 
-dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
-
 dnl UnrealIRCd might not be strict-aliasing safe at this time
-case "`$CC -v --help 2>&1`" in
-       *-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
-esac
+AC_CACHE_CHECK(if gcc has a working -fno-strict-aliasing, ac_cv_nsa, [
+       save_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -fno-strict-aliasing"
+       AC_TRY_COMPILE(,, ac_cv_nsa="yes", ac_cv_nsa="no")
+       CFLAGS="$save_cflags"
+])
+if test "$ac_cv_nsa" = "yes"; then
+CFLAGS="$CFLAGS -fno-strict-aliasing"
+fi
 
 dnl Pointer signedness warnings are really a pain and 99.9% of the time
 dnl they are of absolutely no use whatsoever. IMO the person who decided
 dnl to enable this without -Wall should be shot on sight.
-case "`$CC -v --help 2>&1`" in
-       *-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
-esac
+AC_CACHE_CHECK(if gcc has a working -Wno-pointer-sign, ac_cv_nps, [
+       save_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -Wno-pointer-sign"
+       AC_TRY_COMPILE(,, ac_cv_nps="yes", ac_cv_nps="no")
+       CFLAGS="$save_cflags"
+])
+if test "$ac_cv_nps" = "yes"; then
+CFLAGS="$CFLAGS -Wno-pointer-sign"
+fi
 
 AC_PATH_PROG(RM,rm)
 AC_PATH_PROG(CP,cp)