2
+ − 1
#
+ − 2
# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ − 3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ − 4
#
+ − 5
# This code is free software; you can redistribute it and/or modify it
+ − 6
# under the terms of the GNU General Public License version 2 only, as
+ − 7
# published by the Free Software Foundation. Sun designates this
+ − 8
# particular file as subject to the "Classpath" exception as provided
+ − 9
# by Sun in the LICENSE file that accompanied this code.
+ − 10
#
+ − 11
# This code is distributed in the hope that it will be useful, but WITHOUT
+ − 12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 13
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 14
# version 2 for more details (a copy is included in the LICENSE file that
+ − 15
# accompanied this code).
+ − 16
#
+ − 17
# You should have received a copy of the GNU General Public License version
+ − 18
# 2 along with this work; if not, write to the Free Software Foundation,
+ − 19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ − 20
#
+ − 21
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ − 22
# CA 95054 USA or visit www.sun.com if you need additional information or
+ − 23
# have any questions.
+ − 24
#
+ − 25
+ − 26
#
+ − 27
# Makefile to specify compiler flags for programs and libraries
+ − 28
# targeted to Linux. Should not contain any rules.
+ − 29
#
+ − 30
# WARNING: This file is shared with other workspaces.
+ − 31
# So when it includes other files, it must use JDK_TOPDIR.
+ − 32
#
+ − 33
+ − 34
# Warning: the following variables are overriden by Defs.gmk. Set
+ − 35
# values will be silently ignored:
+ − 36
# CFLAGS (set $(OTHER_CFLAGS) instead)
+ − 37
# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
+ − 38
# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
+ − 39
# LDFLAGS (set $(OTHER_LDFAGS) instead)
+ − 40
# LDLIBS (set $(EXTRA_LIBS) instead)
+ − 41
# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
+ − 42
+ − 43
# Get shared JDK settings
+ − 44
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+ − 45
+ − 46
# Part of INCREMENTAL_BUILD mechanism.
+ − 47
# Compiler emits things like: path/file.o: file.h
+ − 48
# We want something like: relative_path/file.o relative_path/file.d: file.h
+ − 49
CC_DEPEND = -MM
+ − 50
CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
+ − 51
+ − 52
ifndef PLATFORM_SRC
+ − 53
PLATFORM_SRC = $(JDK_TOPDIR)/src/solaris
+ − 54
endif # PLATFORM_SRC
+ − 55
+ − 56
# Platform specific closed sources
+ − 57
ifndef OPENJDK
+ − 58
ifndef CLOSED_PLATFORM_SRC
+ − 59
CLOSED_PLATFORM_SRC = $(JDK_TOPDIR)/src/closed/solaris
+ − 60
endif
+ − 61
endif
+ − 62
+ − 63
# platform specific include files
+ − 64
PLATFORM_INCLUDE_NAME = $(PLATFORM)
+ − 65
PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
+ − 66
+ − 67
# suffix used for make dependencies files.
+ − 68
DEPEND_SUFFIX = d
+ − 69
# The suffix applied to the library name for FDLIBM
+ − 70
FDDLIBM_SUFFIX = a
+ − 71
# The suffix applied to scripts (.bat for windows, nothing for unix)
+ − 72
SCRIPT_SUFFIX =
+ − 73
# CC compiler object code output directive flag value
+ − 74
CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
+ − 75
CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
+ − 76
+ − 77
#
+ − 78
# Default HPI libraries. Build will build only native, unless
+ − 79
# overriden at the make command line. This makes it convenient for
+ − 80
# people doing, say, a pthreads port -- they can create a posix
+ − 81
# directory here, and say "gnumake HPIS=posix" at the top
+ − 82
# level.
+ − 83
#
+ − 84
HPIS = native
+ − 85
+ − 86
#
+ − 87
# Default optimization
+ − 88
#
+ − 89
CC_HIGHEST_OPT = -O3
+ − 90
CC_HIGHER_OPT = -O3
+ − 91
CC_LOWER_OPT = -O2
+ − 92
CC_NO_OPT =
+ − 93
+ − 94
ifeq ($(PRODUCT), java)
+ − 95
_OPT = $(CC_HIGHER_OPT)
+ − 96
else
+ − 97
_OPT = $(CC_LOWER_OPT)
+ − 98
CPPFLAGS_DBG += -DLOGGING
+ − 99
endif
+ − 100
+ − 101
# For all platforms, do not omit the frame pointer register usage.
+ − 102
# We need this frame pointer to make it easy to walk the stacks.
+ − 103
# This should be the default on X86, but ia64 and amd64 may not have this
+ − 104
# as the default.
+ − 105
CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ − 106
CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ − 107
CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+ − 108
CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
+ − 109
LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
+ − 110
CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
+ − 111
LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
+ − 112
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+ − 113
LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
+ − 114
+ − 115
# Add in platform specific optimizations for all opt levels
+ − 116
CC_HIGHEST_OPT += $(_OPT_$(ARCH))
+ − 117
CC_HIGHER_OPT += $(_OPT_$(ARCH))
+ − 118
CC_LOWER_OPT += $(_OPT_$(ARCH))
+ − 119
+ − 120
# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+ − 121
ifdef NO_OPTIMIZATIONS
+ − 122
CC_HIGHEST_OPT = $(CC_NO_OPT)
+ − 123
CC_HIGHER_OPT = $(CC_NO_OPT)
+ − 124
CC_LOWER_OPT = $(CC_NO_OPT)
+ − 125
endif
+ − 126
+ − 127
#
+ − 128
# Selection of warning messages
+ − 129
#
+ − 130
GCC_INHIBIT = -Wno-unused -Wno-parentheses
+ − 131
GCC_STYLE =
+ − 132
GCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
+ − 133
+ − 134
#
+ − 135
# Treat compiler warnings as errors, if warnings not allowed
+ − 136
#
+ − 137
ifeq ($(COMPILER_WARNINGS_FATAL),true)
+ − 138
GCC_WARNINGS += -Werror
+ − 139
endif
+ − 140
+ − 141
#
+ − 142
# Misc compiler options
+ − 143
#
+ − 144
ifeq ($(ARCH),ppc)
+ − 145
CFLAGS_COMMON = -fsigned-char
+ − 146
else # ARCH
+ − 147
CFLAGS_COMMON = -fno-strict-aliasing
+ − 148
endif # ARCH
+ − 149
PIC_CODE_LARGE = -fPIC
+ − 150
PIC_CODE_SMALL = -fpic
+ − 151
GLOBAL_KPIC = $(PIC_CODE_LARGE)
+ − 152
ifeq ($(ARCH), amd64)
+ − 153
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS) -pipe
+ − 154
else
+ − 155
CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
+ − 156
endif
+ − 157
+ − 158
# Linux 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
+ − 159
DEBUG_FLAG = -g
+ − 160
ifeq ($(FASTDEBUG), true)
+ − 161
ifeq ($(ARCH_DATA_MODEL), 64)
+ − 162
DEBUG_FLAG = -g1
+ − 163
endif
+ − 164
endif
+ − 165
+ − 166
CFLAGS_OPT = $(POPT)
+ − 167
CFLAGS_DBG = $(DEBUG_FLAG)
+ − 168
CFLAGS_COMMON += $(CFLAGS_REQUIRED)
+ − 169
+ − 170
CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
+ − 171
CXXFLAGS_OPT = $(POPT)
+ − 172
CXXFLAGS_DBG = $(DEBUG_FLAG)
+ − 173
CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+ − 174
+ − 175
# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
+ − 176
ifeq ($(FASTDEBUG), true)
+ − 177
CFLAGS_DBG += $(CC_LOWER_OPT)
+ − 178
CXXFLAGS_DBG += $(CC_LOWER_OPT)
+ − 179
endif
+ − 180
+ − 181
CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \
+ − 182
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
+ − 183
+ − 184
ifeq ($(ARCH_DATA_MODEL), 64)
+ − 185
CPPFLAGS_COMMON += -D_LP64=1
+ − 186
endif
+ − 187
+ − 188
CPPFLAGS_OPT =
+ − 189
CPPFLAGS_DBG = -DDEBUG
+ − 190
+ − 191
ifdef LIBRARY
+ − 192
# Libraries need to locate other libraries at runtime, and you can tell
+ − 193
# a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
+ − 194
# buried inside the .so. The $ORIGIN says to look relative to where
+ − 195
# the library itself is and it can be followed with relative paths from
+ − 196
# that. By default we always look in $ORIGIN, optionally we add relative
+ − 197
# paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
+ − 198
# On Linux we add a flag -z origin, not sure if this is necessary, but
+ − 199
# doesn't seem to hurt.
+ − 200
# The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
+ − 201
# Try: 'readelf -d lib*.so' to see these settings in a library.
+ − 202
#
+ − 203
LDFLAGS_COMMON += -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN
+ − 204
LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN/%)
+ − 205
endif
+ − 206
+ − 207
EXTRA_LIBS += -lc
+ − 208
+ − 209
LDFLAGS_DEFS_OPTION = -z defs
+ − 210
LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
+ − 211
+ − 212
#
+ − 213
# -L paths for finding and -ljava
+ − 214
#
+ − 215
LDFLAGS_OPT = -Xlinker -O1
+ − 216
LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+ − 217
LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+ − 218
+ − 219
#
+ − 220
# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
+ − 221
# statically link libgcc but will print a warning with the flag. We don't
+ − 222
# want the warning, so check gcc version first.
+ − 223
#
+ − 224
CC_VER_MAJOR := $(shell $(CC) -dumpversion | $(SED) 's/egcs-//' | $(CUT) -d'.' -f1)
+ − 225
ifeq ("$(CC_VER_MAJOR)", "3")
+ − 226
OTHER_LDFLAGS += -static-libgcc
+ − 227
endif
+ − 228
+ − 229
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ − 230
# (See Rules.gmk) The gcc 5 compiler might have an option for this?
+ − 231
AUTOMATIC_PCH_OPTION =
+ − 232
+ − 233
#
+ − 234
# Post Processing of libraries/executables
+ − 235
#
+ − 236
ifeq ($(VARIANT), OPT)
+ − 237
ifneq ($(NO_STRIP), true)
+ − 238
# Debug 'strip -g' leaves local function Elf symbols (better stack traces)
+ − 239
POST_STRIP_PROCESS = $(STRIP) -g
+ − 240
endif
+ − 241
endif
+ − 242
+ − 243
#
+ − 244
# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
+ − 245
#
+ − 246
LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
+ − 247
+ − 248
#
+ − 249
# Support for Quantify.
+ − 250
#
+ − 251
ifdef QUANTIFY
+ − 252
QUANTIFY_CMD = quantify
+ − 253
QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
+ − 254
LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
+ − 255
endif
+ − 256
+ − 257
#
+ − 258
# Path and option to link against the VM, if you have to. Note that
+ − 259
# there are libraries that link against only -ljava, but they do get
+ − 260
# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
+ − 261
# the library itself should not.
+ − 262
#
+ − 263
VM_NAME = server
+ − 264
JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
+ − 265
JAVALIB = -ljava $(JVMLIB)
+ − 266
+ − 267
#
+ − 268
# We want to privatize JVM symbols on Solaris. This is so the user can
+ − 269
# write a function called FindClass and this should not override the
+ − 270
# FindClass that is inside the JVM. At this point in time we are not
+ − 271
# concerned with other JNI libraries because we hope that there will
+ − 272
# not be as many clashes there.
+ − 273
#
+ − 274
PRIVATIZE_JVM_SYMBOLS = false
+ − 275
+ − 276
USE_PTHREADS = true
+ − 277
override ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
+ − 278
override AWT_RUNPATH =
+ − 279
override HAVE_ALTZONE = false
+ − 280
override HAVE_FILIOH = false
+ − 281
override HAVE_GETHRTIME = false
+ − 282
override HAVE_GETHRVTIME = false
+ − 283
override HAVE_SIGIGNORE = true
+ − 284
override LEX_LIBRARY = -lfl
+ − 285
ifeq ($(STATIC_CXX),true)
+ − 286
override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
+ − 287
else
+ − 288
override LIBCXX = -lstdc++
+ − 289
endif
+ − 290
override LIBPOSIX4 =
+ − 291
override LIBSOCKET =
+ − 292
override LIBTHREAD =
+ − 293
override MOOT_PRIORITIES = true
+ − 294
override NO_INTERRUPTIBLE_IO = true
+ − 295
override OPENWIN_HOME = /usr/X11R6
+ − 296
ifeq ($(ARCH), amd64)
+ − 297
override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
+ − 298
else
+ − 299
override OPENWIN_LIB = $(OPENWIN_HOME)/lib
+ − 300
endif
+ − 301
override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
+ − 302
override SUN_CMM_SUBDIR =
+ − 303
override THREADS_FLAG = native
+ − 304
override USE_GNU_M4 = true
+ − 305
override USING_GNU_TAR = true
+ − 306
override WRITE_LIBVERSION = false
+ − 307
+ − 308
# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
+ − 309
# resulting resolved absolute name of the executable in the environment
+ − 310
# variable EXECNAME. That executable name is then used that to locate the
+ − 311
# installation area.
+ − 312
override USE_EXECNAME = true
+ − 313
+ − 314
# If your platform has DPS, it will have Type1 fonts too, in which case
+ − 315
# it is best to enable DPS support until such time as 2D's rasteriser
+ − 316
# can fully handle Type1 fonts in all cases. Default is "yes".
+ − 317
# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
+ − 318
# DPS (Displayable PostScript) is available on Solaris machines
+ − 319
HAVE_DPS = no
+ − 320
+ − 321
#
+ − 322
# Japanese manpages
+ − 323
#
+ − 324
JA_SOURCE_ENCODING = eucJP
+ − 325
JA_TARGET_ENCODINGS = eucJP
+ − 326
+ − 327
# Settings for the JDI - Serviceability Agent binding.
+ − 328
HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
+ − 329
SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
+ − 330
+ − 331
# The JDI - Serviceability Agent binding is not currently supported
+ − 332
# on Linux-ia64.
+ − 333
ifeq ($(ARCH), ia64)
+ − 334
INCLUDE_SA = false
+ − 335
else
+ − 336
INCLUDE_SA = true
+ − 337
endif
+ − 338