From d2434d1a797454497c7294305cf243d64b6c28b0 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Sun, 8 Apr 2012 00:42:10 -0400 Subject: Check compiler support for -fno-default-inline and -pipe clang was spewing warnings about the unrecognized -fno-default-inline. (Oddly, it warns only with -c, not when compiling directly to an executable.) For completeness we also check -pipe, even though clang is OK with that one. It should be fine to omit either flag. gcc -fno-default-inline drops the implicit 'inline' annotation on functions defined inside a class scope, but 'inline' is only a hint anyway. -fno-default-inline does not change linkage. -pipe is merely a compile speed optimization. --- configure.ac | 11 +++++++++++ src/crypto/Makefile.am | 2 +- src/examples/Makefile.am | 2 +- src/frontend/Makefile.am | 2 +- src/network/Makefile.am | 2 +- src/protobufs/Makefile.am | 2 +- src/statesync/Makefile.am | 2 +- src/terminal/Makefile.am | 2 +- src/tests/Makefile.am | 2 +- src/util/Makefile.am | 2 +- 10 files changed, 20 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index 758edd9..99b7960 100644 --- a/configure.ac +++ b/configure.ac @@ -101,6 +101,17 @@ AS_IF([test x"$hardening" != x"no"], [ AC_SUBST([HARDEN_CFLAGS]) AC_SUBST([HARDEN_LDFLAGS]) +# Also check for a few non-hardening-related flags. +MISC_CXXFLAGS="" +AC_LANG_PUSH(C++) +AX_CHECK_COMPILE_FLAG([-fno-default-inline], + [MISC_CXXFLAGS="$MISC_CXXFLAGS -fno-default-inline"], [], [-Werror]) +AX_CHECK_COMPILE_FLAG([-pipe], + [MISC_CXXFLAGS="$MISC_CXXFLAGS -pipe"], [], [-Werror]) +AC_LANG_POP(C++) +AC_SUBST([MISC_CXXFLAGS]) + +# End of flag tests. CC="$saved_CC" CXX="$saved_CXX" LD="$saved_LD" diff --git a/src/crypto/Makefile.am b/src/crypto/Makefile.am index 1ebaf16..c4c5310 100644 --- a/src/crypto/Makefile.am +++ b/src/crypto/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) noinst_LIBRARIES = libmoshcrypto.a diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index 40421ad..9908b07 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = $(protobuf_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) AM_LDFLAGS = $(HARDEN_LDFLAGS) if BUILD_EXAMPLES diff --git a/src/frontend/Makefile.am b/src/frontend/Makefile.am index 231e56d..94df617 100644 --- a/src/frontend/Makefile.am +++ b/src/frontend/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../statesync -I$(srcdir)/../terminal -I$(srcdir)/../network -I$(srcdir)/../crypto -I../protobufs -I$(srcdir)/../util $(BOOST_CPPFLAGS) $(TINFO_CFLAGS) $(protobuf_CFLAGS) $(poll_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) AM_LDFLAGS = $(HARDEN_LDFLAGS) LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a ../util/libmoshutil.a ../protobufs/libmoshprotos.a $(poll_LIBS) -lm $(TINFO_LIBS) $(protobuf_LIBS) if COND_THIRD_LIBSTDDJB diff --git a/src/network/Makefile.am b/src/network/Makefile.am index 50cff44..e952b6a 100644 --- a/src/network/Makefile.am +++ b/src/network/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../crypto -I../protobufs $(BOOST_CPPFLAGS) $(protobuf_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) noinst_LIBRARIES = libmoshnetwork.a diff --git a/src/protobufs/Makefile.am b/src/protobufs/Makefile.am index b1a612a..131ec4e 100644 --- a/src/protobufs/Makefile.am +++ b/src/protobufs/Makefile.am @@ -1,7 +1,7 @@ source = userinput.proto hostinput.proto transportinstruction.proto AM_CPPFLAGS = $(protobuf_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) SUFFIXES = .proto .pb.cc diff --git a/src/statesync/Makefile.am b/src/statesync/Makefile.am index 7926ce6..257c50d 100644 --- a/src/statesync/Makefile.am +++ b/src/statesync/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../terminal -I../protobufs $(BOOST_CPPFLAGS) $(protobuf_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) noinst_LIBRARIES = libmoshstatesync.a diff --git a/src/terminal/Makefile.am b/src/terminal/Makefile.am index 25d7b7f..dea7fb1 100644 --- a/src/terminal/Makefile.am +++ b/src/terminal/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../util $(BOOST_CPPFLAGS) $(TINFO_CFLAGS) -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) noinst_LIBRARIES = libmoshterminal.a diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index 349788c..cd0118d 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) AM_LDFLAGS = $(HARDEN_LDFLAGS) if BUILD_TESTS diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 6d26c4d..1ab3133 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) noinst_LIBRARIES = libmoshutil.a -- cgit v1.2.3