blob: 3b73880e1d23ef4d6fb151d467ec8f1a9946ed7e [file] [log] [blame]
#
# @(#)Defs-solaris.gmk 1.3 05/04/07
#
# Makefile to specify compiler flags for programs and libraries
# targeted to Solaris. Should not contain any rules.
#
ARCH = $(shell uname -p)
OS_VERSION = $(shell uname -r)
WHOAMI=/usr/ucb/whoami
ZIP=/usr/dist/local/exe/zip
# This default is redefined during a release build.
RELEASE = $(shell echo `$(WHOAMI)`:`date '+%m/%d/%y-%H:%M'`)
FULL_VERSION = $(shell echo `$(WHOAMI)`:`date '+%m/%d/%y-%H:%M'`)
## Section 1: Define CC, CPP, AS and LD flags.
# If -Xa is in CFLAGS_COMMON it will end up ahead of $(POPT) for the
# optimized build, and that ordering of the flags completely freaks
# out cc. Hence, -Xa is instead in each CFLAGS variant.
ifneq ($(CC_VERSION), gcc)
CFLAGS_COMMON = -v
CFLAGS_OPT = -Xa $(POPT)
CFLAGS_DBG = -Xa -g
else
CFLAGS_COMMON =
CFLAGS_OPT = $(POPT)
CFLAGS_DBG = -g
endif
# Java memory management is based on memory mapping by default, but a
# system only assuming malloc/free can be built by adding -DUSE_MALLOC
ifneq ($(CC_VERSION), gcc)
CPPFLAGS_COMMON = -D$(ARCH) -DSOLARIS2 -DRELEASE='"$(RELEASE)"' -DFULL_VERSION='"$(FULL_VERSION)"'
else
CPPFLAGS_COMMON = -D$(ARCH) -DHAVE_ALIGNED_LONGLONGS -DHAVE_ALIGNED_DOUBLES -DSOLARIS2 -DRELEASE='"$(RELEASE)"' -DFULL_VERSION='"$(FULL_VERSION)"'
endif
# [sbb] int32 scaffolding -- to be removed
CPPFLAGS_COMMON += $(USE_INT32)
CPPFLAGS_OPT =
CPPFLAGS_DBG = -DDEBUG
ASFLAGS_COMMON = -P
ASFLAGS_OPT =
ASFLAGS_DBG =
ifneq ($(LIBRARY),JdbcOdbc)
LDFLAGS_COMMON = -z defs
else
LDFLAGS_COMMON =
endif
LDFLAGS_OPT =
LDFLAGS_DBG =
#
# All libraries except libjava and libjvm itself link against libjvm
# and libjava, the latter for its exported common utilities. libjava
# only links against libjvm. Programs' makefiles take their own
# responsibility for adding other libs.
#
ifdef LIBRARY
LDLIBS_COMMON =
ifneq ($(LIBRARY),jvm)
ifneq ($(LIBRARY),java)
# no libjvm in JDK 1.1
#LDLIBS_OPT = -L$(LIB_LOCATION) -ljvm -ljava
#LDLIBS_DBG = -L$(LIB_LOCATION) -ljvm_g -ljava_g
LDLIBS_OPT = -L$(LIB_LOCATION) -ljava
LDLIBS_DBG = -L$(LIB_LOCATION) -ljava_g
else
LDLIBS_OPT = -L$(LIB_LOCATION) -ljvm
LDLIBS_DBG = -L$(LIB_LOCATION) -ljvm_g
endif
endif
endif
## Section 2: Variables globally settable from the make
## command line (default values in brackets):
## THREADS_FLAG (native), GPROF (false), JCOV (true).
## Eg: % gnumake THREADS_FLAG=green
THREADS_FLAG=green
ifdef LIBRARY
ifeq ($(LIBRARY), jvm)
# do nothing
else
ifeq ($(LIBRARY), agent)
# do nothing
else
BUILD_REENTRANT_LIBS = true
endif
endif
endif
LDFLAGS_COMMON = -L$(JDK_LIBDIR)/$(ARCH)
ifdef BUILD_REENTRANT_LIBS
CFLAGS_COMMON += -D_REENTRANT
LDFLAGS_COMMON += -L$(LIBDIR)/$(ARCH)
else
ifeq ($(THREADS_FLAG), native)
CFLAGS_COMMON += -D_REENTRANT -DNATIVE
# Even though libjava.so is linked with -lthread, this makes sure that
# the executable sees libthread definitions of thr_* functions before
# libc definitions. Starting in 2.5.1 the libc functions "do the
# right thing" when linked before libthread, but there is at least
# one bug in thr_stksegment that prevents it from working. The
# following line could go away if we decide not to support Solaris
# releases prior to 2.5.1 *and* the libc thread stubs get fixed.
# Dean Long 3/24/97:
LDLIBS_COMMON += -lthread
endif
endif
GPROF = false
ifeq ($(GPROF), true)
CFLAGS_COMMON += -DGPROF -xpg
LDLIBS_COMMON += -xpg
endif
JCOV = true
ifeq ($(JCOV), true)
ifeq ($(VARIANT), DBG)
CFLAGS_COMMON += -DJCOV
endif
endif
ifdef LIBRARY
LDLIBS_COMMON += -lc
endif
## Section 3: Are we building some piece of the runtime?
# Java default optimization -x04
ifeq ($(PRODUCT), java)
ifneq ($(CC_VERSION), gcc)
_OPT = -xO4
else
_OPT = -O3
endif
CPPFLAGS_DBG += -DLOGGING
ASFLAGS_COMMON += -D_ASM
endif
## Section 4: Was your answer to Section 3 no?
# Non-runtime default optimization -x02
ifneq ($(PRODUCT), java)
ifneq ($(CC_VERSION), gcc)
_OPT = -xO2
else
_OPT = -O2
endif
endif
## Section 5: Tools
ifneq ($(CC_VERSION), gcc)
CC = cc
CPP = cc -E
CXX = CC
else
CC = gcc
CPP = gcc -E
CXX = g++
endif
AS = as
LD = /usr/ccs/bin/ld
OPENWINHOME = /usr/openwin
LIBRARY_SUFFIX = so
# SunSoft JIT
ifneq ($(PRODUCT), java)
ifeq ($(BUILD_USES_JIT), true)
JIT_OPTION=-Djava.compiler=sunwjit
endif
endif