1 #
2 # Copyright (c) 2006, 2015, 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 # Due to the multiple sub-make processes that occur this logic gets
135 # executed multiple times. We reduce the noise by at least checking that
136 # BUILD_FLAVOR has been set.
137 ifneq ($(BUILD_FLAVOR),)
138 ifeq ($(BUILD_FLAVOR), product)
139 FULL_DEBUG_SYMBOLS ?= 1
140 ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
141 else
142 # debug variants always get Full Debug Symbols (if available)
143 ENABLE_FULL_DEBUG_SYMBOLS = 1
144 endif
145 _JUNK_ := $(shell \
146 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
147 MAKE_ARGS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)
148
149 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
150 ZIP_DEBUGINFO_FILES ?= 1
151 else
152 ZIP_DEBUGINFO_FILES=0
153 endif
154 MAKE_ARGS += ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)
155 endif
156
157 MAKE_ARGS += RM="$(RM)"
158 MAKE_ARGS += ZIPEXE=$(ZIPEXE)
159 MAKE_ARGS += CP="${CP}"
160 MAKE_ARGS += MV="${MV}"
161
162
163 # On 32 bit windows we build server and client, on 64 bit just server.
164 ifeq ($(JVM_VARIANTS),)
165 ifeq ($(ARCH_DATA_MODEL), 32)
166 JVM_VARIANTS:=client,server
167 JVM_VARIANT_CLIENT:=true
168 JVM_VARIANT_SERVER:=true
169 else
170 JVM_VARIANTS:=server
171 JVM_VARIANT_SERVER:=true
172 endif
173 endif
174
175 JDK_INCLUDE_SUBDIR=win32
176
177 # Library suffix
178 LIBRARY_SUFFIX=dll
179
180 # next parameters are defined in $(GAMMADIR)/make/defs.make.
181 MAKE_ARGS += VERSION_SHORT=$(VERSION_SHORT)
182 MAKE_ARGS += VERSION_MAJOR=$(VERSION_MAJOR)
183 MAKE_ARGS += VERSION_MINOR=$(VERSION_MINOR)
184 MAKE_ARGS += VERSION_SECURITY=$(VERSION_SECURITY)
185 MAKE_ARGS += VERSION_BUILD=$(VERSION_BUILD)
186
187 # JDK_DOTVER and JDK_VER are needed in Windows RC files
188 COMMA:=,
189 MAKE_ARGS += JDK_DOTVER=$(VERSION_NUMBER_FOUR_POSITIONS)
190 MAKE_ARGS += JDK_VER=$(subst .,$(COMMA),$(VERSION_NUMBER_FOUR_POSITIONS))
191
192 NMAKE= MAKEFLAGS= MFLAGS= EXTRA_CFLAGS="$(EXTRA_CFLAGS)" nmake -NOLOGO
193 ifndef SYSTEM_UNAME
194 SYSTEM_UNAME := $(shell uname)
195 export SYSTEM_UNAME
196 endif
197
198 # Check for CYGWIN
199 ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
200 USING_CYGWIN=true
201 else
202 USING_CYGWIN=false
203 endif
204 # Check for MinGW
205 ifneq (,$(findstring MINGW,$(SYSTEM_UNAME)))
206 USING_MINGW=true
207 endif
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_BIN_DIR)/server
246 EXPORT_CLIENT_DIR = $(EXPORT_BIN_DIR)/client
247
248 ifeq ($(JVM_VARIANT_SERVER),true)
249 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
250 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.$(LIBRARY_SUFFIX)
251 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
252 ifeq ($(ZIP_DEBUGINFO_FILES),1)
253 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.diz
254 else
255 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.pdb
256 EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.map
257 endif
258 endif
259 endif
260 ifeq ($(JVM_VARIANT_CLIENT),true)
261 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
262 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.$(LIBRARY_SUFFIX)
263 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
264 ifeq ($(ZIP_DEBUGINFO_FILES),1)
265 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.diz
266 else
267 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.pdb
268 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.map
269 endif
270 endif
271 endif
272
273 EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib
274
275 ifeq ($(BUILD_WIN_SA), 1)
276 EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.$(LIBRARY_SUFFIX)
277 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
278 ifeq ($(ZIP_DEBUGINFO_FILES),1)
279 EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.diz
280 else
281 EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.pdb
282 EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.map
283 endif
284 endif
285 EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
286 # Must pass this down to nmake.
287 MAKE_ARGS += BUILD_WIN_SA=1
288 endif
289
290 # Propagate compiler and tools paths from configure to nmake.
291 # Need to make sure they contain \\ and not /.
292 ifneq ($(SPEC),)
293 ifeq ($(USING_CYGWIN), true)
294 MAKE_ARGS += CXX="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(CXX)))"
295 MAKE_ARGS += LD="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(LD)))"
296 MAKE_ARGS += RC="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(RC)))"
297 MAKE_ARGS += MT="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(MT)))"
298 else
299 MAKE_ARGS += CXX="$(subst /,\\,$(CXX))"
300 MAKE_ARGS += LD="$(subst /,\\,$(LD))"
301 MAKE_ARGS += RC="$(subst /,\\,$(RC))"
302 MAKE_ARGS += MT="$(subst /,\\,$(MT))"
303 endif
304 endif