From a8923cdd9a86a40f170a6215d1d142ae853a9914 Mon Sep 17 00:00:00 2001 From: "kenton@google.com" Date: Fri, 1 May 2009 21:53:10 +0000 Subject: [PATCH] More Sun CC hacks. Contributed by Monty Taylor. --- CONTRIBUTORS.txt | 2 +- configure.ac | 7 +------ m4/acx_check_suncc.m4 | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 m4/acx_check_suncc.m4 diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 1e04939d9f..7dd17d0d52 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -53,7 +53,7 @@ Patch contributors: Vincent Choinière * Tru64 support. Monty Taylor - * Solaris 10 + Sun Studio fix. + * Solaris 10 + Sun Studio fixes. Alek Storm * Slicing support for repeated scalar fields for the Python API. Oleg Smolsky diff --git a/configure.ac b/configure.ac index fe46c35272..b0d1e150a1 100644 --- a/configure.ac +++ b/configure.ac @@ -31,13 +31,8 @@ AC_LANG([C++]) 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" -]) +ACX_CHECK_SUNCC # Checks for header files. AC_HEADER_STDC diff --git a/m4/acx_check_suncc.m4 b/m4/acx_check_suncc.m4 new file mode 100644 index 0000000000..6e8fc187b7 --- /dev/null +++ b/m4/acx_check_suncc.m4 @@ -0,0 +1,33 @@ +dnl Check for the presence of the Sun Studio compiler. +dnl If Sun Studio compiler is found, set appropriate flags. +dnl Additionally, Sun Studio doesn't default to 64-bit by itself, +dnl nor does it automatically look in standard Solaris places for +dnl 64-bit libs, so we must add those options and paths to the search +dnl paths. + +dnl TODO(kenton): This is pretty hacky. It sets CXXFLAGS, which the autoconf +dnl docs say should never be overridden except by the user. It also isn't +dnl cross-compile safe. We should fix these problems, but since I don't have +dnl Sun CC at my disposal for testing, someone else will have to do it. + +AC_DEFUN([ACX_CHECK_SUNCC],[ + + AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) + + AS_IF([test "$SUNCC" = "yes"],[ + isainfo_k=`isainfo -k` + AS_IF([test "$target_cpu" = "sparc"],[ + MEMALIGN_FLAGS="-xmemalign=8s" + IS_64="-m64" + LDFLAGS="${LDFLAGS} -L/usr/lib/${isainfo_k} -L/usr/local/lib/${isainfo_k}" + ],[ + AS_IF([test "$isainfo_k" = "amd64"],[ + IS_64="-m64" + LDFLAGS="${LDFLAGS} -L/usr/lib/${isainfo_k} -L/usr/local/lib/${isainfo_k}" + ]) + ]) + + CFLAGS="-g -xO4 -xlibmil -xdepend -Xa -mt -xstrconst ${IS_64} ${MEMALIGN_FLAGS} $CFLAGS" + CXXFLAGS="-g -xO4 -xlibmil -mt ${IS_64} ${MEMALIGN_FLAGS} -xlang=c99 -compat=5 -library=stlport4 -template=no%extdef $CXXFLAGS" + ]) +])