1
+ − 1
#
+ − 2
# Copyright 2006-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.
+ − 8
#
+ − 9
# This code is distributed in the hope that it will be useful, but WITHOUT
+ − 10
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 11
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 12
# version 2 for more details (a copy is included in the LICENSE file that
+ − 13
# accompanied this code).
+ − 14
#
+ − 15
# You should have received a copy of the GNU General Public License version
+ − 16
# 2 along with this work; if not, write to the Free Software Foundation,
+ − 17
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ − 18
#
+ − 19
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ − 20
# CA 95054 USA or visit www.sun.com if you need additional information or
+ − 21
# have any questions.
+ − 22
#
+ − 23
#
+ − 24
+ − 25
# The common definitions for hotspot builds.
+ − 26
+ − 27
# Default to verbose build logs (show all compile lines):
+ − 28
MAKE_VERBOSE=y
+ − 29
+ − 30
# Make macros for install files or preparing targets
+ − 31
CD=cd
+ − 32
CP=cp
+ − 33
ECHO=echo
+ − 34
GREP=grep
+ − 35
MKDIR=mkdir
+ − 36
MV=mv
+ − 37
PWD=pwd
+ − 38
RM=rm -f
+ − 39
SED=sed
+ − 40
TAR=tar
+ − 41
ZIPEXE=zip
+ − 42
+ − 43
define install-file
+ − 44
@$(MKDIR) -p $(@D)
+ − 45
@$(RM) $@
+ − 46
$(CP) $< $@
+ − 47
endef
+ − 48
define prep-target
+ − 49
@$(MKDIR) -p $(@D)
+ − 50
@$(RM) $@
+ − 51
endef
+ − 52
+ − 53
# Directory paths and user name
+ − 54
# Unless GAMMADIR is set on the command line, search upward from
+ − 55
# the current directory for a parent directory containing "src/share/vm".
+ − 56
# If that fails, look for $GAMMADIR in the environment.
+ − 57
# When the tree of subdirs is built, this setting is stored in each flags.make.
+ − 58
GAMMADIR := $(shell until ([ -d dev ]&&echo $${GAMMADIR:-/GAMMADIR/}) || ([ -d src/share/vm ]&&pwd); do cd ..; done)
+ − 59
HS_SRC_DIR=$(GAMMADIR)/src
+ − 60
HS_BUILD_DIR=$(GAMMADIR)/build
+ − 61
+ − 62
ifeq ($(USER),)
+ − 63
USER=$(USERNAME)
+ − 64
endif
+ − 65
+ − 66
# hotspot version definitions
+ − 67
include $(GAMMADIR)/make/hotspot_version
+ − 68
+ − 69
# Java versions needed
+ − 70
ifeq ($(PREVIOUS_JDK_VERSION),)
+ − 71
PREVIOUS_JDK_VERSION=$(JDK_PREVIOUS_VERSION)
+ − 72
endif
+ − 73
ifeq ($(JDK_MAJOR_VERSION),)
+ − 74
JDK_MAJOR_VERSION=$(JDK_MAJOR_VER)
+ − 75
endif
+ − 76
ifeq ($(JDK_MINOR_VERSION),)
+ − 77
JDK_MINOR_VERSION=$(JDK_MINOR_VER)
+ − 78
endif
+ − 79
ifeq ($(JDK_MICRO_VERSION),)
+ − 80
JDK_MICRO_VERSION=$(JDK_MICRO_VER)
+ − 81
endif
+ − 82
ifeq ($(JDK_MKTG_VERSION),)
+ − 83
JDK_MKTG_VERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
+ − 84
endif
+ − 85
ifeq ($(JDK_VERSION),)
+ − 86
JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
+ − 87
endif
+ − 88
ifeq ($(FULL_VERSION),)
+ − 89
FULL_VERSION="$(JDK_VERSION)"
+ − 90
endif
+ − 91
+ − 92
# FULL_VERSION is only used to define JRE_RELEASE_VERSION which is used
+ − 93
# as JRE version in VM -Xinternalversion output.
+ − 94
ifndef JRE_RELEASE_VERSION
+ − 95
JRE_RELEASE_VERSION=$(FULL_VERSION)
+ − 96
endif
+ − 97
+ − 98
ifndef HOTSPOT_RELEASE_VERSION
+ − 99
HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)
+ − 100
endif
+ − 101
+ − 102
ifdef HOTSPOT_BUILD_VERSION
+ − 103
# specified in command line (PRT build)
+ − 104
else
+ − 105
ifdef JPRT_BUILD_VERSION
+ − 106
# JPR build
+ − 107
HOTSPOT_BUILD_VERSION=$(JPRT_BUILD_VERSION)
+ − 108
else
+ − 109
ifdef COOKED_BUILD_NUMBER
+ − 110
# JRE build
+ − 111
HOTSPOT_BUILD_VERSION=
+ − 112
else
+ − 113
HOTSPOT_BUILD_VERSION=internal
+ − 114
endif
+ − 115
endif
+ − 116
endif
+ − 117
+ − 118
# Windows should have OS predefined
+ − 119
ifeq ($(OS),)
+ − 120
OS := $(shell uname -s)
+ − 121
HOST := $(shell uname -n)
+ − 122
endif
+ − 123
+ − 124
# If not SunOS and not Linux, assume Windows
+ − 125
ifneq ($(OS), Linux)
+ − 126
ifneq ($(OS), SunOS)
+ − 127
OSNAME=windows
+ − 128
else
+ − 129
OSNAME=solaris
+ − 130
endif
+ − 131
else
+ − 132
OSNAME=linux
+ − 133
endif
+ − 134
+ − 135
# Determinations of default make arguments and platform specific settings
+ − 136
MAKE_ARGS=
+ − 137
+ − 138
# ARCH_DATA_MODEL==64 is equivalent to LP64=1
+ − 139
ifeq ($(ARCH_DATA_MODEL), 64)
+ − 140
ifndef LP64
+ − 141
LP64 := 1
+ − 142
endif
+ − 143
endif
+ − 144
+ − 145
# Defaults set for product build
+ − 146
EXPORT_SUBDIR=
+ − 147
+ − 148
# Change default /java path if requested
+ − 149
ifneq ($(ALT_SLASH_JAVA),)
+ − 150
SLASH_JAVA=$(ALT_SLASH_JAVA)
+ − 151
endif
+ − 152
+ − 153
# Default OUTPUTDIR
+ − 154
OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME)
+ − 155
ifneq ($(ALT_OUTPUTDIR),)
+ − 156
OUTPUTDIR=$(ALT_OUTPUTDIR)
+ − 157
endif
+ − 158
+ − 159
# Find latest promoted JDK area
+ − 160
JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM)
+ − 161
ifneq ($(ALT_JDK_IMPORT_PATH),)
+ − 162
JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH)
+ − 163
endif
+ − 164
+ − 165
# Find JDK used for javac compiles
+ − 166
BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM)
+ − 167
ifneq ($(ALT_BOOTDIR),)
+ − 168
BOOTDIR=$(ALT_BOOTDIR)
+ − 169
endif
+ − 170
+ − 171
# The platform dependent defs.make defines platform specific variable such
+ − 172
# as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined.
+ − 173
include $(GAMMADIR)/build/$(OSNAME)/makefiles/defs.make
+ − 174
+ − 175
# We are trying to put platform specific defintions
+ − 176
# files to build/$(OSNAME)/makefiles dictory. However
+ − 177
# some definitions are common for both linux and solaris,
+ − 178
# so we put them here.
+ − 179
ifneq ($(OSNAME),windows)
+ − 180
ABS_OUTPUTDIR := $(shell $(CD) $(OUTPUTDIR); $(PWD))
+ − 181
ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR); $(PWD))
+ − 182
ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR); $(PWD))
+ − 183
ABS_OS_MAKEFILE := $(shell $(CD) $(HS_BUILD_DIR)/$(OSNAME); $(PWD))/Makefile
+ − 184
+ − 185
# uname, HotSpot source directory, build directory and JDK use different names
+ − 186
# for CPU architectures.
+ − 187
# ARCH - uname output
+ − 188
# SRCARCH - where to find HotSpot cpu and os_cpu source files
+ − 189
# BUILDARCH - build directory
+ − 190
# LIBARCH - directory name in JDK/JRE
+ − 191
+ − 192
# Use uname output for SRCARCH, but deal with platform differences. If ARCH
+ − 193
# is not explicitly listed below, it is treated as x86.
+ − 194
SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH)))
+ − 195
ARCH/ = x86
+ − 196
ARCH/sparc = sparc
+ − 197
ARCH/sparc64= sparc
+ − 198
ARCH/ia64 = ia64
+ − 199
ARCH/amd64 = x86
+ − 200
ARCH/x86_64 = x86
+ − 201
+ − 202
# BUILDARCH is usually the same as SRCARCH, except for sparcv9
+ − 203
BUILDARCH = $(SRCARCH)
+ − 204
ifeq ($(BUILDARCH), x86)
+ − 205
ifdef LP64
+ − 206
BUILDARCH = amd64
+ − 207
else
+ − 208
BUILDARCH = i486
+ − 209
endif
+ − 210
endif
+ − 211
ifeq ($(BUILDARCH), sparc)
+ − 212
ifdef LP64
+ − 213
BUILDARCH = sparcv9
+ − 214
endif
+ − 215
endif
+ − 216
+ − 217
# LIBARCH is 1:1 mapping from BUILDARCH
+ − 218
LIBARCH = $(LIBARCH/$(BUILDARCH))
+ − 219
LIBARCH/i486 = i386
+ − 220
LIBARCH/amd64 = amd64
+ − 221
LIBARCH/sparc = sparc
+ − 222
LIBARCH/sparcv9 = sparcv9
+ − 223
LIBARCH/ia64 = ia64
+ − 224
+ − 225
LP64_ARCH = sparcv9 amd64 ia64
+ − 226
endif
+ − 227
+ − 228
# Required make macro settings for all platforms
+ − 229
MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR)
+ − 230
MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
+ − 231
MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
+ − 232
MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION)
+ − 233
MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+ − 234
+ − 235
# Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile
+ − 236
# to overwrite the default definition since OS specific Makefile also
+ − 237
# includes this make/defs.make file.
+ − 238
MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION)
+ − 239
+ − 240
# Select name of export directory
+ − 241
EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR)
+ − 242
ifneq ($(ALT_EXPORT_PATH),)
+ − 243
EXPORT_PATH=$(ALT_EXPORT_PATH)
+ − 244
endif
+ − 245
+ − 246
# Default jdk image if one is created for you with create_jdk
+ − 247
JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM)
+ − 248
+ − 249
# Various export sub directories
+ − 250
EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include
+ − 251
EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs
+ − 252
EXPORT_LIB_DIR = $(EXPORT_PATH)/lib
+ − 253
EXPORT_JRE_DIR = $(EXPORT_PATH)/jre
+ − 254
EXPORT_JRE_BIN_DIR = $(EXPORT_JRE_DIR)/bin
+ − 255
EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib
+ − 256
EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH)
+ − 257
+ − 258
# Common export list of files
+ − 259
EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h
+ − 260
EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h
+ − 261
EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h
+ − 262
EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h