On 02/29/2012 02:58 PM, Gaetan Nadon wrote:
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++).
Is this sentence a recommendation of what to do in a module or does it
describe what the patch does?
I am a little confused.

You're right, I should have prefixed it with "You can use this by ...":

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.doug...@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])
Note that XORG_COMPILER_BRAND calls AC_PROG_CC_C99 which I think can
reset the language back to C.

Perhaps I should use AC_LANG_CASE() in XORG_COMPILER_BRAND as well? I think wrapping AC_REQUIRE([AC_PROG_CC_C99]) would suffice. The rest should be fine for CC and CXX both. Any issues with that?

@@ -1545,76 +1545,89 @@ AC_ARG_ENABLE(selective-werror,
                [SELECTIVE_WERROR=$enableval],
                [SELECTIVE_WERROR=yes])

+AC_LANG_CASE(
So the test here would always result in C. I am not sure, it's hard to
follow.

Your logic seems right, but I can confirm that it works as I intedended. Hopefully with the fix to XORG_COMPILER_BRAND we will be working properly for sure.

The reason you see some AC_PROG_CC_C99 is that there is always a
theoretical possibility  that a be called without the module having
first called XORG_DEFAULT_OPTIONS. By usage, this will not happen as all
modules call XORG_DEFAULT_OPTIONS early up. It is safe to removing it if
it gets too much in the way.

I'm not sure what you are commenting on here...

I am guessing that you meant to comment below where AC_PROG_CC_C99 is called, which is the case in one of the AC_LANG_CASE statements. If so, I'm happy to remove it, leave it, or change it. Just let me know.

All of X.Org is compiled with C, so it is not surprising to see this
assumption everywhere.

This is great.
+        [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-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to