[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