1 # 2 # Copyright (c) 2011, 2013, 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 WIN_VERIFY_LIB := $(JDK_OUTPUTDIR)/objs/libverify/verify.lib 27 28 ########################################################################################## 29 30 BUILD_LIBFDLIBM_OPTIMIZATION := NONE 31 32 ifeq ($(OPENJDK_TARGET_OS), solaris) 33 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 34 endif 35 36 ifeq ($(OPENJDK_TARGET_OS), linux) 37 ifeq ($(OPENJDK_TARGET_CPU), ppc64) 38 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 39 else ifeq ($(OPENJDK_TARGET_CPU), ppc64le) 40 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 41 else ifeq ($(OPENJDK_TARGET_CPU), aarch64) 42 BUILD_LIBFDLIBM_OPTIMIZATION := HIGH 43 endif 44 endif 45 46 ifneq ($(OPENJDK_TARGET_OS), macosx) 47 $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM, \ 48 STATIC_LIBRARY := fdlibm, \ 49 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 50 SRC := $(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src, \ 51 LANG := C, \ 52 OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \ 53 CFLAGS := $(CFLAGS_JDKLIB) \ 54 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include, \ 55 CFLAGS_windows_debug := -DLOGGING, \ 56 CFLAGS_aix := -qfloat=nomaf, \ 57 CFLAGS_linux_ppc64 := -ffp-contract=off, \ 58 CFLAGS_linux_ppc64le := -ffp-contract=off, \ 59 CFLAGS_linux_aarch64 := -ffp-contract=off, \ 60 ARFLAGS := $(ARFLAGS), \ 61 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 62 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 63 64 else 65 66 # On macosx the old build does partial (incremental) linking of fdlibm instead of 67 # a plain static library. 68 $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM_MAC, \ 69 LIBRARY := fdlibm, \ 70 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 71 SRC := $(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/src, \ 72 LANG := C, \ 73 CFLAGS := $(CFLAGS_JDKLIB) \ 74 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include, \ 75 LDFLAGS := -nostdlib -r -arch x86_64, \ 76 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \ 77 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 78 79 BUILD_LIBFDLIBM := $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX) 80 $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC) 81 $(call install-file) 82 83 endif 84 85 BUILD_LIBRARIES += $(BUILD_LIBFDLIBM) 86 87 ########################################################################################## 88 89 BUILD_LIBVERIFY_SRC := check_code.c check_format.c 90 91 ifeq ($(OPENJDK_TARGET_OS), solaris) 92 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 93 BUILD_LIBVERIFY_REORDER := $(JDK_TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU) 94 endif 95 endif 96 97 LIBVERIFY_OPTIMIZATION := HIGH 98 ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) 99 ifeq ($(ENABLE_DEBUG_SYMBOLS), true) 100 LIBVERIFY_OPTIMIZATION := LOW 101 endif 102 endif 103 104 $(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \ 105 LIBRARY := verify, \ 106 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 107 SRC := $(JDK_TOPDIR)/src/share/native/common, \ 108 INCLUDE_FILES := $(BUILD_LIBVERIFY_SRC), \ 109 LANG := C, \ 110 OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \ 111 CFLAGS := $(CFLAGS_JDKLIB), \ 112 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \ 113 LDFLAGS := $(LDFLAGS_JDKLIB) \ 114 $(call SET_SHARED_LIBRARY_ORIGIN), \ 115 LDFLAGS_SUFFIX_posix := -ljvm -lc, \ 116 LDFLAGS_SUFFIX_windows := jvm.lib, \ 117 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 118 RC_FLAGS := $(RC_FLAGS) \ 119 -D "JDK_FNAME=verify.dll" \ 120 -D "JDK_INTERNAL_NAME=verify" \ 121 -D "JDK_FTYPE=0x2L", \ 122 REORDER := $(BUILD_LIBVERIFY_REORDER), \ 123 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libverify, \ 124 DEBUG_SYMBOLS := true)) 125 126 BUILD_LIBRARIES += $(BUILD_LIBVERIFY) 127 128 ########################################################################################## 129 130 LIBJAVA_SRC_DIRS := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/lang \ 131 $(JDK_TOPDIR)/src/share/native/java/lang \ 132 $(JDK_TOPDIR)/src/share/native/java/lang/reflect \ 133 $(JDK_TOPDIR)/src/share/native/java/io \ 134 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \ 135 $(JDK_TOPDIR)/src/share/native/java/nio \ 136 $(JDK_TOPDIR)/src/share/native/java/security \ 137 $(JDK_TOPDIR)/src/share/native/common \ 138 $(JDK_TOPDIR)/src/share/native/sun/misc \ 139 $(JDK_TOPDIR)/src/share/native/sun/reflect \ 140 $(JDK_TOPDIR)/src/share/native/java/util \ 141 $(JDK_TOPDIR)/src/share/native/java/util/concurrent/atomic \ 142 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/common \ 143 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/util 144 145 ifeq ($(OPENJDK_TARGET_OS), windows) 146 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/util/locale/provider 147 else ifeq ($(OPENJDK_TARGET_OS), macosx) 148 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/sun/util/locale/provider 149 endif 150 151 ifeq ($(OPENJDK_TARGET_OS), windows) 152 LIBJAVA_SRC_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/security/provider \ 153 $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/io 154 endif 155 156 LIBJAVA_CFLAGS := $(foreach dir, $(LIBJAVA_SRC_DIRS), -I$(dir)) \ 157 -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include \ 158 -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"' 159 160 LIBJAVA_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \ 161 -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \ 162 -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \ 163 -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"' 164 165 ifneq (, $(JDK_UPDATE_VERSION)) 166 LIBJAVA_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"' 167 endif 168 169 LIBJAVA_EXCLUDE_FILES := check_code.c check_format.c jspawnhelper.c 170 171 ifneq ($(OPENJDK_TARGET_OS), macosx) 172 LIBJAVA_EXCLUDE_FILES += java_props_macosx.c 173 else 174 BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c 175 BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c 176 endif 177 178 ifeq ($(OPENJDK_TARGET_OS), windows) 179 LIBJAVA_EXCLUDE_FILES += \ 180 UNIXProcess_md.c \ 181 UnixFileSystem_md.c \ 182 FileSystemPreferences.c 183 else 184 LIBJAVA_EXCLUDE_FILES += \ 185 ProcessImpl_md.c \ 186 WinNTFileSystem_md.c \ 187 dirent_md.c \ 188 WindowsPreferences.c \ 189 sun/security/provider/WinCAPISeedGenerator.c \ 190 sun/io/Win32ErrorMode.c 191 endif 192 193 ifeq ($(OPENJDK_TARGET_OS), solaris) 194 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 195 LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU) 196 endif 197 endif 198 199 $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \ 200 LIBRARY := java, \ 201 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 202 SRC := $(LIBJAVA_SRC_DIRS), \ 203 EXCLUDES := fdlibm/src zip, \ 204 EXCLUDE_FILES := $(LIBJAVA_EXCLUDE_FILES), \ 205 LANG := C, \ 206 OPTIMIZATION := HIGH, \ 207 CFLAGS := $(CFLAGS_JDKLIB) \ 208 $(LIBJAVA_CFLAGS), \ 209 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \ 210 LDFLAGS := $(LDFLAGS_JDKLIB) \ 211 $(call SET_SHARED_LIBRARY_ORIGIN), \ 212 LDFLAGS_SUFFIX_posix := -ljvm -lverify, \ 213 LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \ 214 LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \ 215 LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\ 216 LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \ 217 -framework CoreFoundation \ 218 -framework Foundation \ 219 -framework Security -framework SystemConfiguration, \ 220 LDFLAGS_SUFFIX_windows := -export:winFileHandleOpen -export:handleLseek \ 221 -export:getErrorString \ 222 jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \ 223 shell32.lib delayimp.lib -DELAYLOAD:shell32.dll \ 224 advapi32.lib version.lib, \ 225 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 226 RC_FLAGS := $(RC_FLAGS) \ 227 -D "JDK_FNAME=java.dll" \ 228 -D "JDK_INTERNAL_NAME=java" \ 229 -D "JDK_FTYPE=0x2L", \ 230 REORDER := $(LIBJAVA_REORDER), \ 231 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjava, \ 232 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 233 234 BUILD_LIBRARIES += $(BUILD_LIBJAVA) 235 236 $(BUILD_LIBJAVA): $(LIBJLI_BINARY) 237 238 $(BUILD_LIBJAVA): $(BUILD_LIBVERIFY) 239 240 $(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM) 241 242 ########################################################################################## 243 244 BUILD_LIBZIP_EXCLUDES := 245 ifeq ($(USE_EXTERNAL_LIBZ), true) 246 LIBZ := -lz 247 LIBZIP_EXCLUDES += zlib-1.2.8 248 else 249 ZLIB_CPPFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.8 250 endif 251 252 BUILD_LIBZIP_REORDER := 253 ifeq ($(OPENJDK_TARGET_OS), solaris) 254 ifneq ($(OPENJDK_TARGET_CPU), x86_64) 255 BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU) 256 endif 257 endif 258 259 ifeq ($(LIBZIP_CAN_USE_MMAP), true) 260 BUILD_LIBZIP_MMAP := -DUSE_MMAP 261 endif 262 263 $(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \ 264 LIBRARY := zip, \ 265 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 266 LANG := C, \ 267 OPTIMIZATION := LOW, \ 268 SRC := $(JDK_TOPDIR)/src/share/native/java/util/zip, \ 269 EXCLUDES := $(LIBZIP_EXCLUDES), \ 270 CFLAGS := $(CFLAGS_JDKLIB) \ 271 $(ZLIB_CPPFLAGS) \ 272 -I$(JDK_TOPDIR)/src/share/native/java/io \ 273 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io, \ 274 CFLAGS_posix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \ 275 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \ 276 REORDER := $(BUILD_LIBZIP_REORDER), \ 277 LDFLAGS := $(LDFLAGS_JDKLIB) \ 278 $(call SET_SHARED_LIBRARY_ORIGIN) \ 279 $(EXPORT_ZIP_FUNCS), \ 280 LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \ 281 -export:ZIP_ReadEntry -export:ZIP_GetNextEntry -export:ZIP_CRC32 jvm.lib \ 282 $(WIN_JAVA_LIB), \ 283 LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \ 284 LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \ 285 LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\ 286 LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \ 287 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 288 RC_FLAGS := $(RC_FLAGS) \ 289 -D "JDK_FNAME=zip.dll" \ 290 -D "JDK_INTERNAL_NAME=zip" \ 291 -D "JDK_FTYPE=0x2L", \ 292 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libzip, \ 293 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 294 295 296 $(BUILD_LIBZIP): $(BUILD_LIBJAVA) 297 298 BUILD_LIBRARIES += $(BUILD_LIBZIP) 299 300 ########################################################################################## 301 302 $(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK, \ 303 LIBRARY := unpack, \ 304 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 305 SRC := $(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack, \ 306 EXCLUDE_FILES := main.cpp, \ 307 LANG := C++, \ 308 OPTIMIZATION := LOW, \ 309 CFLAGS := $(CXXFLAGS_JDKLIB) \ 310 -DNO_ZLIB -DUNPACK_JNI -DFULL, \ 311 CFLAGS_release := -DPRODUCT, \ 312 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \ 313 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ 314 $(call SET_SHARED_LIBRARY_ORIGIN), \ 315 LDFLAGS_windows := -map:$(JDK_OUTPUTDIR)/objs/unpack.map -debug \ 316 jvm.lib $(WIN_JAVA_LIB), \ 317 LDFLAGS_SUFFIX_posix := -ljvm $(LIBCXX) -ljava -lc, \ 318 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libunpack, \ 319 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 320 RC_FLAGS := $(RC_FLAGS) \ 321 -D "JDK_FNAME=unpack.dll" \ 322 -D "JDK_INTERNAL_NAME=unpack" \ 323 -D "JDK_FTYPE=0x2L", \ 324 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 325 326 $(BUILD_LIBUNPACK): $(BUILD_LIBJAVA) 327 328 BUILD_LIBRARIES += $(BUILD_LIBUNPACK) 329 330 ifeq ($(OPENJDK_TARGET_OS), windows) 331 $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.map: $(BUILD_LIBUNPACK) 332 $(ECHO) Copying $(@F) 333 $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.map, $<) $@ 334 335 $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.pdb: $(BUILD_LIBUNPACK) 336 $(ECHO) Copying $(@F) 337 $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.pdb, $<) $@ 338 endif 339 340 ########################################################################################## 341 342 BUILD_LIBJLI_SRC_DIRS := $(JDK_TOPDIR)/src/share/bin $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin 343 LIBJLI_CFLAGS := $(CFLAGS_JDKLIB) $(foreach dir, $(BUILD_LIBJLI_SRC_DIRS), -I$(dir)) 344 345 BUILD_LIBJLI_FILES := \ 346 java.c \ 347 splashscreen_stubs.c \ 348 parse_manifest.c \ 349 version_comp.c \ 350 wildcard.c \ 351 jli_util.c 352 353 ifeq ($(JVM_VARIANT_ZERO), true) 354 ERGO_FAMILY := zero 355 else 356 ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86) 357 ERGO_FAMILY := i586 358 else 359 ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH) 360 endif 361 endif 362 363 ifeq ($(OPENJDK_TARGET_OS), macosx) 364 LIBJLI_CFLAGS += -I$(JDK_TOPDIR)/src/macosx/bin 365 BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/bin 366 BUILD_LIBJLI_FILES += java_md_common.c java_md_macosx.c 367 368 BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c 369 BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c 370 endif 371 372 ifeq ($(OPENJDK_TARGET_OS), windows) 373 BUILD_LIBJLI_FILES += java_md.c \ 374 cmdtoargs.c 375 # Staticically link with c runtime on windows. 376 LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS)) 377 else ifneq ($(OPENJDK_TARGET_OS), macosx) 378 379 BUILD_LIBJLI_FILES += java_md_common.c 380 BUILD_LIBJLI_FILES += java_md_solinux.c ergo.c 381 382 ERGO_ARCH_FILE = ergo_$(ERGO_FAMILY).c 383 384 # if the architecture specific ergo file exists then 385 # use it, else use the generic definitions from ergo.c 386 ifneq ($(wildcard $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin/$(ERGO_ARCH_FILE)), ) 387 BUILD_LIBJLI_FILES += $(ERGO_ARCH_FILE) 388 else # !ERGO_ARCH_FILE 389 LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO 390 endif # ERGO_ARCH_FILE 391 endif #WINDOWS 392 393 # Append defines depending on target platform 394 LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS) 395 396 ifeq ($(OPENJDK_TARGET_OS), macosx) 397 LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" 398 endif 399 400 ifneq ($(USE_EXTERNAL_LIBZ), true) 401 BUILD_LIBJLI_SRC_DIRS += $(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.8 402 LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS) 403 BUILD_LIBJLI_FILES += \ 404 inflate.c \ 405 inftrees.c \ 406 inffast.c \ 407 zadler32.c \ 408 zcrc32.c \ 409 zutil.c 410 endif 411 412 ifeq ($(OPENJDK_TARGET_OS), windows) 413 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE) 414 else 415 LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli 416 endif 417 418 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ 419 LIBRARY := jli, \ 420 OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \ 421 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 422 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 423 LANG := C, \ 424 OPTIMIZATION := HIGH, \ 425 CFLAGS := $(LIBJLI_CFLAGS), \ 426 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \ 427 LDFLAGS := $(LDFLAGS_JDKLIB) \ 428 $(call SET_SHARED_LIBRARY_ORIGIN), \ 429 LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ 430 LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ 431 LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ 432 LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ 433 LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ 434 LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\ 435 LDFLAGS_SUFFIX_macosx := $(LIBZ), \ 436 LDFLAGS_SUFFIX_windows := \ 437 -export:JLI_Launch \ 438 -export:JLI_ManifestIterate \ 439 -export:JLI_SetTraceLauncher \ 440 -export:JLI_ReportErrorMessage \ 441 -export:JLI_ReportErrorMessageSys \ 442 -export:JLI_ReportMessage \ 443 -export:JLI_ReportExceptionDescription \ 444 -export:JLI_MemAlloc \ 445 -export:JLI_CmdToArgs \ 446 -export:JLI_GetStdArgc \ 447 -export:JLI_GetStdArgs \ 448 advapi32.lib \ 449 comctl32.lib \ 450 user32.lib, \ 451 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 452 RC_FLAGS := $(RC_FLAGS) \ 453 -D "JDK_FNAME=jli.dll" \ 454 -D "JDK_INTERNAL_NAME=jli" \ 455 -D "JDK_FTYPE=0x2L", \ 456 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli, \ 457 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 458 459 BUILD_LIBRARIES += $(BUILD_LIBJLI) 460 461 # On windows, the static library has the same suffix as the import library created by 462 # with the shared library, so the static library is given a different name. No harm 463 # in doing it for all platform to reduce complexity. 464 ifeq ($(OPENJDK_TARGET_OS), windows) 465 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ 466 STATIC_LIBRARY := jli_static, \ 467 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 468 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 469 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 470 LANG := C, \ 471 OPTIMIZATION := HIGH, \ 472 CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \ 473 ARFLAGS := $(ARFLAGS), \ 474 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli_static, \ 475 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 476 477 BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC) 478 479 else ifeq ($(OPENJDK_TARGET_OS), macosx) 480 # 481 # On macosx they do partial (incremental) linking of libjli_static.a 482 # code it here...rather than add support to NativeCompilation 483 # as this is first time I see it 484 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ 485 LIBRARY := jli_static, \ 486 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \ 487 SRC := $(BUILD_LIBJLI_SRC_DIRS), \ 488 INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \ 489 LANG := C, \ 490 OPTIMIZATION := HIGH, \ 491 CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ 492 LDFLAGS := -nostdlib -r, \ 493 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli_static, \ 494 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) 495 496 $(JDK_OUTPUTDIR)/objs/libjli_static.a: $(BUILD_LIBJLI_STATIC) 497 $(call install-file) 498 499 BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a 500 501 else ifeq ($(OPENJDK_TARGET_OS), aix) 502 # AIX also requires a static libjli because the compiler doesn't support '-rpath' 503 $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\ 504 STATIC_LIBRARY:=jli_static,\ 505 OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\ 506 SRC:=$(BUILD_LIBJLI_SRC_DIRS),\ 507 INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\ 508 LANG:=C,\ 509 OPTIMIZATION:=HIGH, \ 510 CFLAGS:=$(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS),\ 511 ARFLAGS:=$(ARFLAGS),\ 512 OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static)) 513 514 BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a 515 516 endif 517 518 ########################################################################################## 519 520 $(eval $(call SetupNativeCompilation,BUILD_LIBNPT, \ 521 LIBRARY := npt, \ 522 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ 523 SRC := $(JDK_TOPDIR)/src/share/npt $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \ 524 LANG := C, \ 525 OPTIMIZATION := LOW, \ 526 CFLAGS := $(CFLAGS_JDKLIB) \ 527 -I$(JDK_TOPDIR)/src/share/npt \ 528 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \ 529 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \ 530 LDFLAGS := $(LDFLAGS_JDKLIB) \ 531 $(call SET_SHARED_LIBRARY_ORIGIN), \ 532 LDFLAGS_macosx := -liconv, \ 533 LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \ 534 LDFLAGS_SUFFIX_solaris := -lc, \ 535 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ 536 RC_FLAGS := $(RC_FLAGS) \ 537 -D "JDK_FNAME=npt.dll" \ 538 -D "JDK_INTERNAL_NAME=npt" \ 539 -D "JDK_FTYPE=0x2L", \ 540 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libnpt, \ 541 DEBUG_SYMBOLS := true)) 542 543 BUILD_LIBRARIES += $(BUILD_LIBNPT)