37 |
37 |
38 ifeq ($(OPENJDK_TARGET_OS), solaris) |
38 ifeq ($(OPENJDK_TARGET_OS), solaris) |
39 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
39 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
40 endif |
40 endif |
41 |
41 |
42 ifeq ($(OPENJDK_TARGET_OS), linux) |
42 # If FDLIBM_CFLAGS is non-empty we know that we can optimize |
43 ifeq ($(OPENJDK_TARGET_CPU), ppc64) |
43 # fdlibm when adding those extra C flags. Currently GCC, |
44 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
44 # and clang only. |
45 else ifeq ($(OPENJDK_TARGET_CPU), ppc64le) |
45 ifneq ($(FDLIBM_CFLAGS), ) |
46 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
46 BUILD_LIBFDLIBM_OPTIMIZATION := LOW |
47 else ifeq ($(OPENJDK_TARGET_CPU), s390x) |
|
48 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
|
49 else ifeq ($(OPENJDK_TARGET_CPU), aarch64) |
|
50 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH |
|
51 endif |
|
52 endif |
47 endif |
53 |
48 |
54 LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm |
49 LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm |
55 LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) |
50 LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) $(FDLIBM_CFLAGS) |
56 |
51 |
57 ifneq ($(OPENJDK_TARGET_OS), macosx) |
52 $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \ |
58 $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \ |
53 NAME := fdlibm, \ |
59 NAME := fdlibm, \ |
54 TYPE := STATIC_LIBRARY, \ |
60 TYPE := STATIC_LIBRARY, \ |
55 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
61 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
56 SRC := $(LIBFDLIBM_SRC), \ |
62 SRC := $(LIBFDLIBM_SRC), \ |
57 OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \ |
63 OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \ |
58 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \ |
64 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \ |
59 CFLAGS_windows_debug := -DLOGGING, \ |
65 CFLAGS_windows_debug := -DLOGGING, \ |
60 CFLAGS_aix := -qfloat=nomaf, \ |
66 CFLAGS_aix := -qfloat=nomaf, \ |
61 DISABLED_WARNINGS_gcc := sign-compare misleading-indentation array-bounds, \ |
67 CFLAGS_linux_ppc64 := -ffp-contract=off, \ |
62 DISABLED_WARNINGS_microsoft := 4146 4244 4018, \ |
68 CFLAGS_linux_ppc64le := -ffp-contract=off, \ |
63 ARFLAGS := $(ARFLAGS), \ |
69 CFLAGS_linux_s390x := -ffp-contract=off, \ |
64 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ |
70 CFLAGS_linux_aarch64 := -ffp-contract=off, \ |
65 )) |
71 DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \ |
|
72 DISABLED_WARNINGS_microsoft := 4146 4244 4018, \ |
|
73 ARFLAGS := $(ARFLAGS), \ |
|
74 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ |
|
75 )) |
|
76 |
|
77 else |
|
78 |
|
79 # On macosx the old build does partial (incremental) linking of fdlibm instead of |
|
80 # a plain static library. |
|
81 $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM_MAC, \ |
|
82 NAME := fdlibm, \ |
|
83 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ |
|
84 SRC := $(LIBFDLIBM_SRC), \ |
|
85 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \ |
|
86 LDFLAGS := -nostdlib $(ARFLAGS), \ |
|
87 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ |
|
88 )) |
|
89 |
|
90 BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX) |
|
91 $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC) |
|
92 $(call install-file) |
|
93 |
|
94 endif |
|
95 |
66 |
96 ########################################################################################## |
67 ########################################################################################## |
97 |
68 |
98 LIBVERIFY_OPTIMIZATION := HIGH |
69 LIBVERIFY_OPTIMIZATION := HIGH |
99 ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) |
70 ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) |
138 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ |
109 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ |
139 LDFLAGS := $(LDFLAGS_JDKLIB) \ |
110 LDFLAGS := $(LDFLAGS_JDKLIB) \ |
140 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
111 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
141 LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \ |
112 LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \ |
142 LDFLAGS_windows := -delayload:shell32.dll, \ |
113 LDFLAGS_windows := -delayload:shell32.dll, \ |
|
114 LIBS := $(BUILD_LIBFDLIBM_TARGET), \ |
143 LIBS_unix := -ljvm -lverify, \ |
115 LIBS_unix := -ljvm -lverify, \ |
144 LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \ |
116 LIBS_linux := $(LIBDL), \ |
145 LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM), \ |
117 LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL), \ |
146 LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) $(LIBM),\ |
118 LIBS_aix := $(LIBDL) $(LIBM),\ |
147 LIBS_macosx := -lfdlibm \ |
119 LIBS_macosx := -framework CoreFoundation \ |
148 -framework CoreFoundation \ |
|
149 -framework Foundation \ |
120 -framework Foundation \ |
150 -framework Security -framework SystemConfiguration, \ |
121 -framework Security -framework SystemConfiguration, \ |
151 LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \ |
122 LIBS_windows := jvm.lib $(WIN_VERIFY_LIB) \ |
152 shell32.lib delayimp.lib \ |
123 shell32.lib delayimp.lib \ |
153 advapi32.lib version.lib, \ |
124 advapi32.lib version.lib, \ |
154 )) |
125 )) |
155 |
126 |
156 TARGETS += $(BUILD_LIBJAVA) |
127 TARGETS += $(BUILD_LIBJAVA) |
193 NAME := jimage, \ |
164 NAME := jimage, \ |
194 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ |
165 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ |
195 OPTIMIZATION := LOW, \ |
166 OPTIMIZATION := LOW, \ |
196 CFLAGS := $(CFLAGS_JDKLIB), \ |
167 CFLAGS := $(CFLAGS_JDKLIB), \ |
197 CXXFLAGS := $(CXXFLAGS_JDKLIB), \ |
168 CXXFLAGS := $(CXXFLAGS_JDKLIB), \ |
198 DISABLED_WARNINGS_gcc := implicit-fallthrough, \ |
|
199 CFLAGS_unix := -UDEBUG, \ |
169 CFLAGS_unix := -UDEBUG, \ |
200 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ |
170 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ |
201 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
171 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
202 LIBS_unix := -ljvm -ldl $(LIBCXX), \ |
172 LIBS_unix := -ljvm -ldl $(LIBCXX), \ |
203 LIBS_macosx := -lc++, \ |
173 LIBS_macosx := -lc++, \ |
208 |
178 |
209 TARGETS += $(BUILD_LIBJIMAGE) |
179 TARGETS += $(BUILD_LIBJIMAGE) |
210 |
180 |
211 ########################################################################################## |
181 ########################################################################################## |
212 |
182 |
213 ifeq ($(call check-jvm-variant, zero), true) |
|
214 ERGO_FAMILY := zero |
|
215 else |
|
216 ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86) |
|
217 ERGO_FAMILY := i586 |
|
218 else |
|
219 ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH) |
|
220 endif |
|
221 endif |
|
222 LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS))) |
|
223 LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO)) |
|
224 # If all specialized ergo files are excluded, use generic ergo |
|
225 ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO)) |
|
226 LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO |
|
227 endif |
|
228 LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO)) |
|
229 |
|
230 ifeq ($(OPENJDK_TARGET_OS), macosx) |
183 ifeq ($(OPENJDK_TARGET_OS), macosx) |
231 LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c ergo_i586.c |
184 LIBJLI_EXCLUDE_FILES += java_md_solinux.c |
232 |
|
233 BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c |
|
234 BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c |
|
235 |
|
236 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" |
|
237 endif |
185 endif |
238 |
186 |
239 ifeq ($(OPENJDK_TARGET_OS), windows) |
187 ifeq ($(OPENJDK_TARGET_OS), windows) |
240 # Staticically link with c runtime on windows. |
|
241 LIBJLI_CFLAGS_JDKLIB := $(filter-out -MD, $(CFLAGS_JDKLIB)) |
|
242 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE) |
|
243 # Supply the name of the C runtime lib. |
188 # Supply the name of the C runtime lib. |
244 LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' |
189 LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' |
245 ifneq ($(MSVCP_DLL), ) |
190 ifneq ($(MSVCP_DLL), ) |
246 LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' |
191 LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' |
247 endif |
192 endif |
248 else |
|
249 LIBJLI_CFLAGS_JDKLIB := $(CFLAGS_JDKLIB) |
|
250 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli |
|
251 endif |
193 endif |
252 |
194 |
253 LIBJLI_CFLAGS += $(LIBZ_CFLAGS) |
195 LIBJLI_CFLAGS += $(LIBZ_CFLAGS) |
254 |
196 |
255 ifneq ($(USE_EXTERNAL_LIBZ), true) |
197 ifneq ($(USE_EXTERNAL_LIBZ), true) |
264 ) |
206 ) |
265 endif |
207 endif |
266 |
208 |
267 $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \ |
209 $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \ |
268 NAME := jli, \ |
210 NAME := jli, \ |
269 OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \ |
211 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ |
270 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ |
212 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ |
271 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
213 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
272 OPTIMIZATION := HIGH, \ |
214 OPTIMIZATION := HIGH, \ |
273 CFLAGS := $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ |
215 CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ |
274 DISABLED_WARNINGS_gcc := maybe-uninitialized, \ |
216 DISABLED_WARNINGS_gcc := maybe-uninitialized, \ |
275 LDFLAGS := $(LDFLAGS_JDKLIB) \ |
217 LDFLAGS := $(LDFLAGS_JDKLIB) \ |
276 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
218 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
277 LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ |
|
278 LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ |
|
279 LIBS_unix := $(LIBZ_LIBS), \ |
219 LIBS_unix := $(LIBZ_LIBS), \ |
280 LIBS_linux := $(LIBDL) -lpthread, \ |
220 LIBS_linux := $(LIBDL) -lpthread, \ |
281 LIBS_solaris := $(LIBDL), \ |
221 LIBS_solaris := $(LIBDL), \ |
282 LIBS_aix := $(LIBDL),\ |
222 LIBS_aix := $(LIBDL),\ |
283 LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ |
223 LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ |
286 |
226 |
287 TARGETS += $(BUILD_LIBJLI) |
227 TARGETS += $(BUILD_LIBJLI) |
288 |
228 |
289 LIBJLI_SRC_DIRS := $(call FindSrcDirsForComponent, java.base, libjli) |
229 LIBJLI_SRC_DIRS := $(call FindSrcDirsForComponent, java.base, libjli) |
290 |
230 |
291 # On windows, the static library has the same suffix as the import library created by |
231 ifeq ($(OPENJDK_TARGET_OS), aix) |
292 # with the shared library, so the static library is given a different name. No harm |
232 # AIX also requires a static libjli because the compiler doesn't support '-rpath' |
293 # in doing it for all platform to reduce complexity. |
|
294 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
295 $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ |
233 $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ |
296 NAME := jli_static, \ |
234 NAME := jli_static, \ |
297 TYPE := STATIC_LIBRARY, \ |
235 TYPE := STATIC_LIBRARY, \ |
298 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
236 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
299 SRC := $(LIBJLI_SRC_DIRS), \ |
237 SRC := $(LIBJLI_SRC_DIRS), \ |
301 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
239 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
302 OPTIMIZATION := HIGH, \ |
240 OPTIMIZATION := HIGH, \ |
303 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \ |
241 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \ |
304 $(addprefix -I, $(LIBJLI_SRC_DIRS)), \ |
242 $(addprefix -I, $(LIBJLI_SRC_DIRS)), \ |
305 ARFLAGS := $(ARFLAGS), \ |
243 ARFLAGS := $(ARFLAGS), \ |
306 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \ |
244 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static)) |
307 )) |
|
308 |
245 |
309 TARGETS += $(BUILD_LIBJLI_STATIC) |
246 TARGETS += $(BUILD_LIBJLI_STATIC) |
310 |
247 |
311 else ifeq ($(OPENJDK_TARGET_OS), macosx) |
248 endif |
312 # |
|
313 # On macosx they do partial (incremental) linking of libjli_static.a |
|
314 # code it here...rather than add support to NativeCompilation |
|
315 # as this is first time I see it |
|
316 $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ |
|
317 NAME := jli_static, \ |
|
318 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
|
319 SRC := $(LIBJLI_SRC_DIRS), \ |
|
320 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ |
|
321 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
|
322 OPTIMIZATION := HIGH, \ |
|
323 CFLAGS := $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \ |
|
324 $(addprefix -I, $(LIBJLI_SRC_DIRS)), \ |
|
325 LDFLAGS := -nostdlib $(ARFLAGS), \ |
|
326 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \ |
|
327 )) |
|
328 |
|
329 ifeq ($(STATIC_BUILD), true) |
|
330 TARGETS += $(BUILD_LIBJLI_STATIC) |
|
331 else |
|
332 $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC) |
|
333 $(call install-file) |
|
334 |
|
335 TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a |
|
336 endif |
|
337 |
|
338 else ifeq ($(OPENJDK_TARGET_OS), aix) |
|
339 # AIX also requires a static libjli because the compiler doesn't support '-rpath' |
|
340 $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ |
|
341 NAME := jli_static, \ |
|
342 TYPE := STATIC_LIBRARY, \ |
|
343 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ |
|
344 SRC := $(LIBJLI_SRC_DIRS), \ |
|
345 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ |
|
346 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ |
|
347 OPTIMIZATION := HIGH, \ |
|
348 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ |
|
349 ARFLAGS := $(ARFLAGS), \ |
|
350 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static)) |
|
351 |
|
352 TARGETS += $(BUILD_LIBJLI_STATIC) |
|
353 |
|
354 endif |
|