[PATCH macros 2/2] Define BASE_CXXFLAGS when C++ is the chosen language
Gaetan Nadon
memsize at videotron.ca
Thu Mar 1 08:22:01 PST 2012
On 12-02-29 03:24 PM, Chase Douglas wrote:
> Set the language to C++ before calling XORG_DEFAULT_OPTIONS. This can be
> done by calling AC_LANG(C++).
>
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
> xorg-macros.m4.in | 166 ++++++++++++++++++++++++++++++----------------------
> 1 files changed, 96 insertions(+), 70 deletions(-)
>
> diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
> index 9041542..e5b468f 100644
> --- a/xorg-macros.m4.in
> +++ b/xorg-macros.m4.in
> @@ -1528,13 +1528,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 +1545,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 +1645,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 +1663,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 +1676,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
xorg-macros.m4.in:1548: trailing whitespace.
+AC_LANG_CASE(
Reviewed-by: Gaetan Nadon<memsize at videotron.ca>
More information about the xorg-devel
mailing list