252 LIBJLI_CFLAGS := $(CFLAGS_JDKLIB)
253
254 ifeq ($(JVM_VARIANT_ZERO), true)
255 ERGO_FAMILY := zero
256 else
257 ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
258 ERGO_FAMILY := i586
259 else
260 ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH)
261 endif
262 endif
263 LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS)))
264 LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO))
265 # If all specialized ergo files are excluded, use generic ergo
266 ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO))
267 LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
268 endif
269 LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO))
270
271 ifeq ($(OPENJDK_TARGET_OS), macosx)
272 LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c
273
274 BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c
275 BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c
276
277 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
278 endif
279
280 ifeq ($(OPENJDK_TARGET_OS), windows)
281 # Staticically link with c runtime on windows.
282 LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS))
283 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)
284 # Supply the name of the C runtime lib.
285 LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
286 ifneq ($(MSVCP_DLL), )
287 LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"'
288 endif
289 else
290 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli
291 endif
292
300 LIBJLI_EXTRA_FILES += \
301 $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib-1.2.8/, \
302 inflate.c \
303 inftrees.c \
304 inffast.c \
305 zadler32.c \
306 zcrc32.c \
307 zutil.c \
308 )
309 endif
310
311 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \
312 LIBRARY := jli, \
313 OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
314 SRC := $(LIBJLI_SRC_DIRS), \
315 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
316 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
317 LANG := C, \
318 OPTIMIZATION := HIGH, \
319 CFLAGS := $(LIBJLI_CFLAGS), \
320 DISABLED_WARNINGS_gcc := pointer-to-int-cast sign-compare format-nonliteral \
321 parentheses, \
322 DISABLED_WARNINGS_clang := implicit-function-declaration parentheses \
323 int-conversion, \
324 DISABLED_WARNINGS_solstudio := E_ASM_DISABLES_OPTIMIZATION E_NEWLINE_NOT_LAST, \
325 DISABLED_WARNINGS_microsoft := 4244 4047 4267, \
326 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
327 LDFLAGS := $(LDFLAGS_JDKLIB) \
328 $(call SET_SHARED_LIBRARY_ORIGIN), \
329 LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
330 LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
331 LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
332 LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
333 LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
334 LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
335 LDFLAGS_SUFFIX_macosx := $(LIBZ), \
336 LDFLAGS_SUFFIX_windows := \
337 -export:JLI_Launch \
338 -export:JLI_ManifestIterate \
339 -export:JLI_SetTraceLauncher \
340 -export:JLI_ReportErrorMessage \
341 -export:JLI_ReportErrorMessageSys \
342 -export:JLI_ReportMessage \
343 -export:JLI_ReportExceptionDescription \
344 -export:JLI_MemAlloc \
345 -export:JLI_CmdToArgs \
354 -D "JDK_INTERNAL_NAME=jli" \
355 -D "JDK_FTYPE=0x2L", \
356 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli, \
357 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
358
359 TARGETS += $(BUILD_LIBJLI)
360
361 # On windows, the static library has the same suffix as the import library created by
362 # with the shared library, so the static library is given a different name. No harm
363 # in doing it for all platform to reduce complexity.
364 ifeq ($(OPENJDK_TARGET_OS), windows)
365 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
366 STATIC_LIBRARY := jli_static, \
367 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
368 SRC := $(LIBJLI_SRC_DIRS), \
369 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
370 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
371 LANG := C, \
372 OPTIMIZATION := HIGH, \
373 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
374 DISABLED_WARNINGS_microsoft := 4244 4047 4267, \
375 ARFLAGS := $(ARFLAGS), \
376 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
377 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
378
379 TARGETS += $(BUILD_LIBJLI_STATIC)
380
381 else ifeq ($(OPENJDK_TARGET_OS), macosx)
382 #
383 # On macosx they do partial (incremental) linking of libjli_static.a
384 # code it here...rather than add support to NativeCompilation
385 # as this is first time I see it
386 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
387 LIBRARY := jli_static, \
388 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
389 SRC := $(LIBJLI_SRC_DIRS), \
390 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
391 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
392 LANG := C, \
393 OPTIMIZATION := HIGH, \
394 CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
395 DISABLED_WARNINGS_clang := implicit-function-declaration parentheses \
396 int-conversion, \
397 LDFLAGS := -nostdlib -r, \
398 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
399 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
400
401 $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC)
402 $(call install-file)
403
404 TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a
405
406 else ifeq ($(OPENJDK_TARGET_OS), aix)
407 # AIX also requires a static libjli because the compiler doesn't support '-rpath'
408 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
409 STATIC_LIBRARY := jli_static, \
410 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
411 SRC := $(LIBJLI_SRC_DIRS), \
412 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
413 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
414 LANG := C, \
415 OPTIMIZATION := HIGH, \
416 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
|
252 LIBJLI_CFLAGS := $(CFLAGS_JDKLIB)
253
254 ifeq ($(JVM_VARIANT_ZERO), true)
255 ERGO_FAMILY := zero
256 else
257 ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
258 ERGO_FAMILY := i586
259 else
260 ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH)
261 endif
262 endif
263 LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS)))
264 LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO))
265 # If all specialized ergo files are excluded, use generic ergo
266 ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO))
267 LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
268 endif
269 LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO))
270
271 ifeq ($(OPENJDK_TARGET_OS), macosx)
272 LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c ergo_i586.c
273
274 BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c
275 BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c
276
277 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
278 endif
279
280 ifeq ($(OPENJDK_TARGET_OS), windows)
281 # Staticically link with c runtime on windows.
282 LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS))
283 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)
284 # Supply the name of the C runtime lib.
285 LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
286 ifneq ($(MSVCP_DLL), )
287 LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"'
288 endif
289 else
290 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli
291 endif
292
300 LIBJLI_EXTRA_FILES += \
301 $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib-1.2.8/, \
302 inflate.c \
303 inftrees.c \
304 inffast.c \
305 zadler32.c \
306 zcrc32.c \
307 zutil.c \
308 )
309 endif
310
311 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \
312 LIBRARY := jli, \
313 OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
314 SRC := $(LIBJLI_SRC_DIRS), \
315 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
316 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
317 LANG := C, \
318 OPTIMIZATION := HIGH, \
319 CFLAGS := $(LIBJLI_CFLAGS), \
320 DISABLED_WARNINGS_solstudio := E_ASM_DISABLES_OPTIMIZATION, \
321 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
322 LDFLAGS := $(LDFLAGS_JDKLIB) \
323 $(call SET_SHARED_LIBRARY_ORIGIN), \
324 LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
325 LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
326 LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
327 LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
328 LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
329 LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
330 LDFLAGS_SUFFIX_macosx := $(LIBZ), \
331 LDFLAGS_SUFFIX_windows := \
332 -export:JLI_Launch \
333 -export:JLI_ManifestIterate \
334 -export:JLI_SetTraceLauncher \
335 -export:JLI_ReportErrorMessage \
336 -export:JLI_ReportErrorMessageSys \
337 -export:JLI_ReportMessage \
338 -export:JLI_ReportExceptionDescription \
339 -export:JLI_MemAlloc \
340 -export:JLI_CmdToArgs \
349 -D "JDK_INTERNAL_NAME=jli" \
350 -D "JDK_FTYPE=0x2L", \
351 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli, \
352 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
353
354 TARGETS += $(BUILD_LIBJLI)
355
356 # On windows, the static library has the same suffix as the import library created by
357 # with the shared library, so the static library is given a different name. No harm
358 # in doing it for all platform to reduce complexity.
359 ifeq ($(OPENJDK_TARGET_OS), windows)
360 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
361 STATIC_LIBRARY := jli_static, \
362 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
363 SRC := $(LIBJLI_SRC_DIRS), \
364 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
365 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
366 LANG := C, \
367 OPTIMIZATION := HIGH, \
368 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
369 ARFLAGS := $(ARFLAGS), \
370 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
371 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
372
373 TARGETS += $(BUILD_LIBJLI_STATIC)
374
375 else ifeq ($(OPENJDK_TARGET_OS), macosx)
376 #
377 # On macosx they do partial (incremental) linking of libjli_static.a
378 # code it here...rather than add support to NativeCompilation
379 # as this is first time I see it
380 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
381 LIBRARY := jli_static, \
382 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
383 SRC := $(LIBJLI_SRC_DIRS), \
384 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
385 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
386 LANG := C, \
387 OPTIMIZATION := HIGH, \
388 CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
389 LDFLAGS := -nostdlib -r, \
390 OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
391 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
392
393 $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC)
394 $(call install-file)
395
396 TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a
397
398 else ifeq ($(OPENJDK_TARGET_OS), aix)
399 # AIX also requires a static libjli because the compiler doesn't support '-rpath'
400 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
401 STATIC_LIBRARY := jli_static, \
402 OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
403 SRC := $(LIBJLI_SRC_DIRS), \
404 EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
405 EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
406 LANG := C, \
407 OPTIMIZATION := HIGH, \
408 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
|