aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt1
-rw-r--r--CONTRIBUTORS.txt2
-rw-r--r--configure.ac9
-rw-r--r--m4/ac_system_extensions.m437
-rw-r--r--src/google/protobuf/stubs/strutil.cc1
-rw-r--r--src/google/protobuf/stubs/strutil_unittest.cc1
-rw-r--r--src/gtest/gtest.cc1
7 files changed, 52 insertions, 0 deletions
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 <Choiniere.Vincent@hydro.qc.ca>
* Tru64 support.
+ Monty Taylor <monty.taylor@gmail.com>
+ * 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 <float.h> // FLT_DIG and DBL_DIG
#include <limits>
#include <limits.h>
+#include <stdio.h>
#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 <google/protobuf/testing/googletest.h>
#include <gtest/gtest.h>
+#include <locale.h>
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <wchar.h>
#ifdef GTEST_OS_LINUX