bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with Sun Studio 12 C++


From: Ralf Wildenhues
Subject: Re: Problem with Sun Studio 12 C++
Date: Sun, 8 Mar 2009 11:21:56 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

Hello Eric, Rolf,

I'm a bit late to the show:

* Eric Blake wrote on Wed, Jan 28, 2009 at 06:00:57PM CET:
> Rolf Vandevaart writes:
> 
> > However, as of Sun Studio 12, the C compiler also supports __restrict__. 
> >   Therefore, we need to update the workaround to handle this additional 
> > possible value.  Here is my suggestion.

I think the Autoconf testsuite deserves to detect this issue,
lest it happen again.  How about this patch?

The cpp-works stuff is necessary for systems without a working C++
compiler.  AC_PROG_CXX sets CXX to g++ in that case.  We should find
out why that was done, and fix it.

Thanks,
Ralf

    New test for SunStudio `restrict' handling.
    
    * tests/c.at (AC_C_RESTRICT and the C++ compiler): New test.
    Prompted by bug report from Rolf Vandevaart.

diff --git a/tests/c.at b/tests/c.at
index d7a1886..67ba429 100644
--- a/tests/c.at
+++ b/tests/c.at
@@ -2,8 +2,8 @@
 
 AT_BANNER([C low level compiling/preprocessing macros.])
 
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 Free
-# Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009
+# Free Software Foundation, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -259,3 +259,66 @@ AC_DEFINE([__EXTENSIONS__], [1], [Manually defined for 
Solaris])
 ]])
 
 AT_CLEANUP
+
+
+## ------------------------------------ ##
+## AC_C_RESTRICT and the C++ compiler.  ##
+## ------------------------------------ ##
+
+AT_SETUP([AC_C_RESTRICT and the C++ compiler])
+
+# In some compiler suites, the left hand doesn't know about everything
+# the right hand does; or the user mixes the C compiler from one suite
+# with the C++ compiler from another.  In this case, Sun WorkShop CC
+# not like the _Restrict accepted by cc.
+
+AT_DATA([configure.ac],
+[[AC_INIT
+AC_PROG_CC
+AC_PROG_CXX
+AC_C_RESTRICT
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+]])
+
+AT_DATA([Makefile.in],
+[[CC = @CC@
+CXX = @CXX@
+CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
+CPPFLAGS = -I. @CPPFLAGS@
+OBJEXT = @OBJEXT@
+all: foo.$(OBJEXT) bar.$(OBJEXT)
+cpp-works:
+       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c cpp-works.cpp
+foo.$(OBJEXT): foo.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c foo.c
+bar.$(OBJEXT): bar.cpp
+       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c bar.cpp
+]])
+
+AT_DATA([foo.c],
+[[#include <config.h>
+
+int foo (int * restrict ip)
+{
+  return ip[0];
+}
+]])
+
+cp foo.c bar.cpp
+
+AT_DATA([cpp-works.cpp],
+[[// This file is just to test whether we have a working C++ compiler at all
+class foo { int x; };
+class foo foobar;
+]])
+
+AT_CHECK([autoconf])
+AT_CHECK([autoheader])
+AT_CHECK([./configure], [], [ignore], [ignore])
+AT_CHECK([${MAKE-make} cpp-works || exit 77], [], [ignore], [ignore])
+AT_CHECK([${MAKE-make}], [], [ignore], [ignore])
+
+AT_CLEANUP




reply via email to

[Prev in Thread] Current Thread [Next in Thread]