From 7276ab934d192627c72720ae1378de93edd9e8c7 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 24 Feb 2013 15:29:17 -0500 Subject: [PATCH] Use -Wold-style-cast for C++ if supported Also separate C and C++ warning flags. --- autoconf.mk.in | 3 ++- configure.ac | 17 +++++++++++++++++ make/libtool.mk | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/autoconf.mk.in b/autoconf.mk.in index b85faa23..9d7a65e8 100644 --- a/autoconf.mk.in +++ b/autoconf.mk.in @@ -13,12 +13,13 @@ htmldir=@htmldir@ pdfdir=@pdfdir CC=@CC@ WFLAGS=@WFLAGS@ +CXXWFLAGS=@CXXWFLAGS@ CFLAGS=@CFLAGS@ $(WFLAGS) LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ CPPFLAGS=@CPPFLAGS@ CXX=@CXX@ -CXXFLAGS=@CXXFLAGS@ $(WFLAGS) +CXXFLAGS=@CXXFLAGS@ $(CXXWFLAGS) $(WFLAGS) AR=@AR@ RANLIB=@RANLIB@ DLLTOOL=@DLLTOOL@ diff --git a/configure.ac b/configure.ac index 8b4c444b..d8f3b6ba 100644 --- a/configure.ac +++ b/configure.ac @@ -176,6 +176,7 @@ AC_ARG_WITH(buildrules, AC_MSG_RESULT($BUILDRULES) AC_SUBST(WFLAGS) +AC_SUBST(CXXWFLAGS) qpdf_USE_EXTRA_WARNINGS=0 if test "$BUILDRULES" = "msvc"; then dnl /w14267 makes warning 4267 a level 1 warning. This warning reports @@ -197,6 +198,22 @@ if test "$qpdf_USE_EXTRA_WARNINGS" = "1"; then else AC_MSG_RESULT(no) fi +if test "$BUILDRULES" != "msvc"; then + qpdf_USE_EXTRA_WARNINGS=0 + try_flags="-Wold-style-cast" + AC_MSG_CHECKING(for whether $CXX supports $try_flags) + oCXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $try_flags" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int a = 1; int b = a; a = b;]])], + [qpdf_USE_EXTRA_WARNINGS=1],[qpdf_USE_EXTRA_WARNINGS=0]) + CXXFLAGS=$oCXXFLAGS + if test "$qpdf_USE_EXTRA_WARNINGS" = "1"; then + AC_MSG_RESULT(yes) + CXXWFLAGS="$try_flags" + else + AC_MSG_RESULT(no) + fi +fi if test "$BUILDRULES" = "msvc"; then try_flags="/WX" diff --git a/make/libtool.mk b/make/libtool.mk index 60d40f5f..d1a19bc1 100644 --- a/make/libtool.mk +++ b/make/libtool.mk @@ -73,7 +73,7 @@ endef # Usage: $(call libcompile,src,includes) define c_libcompile $(LIBTOOL) --quiet --mode=compile \ - $(CC) $(CXXFLAGS) \ + $(CC) $(CFLAGS) \ $(call libdepflags,$(basename $(call c_src_to_obj,$(1)))) \ $(foreach I,$(2),-I$(I)) \ $(CPPFLAGS) \