| # | |
| # Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. | |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| # | |
| # This code is free software; you can redistribute it and/or modify it | |
| # under the terms of the GNU General Public License version 2 only, as | |
| # published by the Free Software Foundation. Oracle designates this | |
| # particular file as subject to the "Classpath" exception as provided | |
| # by Oracle in the LICENSE file that accompanied this code. | |
| # | |
| # This code is distributed in the hope that it will be useful, but WITHOUT | |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| # version 2 for more details (a copy is included in the LICENSE file that | |
| # accompanied this code). | |
| # | |
| # You should have received a copy of the GNU General Public License version | |
| # 2 along with this work; if not, write to the Free Software Foundation, | |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| # | |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| # or visit www.oracle.com if you need additional information or have any | |
| # questions. | |
| # | |
| include MakeIncludeStart.gmk | |
| ifeq ($(INCLUDE), true) | |
| ################################################################################ | |
| ################################################################################ | |
| ## Build libverify | |
| ################################################################################ | |
| $(eval $(call SetupJdkLibrary, BUILD_LIBVERIFY, \ | |
| NAME := verify, \ | |
| OPTIMIZATION := HIGH, \ | |
| DISABLED_WARNINGS_gcc_check_code.c := unused-variable, \ | |
| DISABLED_WARNINGS_clang_check_code.c := unused-variable, \ | |
| EXTRA_HEADER_DIRS := libjava, \ | |
| JDK_LIBS := libjvm, \ | |
| )) | |
| TARGETS += $(BUILD_LIBVERIFY) | |
| ################################################################################ | |
| ## Build libjava | |
| ################################################################################ | |
| ifeq ($(call isTargetOs, macosx), true) | |
| BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c | |
| BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c | |
| endif | |
| $(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \ | |
| NAME := java, \ | |
| OPTIMIZATION := HIGH, \ | |
| jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \ | |
| ProcessImpl_md.c_CFLAGS := $(VERSION_CFLAGS), \ | |
| java_props_md.c_CFLAGS := \ | |
| -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"', \ | |
| DISABLED_WARNINGS_gcc_ProcessImpl_md.c := unused-result, \ | |
| DISABLED_WARNINGS_clang_TimeZone_md.c := unused-variable, \ | |
| JDK_LIBS := libjvm, \ | |
| LIBS_linux := $(LIBDL), \ | |
| LIBS_aix := $(LIBDL) $(LIBM), \ | |
| LIBS_macosx := \ | |
| -framework CoreFoundation \ | |
| -framework Foundation \ | |
| -framework SystemConfiguration, \ | |
| LIBS_windows := advapi32.lib ole32.lib shell32.lib version.lib, \ | |
| )) | |
| TARGETS += $(BUILD_LIBJAVA) | |
| ################################################################################ | |
| ## Build libzip | |
| ################################################################################ | |
| BUILD_LIBZIP_EXCLUDES := | |
| ifeq ($(USE_EXTERNAL_LIBZ), true) | |
| LIBZIP_EXCLUDES += zlib | |
| endif | |
| ifeq ($(LIBZIP_CAN_USE_MMAP), true) | |
| BUILD_LIBZIP_MMAP := -DUSE_MMAP | |
| endif | |
| $(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \ | |
| NAME := zip, \ | |
| OPTIMIZATION := LOW, \ | |
| EXCLUDES := $(LIBZIP_EXCLUDES), \ | |
| CFLAGS := $(LIBZ_CFLAGS), \ | |
| CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \ | |
| DISABLED_WARNINGS_gcc_zip_util.c := unused-function, \ | |
| DISABLED_WARNINGS_clang := deprecated-non-prototype, \ | |
| DISABLED_WARNINGS_clang_gzwrite.c := format-nonliteral, \ | |
| DISABLED_WARNINGS_clang_zip_util.c := unused-function, \ | |
| JDK_LIBS := libjava libjvm, \ | |
| LIBS_unix := $(LIBZ_LIBS), \ | |
| )) | |
| TARGETS += $(BUILD_LIBZIP) | |
| ################################################################################ | |
| ## Build libjimage | |
| ################################################################################ | |
| $(eval $(call SetupJdkLibrary, BUILD_LIBJIMAGE, \ | |
| NAME := jimage, \ | |
| LINK_TYPE := C++, \ | |
| OPTIMIZATION := LOW, \ | |
| EXTRA_HEADER_DIRS := libjava, \ | |
| CFLAGS_unix := -UDEBUG, \ | |
| DISABLED_WARNINGS_gcc_imageDecompressor.cpp := unused-variable, \ | |
| DISABLED_WARNINGS_gcc_imageFile.cpp := unused-const-variable \ | |
| unused-variable, \ | |
| DISABLED_WARNINGS_clang_imageDecompressor.cpp := unused-variable, \ | |
| DISABLED_WARNINGS_clang_imageFile.cpp := unused-private-field \ | |
| unused-variable, \ | |
| LDFLAGS := $(LDFLAGS_CXX_JDK), \ | |
| JDK_LIBS := libjvm, \ | |
| LIBS_unix := $(LIBDL), \ | |
| )) | |
| TARGETS += $(BUILD_LIBJIMAGE) | |
| ################################################################################ | |
| ## Build libjli | |
| ################################################################################ | |
| ifeq ($(call isTargetOs, macosx), true) | |
| LIBJLI_EXCLUDE_FILES += java_md.c | |
| endif | |
| ifeq ($(call isTargetOs, windows), true) | |
| # Supply the name of the C runtime libs. | |
| ifneq ($(MSVCR_DLL), ) | |
| LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' | |
| endif | |
| ifneq ($(VCRUNTIME_1_DLL), ) | |
| LIBJLI_CFLAGS += -DVCRUNTIME_1_DLL_NAME='"$(notdir $(VCRUNTIME_1_DLL))"' | |
| endif | |
| ifneq ($(MSVCP_DLL), ) | |
| LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' | |
| endif | |
| endif | |
| ifneq ($(USE_EXTERNAL_LIBZ), true) | |
| # Extra files from the zlib. | |
| LIBJLI_EXTRA_FILE_LIST := inflate.c inftrees.c inffast.c zadler32.c \ | |
| zcrc32.c zutil.c | |
| LIBJLI_EXTRA_FILES += \ | |
| $(addprefix $(TOPDIR)/src/java.base/share/native/libzip/zlib/, \ | |
| $(LIBJLI_EXTRA_FILE_LIST)) | |
| # Do not include these libz objects in the static libjli library. | |
| # When statically linking the java launcher with all JDK and VM | |
| # static libraries, we use the --whole-archive linker option. | |
| # The duplicate objects in different static libraries cause linking | |
| # errors due to duplicate symbols. | |
| LIBJLI_STATIC_EXCLUDE_OBJS := \ | |
| $(subst .c,$(OBJ_SUFFIX),$(LIBJLI_EXTRA_FILE_LIST)) | |
| endif | |
| ifeq ($(call isTargetOs, aix), true) | |
| # AIX requires a static libjli because the compiler doesn't support '-rpath' | |
| BUILD_LIBJLI_TYPE := STATIC_LIBRARY | |
| # This is the object file to provide the dladdr API, which is not | |
| # part of AIX. It occurs several times in the jdk code base. | |
| # Do not include it. When statically linking the java | |
| # launcher with all JDK and VM static libraries, we use the | |
| # --whole-archive linker option. The duplicate objects in different | |
| # static libraries cause linking errors due to duplicate symbols. | |
| LIBJLI_STATIC_EXCLUDE_OBJS += java_md_aix.o | |
| endif | |
| $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \ | |
| NAME := jli, \ | |
| TYPE := $(BUILD_LIBJLI_TYPE), \ | |
| EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ | |
| EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ | |
| EXTRA_HEADER_DIRS := libjvm, \ | |
| OPTIMIZATION := HIGH, \ | |
| CFLAGS := $(LIBJLI_CFLAGS) $(LIBZ_CFLAGS), \ | |
| DISABLED_WARNINGS_gcc := unused-function unused-variable, \ | |
| DISABLED_WARNINGS_clang := deprecated-non-prototype format-nonliteral \ | |
| unused-function, \ | |
| DISABLED_WARNINGS_clang_java_md_macosx.m := unused-variable, \ | |
| LIBS_unix := $(LIBZ_LIBS), \ | |
| LIBS_linux := $(LIBDL) $(LIBPTHREAD), \ | |
| LIBS_macosx := \ | |
| -framework ApplicationServices \ | |
| -framework Cocoa \ | |
| -framework Security, \ | |
| LIBS_windows := advapi32.lib comctl32.lib user32.lib, \ | |
| STATIC_LIB_EXCLUDE_OBJS := $(LIBJLI_STATIC_EXCLUDE_OBJS), \ | |
| )) | |
| TARGETS += $(BUILD_LIBJLI) | |
| ################################################################################ | |
| endif # include guard | |
| include MakeIncludeEnd.gmk |