Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/make/linux/makefiles/defs.make
32284 views
1
#
2
# Copyright (c) 2006, 2021, 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 linux 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
29
SLASH_JAVA ?= /java
30
31
# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
32
33
# ARCH can be set explicitly in spec.gmk
34
ifndef ARCH
35
ARCH := $(shell uname -m)
36
# Fold little endian PowerPC64 into big-endian (if ARCH is set in
37
# hotspot-spec.gmk, this will be done by the configure script).
38
ifeq ($(ARCH),ppc64le)
39
ARCH := ppc64
40
endif
41
endif
42
43
PATH_SEP ?= :
44
45
ifeq ($(LP64), 1)
46
ARCH_DATA_MODEL ?= 64
47
else
48
ARCH_DATA_MODEL ?= 32
49
endif
50
51
# zero
52
ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
53
ifeq ($(ARCH_DATA_MODEL), 64)
54
MAKE_ARGS += LP64=1
55
endif
56
PLATFORM = linux-zero
57
VM_PLATFORM = linux_$(subst i386,i486,$(ZERO_LIBARCH))
58
HS_ARCH = zero
59
ARCH = zero
60
endif
61
62
# ia64
63
ifeq ($(ARCH), ia64)
64
ARCH_DATA_MODEL = 64
65
MAKE_ARGS += LP64=1
66
PLATFORM = linux-ia64
67
VM_PLATFORM = linux_ia64
68
HS_ARCH = ia64
69
endif
70
71
# sparc
72
ifneq (,$(findstring $(ARCH), sparc))
73
ifeq ($(ARCH_DATA_MODEL), 64)
74
ARCH_DATA_MODEL = 64
75
MAKE_ARGS += LP64=1
76
PLATFORM = linux-sparcv9
77
VM_PLATFORM = linux_sparcv9
78
else
79
ARCH_DATA_MODEL = 32
80
PLATFORM = linux-sparc
81
VM_PLATFORM = linux_sparc
82
endif
83
HS_ARCH = sparc
84
endif
85
86
# i686/i586 and amd64/x86_64
87
ifneq (,$(findstring $(ARCH), amd64 x86_64 i686 i586))
88
ifeq ($(ARCH_DATA_MODEL), 64)
89
ARCH_DATA_MODEL = 64
90
MAKE_ARGS += LP64=1
91
PLATFORM = linux-amd64
92
VM_PLATFORM = linux_amd64
93
else
94
ARCH_DATA_MODEL = 32
95
PLATFORM = linux-i586
96
VM_PLATFORM = linux_i486
97
endif
98
HS_ARCH = x86
99
endif
100
101
# PPC
102
# Notice: after 8046471 ARCH will be 'ppc' for top-level ppc64 builds but
103
# 'ppc64' for HotSpot-only ppc64 builds. Need to detect both variants here!
104
ifneq (,$(findstring $(ARCH), ppc ppc64))
105
ifeq ($(ARCH_DATA_MODEL), 64)
106
MAKE_ARGS += LP64=1
107
PLATFORM = linux-ppc64
108
VM_PLATFORM = linux_ppc64
109
else
110
ARCH_DATA_MODEL = 32
111
PLATFORM = linux-ppc
112
VM_PLATFORM = linux_ppc
113
endif
114
HS_ARCH = ppc
115
endif
116
117
# AArch32
118
ifeq ($(ARCH), aarch32)
119
ARCH_DATA_MODEL = 32
120
PLATFORM = linux-aarch32
121
VM_PLATFORM = linux_aarch32
122
HS_ARCH = aarch32
123
endif
124
125
# AARCH64
126
ifeq ($(ARCH), aarch64)
127
ARCH_DATA_MODEL = 64
128
MAKE_ARGS += LP64=1
129
PLATFORM = linux-aarch64
130
VM_PLATFORM = linux_aarch64
131
HS_ARCH = aarch64
132
endif
133
134
# On 32 bit linux we build server and client, on 64 bit just server.
135
ifeq ($(JVM_VARIANTS),)
136
ifeq ($(ARCH_DATA_MODEL), 32)
137
JVM_VARIANTS:=client,server
138
JVM_VARIANT_CLIENT:=true
139
JVM_VARIANT_SERVER:=true
140
else
141
JVM_VARIANTS:=server
142
JVM_VARIANT_SERVER:=true
143
endif
144
endif
145
146
# determine if HotSpot is being built in JDK6 or earlier version
147
JDK6_OR_EARLIER=0
148
ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
149
# if the longer variable names (newer build style) are set, then check those
150
ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
151
JDK6_OR_EARLIER=1
152
endif
153
else
154
# the longer variables aren't set so check the shorter variable names
155
ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
156
JDK6_OR_EARLIER=1
157
endif
158
endif
159
160
ifeq ($(JDK6_OR_EARLIER),0)
161
# Full Debug Symbols is supported on JDK7 or newer.
162
# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
163
# builds is enabled with debug info files ZIP'ed to save space. For
164
# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
165
# debug build without debug info isn't very useful.
166
# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
167
#
168
# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
169
# disabled for a BUILD_FLAVOR == product build.
170
#
171
# Note: Use of a different variable name for the FDS override option
172
# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
173
# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
174
# in options via environment variables, use of distinct variables
175
# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
176
# product build, the FULL_DEBUG_SYMBOLS environment variable will be
177
# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
178
# the same variable name is used, then different values can be picked
179
# up by different parts of the build. Just to be clear, we only need
180
# two variable names because the incoming option value can be
181
# overridden in some situations, e.g., a BUILD_FLAVOR != product
182
# build.
183
184
# Due to the multiple sub-make processes that occur this logic gets
185
# executed multiple times. We reduce the noise by at least checking that
186
# BUILD_FLAVOR has been set.
187
ifneq ($(BUILD_FLAVOR),)
188
ifeq ($(BUILD_FLAVOR), product)
189
FULL_DEBUG_SYMBOLS ?= 1
190
ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
191
else
192
# debug variants always get Full Debug Symbols (if available)
193
ENABLE_FULL_DEBUG_SYMBOLS = 1
194
endif
195
_JUNK_ := $(shell \
196
echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
197
# since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
198
199
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
200
# Default OBJCOPY comes from GNU Binutils on Linux
201
ifeq ($(CROSS_COMPILE_ARCH),)
202
DEF_OBJCOPY=/usr/bin/objcopy
203
else
204
# Assume objcopy is part of the cross-compilation toolset
205
ifneq ($(ALT_COMPILER_PATH),)
206
DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
207
endif
208
endif
209
OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
210
ifneq ($(ALT_OBJCOPY),)
211
_JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
212
OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
213
endif
214
215
ifeq ($(OBJCOPY),)
216
_JUNK_ := $(shell \
217
echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY.")
218
ENABLE_FULL_DEBUG_SYMBOLS=0
219
_JUNK_ := $(shell \
220
echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
221
else
222
_JUNK_ := $(shell \
223
echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
224
225
# Library stripping policies for .debuginfo configs:
226
# all_strip - strips everything from the library
227
# min_strip - strips most stuff from the library; leaves minimum symbols
228
# no_strip - does not strip the library at all
229
#
230
# Oracle security policy requires "all_strip". A waiver was granted on
231
# 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
232
#
233
# Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
234
#
235
STRIP_POLICY ?= min_strip
236
237
_JUNK_ := $(shell \
238
echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
239
240
ZIP_DEBUGINFO_FILES ?= 1
241
242
_JUNK_ := $(shell \
243
echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
244
endif
245
endif # ENABLE_FULL_DEBUG_SYMBOLS=1
246
endif # BUILD_FLAVOR
247
endif # JDK_6_OR_EARLIER
248
249
JDK_INCLUDE_SUBDIR=linux
250
251
# Library suffix
252
LIBRARY_SUFFIX=so
253
254
EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
255
256
# client and server subdirectories have symbolic links to ../libjsig.so
257
EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
258
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
259
ifneq ($(STRIP_POLICY),no_strip)
260
ifeq ($(ZIP_DEBUGINFO_FILES),1)
261
EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
262
else
263
EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
264
endif
265
endif
266
endif
267
EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
268
EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
269
EXPORT_MINIMAL_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/minimal
270
271
ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK) $(JVM_VARIANT_CORE)), true)
272
EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
273
EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
274
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
275
ifneq ($(STRIP_POLICY),no_strip)
276
ifeq ($(ZIP_DEBUGINFO_FILES),1)
277
EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
278
else
279
EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
280
endif
281
endif
282
endif
283
endif
284
285
ifeq ($(JVM_VARIANT_CLIENT),true)
286
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
287
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
288
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
289
ifneq ($(STRIP_POLICY),no_strip)
290
ifeq ($(ZIP_DEBUGINFO_FILES),1)
291
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
292
else
293
EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
294
endif
295
endif
296
endif
297
endif
298
299
ifeq ($(JVM_VARIANT_MINIMAL1),true)
300
EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt
301
EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX)
302
303
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
304
ifneq ($(STRIP_POLICY),no_strip)
305
ifeq ($(ZIP_DEBUGINFO_FILES),1)
306
EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.diz
307
else
308
EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.debuginfo
309
endif
310
endif
311
endif
312
endif
313
314
# Serviceability Binaries
315
# No SA Support for PPC, IA64, ARM or zero
316
ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
317
$(EXPORT_LIB_DIR)/sa-jdi.jar
318
ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
319
$(EXPORT_LIB_DIR)/sa-jdi.jar
320
ADD_SA_BINARIES/aarch64 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
321
$(EXPORT_LIB_DIR)/sa-jdi.jar
322
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
323
ifneq ($(STRIP_POLICY),no_strip)
324
ifeq ($(ZIP_DEBUGINFO_FILES),1)
325
ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
326
ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
327
ADD_SA_BINARIES/aarch64 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
328
else
329
ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
330
ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
331
ADD_SA_BINARIES/aarch64 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
332
endif
333
endif
334
endif
335
ADD_SA_BINARIES/ppc =
336
ADD_SA_BINARIES/ia64 =
337
ADD_SA_BINARIES/arm =
338
ADD_SA_BINARIES/zero =
339
340
-include $(HS_ALT_MAKE)/linux/makefiles/defs.make
341
342
EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH))
343
344
345
346