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 # The common definitions for hotspot windows builds. 26 # Include the top level defs.make under make directory instead of this one. 27 # This file is included into make/defs.make. 28 # On windows it is only used to construct parameters for 29 # make/windows/build.make when make/Makefile is used to build VM. 30 31 SLASH_JAVA ?= J: 32 PATH_SEP = ; 33 34 # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name 35 ifeq ($(ARCH_DATA_MODEL),32) 36 ARCH_DATA_MODEL=32 37 PLATFORM=windows-i586 38 VM_PLATFORM=windows_i486 39 HS_ARCH=x86 40 MAKE_ARGS += ARCH=x86 41 MAKE_ARGS += BUILDARCH=i486 42 MAKE_ARGS += Platform_arch=x86 43 MAKE_ARGS += Platform_arch_model=x86_32 44 endif 45 46 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) x86),) 47 ARCH_DATA_MODEL=32 48 PLATFORM=windows-i586 49 VM_PLATFORM=windows_i486 50 HS_ARCH=x86 51 MAKE_ARGS += ARCH=x86 52 MAKE_ARGS += BUILDARCH=i486 53 MAKE_ARGS += Platform_arch=x86 54 MAKE_ARGS += Platform_arch_model=x86_32 55 endif 56 57 ifneq ($(ARCH_DATA_MODEL),32) 58 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) ia64),) 59 ARCH_DATA_MODEL=64 60 PLATFORM=windows-ia64 61 VM_PLATFORM=windows_ia64 62 HS_ARCH=ia64 63 MAKE_ARGS += LP64=1 64 MAKE_ARGS += ARCH=ia64 65 MAKE_ARGS += BUILDARCH=ia64 66 MAKE_ARGS += Platform_arch=ia64 67 MAKE_ARGS += Platform_arch_model=ia64 68 endif 69 70 # http://support.microsoft.com/kb/888731 : this can be either 71 # AMD64 for AMD, or EM64T for Intel chips. 72 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) AMD64),) 73 ARCH_DATA_MODEL=64 74 PLATFORM=windows-amd64 75 VM_PLATFORM=windows_amd64 76 HS_ARCH=x86 77 MAKE_ARGS += LP64=1 78 MAKE_ARGS += ARCH=x86 79 MAKE_ARGS += BUILDARCH=amd64 80 MAKE_ARGS += Platform_arch=x86 81 MAKE_ARGS += Platform_arch_model=x86_64 82 endif 83 84 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) EM64T),) 85 ARCH_DATA_MODEL=64 86 PLATFORM=windows-amd64 87 VM_PLATFORM=windows_amd64 88 HS_ARCH=x86 89 MAKE_ARGS += LP64=1 90 MAKE_ARGS += ARCH=x86 91 MAKE_ARGS += BUILDARCH=amd64 92 MAKE_ARGS += Platform_arch=x86 93 MAKE_ARGS += Platform_arch_model=x86_64 94 endif 95 96 # NB later OS versions than 2003 may report "Intel64" 97 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) Intel64),) 98 ARCH_DATA_MODEL=64 99 PLATFORM=windows-amd64 100 VM_PLATFORM=windows_amd64 101 HS_ARCH=x86 102 MAKE_ARGS += LP64=1 103 MAKE_ARGS += ARCH=x86 104 MAKE_ARGS += BUILDARCH=amd64 105 MAKE_ARGS += Platform_arch=x86 106 MAKE_ARGS += Platform_arch_model=x86_64 107 endif 108 endif 109 110 # Full Debug Symbols has been enabled on Windows since JDK1.4.1 so 111 # there is no need for an "earlier than JDK7 check". 112 # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product 113 # builds is enabled with debug info files ZIP'ed to save space. For 114 # BUILD_FLAVOR != product builds, FDS is always enabled, after all a 115 # debug build without debug info isn't very useful. 116 # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled. 117 # 118 # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be 119 # disabled for a BUILD_FLAVOR == product build. 120 # 121 # Note: Use of a different variable name for the FDS override option 122 # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS 123 # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass 124 # in options via environment variables, use of distinct variables 125 # prevents strange behaviours. For example, in a BUILD_FLAVOR != 126 # product build, the FULL_DEBUG_SYMBOLS environment variable will be 127 # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If 128 # the same variable name is used, then different values can be picked 129 # up by different parts of the build. Just to be clear, we only need 130 # two variable names because the incoming option value can be 131 # overridden in some situations, e.g., a BUILD_FLAVOR != product 132 # build. 133 134 ifeq ($(BUILD_FLAVOR), product) 135 FULL_DEBUG_SYMBOLS ?= 1 136 ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS) 137 else 138 # debug variants always get Full Debug Symbols (if available) 139 ENABLE_FULL_DEBUG_SYMBOLS = 1 140 endif 141 _JUNK_ := $(shell \ 142 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)") 143 MAKE_ARGS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) 144 145 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 146 ZIP_DEBUGINFO_FILES ?= 1 147 else 148 ZIP_DEBUGINFO_FILES=0 149 endif 150 MAKE_ARGS += ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) 151 MAKE_ARGS += RM="$(RM)" 152 MAKE_ARGS += ZIPEXE=$(ZIPEXE) 153 154 # On 32 bit windows we build server, client and kernel, on 64 bit just server. 155 ifeq ($(JVM_VARIANTS),) 156 ifeq ($(ARCH_DATA_MODEL), 32) 157 JVM_VARIANTS:=client,server 158 JVM_VARIANT_CLIENT:=true 159 JVM_VARIANT_SERVER:=true 160 else 161 JVM_VARIANTS:=server 162 JVM_VARIANT_SERVER:=true 163 endif 164 endif 165 166 JDK_INCLUDE_SUBDIR=win32 167 168 # Library suffix 169 LIBRARY_SUFFIX=dll 170 171 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined 172 # and added to MAKE_ARGS list in $(GAMMADIR)/make/defs.make. 173 174 # next parameters are defined in $(GAMMADIR)/make/defs.make. 175 MAKE_ARGS += JDK_MKTG_VERSION=$(JDK_MKTG_VERSION) 176 MAKE_ARGS += JDK_MAJOR_VER=$(JDK_MAJOR_VERSION) 177 MAKE_ARGS += JDK_MINOR_VER=$(JDK_MINOR_VERSION) 178 MAKE_ARGS += JDK_MICRO_VER=$(JDK_MICRO_VERSION) 179 180 ifdef COOKED_JDK_UPDATE_VERSION 181 MAKE_ARGS += JDK_UPDATE_VER=$(COOKED_JDK_UPDATE_VERSION) 182 endif 183 184 # COOKED_BUILD_NUMBER should only be set if we have a numeric 185 # build number. It must not be zero padded. 186 ifdef COOKED_BUILD_NUMBER 187 MAKE_ARGS += JDK_BUILD_NUMBER=$(COOKED_BUILD_NUMBER) 188 endif 189 190 NMAKE= MAKEFLAGS= MFLAGS= nmake -NOLOGO 191 ifndef SYSTEM_UNAME 192 SYSTEM_UNAME := $(shell uname) 193 export SYSTEM_UNAME 194 endif 195 196 # Check for CYGWIN 197 ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME))) 198 USING_CYGWIN=true 199 else 200 USING_CYGWIN=false 201 endif 202 # Check for MinGW 203 ifneq (,$(findstring MINGW,$(SYSTEM_UNAME))) 204 USING_MINGW=true 205 endif 206 # FIXUP: The subdirectory for a debug build is NOT the same on all platforms 207 VM_DEBUG=debug 208 209 # Windows wants particular paths due to nmake (must be after macros defined) 210 # It is important that gnumake invokes nmake with C:\\...\\ formated 211 # strings so that nmake gets C:\...\ style strings. 212 # Check for CYGWIN 213 ifeq ($(USING_CYGWIN), true) 214 ABS_OUTPUTDIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(OUTPUTDIR)")) 215 ABS_BOOTDIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(BOOTDIR)")) 216 ABS_GAMMADIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(GAMMADIR)")) 217 ABS_OS_MAKEFILE := $(shell /bin/cygpath -m -a "$(HS_MAKE_DIR)/$(OSNAME)")/build.make 218 else ifeq ($(USING_MINGW), true) 219 ABS_OUTPUTDIR := $(shell $(CD) $(OUTPUTDIR);$(PWD)) 220 ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR);$(PWD)) 221 ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR);$(PWD)) 222 ABS_OS_MAKEFILE := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME);$(PWD))/build.make 223 else 224 ABS_OUTPUTDIR := $(subst /,\\,$(shell $(CD) $(OUTPUTDIR);$(PWD))) 225 ABS_BOOTDIR := $(subst /,\\,$(shell $(CD) $(BOOTDIR);$(PWD))) 226 ABS_GAMMADIR := $(subst /,\\,$(shell $(CD) $(GAMMADIR);$(PWD))) 227 ABS_OS_MAKEFILE := $(subst /,\\,$(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME);$(PWD))/build.make) 228 endif 229 230 # Disable building SA on windows until we are sure 231 # we want to release it. If we build it here, 232 # the SDK makefiles will copy it over and put it into 233 # the created image. 234 BUILD_WIN_SA = 1 235 ifneq ($(ALT_BUILD_WIN_SA),) 236 BUILD_WIN_SA = $(ALT_BUILD_WIN_SA) 237 endif 238 239 ifeq ($(BUILD_WIN_SA), 1) 240 ifeq ($(ARCH),ia64) 241 BUILD_WIN_SA = 0 242 endif 243 endif 244 245 EXPORT_SERVER_DIR = $(EXPORT_JRE_BIN_DIR)/server 246 EXPORT_CLIENT_DIR = $(EXPORT_JRE_BIN_DIR)/client 247 EXPORT_KERNEL_DIR = $(EXPORT_JRE_BIN_DIR)/kernel 248 249 ifeq ($(JVM_VARIANT_SERVER),true) 250 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt 251 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.$(LIBRARY_SUFFIX) 252 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 253 ifeq ($(ZIP_DEBUGINFO_FILES),1) 254 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.diz 255 else 256 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.pdb 257 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.map 258 endif 259 endif 260 EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib 261 endif 262 ifeq ($(JVM_VARIANT_CLIENT),true) 263 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt 264 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.$(LIBRARY_SUFFIX) 265 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 266 ifeq ($(ZIP_DEBUGINFO_FILES),1) 267 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.diz 268 else 269 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.pdb 270 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.map 271 endif 272 endif 273 endif 274 ifeq ($(JVM_VARIANT_KERNEL),true) 275 EXPORT_LIST += $(EXPORT_KERNEL_DIR)/Xusage.txt 276 EXPORT_LIST += $(EXPORT_KERNEL_DIR)/jvm.$(LIBRARY_SUFFIX) 277 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 278 ifeq ($(ZIP_DEBUGINFO_FILES),1) 279 EXPORT_LIST += $(EXPORT_KERNEL_DIR)/jvm.diz 280 else 281 EXPORT_LIST += $(EXPORT_KERNEL_DIR)/jvm.pdb 282 EXPORT_LIST += $(EXPORT_KERNEL_DIR)/jvm.map 283 endif 284 endif 285 endif 286 287 EXPORT_LIST += $(EXPORT_JRE_LIB_DIR)/wb.jar 288 289 ifeq ($(BUILD_WIN_SA), 1) 290 EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.$(LIBRARY_SUFFIX) 291 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 292 ifeq ($(ZIP_DEBUGINFO_FILES),1) 293 EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.diz 294 else 295 EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.pdb 296 EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.map 297 endif 298 endif 299 EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar 300 # Must pass this down to nmake. 301 MAKE_ARGS += BUILD_WIN_SA=1 302 endif 303 304 # Propagate compiler and tools paths from configure to nmake. 305 # Need to make sure they contain \\ and not /. 306 ifneq ($(SPEC),) 307 ifeq ($(USING_CYGWIN), true) 308 MAKE_ARGS += CXX="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(CXX)))" 309 MAKE_ARGS += LD="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(LD)))" 310 MAKE_ARGS += RC="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(RC)))" 311 MAKE_ARGS += MT="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(MT)))" 312 else 313 MAKE_ARGS += CXX="$(subst /,\\,$(CXX))" 314 MAKE_ARGS += LD="$(subst /,\\,$(LD))" 315 MAKE_ARGS += RC="$(subst /,\\,$(RC))" 316 MAKE_ARGS += MT="$(subst /,\\,$(MT))" 317 endif 318 endif