Skip to content

Commit 26b2ec4

Browse files
committedMar 25, 2024
8328824: Clean up java.base native compilation
Reviewed-by: erikj
1 parent af15c68 commit 26b2ec4

File tree

7 files changed

+202
-137
lines changed

7 files changed

+202
-137
lines changed
 

‎make/Main.gmk

+5
Original file line numberDiff line numberDiff line change
@@ -931,6 +931,11 @@ else
931931
java.base-copy: build-hsdis
932932
endif
933933

934+
# On Windows, we need to copy tzmappings generated by gensrc
935+
ifeq ($(call isTargetOs, windows), true)
936+
java.base-copy: java.base-gensrc
937+
endif
938+
934939
# jdk.accessibility depends on java.desktop
935940
jdk.accessibility-libs: java.desktop-libs
936941

‎make/common/JdkNativeCompilation.gmk

+29
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,19 @@ define SetupJdkExecutableBody
266266
$1_LIBS += $(LIBCXX)
267267
endif
268268

269+
ifeq ($$($1_SRC), )
270+
ifneq ($$(MODULE), )
271+
$1_SRC := $$(call FindSrcDirsForComponent, $$(MODULE), $$($1_NAME))
272+
else
273+
$$(error Must specify SRC in a MODULE free context)
274+
endif
275+
else
276+
$1_SRC := $$(foreach dir, $$($1_SRC), $$(call ProcessDir, $$(dir)))
277+
endif
278+
ifneq ($$($1_EXTRA_SRC), )
279+
$1_SRC += $$(foreach dir, $$($1_EXTRA_SRC), $$(call ProcessDir, $$(dir)))
280+
endif
281+
269282
ifeq ($$($1_VERSIONINFO_RESOURCE), )
270283
$1_VERSIONINFO_RESOURCE := $$(GLOBAL_VERSION_INFO_RESOURCE)
271284
endif
@@ -283,6 +296,12 @@ define SetupJdkExecutableBody
283296
# Prepend JDK libs before external libs
284297
$1_LIBS := $$($1_JDK_LIBS) $$($1_LIBS)
285298

299+
ifneq ($$($1_EXTRA_HEADER_DIRS), )
300+
$1_PROCESSED_EXTRA_HEADER_DIRS := $$(foreach dir, $$($1_EXTRA_HEADER_DIRS), \
301+
$$(call ProcessDir, $$(dir)))
302+
$1_EXTRA_HEADER_FLAGS := $$(addprefix -I, $$($1_PROCESSED_EXTRA_HEADER_DIRS))
303+
endif
304+
286305
ifneq ($$($1_DEFAULT_CFLAGS), false)
287306
# Set the default flags first to be able to override
288307
$1_CFLAGS := $$(filter-out $$($1_CFLAGS_FILTER_OUT), $$(CFLAGS_JDKEXE)) $$($1_CFLAGS)
@@ -291,6 +310,16 @@ define SetupJdkExecutableBody
291310
$1_CXXFLAGS := $$(filter-out $$($1_CXXFLAGS_FILTER_OUT), $$(CXXFLAGS_JDKEXE)) $$($1_CXXFLAGS)
292311
endif
293312

313+
ifneq ($$($1_CFLAGS), )
314+
$1_CFLAGS += $$($1_SRC_HEADER_FLAGS) $$($1_EXTRA_HEADER_FLAGS)
315+
endif
316+
ifneq ($$($1_CXXFLAGS), )
317+
$1_CXXFLAGS += $$($1_SRC_HEADER_FLAGS) $$($1_EXTRA_HEADER_FLAGS)
318+
endif
319+
ifeq ($$($1_CFLAGS)$$($1_CXXFLAGS), )
320+
$1_CFLAGS += $$($1_SRC_HEADER_FLAGS) $$($1_EXTRA_HEADER_FLAGS)
321+
endif
322+
294323
ifneq ($$($1_DEFAULT_LDFLAGS), false)
295324
# Set the default flags first to be able to override
296325
$1_LDFLAGS := $$(filter-out $$($1_LDFLAGS_FILTER_OUT), $$(LDFLAGS_JDKEXE)) $$($1_LDFLAGS)

‎make/hotspot/lib/CompileGtest.gmk

+5-4
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@
2626
$(eval $(call IncludeCustomExtension, hotspot/lib/CompileGtest.gmk))
2727

2828
GTEST_TEST_SRC += $(TOPDIR)/test/hotspot/gtest
29-
GTEST_LAUNCHER_SRC := $(TOPDIR)/test/hotspot/gtest/gtestLauncher.cpp
3029

3130
ifeq ($(ASAN_ENABLED), true)
32-
GTEST_LAUNCHER_SRC += $(TOPDIR)/make/data/asan/asan_default_options.cpp
31+
GTEST_LAUNCHER_EXTRA_FILES += $(TOPDIR)/make/data/asan/asan_default_options.cpp
3332
endif
3433

3534
ifeq ($(LSAN_ENABLED), true)
36-
GTEST_LAUNCHER_SRC += $(TOPDIR)/make/data/lsan/lsan_default_options.cpp
35+
GTEST_LAUNCHER_EXTRA_FILES += $(TOPDIR)/make/data/lsan/lsan_default_options.cpp
3736
endif
3837

3938
# On Windows, there are no internal debug symbols so must set copying to true
@@ -136,7 +135,9 @@ $(eval $(call SetupJdkExecutable, BUILD_GTEST_LAUNCHER, \
136135
TYPE := EXECUTABLE, \
137136
LINK_TYPE := C++, \
138137
OUTPUT_DIR := $(JVM_OUTPUTDIR)/gtest, \
139-
EXTRA_FILES := $(GTEST_LAUNCHER_SRC), \
138+
SRC := $(TOPDIR)/test/hotspot/gtest, \
139+
INCLUDE_FILES := gtestLauncher.cpp, \
140+
EXTRA_FILES := $(GTEST_LAUNCHER_EXTRA_FILES), \
140141
OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/launcher-objs, \
141142
DEFAULT_CFLAGS := false, \
142143
CFLAGS := $(JVM_CFLAGS) \

‎make/modules/java.base/Copy.gmk

+12
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,18 @@ ifeq ($(ENABLE_LIBFFI_BUNDLING), true)
246246
TARGETS += $(COPY_LIBFFI)
247247
endif
248248

249+
################################################################################
250+
# Copy tzmappings file for Windows
251+
252+
ifeq ($(call isTargetOs, windows), true)
253+
$(eval $(call SetupCopyFiles, COPY_TZMAPPINGS, \
254+
FILES := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/windows/conf/tzmappings, \
255+
DEST := $(call FindLibDirForModule, $(MODULE)), \
256+
))
257+
258+
TARGETS += $(COPY_TZMAPPINGS)
259+
endif
260+
249261
################################################################################
250262
# Optionally copy hsdis into the image
251263

‎make/modules/java.base/Launcher.gmk

+25-13
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ include LauncherCommon.gmk
2828
# Hook to include the corresponding custom file, if present.
2929
$(eval $(call IncludeCustomExtension, modules/java.base/Launcher.gmk))
3030

31-
JAVA_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/launcher/java.rc
31+
JAVA_VERSION_INFO_RESOURCE := \
32+
$(TOPDIR)/src/java.base/windows/native/launcher/java.rc
3233

3334
JAVA_RCFLAGS ?= -I$(TOPDIR)/src/java.base/windows/native/launcher/icons
3435

36+
################################################################################
37+
## Build java
3538
################################################################################
3639

3740
$(eval $(call SetupBuildLauncher, java, \
@@ -41,6 +44,10 @@ $(eval $(call SetupBuildLauncher, java, \
4144
OPTIMIZATION := HIGH, \
4245
))
4346

47+
################################################################################
48+
## Build javaw
49+
################################################################################
50+
4451
ifeq ($(call isTargetOs, windows), true)
4552
$(eval $(call SetupBuildLauncher, javaw, \
4653
CFLAGS := -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES, \
@@ -49,19 +56,24 @@ ifeq ($(call isTargetOs, windows), true)
4956
))
5057
endif
5158

59+
################################################################################
60+
## Build keytool
61+
################################################################################
62+
5263
$(eval $(call SetupBuildLauncher, keytool, \
5364
MAIN_CLASS := sun.security.tools.keytool.Main, \
5465
))
5566

56-
################################################################################
57-
5867
ifeq ($(call isTargetOs, linux), true)
68+
##############################################################################
69+
## Build jexec
70+
##############################################################################
71+
5972
$(eval $(call SetupJdkExecutable, BUILD_JEXEC, \
6073
NAME := jexec, \
6174
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/launcher, \
62-
INCLUDE_FILES := jexec.c, \
6375
OPTIMIZATION := LOW, \
64-
CFLAGS := -I$(TOPDIR)/src/$(MODULE)/share/native/libjli, \
76+
EXTRA_HEADER_DIRS := libjli, \
6577
CFLAGS_linux := -fPIC, \
6678
LD_SET_ORIGIN := false, \
6779
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
@@ -70,21 +82,21 @@ ifeq ($(call isTargetOs, linux), true)
7082
TARGETS += $(BUILD_JEXEC)
7183
endif
7284

73-
################################################################################
74-
7585
ifeq ($(call isTargetOsType, unix), true)
86+
##############################################################################
87+
## Build jspawnhelper
88+
##############################################################################
89+
7690
$(eval $(call SetupJdkExecutable, BUILD_JSPAWNHELPER, \
7791
NAME := jspawnhelper, \
78-
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
7992
OPTIMIZATION := LOW, \
80-
CFLAGS := $(VERSION_CFLAGS) \
81-
-I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
82-
EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc$(OBJ_SUFFIX), \
93+
CFLAGS := $(VERSION_CFLAGS), \
94+
EXTRA_HEADER_DIRS := libjava, \
95+
EXTRA_OBJECT_FILES := \
96+
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc$(OBJ_SUFFIX), \
8397
LD_SET_ORIGIN := false, \
8498
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
8599
))
86100

87101
TARGETS += $(BUILD_JSPAWNHELPER)
88102
endif
89-
90-
################################################################################

‎make/modules/java.base/Lib.gmk

+80-87
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,40 @@ $(call FillFindCache, $(wildcard $(TOPDIR)/src/java.base/*/native))
3737
include lib/CoreLibraries.gmk
3838

3939
################################################################################
40-
# Create the network library
40+
## Build libnet
41+
################################################################################
4142

4243
$(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
4344
NAME := net, \
4445
OPTIMIZATION := LOW, \
4546
DISABLED_WARNINGS_gcc_net_util_md.c := format-nonliteral, \
4647
DISABLED_WARNINGS_gcc_NetworkInterface.c := unused-function, \
4748
DISABLED_WARNINGS_clang_net_util_md.c := format-nonliteral, \
48-
DISABLED_WARNINGS_clang_aix_DefaultProxySelector.c := deprecated-non-prototype, \
49+
DISABLED_WARNINGS_clang_aix_DefaultProxySelector.c := \
50+
deprecated-non-prototype, \
4951
DISABLED_WARNINGS_clang_aix_NetworkInterface.c := gnu-pointer-arith, \
5052
DISABLED_WARNINGS_microsoft_InetAddress.c := 4244, \
5153
DISABLED_WARNINGS_microsoft_ResolverConfigurationImpl.c := 4996, \
52-
LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll \
54+
LDFLAGS_windows := -delayload:iphlpapi.dll -delayload:secur32.dll \
5355
-delayload:winhttp.dll, \
54-
LIBS_unix := -ljvm -ljava, \
56+
JDK_LIBS_unix := -ljava -ljvm, \
57+
JDK_LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
5558
LIBS_linux := $(LIBDL), \
5659
LIBS_aix := $(LIBDL),\
57-
LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib winhttp.lib \
58-
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \
59-
LIBS_macosx := -framework CoreFoundation -framework CoreServices, \
60+
LIBS_windows := advapi32.lib delayimp.lib iphlpapi.lib secur32.lib \
61+
winhttp.lib ws2_32.lib, \
62+
LIBS_macosx := \
63+
-framework CoreFoundation \
64+
-framework CoreServices, \
6065
))
6166

6267
$(BUILD_LIBNET): $(BUILD_LIBJAVA)
6368

6469
TARGETS += $(BUILD_LIBNET)
6570

6671
################################################################################
67-
# Create the nio library
72+
## Build libnio
73+
################################################################################
6874

6975
$(eval $(call SetupJdkLibrary, BUILD_LIBNIO, \
7076
NAME := nio, \
@@ -73,100 +79,96 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNIO, \
7379
libnio/ch \
7480
libnio/fs \
7581
libnet, \
76-
LIBS_unix := -ljava -lnet, \
77-
LIBS_linux := -lpthread $(LIBDL), \
82+
JDK_LIBS_unix := -ljava -lnet, \
83+
JDK_LIBS_windows := $(WIN_JAVA_LIB) jvm.lib \
84+
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib, \
85+
LIBS_linux := $(LIBDL) -lpthread, \
7886
LIBS_aix := $(LIBDL), \
7987
LIBS_macosx := \
80-
-framework CoreFoundation -framework CoreServices, \
81-
LIBS_windows := jvm.lib Mswsock.lib ws2_32.lib $(WIN_JAVA_LIB) \
82-
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
83-
advapi32.lib, \
88+
-framework CoreFoundation \
89+
-framework CoreServices, \
90+
LIBS_windows := advapi32.lib mswsock.lib ws2_32.lib, \
8491
))
8592

8693
TARGETS += $(BUILD_LIBNIO)
8794

8895
$(BUILD_LIBNIO): $(BUILD_LIBNET)
8996

90-
################################################################################
91-
# Create the macosx security library
92-
9397
ifeq ($(call isTargetOs, macosx), true)
98+
##############################################################################
99+
## Build libosxsecurity
100+
##############################################################################
94101

95102
$(eval $(call SetupJdkLibrary, BUILD_LIBOSXSECURITY, \
96103
NAME := osxsecurity, \
97104
OPTIMIZATION := LOW, \
98105
DISABLED_WARNINGS_clang_KeystoreImpl.m := deprecated-declarations, \
99106
LDFLAGS := -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base,\
100-
LIBS := \
101-
-lobjc \
107+
JDK_LIBS := $(JDKLIB_LIBS), \
108+
LIBS_macosx := -lobjc \
102109
-framework CoreServices \
103-
-framework Security \
104110
-framework Foundation \
105-
$(JDKLIB_LIBS), \
111+
-framework Security, \
106112
))
107113

108114
$(BUILD_LIBOSXSECURITY): $(BUILD_LIBJAVA)
109115

110116
TARGETS += $(BUILD_LIBOSXSECURITY)
111-
112117
endif
113118

114-
################################################################################
115-
# Create the jsig library
116-
117-
ifeq ($(call isTargetOsType, unix), true)
118-
ifeq ($(STATIC_BUILD), false)
119-
$(eval $(call SetupJdkLibrary, BUILD_LIBJSIG, \
120-
NAME := jsig, \
121-
OPTIMIZATION := LOW, \
122-
jsig.c_CFLAGS := -DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"', \
123-
LIBS_linux := $(LIBDL), \
124-
LIBS_aix := $(LIBDL), \
125-
))
119+
ifeq ($(call isTargetOsType, unix)+$(STATIC_BUILD), true+false)
120+
##############################################################################
121+
## Build libjsig
122+
##############################################################################
123+
124+
$(eval $(call SetupJdkLibrary, BUILD_LIBJSIG, \
125+
NAME := jsig, \
126+
OPTIMIZATION := LOW, \
127+
jsig.c_CFLAGS := -DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"', \
128+
LIBS_linux := $(LIBDL), \
129+
LIBS_aix := $(LIBDL), \
130+
))
126131

127-
TARGETS += $(BUILD_LIBJSIG)
132+
TARGETS += $(BUILD_LIBJSIG)
128133

129-
############################################################################
130-
# Create symlinks to libjsig in each JVM variant sub dir
131-
ifneq ($(STATIC_LIBS), true)
132-
LIB_OUTPUTDIR := $(call FindLibDirForModule, java.base)
134+
##############################################################################
135+
# Create symlinks to libjsig in each JVM variant sub dir
136+
ifneq ($(STATIC_LIBS), true)
137+
LIB_OUTPUTDIR := $(call FindLibDirForModule, java.base)
133138

134-
# $1 variant subdir
135-
define CreateSymlinks
136-
# Always symlink from libdir/variant/libjsig.so -> ../libjsig.so.
137-
$(LIB_OUTPUTDIR)/$1/$(call SHARED_LIBRARY,jsig): \
138-
$(LIB_OUTPUTDIR)/$(call SHARED_LIBRARY,jsig)
139+
# $1 variant subdir
140+
define CreateSymlinks
141+
# Always symlink from libdir/variant/libjsig.so -> ../libjsig.so.
142+
$(LIB_OUTPUTDIR)/$1/$(call SHARED_LIBRARY,jsig): \
143+
$(LIB_OUTPUTDIR)/$(call SHARED_LIBRARY,jsig)
139144
$$(call MakeDir, $$(@D))
140145
$(RM) $$@
141146
$(LN) -s ../$$(@F) $$@
142147

143-
TARGETS += $(LIB_OUTPUTDIR)/$1/$(call SHARED_LIBRARY,jsig)
144-
endef
145-
146-
# The subdir is the same as the variant
147-
$(foreach v, $(JVM_VARIANTS), $(eval $(call CreateSymlinks,$v)))
148-
endif
149-
############################################################################
148+
TARGETS += $(LIB_OUTPUTDIR)/$1/$(call SHARED_LIBRARY,jsig)
149+
endef
150150

151+
# The subdir is the same as the variant
152+
$(foreach v, $(JVM_VARIANTS), $(eval $(call CreateSymlinks,$v)))
151153
endif
152154
endif
153155

154156
################################################################################
155157
# Create the symbols file for static builds.
156-
157158
ifeq ($(STATIC_BUILD), true)
159+
STATIC_SYMBOLS_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base
158160
JAVA_BASE_EXPORT_SYMBOLS_SRC := \
159-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)jli.symbols \
160-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)java.symbols \
161-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)net.symbols \
162-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)nio.symbols \
163-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)verify.symbols \
164-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)zip.symbols \
165-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$(LIBRARY_PREFIX)jimage.symbols \
166-
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server/$(LIBRARY_PREFIX)jvm.symbols \
161+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)jli.symbols \
162+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)java.symbols \
163+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)net.symbols \
164+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)nio.symbols \
165+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)verify.symbols \
166+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)zip.symbols \
167+
$(STATIC_SYMBOLS_DIR)/$(LIBRARY_PREFIX)jimage.symbols \
168+
$(STATIC_SYMBOLS_DIR)/server/$(LIBRARY_PREFIX)jvm.symbols \
167169
#
168170

169-
JAVA_BASE_EXPORT_SYMBOL_FILE := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/java.base.symbols
171+
JAVA_BASE_EXPORT_SYMBOL_FILE := $(STATIC_SYMBOLS_DIR)/java.base.symbols
170172

171173
$(JAVA_BASE_EXPORT_SYMBOL_FILE): $(JAVA_BASE_EXPORT_SYMBOLS_SRC)
172174
$(call LogInfo, Generating java.base.symbols file)
@@ -181,56 +183,47 @@ ifeq ($(STATIC_BUILD), true)
181183
endif
182184

183185
################################################################################
184-
# Copy tzmappings file for Windows
185-
186-
ifeq ($(call isTargetOs, windows), true)
187-
$(eval $(call SetupCopyFiles, COPY_TZMAPPINGS, \
188-
FILES := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/windows/conf/tzmappings, \
189-
DEST := $(call FindLibDirForModule, $(MODULE)), \
190-
))
191-
TARGETS += $(COPY_TZMAPPINGS)
192-
endif
193-
186+
## Build libsyslookup
194187
################################################################################
195-
# Create system lookup
196188

197-
$(eval $(call SetupJdkLibrary, BUILD_SYSLOOKUPLIB, \
189+
$(eval $(call SetupJdkLibrary, BUILD_LIBSYSLOOKUP, \
198190
NAME := syslookup, \
199191
LD_SET_ORIGIN := false, \
200192
LDFLAGS_linux := -Wl$(COMMA)--no-as-needed, \
201193
LDFLAGS_aix := -brtl -bexpfull, \
202-
LIBS_linux := -lm -ldl, \
203-
LIBS_aix := -lm -ldecNumber, \
194+
LIBS_linux := $(LIBDL) $(LIBM), \
195+
LIBS_aix := -ldecNumber $(LIBM), \
204196
))
205197

206-
TARGETS += $(BUILD_SYSLOOKUPLIB)
207-
208-
################################################################################
209-
# Create fallback linker lib
198+
TARGETS += $(BUILD_LIBSYSLOOKUP)
210199

211200
ifeq ($(ENABLE_FALLBACK_LINKER), true)
201+
##############################################################################
202+
## Build libfallbackLinker
203+
##############################################################################
204+
212205
$(eval $(call SetupJdkLibrary, BUILD_LIBFALLBACKLINKER, \
213206
NAME := fallbackLinker, \
214207
CFLAGS := $(LIBFFI_CFLAGS), \
215208
LIBS := $(LIBFFI_LIBS), \
216-
LIBS_windows := $(LIBFFI_LIBS) ws2_32.lib, \
209+
LIBS_windows := ws2_32.lib, \
217210
))
218211

219212
TARGETS += $(BUILD_LIBFALLBACKLINKER)
220213
endif
221214

222-
################################################################################
223-
224215
ifeq ($(call isTargetOs, linux)+$(call isTargetCpu, x86_64)+$(INCLUDE_COMPILER2)+$(filter $(TOOLCHAIN_TYPE), gcc), true+true+true+gcc)
225-
$(eval $(call SetupJdkLibrary, BUILD_LIB_SIMD_SORT, \
216+
##############################################################################
217+
## Build libsimdsort
218+
##############################################################################
219+
220+
$(eval $(call SetupJdkLibrary, BUILD_LIBSIMD_SORT, \
226221
NAME := simdsort, \
227222
LINK_TYPE := C++, \
228223
OPTIMIZATION := HIGH, \
229224
CXXFLAGS := -std=c++17, \
230-
LIBS_linux := -lm -ldl, \
225+
LIBS_linux := $(LIBDL) $(LIBM), \
231226
))
232227

233-
TARGETS += $(BUILD_LIB_SIMD_SORT)
228+
TARGETS += $(BUILD_LIBSIMD_SORT)
234229
endif
235-
236-
################################################################################

‎make/modules/java.base/lib/CoreLibraries.gmk

+46-33
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,27 @@
2323
# questions.
2424
#
2525

26-
##########################################################################################
26+
################################################################################
27+
## Build libverify
28+
################################################################################
2729

2830
LIBVERIFY_OPTIMIZATION := HIGH
29-
ifeq ($(call isTargetOs, linux), true)
30-
ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
31-
LIBVERIFY_OPTIMIZATION := LOW
32-
endif
31+
ifeq ($(call isTargetOs, linux)+$(COMPILE_WITH_DEBUG_SYMBOLS), true+true)
32+
LIBVERIFY_OPTIMIZATION := LOW
3333
endif
3434

3535
$(eval $(call SetupJdkLibrary, BUILD_LIBVERIFY, \
3636
NAME := verify, \
3737
OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \
38-
LIBS_unix := -ljvm, \
39-
LIBS_windows := jvm.lib, \
38+
JDK_LIBS_unix := -ljvm, \
39+
JDK_LIBS_windows := jvm.lib, \
4040
))
4141

4242
TARGETS += $(BUILD_LIBVERIFY)
4343

44-
##########################################################################################
44+
################################################################################
45+
## Build libjava
46+
################################################################################
4547

4648
ifeq ($(call isTargetOs, macosx), true)
4749
BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c
@@ -53,26 +55,28 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \
5355
OPTIMIZATION := HIGH, \
5456
jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
5557
ProcessImpl_md.c_CFLAGS := $(VERSION_CFLAGS), \
56-
java_props_md.c_CFLAGS := -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"', \
58+
java_props_md.c_CFLAGS := \
59+
-DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"', \
5760
DISABLED_WARNINGS_gcc_ProcessImpl_md.c := unused-result, \
5861
LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
59-
LIBS_unix := -ljvm, \
62+
JDK_LIBS_unix := -ljvm, \
63+
JDK_LIBS_windows := jvm.lib, \
6064
LIBS_linux := $(LIBDL), \
6165
LIBS_aix := $(LIBDL) $(LIBM),\
62-
LIBS_macosx := -framework CoreFoundation \
66+
LIBS_macosx := \
67+
-framework CoreFoundation \
6368
-framework Foundation \
6469
-framework SystemConfiguration, \
65-
LIBS_windows := jvm.lib \
66-
shell32.lib ole32.lib \
67-
advapi32.lib version.lib, \
70+
LIBS_windows := advapi32.lib ole32.lib shell32.lib version.lib, \
6871
))
6972

7073
TARGETS += $(BUILD_LIBJAVA)
7174

7275
$(BUILD_LIBJAVA): $(BUILD_LIBVERIFY)
7376

74-
75-
##########################################################################################
77+
################################################################################
78+
## Build libzip
79+
################################################################################
7680

7781
BUILD_LIBZIP_EXCLUDES :=
7882
ifeq ($(USE_EXTERNAL_LIBZ), true)
@@ -92,31 +96,37 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \
9296
DISABLED_WARNINGS_gcc_zip_util.c := unused-function, \
9397
DISABLED_WARNINGS_clang := deprecated-non-prototype, \
9498
DISABLED_WARNINGS_clang_gzwrite.c := format-nonliteral, \
95-
LIBS_unix := -ljvm -ljava $(LIBZ_LIBS), \
96-
LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \
99+
JDK_LIBS_unix := -ljava -ljvm, \
100+
JDK_LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
101+
LIBS_unix := $(LIBZ_LIBS), \
97102
))
98103

99104
$(BUILD_LIBZIP): $(BUILD_LIBJAVA)
100105

101106
TARGETS += $(BUILD_LIBZIP)
102107

103-
##########################################################################################
108+
################################################################################
109+
## Build libjimage
110+
################################################################################
104111

105112
$(eval $(call SetupJdkLibrary, BUILD_LIBJIMAGE, \
106113
NAME := jimage, \
107114
LINK_TYPE := C++, \
108115
OPTIMIZATION := LOW, \
109116
CFLAGS_unix := -UDEBUG, \
110117
LDFLAGS := $(LDFLAGS_CXX_JDK), \
111-
LIBS_unix := -ljvm -ldl, \
112-
LIBS_windows := jvm.lib, \
118+
JDK_LIBS_unix := -ljvm, \
119+
JDK_LIBS_windows := jvm.lib, \
120+
LIBS_unix := $(LIBDL), \
113121
))
114122

115123
$(BUILD_LIBJIMAGE): $(BUILD_LIBJAVA)
116124

117125
TARGETS += $(BUILD_LIBJIMAGE)
118126

119-
##########################################################################################
127+
################################################################################
128+
## Build libjli
129+
################################################################################
120130

121131
ifeq ($(call isTargetOs, macosx), true)
122132
LIBJLI_EXCLUDE_FILES += java_md.c
@@ -135,11 +145,10 @@ ifeq ($(call isTargetOs, windows), true)
135145
endif
136146
endif
137147

138-
LIBJLI_CFLAGS += $(LIBZ_CFLAGS)
139-
140148
ifneq ($(USE_EXTERNAL_LIBZ), true)
141149
# Extra files from the zlib.
142-
LIBJLI_EXTRA_FILE_LIST := inflate.c inftrees.c inffast.c zadler32.c zcrc32.c zutil.c
150+
LIBJLI_EXTRA_FILE_LIST := inflate.c inftrees.c inffast.c zadler32.c \
151+
zcrc32.c zutil.c
143152

144153
LIBJLI_EXTRA_FILES += \
145154
$(addprefix $(TOPDIR)/src/java.base/share/native/libzip/zlib/, \
@@ -150,22 +159,25 @@ ifneq ($(USE_EXTERNAL_LIBZ), true)
150159
# static libraries, we use the --whole-archive linker option.
151160
# The duplicate objects in different static libraries cause linking
152161
# errors due to duplicate symbols.
153-
LIBJLI_STATIC_EXCLUDE_OBJS := $(subst .c,$(OBJ_SUFFIX),$(LIBJLI_EXTRA_FILE_LIST))
162+
LIBJLI_STATIC_EXCLUDE_OBJS := \
163+
$(subst .c,$(OBJ_SUFFIX),$(LIBJLI_EXTRA_FILE_LIST))
154164
endif
155165

156166
$(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
157167
NAME := jli, \
158-
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
159168
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
160169
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
161170
OPTIMIZATION := HIGH, \
162-
CFLAGS := $(LIBJLI_CFLAGS), \
171+
CFLAGS := $(LIBJLI_CFLAGS) $(LIBZ_CFLAGS), \
163172
DISABLED_WARNINGS_gcc := unused-function, \
164173
DISABLED_WARNINGS_clang := format-nonliteral deprecated-non-prototype, \
165174
LIBS_unix := $(LIBZ_LIBS), \
166175
LIBS_linux := $(LIBDL) -lpthread, \
167176
LIBS_aix := $(LIBDL),\
168-
LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
177+
LIBS_macosx := \
178+
-framework ApplicationServices \
179+
-framework Cocoa \
180+
-framework Security, \
169181
LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
170182
STATIC_LIB_EXCLUDE_OBJS := $(LIBJLI_STATIC_EXCLUDE_OBJS), \
171183
))
@@ -175,7 +187,8 @@ TARGETS += $(BUILD_LIBJLI)
175187
LIBJLI_SRC_DIRS := $(call FindSrcDirsForComponent, java.base, libjli)
176188

177189
ifeq ($(call isTargetOs, aix), true)
178-
# AIX also requires a static libjli because the compiler doesn't support '-rpath'
190+
# AIX also requires a static libjli because the compiler doesn't support
191+
# '-rpath'
179192
$(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \
180193
NAME := jli_static, \
181194
TYPE := STATIC_LIBRARY, \
@@ -185,11 +198,11 @@ ifeq ($(call isTargetOs, aix), true)
185198
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
186199
OPTIMIZATION := HIGH, \
187200
CFLAGS := $(STATIC_LIBRARY_FLAGS) $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
188-
$(addprefix -I, $(LIBJLI_SRC_DIRS)), \
189-
DISABLED_WARNINGS_clang_aix := format-nonliteral deprecated-non-prototype, \
201+
$(LIBZ_CFLAGS) (addprefix -I, $(LIBJLI_SRC_DIRS)), \
202+
DISABLED_WARNINGS_clang_aix := format-nonliteral \
203+
deprecated-non-prototype, \
190204
ARFLAGS := $(ARFLAGS), \
191205
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static))
192206

193207
TARGETS += $(BUILD_LIBJLI_STATIC)
194-
195208
endif

0 commit comments

Comments
 (0)
Please sign in to comment.