summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2013-10-24 21:40:25 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2013-10-25 00:41:36 +0200
commitd95751cb0b750ea698d665bd8ad8086fe9ee6945 (patch)
tree6121ab50968f1fda9a413c86300c1f436657b63b
parent772fa460d1ef7dede99478e30de756136ea0c7aa (diff)
downloadlvm2-d95751cb0b750ea698d665bd8ad8086fe9ee6945.tar.gz
configure: detect compiler flag
Use m4 macro AC_TRY_CCFLAG to detect presence of some compiler option. Use it to detect -Wjump-misses-init.
-rw-r--r--acinclude.m439
-rw-r--r--aclocal.m41
-rwxr-xr-xconfigure42
-rw-r--r--configure.in4
-rw-r--r--make.tmpl.in6
5 files changed, 91 insertions, 1 deletions
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 000000000..333abb545
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,39 @@
+dnl AC_GCC_VERSION
+dnl check for compiler version
+dnl sets COMPILER_VERSION and GCC_VERSION
+
+AC_DEFUN([AC_CC_VERSION],
+[
+ AC_MSG_CHECKING([C compiler version])
+ COMPILER_VERSION=`$CC -v 2>&1 | grep version`
+ case "$COMPILER_VERSION" in
+ *gcc*)
+ dnl Ok, how to turn $3 into the real $3
+ GCC_VERSION=`echo $COMPILER_VERSION | \
+ sed -e 's/[[^ ]]*\ [[^ ]]*\ \([[^ ]]*\)\ .*/\1/'` ;;
+ *) GCC_VERSION=unknown ;;
+ esac
+ AC_MSG_RESULT($GCC_VERSION)
+])
+
+dnl AC_TRY_CCFLAG([CCFLAG], [VAR], [ACTION-IF-WORKS], [ACTION-IF-FAILS])
+dnl check if $CC supports a given flag
+
+AC_DEFUN([AC_TRY_CCFLAG],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ ac_save_CFLAGS=$CFLAGS
+ CFLAGS=$1
+ AC_MSG_RESULT([KOUKEJ $name])
+ AC_CACHE_CHECK([whether $CC accepts $1 flag], [ac_cv_flag_$2],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AS_VAR_SET([ac_cv_flag_$2], [yes])],
+ [AS_VAR_SET([ac_cv_flag_$2], [no])])])
+ CFLAGS=$ac_save_CFLAGS
+ $2=AS_VAR_GET([ac_cv_flag_$2])
+ if test "$2" = yes; then
+ ifelse([$3], [], [:], [$3])
+ else
+ ifelse([$4], [], [:], [$4])
+ fi
+])
diff --git a/aclocal.m4 b/aclocal.m4
index 263b50e27..165d9bc85 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -169,3 +169,4 @@ else
fi[]dnl
])# PKG_CHECK_MODULES
+m4_include([acinclude.m4])
diff --git a/configure b/configure
index 002a7d242..48dfdc6ed 100755
--- a/configure
+++ b/configure
@@ -708,6 +708,7 @@ CUNIT_CFLAGS
GENPNG
GENHTML
LCOV
+HAVE_WJUMP
SACKPT_LIBS
SACKPT_CFLAGS
DLM_LIBS
@@ -8677,6 +8678,47 @@ else
CSCOPE_CMD=
fi
+
+
+ ac_save_CFLAGS=$CFLAGS
+ CFLAGS=-Wjump-misses-init
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: KOUKEJ $name" >&5
+$as_echo "KOUKEJ $name" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Wjump-misses-init flag" >&5
+$as_echo_n "checking whether $CC accepts -Wjump-misses-init flag... " >&6; }
+if test "${ac_cv_flag_HAVE_WJUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ 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_flag_HAVE_WJUMP=yes
+else
+ ac_cv_flag_HAVE_WJUMP=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flag_HAVE_WJUMP" >&5
+$as_echo "$ac_cv_flag_HAVE_WJUMP" >&6; }
+ CFLAGS=$ac_save_CFLAGS
+ HAVE_WJUMP=$ac_cv_flag_HAVE_WJUMP
+ if test "HAVE_WJUMP" = yes; then
+ :
+ else
+ :
+ fi
+
+
+
################################################################################
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C optimisation flag" >&5
$as_echo_n "checking for C optimisation flag... " >&6; }
diff --git a/configure.in b/configure.in
index 07b0afc12..3a25fef15 100644
--- a/configure.in
+++ b/configure.in
@@ -835,6 +835,10 @@ else
CSCOPE_CMD=
fi
+dnl -- Check if compiler supports -Wjump-misses-init
+AC_TRY_CCFLAG([-Wjump-misses-init], [HAVE_WJUMP], [], [])
+AC_SUBST(HAVE_WJUMP)
+
################################################################################
dnl -- Override optimisation
AC_MSG_CHECKING(for C optimisation flag)
diff --git a/make.tmpl.in b/make.tmpl.in
index 788eb1dcc..08560a888 100644
--- a/make.tmpl.in
+++ b/make.tmpl.in
@@ -138,9 +138,13 @@ WFLAGS += -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings \
-Wpointer-arith -Wclobbered -Wempty-body -Wignored-qualifiers \
-Wmissing-parameter-type -Wold-style-declaration -Woverride-init \
-Wtype-limits -Wuninitialized -Wmissing-include-dirs -Wsync-nand \
- -Wfloat-equal -Wjump-misses-init -Wlogical-op -Wstrict-prototypes \
+ -Wfloat-equal -Wlogical-op -Wstrict-prototypes \
-Wold-style-definition -Wmissing-format-attribute
+ifeq ("@HAVE_WJUMP@", "yes")
+WFLAGS += -Wjump-misses-init
+endif
+
#WFLAGS += -W -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers
#WFLAGS += -Wsign-compare -Wunused-parameter -Wmissing-field-initializers
#WFLAGS += -Wconversion -Wbad-function-cast -Wcast-qual -Waggregate-return -Wpacked