aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure54
-rw-r--r--configure.in10
-rw-r--r--src/Makefile.global.in3
-rw-r--r--src/backend/port/Makefile6
-rw-r--r--src/backend/port/tas/sunstudio_sparc.s (renamed from src/backend/port/tas/solaris_sparc.s)15
-rw-r--r--src/backend/port/tas/sunstudio_x86.s (renamed from src/backend/port/tas/solaris_x86.s)15
-rw-r--r--src/include/storage/s_lock.h6
-rw-r--r--src/template/linux25
-rw-r--r--src/template/solaris16
9 files changed, 125 insertions, 25 deletions
diff --git a/configure b/configure
index c8655588573..0edb145378f 100755
--- a/configure
+++ b/configure
@@ -686,6 +686,7 @@ CPPFLAGS
ac_ct_CC
EXEEXT
OBJEXT
+SUN_STUDIO_CC
CPP
GCC
TAS
@@ -3758,6 +3759,54 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Check if it's Sun Studio compiler. We assume that
+# __SUNPRO_C will be defined for Sun Studio compilers
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __SUNPRO_C
+choke me
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ SUN_STUDIO_CC=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ SUN_STUDIO_CC=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
unset CFLAGS
#
@@ -26726,6 +26775,7 @@ CPPFLAGS!$CPPFLAGS$ac_delim
ac_ct_CC!$ac_ct_CC$ac_delim
EXEEXT!$EXEEXT$ac_delim
OBJEXT!$OBJEXT$ac_delim
+SUN_STUDIO_CC!$SUN_STUDIO_CC$ac_delim
CPP!$CPP$ac_delim
GCC!$GCC$ac_delim
TAS!$TAS$ac_delim
@@ -26754,7 +26804,6 @@ ELF_SYS!$ELF_SYS$ac_delim
LDFLAGS_SL!$LDFLAGS_SL$ac_delim
LD!$LD$ac_delim
with_gnu_ld!$with_gnu_ld$ac_delim
-ld_R_works!$ld_R_works$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -26796,6 +26845,7 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+ld_R_works!$ld_R_works$ac_delim
RANLIB!$RANLIB$ac_delim
STRIP!$STRIP$ac_delim
STRIP_STATIC_LIB!$STRIP_STATIC_LIB$ac_delim
@@ -26850,7 +26900,7 @@ vpath_build!$vpath_build$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 53; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.in b/configure.in
index afe9a37e865..073bfa855e9 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $PostgreSQL: pgsql/configure.in,v 1.568 2008/10/29 09:27:24 petere Exp $
+dnl $PostgreSQL: pgsql/configure.in,v 1.569 2008/10/29 16:06:46 petere Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
@@ -379,6 +379,14 @@ AC_TRY_COMPILE([], [@%:@ifndef __INTEL_COMPILER
choke me
@%:@endif], [ICC=[yes]], [ICC=[no]])
+# Check if it's Sun Studio compiler. We assume that
+# __SUNPRO_C will be defined for Sun Studio compilers
+AC_TRY_COMPILE([], [@%:@ifndef __SUNPRO_C
+choke me
+@%:@endif], [SUN_STUDIO_CC=yes], [SUN_STUDIO_CC=no])
+
+AC_SUBST(SUN_STUDIO_CC)
+
unset CFLAGS
#
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index f5ca618400a..a562cd116dd 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
# -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.244 2008/10/03 15:35:17 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.245 2008/10/29 16:06:46 petere Exp $
#------------------------------------------------------------------------------
# All PostgreSQL makefiles include this file and use the variables it sets,
@@ -213,6 +213,7 @@ endif # not PGXS
CC = @CC@
GCC = @GCC@
+SUN_STUDIO_CC = @SUN_STUDIO_CC@
CFLAGS = @CFLAGS@
# Kind-of compilers
diff --git a/src/backend/port/Makefile b/src/backend/port/Makefile
index 6a71ef3a2b5..47980426564 100644
--- a/src/backend/port/Makefile
+++ b/src/backend/port/Makefile
@@ -13,7 +13,7 @@
# be converted to Method 2.
#
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.26 2008/02/19 15:29:58 petere Exp $
+# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.27 2008/10/29 16:06:46 petere Exp $
#
#-------------------------------------------------------------------------
@@ -33,8 +33,8 @@ endif
include $(top_srcdir)/src/backend/common.mk
tas.o: tas.s
-ifeq ($(PORTNAME), solaris)
-# preprocess assembler file with cpp, used by x86
+ifeq ($(SUN_STUDIO_CC), yes)
+# preprocess assembler file with cpp
$(CC) $(CFLAGS) -c -P $<
mv $*.i $*_cpp.s
$(CC) $(CFLAGS) -c $*_cpp.s -o $@
diff --git a/src/backend/port/tas/solaris_sparc.s b/src/backend/port/tas/sunstudio_sparc.s
index 183cea18504..56d85f4514f 100644
--- a/src/backend/port/tas/solaris_sparc.s
+++ b/src/backend/port/tas/sunstudio_sparc.s
@@ -1,6 +1,15 @@
-!=======================================================================
-! solaris_sparc.s -- compare and swap for solaris_sparc
-!=======================================================================
+!-------------------------------------------------------------------------
+!
+! sunstudio_sparc.s
+! compare and swap for Sun Studio on Sparc
+!
+! Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
+! Portions Copyright (c) 1994, Regents of the University of California
+!
+! IDENTIFICATION
+! $PostgreSQL: pgsql/src/backend/port/tas/sunstudio_sparc.s,v 1.1 2008/10/29 16:06:47 petere Exp $
+!
+!-------------------------------------------------------------------------
! Fortunately the Sun compiler can process cpp conditionals with -P
diff --git a/src/backend/port/tas/solaris_x86.s b/src/backend/port/tas/sunstudio_x86.s
index db1dea7c291..1680ccc6358 100644
--- a/src/backend/port/tas/solaris_x86.s
+++ b/src/backend/port/tas/sunstudio_x86.s
@@ -1,6 +1,15 @@
-/=======================================================================
-/ solaris_i386.s -- compare and swap for solaris_i386
-/=======================================================================
+/-------------------------------------------------------------------------
+/
+/ sunstudio_x86.s
+/ compare and swap for Sun Studio on x86
+/
+/ Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
+/ Portions Copyright (c) 1994, Regents of the University of California
+/
+/ IDENTIFICATION
+/ $PostgreSQL: pgsql/src/backend/port/tas/sunstudio_x86.s,v 1.1 2008/10/29 16:06:47 petere Exp $
+/
+/-------------------------------------------------------------------------
/ Fortunately the Sun compiler can process cpp conditionals with -P
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index 7d9448fb7e4..e67b0ab3185 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -66,7 +66,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.164 2008/01/01 19:45:59 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.165 2008/10/29 16:06:47 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -578,7 +578,7 @@ typedef unsigned char slock_t;
#endif
-#endif /* __GNUC__ */
+#endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */
@@ -782,7 +782,7 @@ typedef unsigned char slock_t;
#endif
-#if defined(__sun) && (defined(__i386) || defined(__x86_64__) || defined(__sparc__) || defined(__sparc))
+#if defined(__SUNPRO_C) && (defined(__i386) || defined(__x86_64__) || defined(__sparc__) || defined(__sparc))
#define HAS_TEST_AND_SET
#if defined(__i386) || defined(__x86_64__) || defined(__sparcv9) || defined(__sparcv8plus)
diff --git a/src/template/linux b/src/template/linux
index ed800d23f12..19904bc22e1 100644
--- a/src/template/linux
+++ b/src/template/linux
@@ -1,7 +1,30 @@
-# $PostgreSQL: pgsql/src/template/linux,v 1.30 2007/09/21 02:33:46 tgl Exp $
+# $PostgreSQL: pgsql/src/template/linux,v 1.31 2008/10/29 16:06:47 petere Exp $
# Force _GNU_SOURCE on; plperl is broken with Perl 5.8.0 otherwise
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
# If --enable-profiling is specified, we need -DLINUX_PROFILE
PLATFORM_PROFILE_FLAGS="-DLINUX_PROFILE"
+
+if test "$SUN_STUDIO_CC" = "yes" ; then
+ CC="$CC -Xa" # relaxed ISO C mode
+ CFLAGS="-v" # -v is like gcc -Wall
+ if test "$enable_debug" != yes; then
+ CFLAGS="$CFLAGS -O" # any optimization breaks debug
+ fi
+
+ # Pick the right test-and-set (TAS) code for the Sun compiler.
+ # We would like to use in-line assembler, but the compiler
+ # requires *.il files to be on every compile line, making
+ # the build system too fragile.
+ case $host_cpu in
+ sparc)
+ need_tas=yes
+ tas_file=sunstudio_sparc.s
+ ;;
+ i?86|x86_64)
+ need_tas=yes
+ tas_file=sunstudio_x86.s
+ ;;
+ esac
+fi
diff --git a/src/template/solaris b/src/template/solaris
index 07efcc0bda4..40e3a68c88e 100644
--- a/src/template/solaris
+++ b/src/template/solaris
@@ -1,22 +1,22 @@
-if test "$GCC" != yes ; then
+if test "$SUN_STUDIO_CC" = yes ; then
CC="$CC -Xa" # relaxed ISO C mode
- CFLAGS="-v -DSUNOS4_CC" # -v is like gcc -Wall
+ CFLAGS="-v" # -v is like gcc -Wall
if test "$enable_debug" != yes; then
CFLAGS="$CFLAGS -O" # any optimization breaks debug
fi
# Pick the right test-and-set (TAS) code for the Sun compiler.
# We would like to use in-line assembler, but the compiler
- # requires *.il files to be on every compile line, making
+ # requires *.il files to be on every compile line, making
# the build system too fragile.
- case $host in
- sparc-*-solaris*)
+ case $host_cpu in
+ sparc)
need_tas=yes
- tas_file=solaris_sparc.s
+ tas_file=sunstudio_sparc.s
;;
- i?86-*-solaris*)
+ i?86|x86_64)
need_tas=yes
- tas_file=solaris_x86.s
+ tas_file=sunstudio_x86.s
;;
esac
fi