On 03/01/2012 09:52 AM, Jon TURNEY wrote:


On 29/02/2012 20:24, Chase Douglas wrote:
Signed-off-by: Chase 
Douglas<chase.douglas-z7wlfzj8ewms+fvcfc7...@public.gmane.org>
---
  xorg-macros.m4.in |   53 ++++++++++++++++++++++++++++++++---------------------
  1 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
index 8550ca0..9041542 100644
--- a/xorg-macros.m4.in
+++ b/xorg-macros.m4.in
@@ -1449,49 +1449,60 @@ AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
  # -Werror=unused-command-line-argument
  #
  AC_DEFUN([XORG_TESTSET_CFLAG], [
-AC_REQUIRE([AC_PROG_CC_C99])
  m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported 
number of arguments])])
  m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported 
number of arguments])])

-xorg_testset_save_CFLAGS="$CFLAGS"
+AC_LANG_COMPILER_REQUIRE
+
+AC_LANG_CASE(
+       [C], [
+               AC_REQUIRE([AC_PROG_CC_C99])
+               define([PREFIX], [C])
+       ],
+       [C++], [
+               define([PREFIX], [CXX])
+       ]
+)
+
+[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]"

  if test "x$xorg_testset_unknown_warning_option" = "x" ; then
-       CFLAGS="$CFLAGS -Werror=unknown-warning-option"
-       AC_CACHE_CHECK([if $CC supports -Werror=unknown-warning-option],
-                       xorg_cv_cc_flag_unknown_warning_option,
+       PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option"
+       AC_CACHE_CHECK([if compiler supports -Werror=unknown-warning-option],
+                       xorg_cv_compiler_flag_unknown_warning_option,
                        AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])],
-                                         
[xorg_cv_cc_flag_unknown_warning_option=yes],
-                                         
[xorg_cv_cc_flag_unknown_warning_option=no]))
-       
xorg_testset_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option
-       CFLAGS="$xorg_testset_save_CFLAGS"
+                                         
[xorg_cv_compiler_flag_unknown_warning_option=yes],
+                                         
[xorg_cv_compiler_flag_unknown_warning_option=no]))
+       
xorg_testset_unknown_warning_option=$xorg_cv_compiler_flag_unknown_warning_option
+       PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]"

This looks wrong.

Using a single cache variable for all languages will assume that the compilers
for all languages support the same set of flags, when caching is used.

Wouldn't it be better to use the language as part of the cache variable name?

To be honest, if you are switching between languages and calling XORG_TESTSET_CFLAG (or one of it's callers) things are very likely to be broken still. This patch set is meant to make it work for multiple languages, but only one language per project. Making this reentrant with different languages can be provided in later patches when it becomes necessary.

That may be the case very soon, btw, if we put xorg-gtest into a project like xserver. At which point I'll need to revisit this :).

-- Chase
_______________________________________________
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