1 # 2 # Copyright (c) 2006, 2012, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 # or visit www.oracle.com if you need additional information or have any 21 # questions. 22 # 23 # 24 25 ifeq ($(HS_ALT_MAKE),) 26 ifneq ($(OPENJDK),true) 27 HS_ALT_MAKE=$(GAMMADIR)/make/closed 28 else 29 HS_ALT_MAKE=NO_SUCH_PATH 30 endif 31 endif 32 33 # The common definitions for hotspot builds. 34 35 # Optionally include SPEC file generated by configure. 36 ifneq ($(SPEC),) 37 include $(SPEC) 38 endif 39 40 # Default to verbose build logs (show all compile lines): 41 MAKE_VERBOSE=y 42 43 # Make macros for install files or preparing targets 44 CD=cd 45 CP=cp 46 ECHO=echo 47 GREP=grep 48 MKDIR=mkdir 49 MV=mv 50 PWD=pwd 51 RM=rm -f 52 SED=sed 53 TAR=tar 54 ZIPEXE=zip 55 56 define install-file 57 @$(MKDIR) -p $(@D) 58 @$(RM) $@ 59 $(CP) $< $@ 60 endef 61 define prep-target 62 @$(MKDIR) -p $(@D) 63 @$(RM) $@ 64 endef 65 66 # Default values for JVM_VARIANT* variables if configure hasn't set 67 # it already. 68 ifeq ($(JVM_VARIANTS),) 69 ifeq ($(ZERO_BUILD), true) 70 ifeq ($(SHARK_BUILD), true) 71 JVM_VARIANTS:=zeroshark 72 JVM_VARIANT_ZEROSHARK:=true 73 else 74 JVM_VARIANTS:=zero 75 JVM_VARIANT_ZERO:=true 76 endif 77 else 78 # A default is needed 79 ifeq ($(BUILD_CLIENT_ONLY), true) 80 JVM_VARIANTS:=client 81 JVM_VARIANT_CLIENT:=true 82 endif 83 # Further defaults are platform and arch specific 84 endif 85 endif 86 87 # Directory paths and user name 88 # Unless GAMMADIR is set on the command line, search upward from 89 # the current directory for a parent directory containing "src/share/vm". 90 # If that fails, look for $GAMMADIR in the environment. 91 # When the tree of subdirs is built, this setting is stored in each flags.make. 92 GAMMADIR := $(shell until ([ -d dev ]&&echo $${GAMMADIR:-/GAMMADIR/}) || ([ -d src/share/vm ]&&pwd); do cd ..; done) 93 HS_SRC_DIR=$(GAMMADIR)/src 94 HS_MAKE_DIR=$(GAMMADIR)/make 95 HS_BUILD_DIR=$(GAMMADIR)/build 96 97 ifeq ($(USER),) 98 USER=$(USERNAME) 99 endif 100 101 # hotspot version definitions 102 include $(GAMMADIR)/make/hotspot_version 103 104 # Java versions needed 105 ifeq ($(PREVIOUS_JDK_VERSION),) 106 PREVIOUS_JDK_VERSION=$(JDK_PREVIOUS_VERSION) 107 endif 108 ifeq ($(JDK_MAJOR_VERSION),) 109 JDK_MAJOR_VERSION=$(JDK_MAJOR_VER) 110 endif 111 ifeq ($(JDK_MINOR_VERSION),) 112 JDK_MINOR_VERSION=$(JDK_MINOR_VER) 113 endif 114 ifeq ($(JDK_MICRO_VERSION),) 115 JDK_MICRO_VERSION=$(JDK_MICRO_VER) 116 endif 117 ifeq ($(JDK_MKTG_VERSION),) 118 JDK_MKTG_VERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION) 119 endif 120 ifeq ($(JDK_VERSION),) 121 JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION) 122 endif 123 ifeq ($(FULL_VERSION),) 124 FULL_VERSION="$(JDK_VERSION)" 125 endif 126 127 # FULL_VERSION is only used to define JRE_RELEASE_VERSION which is used 128 # as JRE version in VM -Xinternalversion output. 129 ifndef JRE_RELEASE_VERSION 130 JRE_RELEASE_VERSION=$(FULL_VERSION) 131 endif 132 133 ifndef HOTSPOT_RELEASE_VERSION 134 HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER) 135 endif 136 137 ifdef HOTSPOT_BUILD_VERSION 138 # specified in command line 139 else 140 ifdef COOKED_BUILD_NUMBER 141 # JRE build 142 HOTSPOT_BUILD_VERSION= 143 else 144 ifdef USER_RELEASE_SUFFIX 145 HOTSPOT_BUILD_VERSION=internal-$(USER_RELEASE_SUFFIX) 146 else 147 HOTSPOT_BUILD_VERSION=internal 148 endif 149 endif 150 endif 151 152 # Windows should have OS predefined 153 ifeq ($(OS),) 154 OS := $(shell uname -s) 155 ifneq ($(findstring BSD,$(OS)),) 156 OS=bsd 157 endif 158 ifeq ($(OS), Darwin) 159 OS=bsd 160 endif 161 HOST := $(shell uname -n) 162 endif 163 164 # If not SunOS, not Linux and not BSD, assume Windows 165 ifneq ($(OS), Linux) 166 ifneq ($(OS), SunOS) 167 ifneq ($(OS), bsd) 168 OSNAME=windows 169 else 170 OSNAME=bsd 171 endif 172 else 173 OSNAME=solaris 174 endif 175 else 176 OSNAME=linux 177 endif 178 179 # Determinations of default make arguments and platform specific settings 180 MAKE_ARGS= 181 182 # ARCH_DATA_MODEL==64 is equivalent to LP64=1 183 ifeq ($(ARCH_DATA_MODEL), 64) 184 ifndef LP64 185 LP64 := 1 186 endif 187 endif 188 189 # Defaults set for product build 190 EXPORT_SUBDIR= 191 192 # Change default /java path if requested 193 ifneq ($(ALT_SLASH_JAVA),) 194 SLASH_JAVA=$(ALT_SLASH_JAVA) 195 endif 196 197 # Default OUTPUTDIR 198 OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME) 199 ifneq ($(ALT_OUTPUTDIR),) 200 OUTPUTDIR=$(ALT_OUTPUTDIR) 201 endif 202 203 # Find latest promoted JDK area 204 JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM) 205 ifneq ($(ALT_JDK_IMPORT_PATH),) 206 JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH) 207 endif 208 209 # Other parts of JDK build may require an import JDK that can be executed 210 # on the build host. For cross-compile builds we also need an import JDK 211 # that matches the target arch, so for that we set ALT_JDK_TARGET_IMPORT_PATH 212 ifneq ($(ALT_JDK_TARGET_IMPORT_PATH),) 213 JDK_IMPORT_PATH=$(ALT_JDK_TARGET_IMPORT_PATH) 214 endif 215 216 # Find JDK used for javac compiles 217 BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM) 218 ifneq ($(ALT_BOOTDIR),) 219 BOOTDIR=$(ALT_BOOTDIR) 220 endif 221 222 # Select name of the export directory and honor ALT overrides 223 EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR) 224 ifneq ($(ALT_EXPORT_PATH),) 225 EXPORT_PATH=$(ALT_EXPORT_PATH) 226 endif 227 228 # Default jdk image if one is created for you with create_jdk 229 JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM) 230 ifneq ($(ALT_JDK_IMAGE_DIR),) 231 JDK_IMAGE_DIR=$(ALT_JDK_IMAGE_DIR) 232 endif 233 234 # The platform dependent defs.make defines platform specific variable such 235 # as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined. 236 include $(GAMMADIR)/make/$(OSNAME)/makefiles/defs.make 237 238 # We are trying to put platform specific defintions 239 # files to make/$(OSNAME)/makefiles dictory. However 240 # some definitions are common for both linux and solaris, 241 # so we put them here. 242 ifneq ($(OSNAME),windows) 243 ABS_OUTPUTDIR := $(shell mkdir -p $(OUTPUTDIR); $(CD) $(OUTPUTDIR); $(PWD)) 244 ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR); $(PWD)) 245 ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR); $(PWD)) 246 ABS_OS_MAKEFILE := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME); $(PWD))/Makefile 247 248 # uname, HotSpot source directory, build directory and JDK use different names 249 # for CPU architectures. 250 # ARCH - uname output 251 # SRCARCH - where to find HotSpot cpu and os_cpu source files 252 # BUILDARCH - build directory 253 # LIBARCH - directory name in JDK/JRE 254 255 # Use uname output for SRCARCH, but deal with platform differences. If ARCH 256 # is not explicitly listed below, it is treated as x86. 257 SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc zero,$(ARCH))) 258 ARCH/ = x86 259 ARCH/sparc = sparc 260 ARCH/sparc64= sparc 261 ARCH/ia64 = ia64 262 ARCH/amd64 = x86 263 ARCH/x86_64 = x86 264 ARCH/ppc64 = ppc 265 ARCH/ppc = ppc 266 ARCH/arm = arm 267 ARCH/zero = zero 268 269 # BUILDARCH is usually the same as SRCARCH, except for sparcv9 270 BUILDARCH = $(SRCARCH) 271 ifeq ($(BUILDARCH), x86) 272 ifdef LP64 273 BUILDARCH = amd64 274 else 275 BUILDARCH = i486 276 endif 277 endif 278 ifeq ($(BUILDARCH), sparc) 279 ifdef LP64 280 BUILDARCH = sparcv9 281 endif 282 endif 283 284 # LIBARCH is 1:1 mapping from BUILDARCH 285 LIBARCH = $(LIBARCH/$(BUILDARCH)) 286 LIBARCH/i486 = i386 287 LIBARCH/amd64 = amd64 288 LIBARCH/sparc = sparc 289 LIBARCH/sparcv9 = sparcv9 290 LIBARCH/ia64 = ia64 291 LIBARCH/ppc64 = ppc 292 LIBARCH/ppc = ppc 293 LIBARCH/arm = arm 294 LIBARCH/zero = $(ZERO_LIBARCH) 295 296 LP64_ARCH = sparcv9 amd64 ia64 zero 297 endif 298 299 # Required make macro settings for all platforms 300 MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR) 301 MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR) 302 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR) 303 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE) 304 MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) 305 MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) 306 307 # Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile 308 # to overwrite the default definition since OS specific Makefile also 309 # includes this make/defs.make file. 310 MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) 311 312 # Various export sub directories 313 EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include 314 EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs 315 EXPORT_LIB_DIR = $(EXPORT_PATH)/lib 316 EXPORT_JRE_DIR = $(EXPORT_PATH)/jre 317 EXPORT_JRE_BIN_DIR = $(EXPORT_JRE_DIR)/bin 318 EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib 319 EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH) 320 321 # non-universal macosx builds need to appear universal 322 ifeq ($(OS_VENDOR), Darwin) 323 ifneq ($(MACOSX_UNIVERSAL), true) 324 EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR) 325 endif 326 endif 327 328 # Common export list of files 329 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h 330 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmticmlr.h 331 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h 332 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h 333 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h 334 335 ifndef JAVASE_EMBEDDED 336 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jfr.h 337 endif 338