1# 2# Copyright (c) 2011, 2019, 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. Oracle designates this 8# particular file as subject to the "Classpath" exception as provided 9# by Oracle in the LICENSE file that accompanied this code. 10# 11# This code is distributed in the hope that it will be useful, but WITHOUT 12# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14# version 2 for more details (a copy is included in the LICENSE file that 15# accompanied this code). 16# 17# You should have received a copy of the GNU General Public License version 18# 2 along with this work; if not, write to the Free Software Foundation, 19# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20# 21# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22# or visit www.oracle.com if you need additional information or have any 23# questions. 24# 25 26# Include custom extensions if available. 27-include $(CUSTOM_MAKE_DIR)/lib/CoreLibraries.gmk 28 29WIN_VERIFY_LIB := $(JDK_OUTPUTDIR)/objs/libverify/verify.lib 30 31########################################################################################## 32 33BUILD_LIBFDLIBM_OPTIMIZATION := NONE 34 35ifeq ($(OPENJDK_TARGET_OS), solaris) 36 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 37endif 38 39 40# If FDLIBM_CFLAGS is non-empty we know that we can optimize 41# fdlibm when adding those extra C flags. Currently GCC only. 42LIBFDLIBM_CFLAGS := 43ifneq ($(FDLIBM_CFLAGS), ) 44 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 45 LIBFDLIBM_CFLAGS := $(FDLIBM_CFLAGS) 46endif 47 48ifneq ($(OPENJDK_TARGET_OS), macosx) 49 # Unfortunately, '-ffp-contract' is only available since gcc 4.6. For ppc64le 50 # that's no problem since ppc64le support only appeared in gcc 4.8.3. But on 51 # ppc64 (big endian) we traditionally compiled with gcc 4.3 which only knows 52 # '-mno-fused-madd'. However, that's still not enough to get the float 53 # computations right - we additionally have to supply '-fno-strict-aliasing'. 54 $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM, \ 55 STATIC_LIBRARY := fdlibm, \ 56 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 57 SRC := $(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src, \ 58 LANG := C, \ 59 OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \ 60 CFLAGS := $(CFLAGS_JDKLIB) \ 61 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include, \ 62 CFLAGS_windows_debug := -DLOGGING, \ 63 CFLAGS_aix := -qfloat=nomaf, \ 64 CFLAGS_linux := $(LIBFDLIBM_CFLAGS), \ 65 ARFLAGS := $(ARFLAGS), \ 66 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 67 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 68 69else 70 71 # On macosx the old build does partial (incremental) linking of fdlibm instead of 72 # a plain static library. 73 $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM_MAC, \ 74 LIBRARY := fdlibm, \ 75 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 76 SRC := $(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src, \ 77 LANG := C, \ 78 CFLAGS := $(CFLAGS_JDKLIB) \ 79 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include, \ 80 LDFLAGS := -nostdlib -r -arch x86_64, \ 81 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 82 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 83 84 BUILD_LIBFDLIBM := $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX) 85 $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC) 86 $(call install-file) 87 88endif 89 90BUILD_LIBRARIES += $(BUILD_LIBFDLIBM) 91 92########################################################################################## 93 94BUILD_LIBVERIFY_SRC := check_code.c check_format.c 95 96ifeq ($(OPENJDK_TARGET_OS), solaris) 97 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 98 BUILD_LIBVERIFY_REORDER := $(JDK_TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU) 99 endif 100endif 101 102LIBVERIFY_OPTIMIZATION := HIGH 103ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), ) 104 ifeq ($(ENABLE_DEBUG_SYMBOLS), true) 105 LIBVERIFY_OPTIMIZATION := LOW 106 endif 107endif 108 109$(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \ 110 LIBRARY := verify, \ 111 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 112 SRC := $(JDK_TOPDIR)/src/share/native/common, \ 113 INCLUDE_FILES := $(BUILD_LIBVERIFY_SRC), \ 114 LANG := C, \ 115 OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \ 116 CFLAGS := $(CFLAGS_JDKLIB), \ 117 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \ 118 LDFLAGS := $(LDFLAGS_JDKLIB) \ 119 $(call SET_SHARED_LIBRARY_ORIGIN), \ 120 LDFLAGS_SUFFIX_posix := -ljvm -lc, \ 121 LDFLAGS_SUFFIX_windows := jvm.lib, \ 122 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 123 RC_FLAGS := $(RC_FLAGS) \ 124 -D "JDK_FNAME=verify.dll" \ 125 -D "JDK_INTERNAL_NAME=verify" \ 126 -D "JDK_FTYPE=0x2L", \ 127 REORDER := $(BUILD_LIBVERIFY_REORDER), \ 128 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libverify, \ 129 DEBUG_SYMBOLS := true)) 130 131BUILD_LIBRARIES += $(BUILD_LIBVERIFY) 132 133########################################################################################## 134 135# Allow a custom makefile to add extra src dirs 136LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/lang \ 137 $(JDK_TOPDIR)/src/share/native/java/lang \ 138 $(JDK_TOPDIR)/src/share/native/java/lang/reflect \ 139 $(JDK_TOPDIR)/src/share/native/java/io \ 140 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \ 141 $(JDK_TOPDIR)/src/share/native/java/nio \ 142 $(JDK_TOPDIR)/src/share/native/java/security \ 143 $(JDK_TOPDIR)/src/share/native/common \ 144 $(JDK_TOPDIR)/src/share/native/sun/misc \ 145 $(JDK_TOPDIR)/src/share/native/sun/reflect \ 146 $(JDK_TOPDIR)/src/share/native/java/util \ 147 $(JDK_TOPDIR)/src/share/native/java/util/concurrent/atomic \ 148 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/common \ 149 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/util 150 151ifeq ($(OPENJDK_TARGET_OS), windows) 152 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/util/locale/provider 153else ifeq ($(OPENJDK_TARGET_OS), macosx) 154 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/sun/util/locale/provider 155endif 156 157ifeq ($(OPENJDK_TARGET_OS), linux) 158 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/linux/native/jdk/internal/platform/cgroupv1 159endif 160 161ifeq ($(OPENJDK_TARGET_OS), windows) 162 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/provider \ 163 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/io 164endif 165 166# Make it possible to override this variable 167ifeq ($(OPENJDK_TARGET_OS), linux) 168 # Linux-only symbol Java_jdk_internal_platform_cgroupv1_Metrics_isUseContainerSupport 169 LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-linux 170else 171 LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers 172endif 173 174LIBJAVA_CFLAGS := $(foreach dir, $(LIBJAVA_SRC_DIRS), -I$(dir)) \ 175 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include \ 176 -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"' 177 178LIBJAVA_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \ 179 -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \ 180 -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \ 181 -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"' \ 182 $(VERSION_CFLAGS) 183 184ifneq (, $(JDK_UPDATE_VERSION)) 185 LIBJAVA_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"' 186endif 187 188LIBJAVA_EXCLUDE_FILES := check_code.c check_format.c jspawnhelper.c 189 190ifneq ($(OPENJDK_TARGET_OS), macosx) 191 LIBJAVA_EXCLUDE_FILES += java_props_macosx.c 192else 193 BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c 194 BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c 195endif 196 197ifeq ($(OPENJDK_TARGET_OS), windows) 198 LIBJAVA_EXCLUDE_FILES += \ 199 UNIXProcess_md.c \ 200 UnixFileSystem_md.c \ 201 FileSystemPreferences.c 202else 203 LIBJAVA_EXCLUDE_FILES += \ 204 ProcessImpl_md.c \ 205 WinNTFileSystem_md.c \ 206 dirent_md.c \ 207 WindowsPreferences.c \ 208 sun/security/provider/WinCAPISeedGenerator.c \ 209 sun/io/Win32ErrorMode.c 210endif 211 212ifeq ($(OPENJDK_TARGET_OS), solaris) 213 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 214 LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU) 215 endif 216endif 217 218$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \ 219 LIBRARY := java, \ 220 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 221 SRC := $(LIBJAVA_SRC_DIRS), \ 222 EXCLUDES := fdlibm/src zip, \ 223 EXCLUDE_FILES := $(LIBJAVA_EXCLUDE_FILES), \ 224 LANG := C, \ 225 OPTIMIZATION := HIGH, \ 226 CFLAGS := $(CFLAGS_JDKLIB) \ 227 $(LIBJAVA_CFLAGS), \ 228 MAPFILE := $(LIBJAVA_MAPFILE), \ 229 LDFLAGS := $(LDFLAGS_JDKLIB) \ 230 $(call SET_SHARED_LIBRARY_ORIGIN), \ 231 LDFLAGS_SUFFIX_posix := -ljvm -lverify, \ 232 LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \ 233 LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \ 234 LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\ 235 LDFLAGS_SUFFIX_bsd := $(BUILD_LIBFDLIBM), \ 236 LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \ 237 -framework CoreFoundation \ 238 -framework Foundation \ 239 -framework Security -framework SystemConfiguration, \ 240 LDFLAGS_SUFFIX_windows := -export:winFileHandleOpen -export:handleLseek \ 241 -export:getErrorString \ 242 jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \ 243 shell32.lib delayimp.lib -DELAYLOAD:shell32.dll \ 244 advapi32.lib version.lib, \ 245 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 246 RC_FLAGS := $(RC_FLAGS) \ 247 -D "JDK_FNAME=java.dll" \ 248 -D "JDK_INTERNAL_NAME=java" \ 249 -D "JDK_FTYPE=0x2L", \ 250 REORDER := $(LIBJAVA_REORDER), \ 251 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjava, \ 252 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 253 254BUILD_LIBRARIES += $(BUILD_LIBJAVA) 255 256$(BUILD_LIBJAVA): $(LIBJLI_BINARY) 257 258$(BUILD_LIBJAVA): $(BUILD_LIBVERIFY) 259 260$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM) 261 262########################################################################################## 263 264BUILD_LIBZIP_EXCLUDES := 265ifeq ($(USE_EXTERNAL_LIBZ), true) 266 LIBZ := -lz 267 LIBZIP_EXCLUDES += zlib 268else 269 ZLIB_CPPFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib 270endif 271 272BUILD_LIBZIP_REORDER := 273ifeq ($(OPENJDK_TARGET_OS), solaris) 274 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 275 BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU) 276 endif 277endif 278 279ifeq ($(LIBZIP_CAN_USE_MMAP), true) 280 BUILD_LIBZIP_MMAP := -DUSE_MMAP 281endif 282 283$(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \ 284 LIBRARY := zip, \ 285 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 286 LANG := C, \ 287 OPTIMIZATION := LOW, \ 288 SRC := $(JDK_TOPDIR)/src/share/native/java/util/zip, \ 289 EXCLUDES := $(LIBZIP_EXCLUDES), \ 290 CFLAGS := $(CFLAGS_JDKLIB) \ 291 $(ZLIB_CPPFLAGS) \ 292 -I$(JDK_TOPDIR)/src/share/native/java/io \ 293 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io, \ 294 CFLAGS_posix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \ 295 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \ 296 REORDER := $(BUILD_LIBZIP_REORDER), \ 297 LDFLAGS := $(LDFLAGS_JDKLIB) \ 298 $(call SET_SHARED_LIBRARY_ORIGIN) \ 299 $(EXPORT_ZIP_FUNCS), \ 300 LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \ 301 -export:ZIP_ReadEntry -export:ZIP_GetNextEntry -export:ZIP_CRC32 jvm.lib \ 302 $(WIN_JAVA_LIB), \ 303 LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \ 304 LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \ 305 LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\ 306 LDFLAGS_SUFFIX_bsd := -ljvm -ljava $(LIBZ), \ 307 LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \ 308 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 309 RC_FLAGS := $(RC_FLAGS) \ 310 -D "JDK_FNAME=zip.dll" \ 311 -D "JDK_INTERNAL_NAME=zip" \ 312 -D "JDK_FTYPE=0x2L", \ 313 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libzip, \ 314 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 315 316 317$(BUILD_LIBZIP): $(BUILD_LIBJAVA) 318 319BUILD_LIBRARIES += $(BUILD_LIBZIP) 320 321########################################################################################## 322 323$(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK, \ 324 LIBRARY := unpack, \ 325 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 326 SRC := $(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack, \ 327 EXCLUDE_FILES := main.cpp, \ 328 LANG := C++, \ 329 OPTIMIZATION := LOW, \ 330 CFLAGS := $(CXXFLAGS_JDKLIB) \ 331 -DNO_ZLIB -DUNPACK_JNI -DFULL, \ 332 CFLAGS_release := -DPRODUCT, \ 333 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \ 334 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ 335 $(call SET_SHARED_LIBRARY_ORIGIN), \ 336 LDFLAGS_windows := -map:$(JDK_OUTPUTDIR)/objs/unpack.map -debug \ 337 jvm.lib $(WIN_JAVA_LIB), \ 338 LDFLAGS_SUFFIX_posix := -ljvm $(LIBCXX) -ljava -lc, \ 339 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libunpack, \ 340 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 341 RC_FLAGS := $(RC_FLAGS) \ 342 -D "JDK_FNAME=unpack.dll" \ 343 -D "JDK_INTERNAL_NAME=unpack" \ 344 -D "JDK_FTYPE=0x2L", \ 345 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 346 347$(BUILD_LIBUNPACK): $(BUILD_LIBJAVA) 348 349BUILD_LIBRARIES += $(BUILD_LIBUNPACK) 350 351########################################################################################## 352 353BUILD_LIBJLI_SRC_DIRS := $(JDK_TOPDIR)/src/share/bin $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin 354LIBJLI_CFLAGS := $(CFLAGS_JDKLIB) $(foreach dir, $(BUILD_LIBJLI_SRC_DIRS), -I$(dir)) 355 356BUILD_LIBJLI_FILES := \ 357 java.c \ 358 splashscreen_stubs.c \ 359 parse_manifest.c \ 360 version_comp.c \ 361 wildcard.c \ 362 jli_util.c 363 364ifeq ($(JVM_VARIANT_ZERO), true) 365 ERGO_FAMILY := zero 366else 367 ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86) 368 ERGO_FAMILY := i586 369 else 370 ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH) 371 endif 372endif 373 374ifeq ($(OPENJDK_TARGET_OS), macosx) 375 LIBJLI_CFLAGS += -I$(JDK_TOPDIR)/src/macosx/bin 376 BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/bin 377 BUILD_LIBJLI_FILES += java_md_common.c java_md_macosx.c 378 379 BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c 380 BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c 381endif 382 383ifeq ($(OPENJDK_TARGET_OS), windows) 384 BUILD_LIBJLI_FILES += java_md.c \ 385 cmdtoargs.c 386 # Staticically link with c runtime on windows. 387 LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS)) 388 # Supply the name of the C runtime lib. 389 LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' 390 ifneq ($(MSVCP_DLL), ) 391 LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' 392 endif 393else ifneq ($(OPENJDK_TARGET_OS), macosx) 394 395 BUILD_LIBJLI_FILES += java_md_common.c 396 BUILD_LIBJLI_FILES += java_md_solinux.c ergo.c 397 398 ERGO_ARCH_FILE = ergo_$(ERGO_FAMILY).c 399 400 # if the architecture specific ergo file exists then 401 # use it, else use the generic definitions from ergo.c 402 ifneq ($(wildcard $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin/$(ERGO_ARCH_FILE)), ) 403 BUILD_LIBJLI_FILES += $(ERGO_ARCH_FILE) 404 else # !ERGO_ARCH_FILE 405 LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO 406 endif # ERGO_ARCH_FILE 407endif #WINDOWS 408 409# Append defines depending on target platform 410LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS) 411 412ifeq ($(OPENJDK_TARGET_OS), macosx) 413 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" 414 LIBJLI_CFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN) 415endif 416 417ifeq ($(OPENJDK_TARGET_OS), bsd) 418 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" 419endif 420 421ifneq ($(USE_EXTERNAL_LIBZ), true) 422 BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/share/native/java/util/zip/zlib 423 LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS) 424 BUILD_LIBJLI_FILES += \ 425 inflate.c \ 426 inftrees.c \ 427 inffast.c \ 428 zadler32.c \ 429 zcrc32.c \ 430 zutil.c 431endif 432 433ifeq ($(OPENJDK_TARGET_OS), windows) 434 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE) 435else 436 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli 437endif 438 439$(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ 440 LIBRARY := jli, \ 441 OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \ 442 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 443 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 444 LANG := C, \ 445 OPTIMIZATION := HIGH, \ 446 CFLAGS := $(LIBJLI_CFLAGS), \ 447 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \ 448 LDFLAGS := $(LDFLAGS_JDKLIB) \ 449 $(call SET_SHARED_LIBRARY_ORIGIN), \ 450 LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ 451 LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ 452 LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ 453 LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices -mmacosx-version-min=$(MACOSX_VERSION_MIN), \ 454 LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ 455 LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ 456 LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\ 457 LDFLAGS_SUFFIX_macosx := $(LIBZ), \ 458 LDFLAGS_SUFFIX_bsd := $(LIBZ) -pthread, \ 459 LDFLAGS_SUFFIX_windows := \ 460 -export:JLI_Launch \ 461 -export:JLI_ManifestIterate \ 462 -export:JLI_SetTraceLauncher \ 463 -export:JLI_ReportErrorMessage \ 464 -export:JLI_ReportErrorMessageSys \ 465 -export:JLI_ReportMessage \ 466 -export:JLI_ReportExceptionDescription \ 467 -export:JLI_MemAlloc \ 468 -export:JLI_CmdToArgs \ 469 -export:JLI_GetStdArgc \ 470 -export:JLI_GetStdArgs \ 471 advapi32.lib \ 472 comctl32.lib \ 473 user32.lib, \ 474 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 475 RC_FLAGS := $(RC_FLAGS) \ 476 -D "JDK_FNAME=jli.dll" \ 477 -D "JDK_INTERNAL_NAME=jli" \ 478 -D "JDK_FTYPE=0x2L", \ 479 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli, \ 480 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 481 482BUILD_LIBRARIES += $(BUILD_LIBJLI) 483 484# On windows, the static library has the same suffix as the import library created by 485# with the shared library, so the static library is given a different name. No harm 486# in doing it for all platform to reduce complexity. 487ifeq ($(OPENJDK_TARGET_OS), windows) 488 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ 489 STATIC_LIBRARY := jli_static, \ 490 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 491 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 492 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 493 LANG := C, \ 494 OPTIMIZATION := HIGH, \ 495 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \ 496 ARFLAGS := $(ARFLAGS), \ 497 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli_static, \ 498 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 499 500 BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC) 501 502else ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), ) 503 # 504 # On BSD they do partial (incremental) linking of libjli_static.a 505 # code it here...rather than add support to NativeCompilation 506 # as this is first time I see it 507 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ 508 LIBRARY := jli_static, \ 509 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 510 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 511 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 512 LANG := C, \ 513 OPTIMIZATION := HIGH, \ 514 CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ 515 LDFLAGS := -nostdlib -r, \ 516 LDFLAGS_macosx := -mmacosx-version-min=$(MACOSX_VERSION_MIN), \ 517 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli_static, \ 518 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 519 520 $(JDK_OUTPUTDIR)/objs/libjli_static.a: $(BUILD_LIBJLI_STATIC) 521 $(call install-file) 522 523 BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a 524 525else ifeq ($(OPENJDK_TARGET_OS), aix) 526 # AIX also requires a static libjli because the compiler doesn't support '-rpath' 527 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\ 528 STATIC_LIBRARY:=jli_static,\ 529 OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\ 530 SRC:=$(BUILD_LIBJLI_SRC_DIRS),\ 531 INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\ 532 LANG:=C,\ 533 OPTIMIZATION:=HIGH, \ 534 CFLAGS:=$(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS),\ 535 ARFLAGS:=$(ARFLAGS),\ 536 OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static)) 537 538 BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a 539 540endif 541 542########################################################################################## 543 544ifeq ($(OPENJDK_TARGET_OS), bsd) 545 BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include 546 ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) 547 BSD_ICONV_CFLAGS += -DLIBICONV_PLUG 548 endif 549endif 550 551$(eval $(call SetupNativeCompilation,BUILD_LIBNPT, \ 552 LIBRARY := npt, \ 553 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 554 SRC := $(JDK_TOPDIR)/src/share/npt $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \ 555 LANG := C, \ 556 OPTIMIZATION := LOW, \ 557 CFLAGS := $(CFLAGS_JDKLIB) \ 558 -I$(JDK_TOPDIR)/src/share/npt \ 559 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \ 560 CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \ 561 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \ 562 LDFLAGS := $(LDFLAGS_JDKLIB) \ 563 $(call SET_SHARED_LIBRARY_ORIGIN), \ 564 LDFLAGS_bsd := , \ 565 LDFLAGS_macosx := -liconv, \ 566 LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \ 567 LDFLAGS_SUFFIX_solaris := -lc, \ 568 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 569 RC_FLAGS := $(RC_FLAGS) \ 570 -D "JDK_FNAME=npt.dll" \ 571 -D "JDK_INTERNAL_NAME=npt" \ 572 -D "JDK_FTYPE=0x2L", \ 573 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libnpt, \ 574 DEBUG_SYMBOLS := true)) 575 576BUILD_LIBRARIES += $(BUILD_LIBNPT) 577