Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/make/windows/makefiles/compile.make
32285 views
1
#
2
# Copyright (c) 1997, 2013, 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
# Generic compiler settings
26
!if "x$(CXX)" == "x"
27
CXX=cl.exe
28
!endif
29
30
# CXX Flags: (these vary slightly from VC6->VS2003->VS2005 compilers)
31
# /nologo Supress copyright message at every cl.exe startup
32
# /W3 Warning level 3
33
# /Zi Include debugging information
34
# /WX Treat any warning error as a fatal error
35
# /MD Use dynamic multi-threaded runtime (msvcrt.dll or msvc*NN.dll)
36
# /MTd Use static multi-threaded runtime debug versions
37
# /O1 Optimize for size (/Os), skips /Oi
38
# /O2 Optimize for speed (/Ot), adds /Oi to /O1
39
# /Ox Old "all optimizations flag" for VC6 (in /O1)
40
# /Oy Use frame pointer register as GP reg (in /Ox and /O1)
41
# /GF Merge string constants and put in read-only memory (in /O1)
42
# /Gy Func level link (in /O1, allows for link-time func ordering)
43
# /Gs Inserts stack probes (in /O1)
44
# /GS Inserts security stack checks in some functions (VS2005 default)
45
# /Oi Use intrinsics (in /O2)
46
# /Od Disable all optimizations
47
# /MP Use multiple cores for compilation
48
#
49
# NOTE: Normally following any of the above with a '-' will turn off that flag
50
#
51
# 6655385: For VS2003/2005 we now specify /Oy- (disable frame pointer
52
# omission.) This has little to no effect on performance while vastly
53
# improving the quality of crash log stack traces involving jvm.dll.
54
55
# These are always used in all compiles
56
CXX_FLAGS=$(EXTRA_CFLAGS) /nologo /W3 /WX
57
58
# Let's add debug information when Full Debug Symbols is enabled
59
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
60
CXX_FLAGS=$(CXX_FLAGS) /Zi
61
!endif
62
63
# Based on BUILDARCH we add some flags and select the default compiler name
64
!if "$(BUILDARCH)" == "ia64"
65
MACHINE=IA64
66
DEFAULT_COMPILER_NAME=VS2003
67
CXX_FLAGS=$(CXX_FLAGS) /D "CC_INTERP" /D "_LP64" /D "IA64"
68
!endif
69
70
!if "$(BUILDARCH)" == "amd64"
71
MACHINE=AMD64
72
DEFAULT_COMPILER_NAME=VS2005
73
CXX_FLAGS=$(CXX_FLAGS) /D "_LP64" /D "AMD64"
74
LP64=1
75
!endif
76
77
!if "$(BUILDARCH)" == "i486"
78
MACHINE=I386
79
DEFAULT_COMPILER_NAME=VS2003
80
CXX_FLAGS=$(CXX_FLAGS) /D "IA32"
81
!endif
82
83
# Sanity check, this is the default if not amd64, ia64, or i486
84
!ifndef DEFAULT_COMPILER_NAME
85
CXX=ARCH_ERROR
86
!endif
87
88
CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS"
89
# Must specify this for sharedRuntimeTrig.cpp
90
CXX_FLAGS=$(CXX_FLAGS) /D "VM_LITTLE_ENDIAN"
91
92
# Used for platform dispatching
93
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_FAMILY_windows
94
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_ARCH_$(Platform_arch)
95
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_ARCH_MODEL_$(Platform_arch_model)
96
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_ARCH_windows_$(Platform_arch)
97
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_ARCH_MODEL_windows_$(Platform_arch_model)
98
CXX_FLAGS=$(CXX_FLAGS) /D TARGET_COMPILER_visCPP
99
100
101
# MSC_VER is a 4 digit number that tells us what compiler is being used
102
# and is generated when the local.make file is created by build.make
103
# via the script get_msc_ver.sh
104
#
105
# If MSC_VER is set, it overrides the above default setting.
106
# But it should be set.
107
# Possible values:
108
# 1200 is for VC6
109
# 1300 and 1310 is VS2003 or VC7
110
# 1399 is our fake number for the VS2005 compiler that really isn't 1400
111
# 1400 is for VS2005
112
# 1500 is for VS2008
113
# 1600 is for VS2010
114
# 1700 is for VS2012
115
# Do not confuse this MSC_VER with the predefined macro _MSC_VER that the
116
# compiler provides, when MSC_VER==1399, _MSC_VER will be 1400.
117
# Normally they are the same, but a pre-release of the VS2005 compilers
118
# in the Windows 64bit Platform SDK said it was 1400 when it was really
119
# closer to VS2003 in terms of option spellings, so we use 1399 for that
120
# 1400 version that really isn't 1400.
121
# See the file get_msc_ver.sh for more info.
122
!if "x$(MSC_VER)" == "x"
123
COMPILER_NAME=$(DEFAULT_COMPILER_NAME)
124
!else
125
!if "$(MSC_VER)" == "1200"
126
COMPILER_NAME=VC6
127
!endif
128
!if "$(MSC_VER)" == "1300"
129
COMPILER_NAME=VS2003
130
!endif
131
!if "$(MSC_VER)" == "1310"
132
COMPILER_NAME=VS2003
133
!endif
134
!if "$(MSC_VER)" == "1399"
135
# Compiler might say 1400, but if it's 14.00.30701, it isn't really VS2005
136
COMPILER_NAME=VS2003
137
!endif
138
!if "$(MSC_VER)" == "1400"
139
COMPILER_NAME=VS2005
140
!endif
141
!if "$(MSC_VER)" == "1500"
142
COMPILER_NAME=VS2008
143
!endif
144
!if "$(MSC_VER)" == "1600"
145
COMPILER_NAME=VS2010
146
!endif
147
!if "$(MSC_VER)" == "1700"
148
COMPILER_NAME=VS2012
149
!endif
150
!if "$(MSC_VER)" == "1800"
151
COMPILER_NAME=VS2013
152
!endif
153
!if "$(MSC_VER)" == "1900"
154
COMPILER_NAME=VS2015
155
!endif
156
!if "$(MSC_VER)" == "1912"
157
COMPILER_NAME=VS2017
158
!endif
159
!if "$(MSC_VER)" == "1913"
160
COMPILER_NAME=VS2017
161
!endif
162
!if "$(MSC_VER)" == "1914"
163
COMPILER_NAME=VS2017
164
!endif
165
!if "$(MSC_VER)" == "1915"
166
COMPILER_NAME=VS2017
167
!endif
168
!if "$(MSC_VER)" == "1916"
169
COMPILER_NAME=VS2017
170
!endif
171
!endif
172
173
# By default, we do not want to use the debug version of the msvcrt.dll file
174
# but if MFC_DEBUG is defined in the environment it will be used.
175
MS_RUNTIME_OPTION = /MD
176
!if "$(MFC_DEBUG)" == "true"
177
MS_RUNTIME_OPTION = /MTd /D "_DEBUG"
178
!endif
179
180
# VS2012 and later won't work with:
181
# /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
182
!if "$(MSC_VER)" < "1700"
183
# Always add the _STATIC_CPPLIB flag
184
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
185
MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION)
186
!endif
187
CXX_FLAGS=$(CXX_FLAGS) $(MS_RUNTIME_OPTION)
188
189
# How /GX option is spelled
190
GX_OPTION = /GX
191
192
# Optimization settings for various versions of the compilers and types of
193
# builds. Three basic sets of settings: product, fastdebug, and debug.
194
# These get added into CXX_FLAGS as needed by other makefiles.
195
!if "$(COMPILER_NAME)" == "VC6"
196
PRODUCT_OPT_OPTION = /Ox /Os /Gy /GF
197
FASTDEBUG_OPT_OPTION = /Ox /Os /Gy /GF
198
DEBUG_OPT_OPTION = /Od
199
!endif
200
201
!if "$(COMPILER_NAME)" == "VS2003"
202
PRODUCT_OPT_OPTION = /O2 /Oy-
203
FASTDEBUG_OPT_OPTION = /O2 /Oy-
204
DEBUG_OPT_OPTION = /Od
205
SAFESEH_FLAG = /SAFESEH
206
!endif
207
208
!if "$(COMPILER_NAME)" == "VS2005"
209
PRODUCT_OPT_OPTION = /O2 /Oy-
210
FASTDEBUG_OPT_OPTION = /O2 /Oy-
211
DEBUG_OPT_OPTION = /Od
212
GX_OPTION = /EHsc
213
# This VS2005 compiler has /GS as a default and requires bufferoverflowU.lib
214
# on the link command line, otherwise we get missing __security_check_cookie
215
# externals at link time. Even with /GS-, you need bufferoverflowU.lib.
216
# NOTE: Currently we decided to not use /GS-
217
BUFFEROVERFLOWLIB = bufferoverflowU.lib
218
LD_FLAGS = /manifest $(LD_FLAGS) $(BUFFEROVERFLOWLIB)
219
# Manifest Tool - used in VS2005 and later to adjust manifests stored
220
# as resources inside build artifacts.
221
!if "x$(MT)" == "x"
222
MT=mt.exe
223
!endif
224
SAFESEH_FLAG = /SAFESEH
225
!endif
226
227
!if "$(COMPILER_NAME)" == "VS2008"
228
PRODUCT_OPT_OPTION = /O2 /Oy-
229
FASTDEBUG_OPT_OPTION = /O2 /Oy-
230
DEBUG_OPT_OPTION = /Od
231
GX_OPTION = /EHsc
232
LD_FLAGS = /manifest $(LD_FLAGS)
233
MP_FLAG = /MP
234
# Manifest Tool - used in VS2005 and later to adjust manifests stored
235
# as resources inside build artifacts.
236
!if "x$(MT)" == "x"
237
MT=mt.exe
238
!endif
239
SAFESEH_FLAG = /SAFESEH
240
!endif
241
242
!if "$(COMPILER_NAME)" == "VS2010"
243
PRODUCT_OPT_OPTION = /O2 /Oy-
244
FASTDEBUG_OPT_OPTION = /O2 /Oy-
245
DEBUG_OPT_OPTION = /Od
246
GX_OPTION = /EHsc
247
LD_FLAGS = /manifest $(LD_FLAGS)
248
MP_FLAG = /MP
249
# Manifest Tool - used in VS2005 and later to adjust manifests stored
250
# as resources inside build artifacts.
251
!if "x$(MT)" == "x"
252
MT=mt.exe
253
!endif
254
!if "$(BUILDARCH)" == "i486"
255
LD_FLAGS = /SAFESEH $(LD_FLAGS)
256
!endif
257
!endif
258
259
!if "$(COMPILER_NAME)" == "VS2012"
260
PRODUCT_OPT_OPTION = /O2 /Oy-
261
FASTDEBUG_OPT_OPTION = /O2 /Oy-
262
DEBUG_OPT_OPTION = /Od
263
GX_OPTION = /EHsc
264
LD_FLAGS = /manifest $(LD_FLAGS)
265
MP_FLAG = /MP
266
# Manifest Tool - used in VS2005 and later to adjust manifests stored
267
# as resources inside build artifacts.
268
!if "x$(MT)" == "x"
269
MT=mt.exe
270
!endif
271
SAFESEH_FLAG = /SAFESEH
272
!endif
273
274
!if "$(COMPILER_NAME)" == "VS2013"
275
PRODUCT_OPT_OPTION = /O2 /Oy-
276
FASTDEBUG_OPT_OPTION = /O2 /Oy-
277
DEBUG_OPT_OPTION = /Od
278
GX_OPTION = /EHsc
279
LD_FLAGS = /manifest $(LD_FLAGS)
280
MP_FLAG = /MP
281
# Manifest Tool - used in VS2005 and later to adjust manifests stored
282
# as resources inside build artifacts.
283
!if "x$(MT)" == "x"
284
MT=mt.exe
285
!endif
286
SAFESEH_FLAG = /SAFESEH
287
!endif
288
289
290
!if "$(COMPILER_NAME)" == "VS2015"
291
PRODUCT_OPT_OPTION = /O2 /Oy-
292
FASTDEBUG_OPT_OPTION = /O2 /Oy-
293
DEBUG_OPT_OPTION = /Od
294
GX_OPTION = /EHsc
295
LD_FLAGS = /manifest $(LD_FLAGS)
296
MP_FLAG = /MP
297
# Manifest Tool - used in VS2005 and later to adjust manifests stored
298
# as resources inside build artifacts.
299
!if "x$(MT)" == "x"
300
MT=mt.exe
301
!endif
302
SAFESEH_FLAG = /SAFESEH
303
!endif
304
305
!if "$(COMPILER_NAME)" == "VS2017"
306
PRODUCT_OPT_OPTION = /O2 /Oy-
307
FASTDEBUG_OPT_OPTION = /O2 /Oy-
308
DEBUG_OPT_OPTION = /Od
309
GX_OPTION = /EHsc
310
LD_FLAGS = /manifest $(LD_FLAGS)
311
MP_FLAG = /MP
312
# Manifest Tool - used in VS2005 and later to adjust manifests stored
313
# as resources inside build artifacts.
314
!if "x$(MT)" == "x"
315
MT=mt.exe
316
!endif
317
SAFESEH_FLAG = /SAFESEH
318
!endif
319
320
!if "$(BUILDARCH)" == "i486"
321
LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS)
322
!endif
323
324
CXX_FLAGS = $(CXX_FLAGS) $(MP_FLAG)
325
326
!if "$(ENABLE_JFR)" == "true"
327
INCLUDE_JFR=1
328
!else
329
INCLUDE_JFR=0
330
!endif
331
CXX_FLAGS=$(CXX_FLAGS) /D INCLUDE_JFR=$(INCLUDE_JFR)
332
333
# If NO_OPTIMIZATIONS is defined in the environment, turn everything off
334
!ifdef NO_OPTIMIZATIONS
335
PRODUCT_OPT_OPTION = $(DEBUG_OPT_OPTION)
336
FASTDEBUG_OPT_OPTION = $(DEBUG_OPT_OPTION)
337
!endif
338
339
# Generic linker settings
340
!if "x$(LD)" == "x"
341
LD=link.exe
342
!endif
343
LD_FLAGS= $(LD_FLAGS) kernel32.lib user32.lib gdi32.lib winspool.lib \
344
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
345
uuid.lib Wsock32.lib winmm.lib version.lib /nologo /machine:$(MACHINE) /opt:REF \
346
/opt:ICF,8
347
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
348
LD_FLAGS= $(LD_FLAGS) /map /debug
349
!endif
350
351
352
!if $(MSC_VER) >= 1600
353
LD_FLAGS= $(LD_FLAGS) psapi.lib
354
!endif
355
356
# Resource compiler settings
357
!if "x$(RC)" == "x"
358
RC=rc.exe
359
!endif
360
RC_FLAGS=/D "HS_VER=$(HS_VER)" \
361
/D "HS_DOTVER=$(HS_DOTVER)" \
362
/D "HS_BUILD_ID=$(HS_BUILD_ID)" \
363
/D "JDK_VER=$(JDK_VER)" \
364
/D "JDK_DOTVER=$(JDK_DOTVER)" \
365
/D "HS_COMPANY=$(COMPANY_NAME)" \
366
/D "HS_FILEDESC=$(HS_FILEDESC)" \
367
/D "HS_COPYRIGHT=$(HS_COPYRIGHT)" \
368
/D "HS_FNAME=$(HS_FNAME)" \
369
/D "HS_INTERNAL_NAME=$(HS_INTERNAL_NAME)" \
370
/D "HS_NAME=$(HS_NAME)"
371
372
# Need this to match the CXX_FLAGS settings
373
!if "$(MFC_DEBUG)" == "true"
374
RC_FLAGS = $(RC_FLAGS) /D "_DEBUG"
375
!endif
376
377