make/defs.make

Thu, 20 Nov 2008 16:56:09 -0800

author
ysr
date
Thu, 20 Nov 2008 16:56:09 -0800
changeset 888
c96030fff130
parent 670
9c2ecc2ffb12
child 1445
354d3184f6b2
child 1619
7fbf850d87b7
permissions
-rw-r--r--

6684579: SoftReference processing can be made more efficient
Summary: For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.
Reviewed-by: jmasa

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

mercurial