From 25bc5cdc9c6d2f41a03a3fcbf8d58ef1c0b7edf6 Mon Sep 17 00:00:00 2001 From: "kenton@google.com" Date: Thu, 4 Dec 2008 20:34:50 +0000 Subject: Support "Solaris 10 using recent Sun Studio". Patch from Monty Taylor . --- CHANGES.txt | 1 + CONTRIBUTORS.txt | 2 ++ configure.ac | 9 +++++++ m4/ac_system_extensions.m4 | 37 +++++++++++++++++++++++++++ src/google/protobuf/stubs/strutil.cc | 1 + src/google/protobuf/stubs/strutil_unittest.cc | 1 + src/gtest/gtest.cc | 1 + 7 files changed, 52 insertions(+) create mode 100644 m4/ac_system_extensions.m4 diff --git a/CHANGES.txt b/CHANGES.txt index 342b4bf9..427d3d26 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -41,6 +41,7 @@ * Simplify template usage to work with MSVC 2003. * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup. (This affected Fedora 9 in particular.) + * Now works on "Solaris 10 using recent Sun Studio". Java * New overload of mergeFrom() which parses a slice of a byte array instead diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 454d99ba..593b3f86 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -51,3 +51,5 @@ Non-Google patch contributors: * Added @Override annotation to generated Java code where appropriate. Vincent Choinière * Tru64 support. + Monty Taylor + * Solaris 10 + Sun Studio fix. diff --git a/configure.ac b/configure.ac index e73ea10f..7ea0c227 100644 --- a/configure.ac +++ b/configure.ac @@ -12,13 +12,22 @@ AC_INIT([protobuf],[2.0.3-SNAPSHOT],[protobuf@googlegroups.com]) AC_CONFIG_SRCDIR(src/google/protobuf/message.cc) AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE # Checks for programs. AC_PROG_CC AC_PROG_CXX +ACX_USE_SYSTEM_EXTENSIONS AC_PROG_LIBTOOL AM_CONDITIONAL(GCC, test "$GCC" = yes) # let the Makefile know if we're gcc +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) + +AS_IF([test "$SUNCC" = "yes"],[ + CFLAGS="$CFLAGS -xO4 -xlibmil -xdepend -Xa -mt -xstrconst -D_FORTEC_" + CXXFLAGS="$CXXFLAGS -xO4 -xlibmil -mt -D_FORTEC_ -xlang=c99 -compat=5 -library=stlport4 -template=no%extdef" +]) + # Checks for header files. AC_HEADER_STDC diff --git a/m4/ac_system_extensions.m4 b/m4/ac_system_extensions.m4 new file mode 100644 index 00000000..1ca2eeb1 --- /dev/null +++ b/m4/ac_system_extensions.m4 @@ -0,0 +1,37 @@ +dnl Provide AC_USE_SYSTEM_EXTENSIONS for old autoconf machines. +AC_DEFUN([ACX_USE_SYSTEM_EXTENSIONS],[ + ifdef([AC_USE_SYSTEM_EXTENSIONS],[ + AC_USE_SYSTEM_EXTENSIONS + ],[ + AC_BEFORE([$0], [AC_COMPILE_IFELSE]) + AC_BEFORE([$0], [AC_RUN_IFELSE]) + + AC_REQUIRE([AC_GNU_SOURCE]) + AC_REQUIRE([AC_AIX]) + AC_REQUIRE([AC_MINIX]) + + AH_VERBATIM([__EXTENSIONS__], +[/* Enable extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif]) + AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], + [ac_cv_safe_to_define___extensions__], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([ +# define __EXTENSIONS__ 1 + AC_INCLUDES_DEFAULT])], + [ac_cv_safe_to_define___extensions__=yes], + [ac_cv_safe_to_define___extensions__=no])]) + test $ac_cv_safe_to_define___extensions__ = yes && + AC_DEFINE([__EXTENSIONS__]) + AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) + AC_DEFINE([_TANDEM_SOURCE]) + ]) +]) diff --git a/src/google/protobuf/stubs/strutil.cc b/src/google/protobuf/stubs/strutil.cc index bc417344..a4764753 100644 --- a/src/google/protobuf/stubs/strutil.cc +++ b/src/google/protobuf/stubs/strutil.cc @@ -35,6 +35,7 @@ #include // FLT_DIG and DBL_DIG #include #include +#include #ifdef _WIN32 // MSVC has only _snprintf, not snprintf. diff --git a/src/google/protobuf/stubs/strutil_unittest.cc b/src/google/protobuf/stubs/strutil_unittest.cc index f491968c..b9c9253b 100644 --- a/src/google/protobuf/stubs/strutil_unittest.cc +++ b/src/google/protobuf/stubs/strutil_unittest.cc @@ -34,6 +34,7 @@ #include #include +#include namespace google { namespace protobuf { diff --git a/src/gtest/gtest.cc b/src/gtest/gtest.cc index 09a0815a..570f0cfa 100644 --- a/src/gtest/gtest.cc +++ b/src/gtest/gtest.cc @@ -40,6 +40,7 @@ #include #include #include +#include #ifdef GTEST_OS_LINUX -- cgit v1.2.3