summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Douglas <chase.douglas@canonical.com>2012-02-29 12:18:51 -0800
committerChase Douglas <chase.douglas@canonical.com>2012-03-01 14:22:56 -0800
commit44aa8e75c8e54c5bc09d0cbff2f7207abe80c980 (patch)
treeae67a833c41abc49a6b8cbf93a0cdb405ec549c6
parent543ce698747dc998ca0ed987ef1ab0c35fb501b1 (diff)
Define BASE_CXXFLAGS when C++ is the chosen language
You can use this functionality by setting the language to C++ before calling XORG_DEFAULT_OPTIONS. This can accomplished with AC_LANG(C++). Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
-rw-r--r--xorg-macros.m4.in176
1 files changed, 105 insertions, 71 deletions
diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
index 9041542..4966df3 100644
--- a/xorg-macros.m4.in
+++ b/xorg-macros.m4.in
@@ -1424,12 +1424,20 @@ AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
#
# Checks for various brands of compilers and sets flags as appropriate:
# GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes"
+# GNU g++ - relies on AC_PROG_CXX to set GXX to "yes"
# clang compiler - sets CLANGCC to "yes"
# Intel compiler - sets INTELCC to "yes"
# Sun/Oracle Solaris Studio cc - sets SUNCC to "yes"
#
AC_DEFUN([XORG_COMPILER_BRAND], [
-AC_REQUIRE([AC_PROG_CC_C99])
+AC_LANG_CASE(
+ [C], [
+ AC_REQUIRE([AC_PROG_CC_C99])
+ ],
+ [C++], [
+ AC_REQUIRE([AC_PROG_CXX])
+ ]
+)
AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"])
AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
@@ -1528,13 +1536,13 @@ dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname
# ---------------
# Minimum version: 1.16.0
#
-# Defines BASE_CFLAGS to contain a set of command line arguments supported
-# by the selected compiler which do NOT alter the generated code. These
-# arguments will cause the compiler to print various warnings during
-# compilation AND turn a conservative set of warnings into errors.
+# Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line
+# arguments supported by the selected compiler which do NOT alter the generated
+# code. These arguments will cause the compiler to print various warnings
+# during compilation AND turn a conservative set of warnings into errors.
#
-# The set of flags supported by BASE_CFLAGS will grow in future
-# versions of util-macros as options are added to new compilers.
+# The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in
+# future versions of util-macros as options are added to new compilers.
#
AC_DEFUN([XORG_COMPILER_FLAGS], [
AC_REQUIRE([XORG_COMPILER_BRAND])
@@ -1545,76 +1553,89 @@ AC_ARG_ENABLE(selective-werror,
[SELECTIVE_WERROR=$enableval],
[SELECTIVE_WERROR=yes])
+AC_LANG_CASE(
+ [C], [
+ define([PREFIX], [C])
+ ],
+ [C++], [
+ define([PREFIX], [CXX])
+ ]
+)
# -v is too short to test reliably with XORG_TESTSET_CFLAG
if test "x$SUNCC" = "xyes"; then
- BASE_CFLAGS="-v"
+ [BASE_]PREFIX[FLAGS]="-v"
else
- BASE_CFLAGS=""
+ [BASE_]PREFIX[FLAGS]=""
fi
# This chunk of warnings were those that existed in the legacy CWARNFLAGS
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wall])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wpointer-arith])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wstrict-prototypes])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmissing-prototypes])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmissing-declarations])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wnested-externs])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wbad-function-cast])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wformat=2], [-Wformat])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wold-style-definition])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdeclaration-after-statement])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat])
+
+AC_LANG_CASE(
+ [C], [
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes])
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes])
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs])
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast])
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition])
+ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement])
+ ]
+)
# This chunk adds additional warnings that could catch undesired effects.
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wunused])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wuninitialized])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wshadow])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wcast-qual])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmissing-noreturn])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmissing-format-attribute])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wredundant-decls])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls])
# These are currently disabled because they are noisy. They will be enabled
# in the future once the codebase is sufficiently modernized to silence
# them. For now, I don't want them to drown out the other warnings.
-# XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wlogical-op])
-# XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wparentheses])
-# XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wcast-align])
+# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
+# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses])
+# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align])
# Turn some warnings into errors, so we don't accidently get successful builds
# when there are problems that should be fixed.
if test "x$SELECTIVE_WERROR" = "xyes" ; then
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=nonnull])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=init-self])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=main])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=missing-braces])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=sequence-point])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=trigraphs])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=array-bounds])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=write-strings])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=address])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION
else
AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wimplicit])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wnonnull])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Winit-self])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmain])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wmissing-braces])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wsequence-point])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wreturn-type])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wtrigraphs])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Warray-bounds])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wwrite-strings])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Waddress])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wint-to-pointer-cast])
-XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wpointer-to-int-cast])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast])
+XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast])
fi
-AC_SUBST([BASE_CFLAGS])
+AC_SUBST([BASE_]PREFIX[FLAGS])
]) # XORG_COMPILER_FLAGS
# XORG_CWARNFLAGS
@@ -1632,11 +1653,15 @@ AC_SUBST([BASE_CFLAGS])
AC_DEFUN([XORG_CWARNFLAGS], [
AC_REQUIRE([XORG_COMPILER_FLAGS])
AC_REQUIRE([XORG_COMPILER_BRAND])
-CWARNFLAGS="$BASE_CFLAGS"
-if test "x$GCC" = xyes ; then
- CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing"
-fi
-AC_SUBST(CWARNFLAGS)
+AC_LANG_CASE(
+ [C], [
+ CWARNFLAGS="$BASE_CFLAGS"
+ if test "x$GCC" = xyes ; then
+ CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing"
+ fi
+ AC_SUBST(CWARNFLAGS)
+ ]
+)
]) # XORG_CWARNFLAGS
# XORG_STRICT_OPTION
@@ -1646,7 +1671,7 @@ AC_SUBST(CWARNFLAGS)
# Add configure option to enable strict compilation flags, such as treating
# warnings as fatal errors.
# If --enable-strict-compilation is passed to configure, adds strict flags to
-# $BASE_CFLAGS and the deprecated $CWARNFLAGS.
+# $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS.
#
# Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or
# when strict compilation is unconditionally desired.
@@ -1659,21 +1684,30 @@ AC_ARG_ENABLE(strict-compilation,
[Enable all warnings from compiler and make them errors (default: disabled)]),
[STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
-STRICT_CFLAGS=""
-XORG_TESTSET_CFLAG([STRICT_CFLAGS], [-pedantic])
-XORG_TESTSET_CFLAG([STRICT_CFLAGS], [-Werror], [-errwarn])
+AC_LANG_CASE(
+ [C], [
+ define([PREFIX], [C])
+ ],
+ [C++], [
+ define([PREFIX], [CXX])
+ ]
+)
+
+[STRICT_]PREFIX[FLAGS]=""
+XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic])
+XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn])
# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not
# activate it with -Werror, so we add it here explicitly.
-XORG_TESTSET_CFLAG([STRICT_CFLAGS], [-Werror=attributes])
+XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes])
if test "x$STRICT_COMPILE" = "xyes"; then
- BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS"
- CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
+ [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]"
+ AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"])
fi
-AC_SUBST([STRICT_CFLAGS])
-AC_SUBST([BASE_CFLAGS])
-AC_SUBST([CWARNFLAGS])
+AC_SUBST([STRICT_]PREFIX[FLAGS])
+AC_SUBST([BASE_]PREFIX[FLAGS])
+AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS]))
]) # XORG_STRICT_OPTION
# XORG_DEFAULT_OPTIONS