1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Support for Sun Studio compiler on Linux

This basically takes some build system code that was previously labeled
"Solaris" and ties it to the compiler rather than the operating system.

Author: Julius Stroffek <Julius.Stroffek@Sun.COM>
This commit is contained in:
Peter Eisentraut
2008-10-29 16:06:47 +00:00
parent 3276599804
commit 79d306c84a
9 changed files with 125 additions and 25 deletions

View File

@ -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

View File

@ -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 $@

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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