undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
241
make/modules/java.base/Copy.gmk
Normal file
241
make/modules/java.base/Copy.gmk
Normal file
|
|
@ -0,0 +1,241 @@
|
|||
#
|
||||
# Copyright (c) 2014, 2026, 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 CopyCommon.gmk
|
||||
include Modules.gmk
|
||||
include TextFileProcessing.gmk
|
||||
|
||||
ifeq ($(call isTargetOs, aix), true)
|
||||
|
||||
TZMAPPINGS_SRC := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/conf
|
||||
|
||||
$(LIB_DST_DIR)/tzmappings: $(TZMAPPINGS_SRC)/tzmappings
|
||||
$(call install-file)
|
||||
|
||||
TARGETS += $(LIB_DST_DIR)/tzmappings
|
||||
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Copy the microsoft runtime libraries on windows, but only if we are not
|
||||
# creating a buildjdk. If we are, the provided runtime librareis are made for
|
||||
# the target platform, not the build platform (and we should not need to bundle
|
||||
# anything with the minimalistic, locally-only buildjdk.)
|
||||
ifeq ($(call isTargetOs, windows)+$(CREATING_BUILDJDK), true+false)
|
||||
|
||||
# Chmod to avoid permission issues if bundles are unpacked on unix platforms.
|
||||
# Use separate macro calls in case the source files are not in the same
|
||||
# directory.
|
||||
$(eval $(call SetupCopyFiles, COPY_MSVCR, \
|
||||
DEST := $(LIB_DST_DIR), \
|
||||
FILES := $(MSVCR_DLL), \
|
||||
MACRO := copy-and-chmod-executable, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_VCRUNTIME_1, \
|
||||
DEST := $(LIB_DST_DIR), \
|
||||
FILES := $(VCRUNTIME_1_DLL), \
|
||||
MACRO := copy-and-chmod-executable, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_MSVCP, \
|
||||
DEST := $(LIB_DST_DIR), \
|
||||
FILES := $(MSVCP_DLL), \
|
||||
MACRO := copy-and-chmod-executable, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_MSVCR) $(COPY_VCRUNTIME_1) $(COPY_MSVCP)
|
||||
|
||||
ifneq ($(UCRT_DLL_DIR), )
|
||||
$(eval $(call SetupCopyFiles, COPY_UCRT_DLLS, \
|
||||
DEST := $(LIB_DST_DIR), \
|
||||
SRC := $(UCRT_DLL_DIR), \
|
||||
FILES := $(wildcard $(UCRT_DLL_DIR)/*.dll), \
|
||||
MACRO := copy-and-chmod-executable, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_UCRT_DLLS)
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# In jvm.cfg, the first listed KNOWN variant is the default. On most build
|
||||
# configurations, that is the server variant.
|
||||
ifeq ($(call And, $(call isTargetOs, windows) $(call isTargetCpu, x86)), true)
|
||||
DEFAULT_CFG_VARIANT ?= client
|
||||
endif
|
||||
DEFAULT_CFG_VARIANT ?= server
|
||||
|
||||
# Change the order to put the default variant first if present.
|
||||
ORDERED_CFG_VARIANTS := \
|
||||
$(if $(filter $(DEFAULT_CFG_VARIANT), $(JVM_VARIANTS)), $(DEFAULT_CFG_VARIANT)) \
|
||||
$(filter-out $(DEFAULT_CFG_VARIANT), $(JVM_VARIANTS))
|
||||
|
||||
JVMCFG := $(LIB_DST_DIR)/jvm.cfg
|
||||
|
||||
define print-cfg-line
|
||||
$(call LogInfo, Adding -$1 $2 to jvm.cfg)
|
||||
$(ECHO) "-$1 $2" >> $@ $(NEWLINE)
|
||||
endef
|
||||
|
||||
$(JVMCFG): $(call DependOnVariable, ORDERED_CFG_VARIANTS)
|
||||
$(call MakeTargetDir)
|
||||
$(RM) $@
|
||||
$(foreach v, $(ORDERED_CFG_VARIANTS), \
|
||||
$(call print-cfg-line,$v,KNOWN) \
|
||||
)
|
||||
# If either of server or client aren't present, add IGNORE lines for
|
||||
# them.
|
||||
$(foreach v, server client, \
|
||||
$(if $(filter $v, $(ORDERED_CFG_VARIANTS)), , \
|
||||
$(call print-cfg-line,$v,IGNORE) \
|
||||
) \
|
||||
)
|
||||
|
||||
TARGETS += $(JVMCFG)
|
||||
|
||||
################################################################################
|
||||
|
||||
# CACERTS_FILE is optionally set in configure to override the default cacerts
|
||||
# which is otherwise generated in Gendata-java.base.gmk
|
||||
CACERTS_DST := $(LIB_DST_DIR)/security/cacerts
|
||||
|
||||
$(CACERTS_DST): $(CACERTS_FILE)
|
||||
$(call LogInfo, Copying $(patsubst $(OUTPUTDIR)/%, %, $@))
|
||||
$(call install-file)
|
||||
|
||||
ifneq ($(CACERTS_FILE), )
|
||||
TARGETS += $(CACERTS_DST)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
NET_PROPERTIES_SRCS := $(TOPDIR)/src/java.base/share/conf/net.properties \
|
||||
$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/net.properties
|
||||
|
||||
NET_PROPERTIES_DST := $(CONF_DST_DIR)/net.properties
|
||||
|
||||
$(NET_PROPERTIES_DST): $(NET_PROPERTIES_SRCS)
|
||||
$(call MakeTargetDir)
|
||||
$(CAT) $(NET_PROPERTIES_SRCS) > $@
|
||||
|
||||
TARGETS += $(NET_PROPERTIES_DST)
|
||||
|
||||
################################################################################
|
||||
|
||||
# JDK license and assembly exception files to be packaged in JMOD
|
||||
|
||||
# The license files may not be present if the source has been obtained using a
|
||||
# different license.
|
||||
JDK_LICENSE ?= $(wildcard $(TOPDIR)/LICENSE)
|
||||
JDK_NOTICE ?= $(wildcard $(TOPDIR)/ASSEMBLY_EXCEPTION)
|
||||
JDK_ADDITIONAL_LICENSE_INFO ?= $(wildcard $(TOPDIR)/ADDITIONAL_LICENSE_INFO)
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_JDK_NOTICES, \
|
||||
FILES := $(JDK_LICENSE) $(JDK_NOTICE) $(JDK_ADDITIONAL_LICENSE_INFO), \
|
||||
DEST := $(COMMON_LEGAL_DST_DIR), \
|
||||
FLATTEN := true, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_JDK_NOTICES)
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Copy and filter the legal files depending on what 3rd party components are
|
||||
# bundled or linked from the OS.
|
||||
#
|
||||
ifeq ($(USE_EXTERNAL_LIBZ), true)
|
||||
LEGAL_EXCLUDES += zlib.md
|
||||
endif
|
||||
|
||||
ifneq ($(TOOLCHAIN_TYPE), gcc)
|
||||
LEGAL_EXCLUDES += gcc.md
|
||||
endif
|
||||
|
||||
$(eval $(call SetupCopyLegalFiles, COPY_LEGAL, \
|
||||
EXCLUDES := $(LEGAL_EXCLUDES), \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_LEGAL)
|
||||
|
||||
################################################################################
|
||||
# Optionally copy libffi.so.? into the image
|
||||
|
||||
ifeq ($(ENABLE_LIBFFI_BUNDLING), true)
|
||||
$(eval $(call SetupCopyFiles, COPY_LIBFFI, \
|
||||
FILES := $(LIBFFI_LIB_FILE), \
|
||||
DEST := $(call FindLibDirForModule, $(MODULE)), \
|
||||
FLATTEN := true, \
|
||||
MACRO := install-file-nolink, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_LIBFFI)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Copy tzmappings file for Windows
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
$(eval $(call SetupCopyFiles, COPY_TZMAPPINGS, \
|
||||
FILES := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/windows/conf/tzmappings, \
|
||||
DEST := $(call FindLibDirForModule, $(MODULE)), \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_TZMAPPINGS)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Optionally copy hsdis into the image
|
||||
|
||||
ifeq ($(ENABLE_HSDIS_BUNDLING), true)
|
||||
HSDIS_NAME := hsdis-$(OPENJDK_TARGET_CPU_LEGACY_LIB)$(SHARED_LIBRARY_SUFFIX)
|
||||
HSDIS_PATH := $(SUPPORT_OUTPUTDIR)/hsdis/$(HSDIS_NAME)
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_HSDIS, \
|
||||
FILES := $(HSDIS_PATH), \
|
||||
DEST := $(call FindLibDirForModule, $(MODULE)), \
|
||||
FLATTEN := true, \
|
||||
MACRO := install-file-nolink, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_HSDIS)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Generate classfile_constants.h
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, CREATE_CLASSFILE_CONSTANTS_H, \
|
||||
SOURCE_FILES := $(TOPDIR)/src/java.base/share/native/include/classfile_constants.h.template, \
|
||||
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/modules_include/java.base/classfile_constants.h, \
|
||||
REPLACEMENTS := \
|
||||
@@VERSION_CLASSFILE_MAJOR@@ => $(VERSION_CLASSFILE_MAJOR) ; \
|
||||
@@VERSION_CLASSFILE_MINOR@@ => $(VERSION_CLASSFILE_MINOR) ; , \
|
||||
))
|
||||
|
||||
TARGETS += $(CREATE_CLASSFILE_CONSTANTS_H)
|
||||
|
||||
################################################################################
|
||||
97
make/modules/java.base/Gendata.gmk
Normal file
97
make/modules/java.base/Gendata.gmk
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
#
|
||||
# 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 GendataCommon.gmk
|
||||
include gendata/GendataBlockedCerts.gmk
|
||||
include gendata/GendataBreakIterator.gmk
|
||||
include gendata/GendataCryptoPolicy.gmk
|
||||
include gendata/GendataPublicSuffixList.gmk
|
||||
include gendata/GendataTZDB.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_UNINAME := $(JDK_OUTPUTDIR)/modules/java.base/java/lang/uniName.dat
|
||||
|
||||
$(GENDATA_UNINAME): $(MODULE_SRC)/share/data/unicodedata/UnicodeData.txt $(BUILD_TOOLS_JDK)
|
||||
$(call MakeDir, $(@D))
|
||||
$(TOOL_CHARACTERNAME) $< $@
|
||||
|
||||
TARGETS += $(GENDATA_UNINAME)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_CURDATA := $(JDK_OUTPUTDIR)/modules/java.base/java/util/currency.data
|
||||
|
||||
$(GENDATA_CURDATA): $(MODULE_SRC)/share/data/currency/CurrencyData.properties $(BUILD_TOOLS_JDK)
|
||||
$(call MakeDir, $(@D))
|
||||
$(RM) $@
|
||||
$(TOOL_GENERATECURRENCYDATA) -o $@.tmp -i $<
|
||||
$(MV) $@.tmp $@
|
||||
$(CHMOD) 444 $@
|
||||
|
||||
TARGETS += $(GENDATA_CURDATA)
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(CACERTS_SRC), )
|
||||
GENDATA_CACERTS_SRC := $(CACERTS_SRC)
|
||||
else
|
||||
GENDATA_CACERTS_SRC := $(MODULE_SRC)/share/data/cacerts/
|
||||
endif
|
||||
GENDATA_CACERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/security/cacerts
|
||||
|
||||
$(GENDATA_CACERTS): $(BUILD_TOOLS_JDK) $(wildcard $(GENDATA_CACERTS_SRC)/*)
|
||||
$(call LogInfo, Generating cacerts)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_GENERATECACERTS) $(GENDATA_CACERTS_SRC) $@
|
||||
|
||||
ifeq ($(CACERTS_FILE), )
|
||||
TARGETS += $(GENDATA_CACERTS)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_JAVA_SECURITY_SRC := $(MODULE_SRC)/share/conf/security/java.security
|
||||
GENDATA_JAVA_SECURITY := $(SUPPORT_OUTPUTDIR)/modules_conf/java.base/security/java.security
|
||||
|
||||
ifeq ($(UNLIMITED_CRYPTO), true)
|
||||
CRYPTO.POLICY := unlimited
|
||||
else
|
||||
CRYPTO.POLICY := limited
|
||||
endif
|
||||
|
||||
# RESTRICTED_PKGS_SRC is optionally set in custom extension for this makefile
|
||||
|
||||
$(GENDATA_JAVA_SECURITY): $(BUILD_TOOLS_JDK) $(GENDATA_JAVA_SECURITY_SRC) $(RESTRICTED_PKGS_SRC)
|
||||
$(call LogInfo, Generating java.security)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_MAKEJAVASECURITY) $(GENDATA_JAVA_SECURITY_SRC) $@ $(OPENJDK_TARGET_OS) \
|
||||
$(OPENJDK_TARGET_CPU_ARCH) $(CRYPTO.POLICY) $(RESTRICTED_PKGS_SRC)
|
||||
|
||||
TARGETS += $(GENDATA_JAVA_SECURITY)
|
||||
|
||||
################################################################################
|
||||
144
make/modules/java.base/Gensrc.gmk
Normal file
144
make/modules/java.base/Gensrc.gmk
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
#
|
||||
# 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 GensrcCommon.gmk
|
||||
include GensrcProperties.gmk
|
||||
include GensrcStreamPreProcessing.gmk
|
||||
|
||||
include gensrc/GensrcBuffer.gmk
|
||||
include gensrc/GensrcCharacterData.gmk
|
||||
include gensrc/GensrcCharsetCoder.gmk
|
||||
include gensrc/GensrcCharsetMapping.gmk
|
||||
include gensrc/GensrcMisc.gmk
|
||||
include gensrc/GensrcModuleLoaderMap.gmk
|
||||
include gensrc/GensrcRegex.gmk
|
||||
include gensrc/GensrcScopedMemoryAccess.gmk
|
||||
include gensrc/GensrcVarHandles.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
CLDR_DATA_DIR := $(TOPDIR)/make/data/cldr/common
|
||||
GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base
|
||||
CLDR_GEN_DONE := $(GENSRC_DIR)/_cldr-gensrc.marker
|
||||
TZ_DATA_DIR := $(MODULE_SRC)/share/data/tzdata
|
||||
ZONENAME_TEMPLATE := $(MODULE_SRC)/share/classes/java/time/format/ZoneName.java.template
|
||||
|
||||
# The `-utf8` option is used even for US English, as some names
|
||||
# may contain non-ASCII characters, such as “Türkiye”.
|
||||
$(CLDR_GEN_DONE): $(wildcard $(CLDR_DATA_DIR)/dtd/*.dtd) \
|
||||
$(wildcard $(CLDR_DATA_DIR)/main/en*.xml) \
|
||||
$(wildcard $(CLDR_DATA_DIR)/supplemental/*.xml) \
|
||||
$(wildcard $(TZ_DATA_DIR)/*) \
|
||||
$(ZONENAME_TEMPLATE) \
|
||||
$(BUILD_TOOLS_JDK)
|
||||
$(call MakeDir, $(GENSRC_DIR))
|
||||
$(call LogInfo, Processing CLDR data for java.base)
|
||||
$(call ExecuteWithLog, $@, \
|
||||
$(TOOL_CLDRCONVERTER) -base $(CLDR_DATA_DIR) \
|
||||
-baselocales "en-US" \
|
||||
-o $(GENSRC_DIR) \
|
||||
-basemodule \
|
||||
-year $(COPYRIGHT_YEAR) \
|
||||
-zntempfile $(ZONENAME_TEMPLATE) \
|
||||
-tzdatadir $(TZ_DATA_DIR) \
|
||||
-utf8)
|
||||
$(TOUCH) $@
|
||||
|
||||
TARGETS += $(CLDR_GEN_DONE)
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupCompileProperties, LIST_RESOURCE_BUNDLE, \
|
||||
SRC_DIRS := $(MODULE_SRC)/share/classes/sun/launcher/resources, \
|
||||
CLASS := ListResourceBundle, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupCompileProperties, SUN_UTIL, \
|
||||
SRC_DIRS := $(MODULE_SRC)/share/classes/sun/util/resources, \
|
||||
CLASS := sun.util.resources.LocaleNamesBundle, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupCompileProperties, SECURITY_RESOURCES, \
|
||||
SRC_DIRS := $(MODULE_SRC)/share/classes/sun/security/util/resources, \
|
||||
CLASS := ListResourceBundle, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupCompileProperties, KEYTOOL_RESOURCES, \
|
||||
SRC_DIRS := $(MODULE_SRC)/share/classes/sun/security/tools/keytool/resources, \
|
||||
CLASS := ListResourceBundle, \
|
||||
))
|
||||
|
||||
TARGETS += $(LIST_RESOURCE_BUNDLE) $(SUN_UTIL) $(SECURITY_RESOURCES) $(KEYTOOL_RESOURCES)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENSRC_LSREQUIVMAPS := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/util/locale/LocaleEquivalentMaps.java
|
||||
|
||||
$(GENSRC_LSREQUIVMAPS): $(MODULE_SRC)/share/data/lsrdata/language-subtag-registry.txt $(BUILD_TOOLS_JDK)
|
||||
$(call MakeDir, $(@D))
|
||||
$(TOOL_GENERATELSREQUIVMAPS) $< $@ $(COPYRIGHT_YEAR)
|
||||
|
||||
TARGETS += $(GENSRC_LSREQUIVMAPS)
|
||||
|
||||
################################################################################
|
||||
|
||||
INTPOLY_GEN_DONE := $(GENSRC_DIR)/_intpoly-gensrc.marker
|
||||
INTPOLY_HEADER := $(TOPDIR)/make/jdk/src/classes/build/tools/intpoly/header.txt
|
||||
$(INTPOLY_GEN_DONE): $(INTPLOY_HEADER) $(BUILD_TOOLS_JDK)
|
||||
$(call MakeDir, $(GENSRC_DIR))
|
||||
$(call LogInfo, Generating fixed-field math classes for java.base)
|
||||
$(call ExecuteWithLog, $@, \
|
||||
$(TOOL_INTPOLY) \
|
||||
$(INTPOLY_HEADER) \
|
||||
$(GENSRC_DIR)) $(LOG_DEBUG)
|
||||
$(TOUCH) $@
|
||||
|
||||
TARGETS += $(INTPOLY_GEN_DONE)
|
||||
|
||||
################################################################################
|
||||
|
||||
RELEASE_FILE_TEMPLATE := $(TOPDIR)/src/java.base/share/classes/jdk/internal/misc/resources/release.txt.template
|
||||
RELEASE_FILE_TARGET := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/jdk/internal/misc/resources/release.txt
|
||||
|
||||
RELEASE_FILE_VARDEPS := $(COMPANY_NAME) $(VERSION_STRING) $(VERSION_DATE)
|
||||
RELEASE_FILE_VARDEPS_FILE := $(call DependOnVariable, RELEASE_FILE_VARDEPS, \
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/jlink_release_txt.vardeps)
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_RELEASE_FILE, \
|
||||
SOURCE_FILES := $(RELEASE_FILE_TEMPLATE), \
|
||||
OUTPUT_FILE := $(RELEASE_FILE_TARGET), \
|
||||
REPLACEMENTS := \
|
||||
@@COMPANY_NAME@@ => $(COMPANY_NAME) ; \
|
||||
@@VERSION_STRING@@ => $(VERSION_STRING) ; \
|
||||
@@VERSION_DATE@@ => $(VERSION_DATE) , \
|
||||
))
|
||||
|
||||
$(BUILD_RELEASE_FILE): $(RELEASE_FILE_VARDEPS_FILE)
|
||||
|
||||
TARGETS += $(BUILD_RELEASE_FILE)
|
||||
|
||||
################################################################################
|
||||
58
make/modules/java.base/Java.gmk
Normal file
58
make/modules/java.base/Java.gmk
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#
|
||||
# Copyright (c) 2020, 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.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
|
||||
# The base module should be built with all warnings enabled. When a
|
||||
# new warning is added to javac, it can be temporarily added to the
|
||||
# disabled warnings list.
|
||||
#
|
||||
# DISABLED_WARNINGS_java +=
|
||||
|
||||
DOCLINT += -Xdoclint:all/protected \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
JAVAC_FLAGS += -XDstringConcat=inline
|
||||
COPY += .icu .dat .spp .nrm .txt content-types.properties \
|
||||
hijrah-config-Hijrah-umalqura_islamic-umalqura.properties
|
||||
CLEAN += intrinsic.properties
|
||||
|
||||
EXCLUDE_FILES += \
|
||||
$(TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java
|
||||
|
||||
# Exclude BreakIterator classes that are just used in compile process to generate
|
||||
# data files and shouldn't go in the product
|
||||
EXCLUDE_FILES += sun/text/resources/BreakIteratorRules.java
|
||||
|
||||
ifeq ($(call isTargetOs, macosx aix), false)
|
||||
EXCLUDE_FILES += sun/nio/fs/PollingWatchService.java
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
EXCLUDE_FILES += \
|
||||
sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \
|
||||
#
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
107
make/modules/java.base/Launcher.gmk
Normal file
107
make/modules/java.base/Launcher.gmk
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
#
|
||||
# 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 LauncherCommon.gmk
|
||||
|
||||
JAVA_VERSION_INFO_RESOURCE := \
|
||||
$(TOPDIR)/src/java.base/windows/native/launcher/java.rc
|
||||
|
||||
JAVA_RCFLAGS ?= -I$(TOPDIR)/src/java.base/windows/native/launcher/icons
|
||||
|
||||
################################################################################
|
||||
## Build java
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupBuildLauncher, java, \
|
||||
ENABLE_ARG_FILES := true, \
|
||||
EXPAND_CLASSPATH_WILDCARDS := true, \
|
||||
EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
|
||||
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
||||
OPTIMIZATION := HIGH, \
|
||||
))
|
||||
|
||||
################################################################################
|
||||
## Build javaw
|
||||
################################################################################
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
$(eval $(call SetupBuildLauncher, javaw, \
|
||||
ENABLE_ARG_FILES := true, \
|
||||
EXPAND_CLASSPATH_WILDCARDS := true, \
|
||||
WINDOWS_JAVAW := true, \
|
||||
EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
|
||||
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
||||
))
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
## Build keytool
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupBuildLauncher, keytool, \
|
||||
MAIN_CLASS := sun.security.tools.keytool.Main, \
|
||||
))
|
||||
|
||||
ifeq ($(call isTargetOs, linux), true)
|
||||
##############################################################################
|
||||
## Build jexec
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkExecutable, BUILD_JEXEC, \
|
||||
NAME := jexec, \
|
||||
EXTRA_FILES := $(TOPDIR)/src/$(MODULE)/unix/native/launcher/jexec.c, \
|
||||
OPTIMIZATION := LOW, \
|
||||
EXTRA_HEADER_DIRS := libjli, \
|
||||
CFLAGS_linux := -fPIC, \
|
||||
LD_SET_ORIGIN := false, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_JEXEC)
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOsType, unix), true)
|
||||
##############################################################################
|
||||
## Build jspawnhelper
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkExecutable, BUILD_JSPAWNHELPER, \
|
||||
NAME := jspawnhelper, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(VERSION_CFLAGS), \
|
||||
EXTRA_HEADER_DIRS := libjava, \
|
||||
EXTRA_OBJECT_FILES := \
|
||||
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc$(OBJ_SUFFIX) \
|
||||
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc_errorcodes$(OBJ_SUFFIX), \
|
||||
LD_SET_ORIGIN := false, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_JSPAWNHELPER)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
207
make/modules/java.base/Lib.gmk
Normal file
207
make/modules/java.base/Lib.gmk
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
#
|
||||
# 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 CopyFiles.gmk
|
||||
include LibCommon.gmk
|
||||
|
||||
# Prepare the find cache.
|
||||
$(call FillFindCache, $(wildcard $(TOPDIR)/src/java.base/*/native))
|
||||
|
||||
################################################################################
|
||||
# Create all the core libraries
|
||||
|
||||
include lib/CoreLibraries.gmk
|
||||
|
||||
################################################################################
|
||||
## Build libnet
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
|
||||
NAME := net, \
|
||||
OPTIMIZATION := LOW, \
|
||||
DISABLED_WARNINGS_gcc_net_util_md.c := format-nonliteral unused-variable, \
|
||||
DISABLED_WARNINGS_gcc_NetworkInterface.c := unused-function, \
|
||||
DISABLED_WARNINGS_clang_net_util_md.c := format-nonliteral \
|
||||
unused-variable, \
|
||||
DISABLED_WARNINGS_clang_NetworkInterface.c := unused-function, \
|
||||
DISABLED_WARNINGS_clang_aix_DefaultProxySelector.c := \
|
||||
deprecated-non-prototype, \
|
||||
DISABLED_WARNINGS_clang_aix_NetworkInterface.c := gnu-pointer-arith, \
|
||||
DISABLED_WARNINGS_microsoft_InetAddress.c := 4244, \
|
||||
DISABLED_WARNINGS_microsoft_ResolverConfigurationImpl.c := 4996, \
|
||||
LDFLAGS_windows := -delayload:iphlpapi.dll -delayload:secur32.dll \
|
||||
-delayload:winhttp.dll, \
|
||||
JDK_LIBS := libjava libjvm, \
|
||||
LIBS_linux := $(LIBDL), \
|
||||
LIBS_aix := $(LIBDL), \
|
||||
LIBS_windows := advapi32.lib delayimp.lib iphlpapi.lib secur32.lib \
|
||||
winhttp.lib ws2_32.lib, \
|
||||
LIBS_macosx := \
|
||||
-framework CoreFoundation \
|
||||
-framework CoreServices, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBNET)
|
||||
|
||||
################################################################################
|
||||
## Build libnio
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBNIO, \
|
||||
NAME := nio, \
|
||||
OPTIMIZATION := HIGH, \
|
||||
EXTRA_HEADER_DIRS := \
|
||||
libnio/ch \
|
||||
libnio/fs \
|
||||
libjvm, \
|
||||
DISABLED_WARNINGS_clang_Net.c := unused-function unused-variable, \
|
||||
DISABLED_WARNINGS_clang_UnixNativeDispatcher.c := unused-variable, \
|
||||
JDK_LIBS := libjava libnet, \
|
||||
LIBS_linux := $(LIBDL) $(LIBPTHREAD), \
|
||||
LIBS_aix := $(LIBDL), \
|
||||
LIBS_macosx := \
|
||||
-framework CoreFoundation \
|
||||
-framework CoreServices, \
|
||||
LIBS_windows := advapi32.lib mswsock.lib ws2_32.lib, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBNIO)
|
||||
|
||||
ifeq ($(call isTargetOs, macosx), true)
|
||||
##############################################################################
|
||||
## Build libosxsecurity
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBOSXSECURITY, \
|
||||
NAME := osxsecurity, \
|
||||
OPTIMIZATION := LOW, \
|
||||
DISABLED_WARNINGS_clang_KeystoreImpl.m := deprecated-declarations \
|
||||
unused-but-set-variable unused-variable, \
|
||||
JDK_LIBS := libjava, \
|
||||
LIBS_macosx := -lobjc \
|
||||
-framework CoreServices \
|
||||
-framework Foundation \
|
||||
-framework Security, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBOSXSECURITY)
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOsType, unix), true)
|
||||
##############################################################################
|
||||
## Build libjsig
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBJSIG, \
|
||||
NAME := jsig, \
|
||||
OPTIMIZATION := LOW, \
|
||||
jsig.c_CFLAGS := -DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"', \
|
||||
DISABLED_WARNINGS_gcc_jsig.c := unused-but-set-variable, \
|
||||
DISABLED_WARNINGS_clang_jsig.c := unused-but-set-variable, \
|
||||
LIBS_linux := $(LIBDL), \
|
||||
LIBS_aix := $(LIBDL), \
|
||||
ONLY_EXPORTED := true, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBJSIG)
|
||||
|
||||
##############################################################################
|
||||
# Create symlinks to libjsig in each JVM variant sub dir
|
||||
ifneq ($(STATIC_LIBS), true)
|
||||
LIB_OUTPUTDIR := $(call FindLibDirForModule, java.base)
|
||||
LIBJSIG_NAME := $(LIBRARY_PREFIX)jsig$(SHARED_LIBRARY_SUFFIX)
|
||||
|
||||
# $1 variant subdir
|
||||
define CreateSymlinks
|
||||
# Always symlink from libdir/variant/libjsig.so -> ../libjsig.so.
|
||||
$(LIB_OUTPUTDIR)/$1/$(LIBJSIG_NAME): \
|
||||
$(LIB_OUTPUTDIR)/$(LIBJSIG_NAME)
|
||||
$$(call MakeDir, $$(@D))
|
||||
$(RM) $$@
|
||||
$(LN) -s ../$$(@F) $$@
|
||||
|
||||
TARGETS += $(LIB_OUTPUTDIR)/$1/$(LIBJSIG_NAME)
|
||||
endef
|
||||
|
||||
# The subdir is the same as the variant
|
||||
$(foreach v, $(JVM_VARIANTS), $(eval $(call CreateSymlinks,$v)))
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
## Build libsyslookup
|
||||
## The LIBDL dependency on Linux is needed to dynamically access libdl symbols,
|
||||
## which may be needed as part of resolving some standard symbols
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBSYSLOOKUP, \
|
||||
NAME := syslookup, \
|
||||
EXTRA_HEADER_DIRS := java.base:libjava, \
|
||||
LD_SET_ORIGIN := false, \
|
||||
LDFLAGS_linux := -Wl$(COMMA)--no-as-needed, \
|
||||
LDFLAGS_aix := -brtl -bexpfull, \
|
||||
LIBS_linux := $(LIBDL) $(LIBM), \
|
||||
LIBS_aix := -ldecNumber $(LIBM), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBSYSLOOKUP)
|
||||
|
||||
ifeq ($(ENABLE_FALLBACK_LINKER), true)
|
||||
##############################################################################
|
||||
## Build libfallbackLinker
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBFALLBACKLINKER, \
|
||||
NAME := fallbackLinker, \
|
||||
EXTRA_HEADER_DIRS := java.base:libjava, \
|
||||
CFLAGS := $(LIBFFI_CFLAGS), \
|
||||
DISABLED_WARNINGS_gcc := implicit-function-declaration unused-variable, \
|
||||
LIBS := $(LIBFFI_LIBS), \
|
||||
LIBS_windows := ws2_32.lib, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBFALLBACKLINKER)
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, linux)+$(call isTargetCpu, x86_64)+$(INCLUDE_COMPILER2)+$(filter $(TOOLCHAIN_TYPE), gcc), true+true+true+gcc)
|
||||
##############################################################################
|
||||
## Build libsimdsort
|
||||
##############################################################################
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBSIMD_SORT, \
|
||||
NAME := simdsort, \
|
||||
LINK_TYPE := C++, \
|
||||
OPTIMIZATION := HIGH, \
|
||||
CXXFLAGS := -std=c++17, \
|
||||
DISABLED_WARNINGS_gcc := unused-variable, \
|
||||
LIBS_linux := $(LIBM), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBSIMD_SORT)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
44
make/modules/java.base/gendata/GendataBlockedCerts.gmk
Normal file
44
make/modules/java.base/gendata/GendataBlockedCerts.gmk
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#
|
||||
# Copyright (c) 2014, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_BLOCKED_CERTS_SRC += $(MODULE_SRC)/share/data/blockedcertsconverter/blocked.certs.pem
|
||||
GENDATA_BLOCKED_CERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/blocked.certs
|
||||
|
||||
$(GENDATA_BLOCKED_CERTS): $(BUILD_TOOLS_JDK) $(GENDATA_BLOCKED_CERTS_SRC)
|
||||
$(call LogInfo, Generating blocked certs)
|
||||
$(call MakeDir, $(@D))
|
||||
($(CAT) $(GENDATA_BLOCKED_CERTS_SRC) | $(TOOL_BLOCKED_CERTS) > $@) || exit 1
|
||||
|
||||
TARGETS += $(GENDATA_BLOCKED_CERTS)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
121
make/modules/java.base/gendata/GendataBreakIterator.gmk
Normal file
121
make/modules/java.base/gendata/GendataBreakIterator.gmk
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
# Make file for generating BreakIterator data files.
|
||||
################################################################################
|
||||
|
||||
# input
|
||||
#
|
||||
# Notes: sun.text.resources.BreakIteratorRules no longer goes to runtime.
|
||||
# They are used at JDK build phase in order to create $(BIFILES) which
|
||||
# are used on runtime instead.
|
||||
#
|
||||
TEXT_PKG := sun/text/resources
|
||||
TEXT_PKG_LD := $(TEXT_PKG)/ext
|
||||
TEXT_SOURCES := $(TEXT_PKG)/BreakIteratorRules.java \
|
||||
$(TEXT_PKG)/BreakIteratorInfo.java \
|
||||
$(TEXT_PKG_LD)/BreakIteratorRules_th.java \
|
||||
$(TEXT_PKG_LD)/BreakIteratorInfo_th.java
|
||||
|
||||
# Generate BreakIteratorData
|
||||
BREAK_ITERATOR_CLASSES := $(BUILDTOOLS_OUTPUTDIR)/break_iterator_classes
|
||||
|
||||
# These two files should be moved out to a build tool!
|
||||
$(eval $(call SetupJavaCompilation, BUILD_BREAKITERATOR_BASE, \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
||||
SRC := $(TOPDIR)/src/java.base/share/classes, \
|
||||
INCLUDE_FILES := \
|
||||
$(TEXT_PKG)/BreakIteratorRules.java \
|
||||
$(TEXT_PKG)/BreakIteratorInfo.java, \
|
||||
BIN := $(BREAK_ITERATOR_CLASSES)/java.base, \
|
||||
DISABLED_WARNINGS := options, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupJavaCompilation, BUILD_BREAKITERATOR_LD, \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
||||
SRC := $(TOPDIR)/src/jdk.localedata/share/classes, \
|
||||
INCLUDE_FILES := \
|
||||
$(TEXT_PKG_LD)/BreakIteratorRules_th.java \
|
||||
$(TEXT_PKG_LD)/BreakIteratorInfo_th.java, \
|
||||
BIN := $(BREAK_ITERATOR_CLASSES)/jdk.localedata, \
|
||||
DISABLED_WARNINGS := options, \
|
||||
))
|
||||
|
||||
BREAK_ITERATOR_BOOTCLASSPATH := \
|
||||
--patch-module java.base=$(BREAK_ITERATOR_CLASSES)/java.base \
|
||||
--patch-module jdk.localedata=$(BREAK_ITERATOR_CLASSES)/jdk.localedata \
|
||||
--add-exports java.base/sun.text=ALL-UNNAMED \
|
||||
--add-exports java.base/sun.text.resources=ALL-UNNAMED \
|
||||
--add-exports jdk.localedata/sun.text.resources.ext=ALL-UNNAMED \
|
||||
#
|
||||
|
||||
# Generate data resource files.
|
||||
# input
|
||||
UNICODEDATA := $(MODULE_SRC)/share/data/unicodedata/UnicodeData.txt
|
||||
|
||||
# output
|
||||
BASE_DATA_PKG_DIR := $(JDK_OUTPUTDIR)/modules/java.base/sun/text/resources
|
||||
LD_DATA_PKG_DIR := $(JDK_OUTPUTDIR)/modules/jdk.localedata/sun/text/resources/ext
|
||||
BIFILES := $(BASE_DATA_PKG_DIR)/CharacterBreakIteratorData \
|
||||
$(BASE_DATA_PKG_DIR)/WordBreakIteratorData \
|
||||
$(BASE_DATA_PKG_DIR)/LineBreakIteratorData \
|
||||
$(BASE_DATA_PKG_DIR)/SentenceBreakIteratorData
|
||||
BIFILES_TH := $(LD_DATA_PKG_DIR)/WordBreakIteratorData_th \
|
||||
$(LD_DATA_PKG_DIR)/LineBreakIteratorData_th
|
||||
|
||||
$(BIFILES): $(BASE_DATA_PKG_DIR)/_the.bifiles
|
||||
$(BASE_DATA_PKG_DIR)/_the.bifiles: JAVA_FLAGS += $(BREAK_ITERATOR_BOOTCLASSPATH)
|
||||
$(BASE_DATA_PKG_DIR)/_the.bifiles: $(BUILD_TOOLS_JDK) $(UNICODEDATA) \
|
||||
$(BUILD_BREAKITERATOR_BASE) $(BUILD_BREAKITERATOR_LD)
|
||||
$(call LogInfo, Generating BreakIteratorData)
|
||||
$(call MakeDir, $(@D))
|
||||
$(RM) $(BIFILES)
|
||||
$(TOOL_GENERATEBREAKITERATORDATA) \
|
||||
-o $(@D) \
|
||||
-spec $(UNICODEDATA)
|
||||
$(TOUCH) $@
|
||||
|
||||
$(BIFILES_TH): $(LD_DATA_PKG_DIR)/_the.bifiles_th
|
||||
$(LD_DATA_PKG_DIR)/_the.bifiles_th: JAVA_FLAGS += $(BREAK_ITERATOR_BOOTCLASSPATH)
|
||||
$(LD_DATA_PKG_DIR)/_the.bifiles_th: $(BUILD_TOOLS_JDK) $(UNICODEDATA) \
|
||||
$(BUILD_BREAKITERATOR_BASE) $(BUILD_BREAKITERATOR_LD)
|
||||
$(call LogInfo, Generating BreakIteratorData_th)
|
||||
$(RM) $(BIFILES_TH)
|
||||
$(TOOL_GENERATEBREAKITERATORDATA) \
|
||||
-o $(@D) \
|
||||
-spec $(UNICODEDATA) \
|
||||
-language th
|
||||
$(TOUCH) $@
|
||||
|
||||
TARGETS += $(BIFILES) $(BIFILES_TH)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
74
make/modules/java.base/gendata/GendataCryptoPolicy.gmk
Normal file
74
make/modules/java.base/gendata/GendataCryptoPolicy.gmk
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#
|
||||
# Copyright (c) 2013, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
#
|
||||
# In pre-JDK9 releases, Oracle JDK has had a separately downloadable set
|
||||
# of policy files which has been a nightmare for deployment.
|
||||
#
|
||||
# We now create 2 complete initial sets of policy files and package into
|
||||
# 2 different directories. The crypto.policy Security property will select
|
||||
# the active policy.
|
||||
#
|
||||
# It will be up to the user/deployer to make an informed choice
|
||||
# as to whether they are legally entitled to use the unlimited policy
|
||||
# file in their environment. The $(UNLIMITED_CRYPTO) make variable
|
||||
# determines the default directory/policy.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
POLICY_DIR := $(SUPPORT_OUTPUTDIR)/modules_conf/java.base/security/policy
|
||||
LIMITED_POLICY_DIR := $(POLICY_DIR)/limited
|
||||
UNLIMITED_POLICY_DIR := $(POLICY_DIR)/unlimited
|
||||
|
||||
POLICY_SRC_DIR := $(TOPDIR)/src/java.base/share/conf/security/policy
|
||||
LIMITED_POLICY_SRC_DIR := $(POLICY_SRC_DIR)/limited
|
||||
UNLIMITED_POLICY_SRC_DIR := $(POLICY_SRC_DIR)/unlimited
|
||||
|
||||
$(POLICY_DIR)/README.txt: $(POLICY_SRC_DIR)/README.txt
|
||||
$(install-file)
|
||||
|
||||
$(LIMITED_POLICY_DIR)/%: $(LIMITED_POLICY_SRC_DIR)/%
|
||||
$(install-file)
|
||||
|
||||
$(UNLIMITED_POLICY_DIR)/%: $(UNLIMITED_POLICY_SRC_DIR)/%
|
||||
$(install-file)
|
||||
|
||||
TARGETS += \
|
||||
$(POLICY_DIR)/README.txt \
|
||||
$(LIMITED_POLICY_DIR)/default_US_export.policy \
|
||||
$(LIMITED_POLICY_DIR)/default_local.policy \
|
||||
$(LIMITED_POLICY_DIR)/exempt_local.policy \
|
||||
$(UNLIMITED_POLICY_DIR)/default_US_export.policy \
|
||||
$(UNLIMITED_POLICY_DIR)/default_local.policy \
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
46
make/modules/java.base/gendata/GendataPublicSuffixList.gmk
Normal file
46
make/modules/java.base/gendata/GendataPublicSuffixList.gmk
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#
|
||||
# Copyright (c) 2017, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_PUBLICSUFFIXLIST_SRC += $(MODULE_SRC)/share/data/publicsuffixlist/public_suffix_list.dat
|
||||
GENDATA_PUBLICSUFFIXLIST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/public_suffix_list.dat
|
||||
|
||||
$(GENDATA_PUBLICSUFFIXLIST): $(GENDATA_PUBLICSUFFIXLIST_SRC) $(BUILD_TOOLS_JDK)
|
||||
$(call LogInfo, Generating public suffix list)
|
||||
$(call MakeDir, $(@D))
|
||||
$(RM) $@
|
||||
$(TOOL_PUBLICSUFFIXLIST) $< $@
|
||||
$(CHMOD) 444 $@
|
||||
|
||||
TARGETS += $(GENDATA_PUBLICSUFFIXLIST)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
52
make/modules/java.base/gendata/GendataTZDB.gmk
Normal file
52
make/modules/java.base/gendata/GendataTZDB.gmk
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#
|
||||
# Copyright (c) 2012, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENDATA_TZDB :=
|
||||
|
||||
#
|
||||
# Time zone data file creation
|
||||
#
|
||||
TZDATA_DIR := $(MODULE_SRC)/share/data/tzdata
|
||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
|
||||
TZDATA_TZFILES := $(wildcard $(TZDATA_DIR)/*)
|
||||
|
||||
GENDATA_TZDB_DAT := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/tzdb.dat
|
||||
|
||||
$(GENDATA_TZDB_DAT): $(TZDATA_TZFILES)
|
||||
$(call MakeTargetDir)
|
||||
$(RM) $(GENDATA_TZDB_DAT)
|
||||
$(TOOL_TZDB) -srcdir $(TZDATA_DIR) -dstfile $(GENDATA_TZDB_DAT) $(TZDATA_TZFILE)
|
||||
|
||||
TARGETS += $(GENDATA_TZDB_DAT)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
251
make/modules/java.base/gensrc/GensrcBuffer.gmk
Normal file
251
make/modules/java.base/gensrc/GensrcBuffer.gmk
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
BUFFER_INPUT_DIR := $(MODULE_SRC)/share/classes/java/nio
|
||||
BUFFER_OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/nio
|
||||
|
||||
################################################################################
|
||||
# Helper method to setup generation of bin snippets.
|
||||
# Will add the generated snippet file name to $1_BIN_SNIPPET_FILES.
|
||||
#
|
||||
# arg $1: $1 as passed into SetupGenBuffer
|
||||
# arg $2: type for this bin snippet
|
||||
define SetupGenBufferBinSnippets
|
||||
$1_$2_TMP := $$(BUFFER_OUTPUT_DIR)/$1.java.bin-snippet.$2
|
||||
|
||||
$1_$2_LBPV := $$(call Conv, $2, LBPV)
|
||||
ifeq ($$($1_READ_ONLY), true)
|
||||
$1_$2_RW_KEYS := ro
|
||||
$1_$2_RW_REPLACEMENT := R
|
||||
else
|
||||
$1_$2_RW_KEYS := rw
|
||||
$1_$2_RW_REPLACEMENT :=
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_BUFFER_BIN_$1_$2, \
|
||||
SOURCE_FILE := $$(BUFFER_INPUT_DIR)/$$($1_TEMPLATE)-bin.java.template, \
|
||||
OUTPUT_FILE := $$($1_$2_TMP), \
|
||||
INFO := Generating buffer class bin snippets for $1 ($2), \
|
||||
BEGIN_END := true, \
|
||||
KEYS := \
|
||||
$$($1_$2_RW_KEYS), \
|
||||
REPLACEMENTS := \
|
||||
type=$2 \
|
||||
RW=$$($1_$2_RW_REPLACEMENT) \
|
||||
LG_BYTES_PER_VALUE=$$($1_$2_LBPV) \
|
||||
BYTES_PER_VALUE="(1$$$$(SPACE)<<$$$$(SPACE)$$($1_$2_LBPV))" \
|
||||
a=$$(call Conv, $2, a) \
|
||||
fulltype=$$(call Conv, $2, fulltype) \
|
||||
memtype=$$(call Conv, $2, memtype) \
|
||||
Memtype=$$(call Conv, $2, Memtype) \
|
||||
nbytes=$$(call Conv, $2, nbytes) \
|
||||
nbytesButOne=$$(call Conv, $2, nbytesButOne) \
|
||||
Type=$$(call Conv, $2, Type) \
|
||||
fromBits=$$(call Conv, $2, fromBits, $$($1_BYTE_ORDER)) \
|
||||
toBits=$$(call Conv, $2, toBits, $$($1_BYTE_ORDER)), \
|
||||
))
|
||||
TARGETS += $$(GEN_BUFFER_$1_$2)
|
||||
|
||||
$1_BIN_SNIPPET_FILES += $$($1_$2_TMP)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Setup make rules that creates a generated buffer class java source file,
|
||||
# according to specifications provided.
|
||||
#
|
||||
# Parameter 1 is the name of the rule. This name is used as variable prefix,
|
||||
# and the targets generated are listed in a variable by that name. The output
|
||||
# file name is also based on this.
|
||||
#
|
||||
# Remaining parameters are named arguments. These include:
|
||||
# TYPE The native type
|
||||
# TEMPLATE The base file name of the template to use
|
||||
# BYTE_ORDER (U)nswapped/(S)wapped/(L)ittle/(B)ig
|
||||
# READ_ONLY Set to true to generate read-only buffers (default: false)
|
||||
# GENERATE_BIN Set to true to generate bin snippets (default: false)
|
||||
#
|
||||
SetupGenBuffer = $(NamedParamsMacroTemplate)
|
||||
define SetupGenBufferBody
|
||||
$1_OUTPUT := $$(BUFFER_OUTPUT_DIR)/$1.java
|
||||
ifeq ($$($1_GENERATE_BIN), true)
|
||||
# After generating the buffer class, we need to do further post processing,
|
||||
# so output to a temporary file
|
||||
$1_REAL_OUTPUT := $$($1_OUTPUT)
|
||||
$1_OUTPUT := $$($1_OUTPUT).bin-snippet.tmp
|
||||
endif
|
||||
|
||||
$1_LBPV := $$(call Conv, $$($1_TYPE), LBPV)
|
||||
ifeq ($$($1_READ_ONLY), true)
|
||||
$1_RW_KEYS := ro
|
||||
$1_RW_REPLACEMENT := R
|
||||
else
|
||||
$1_RW_KEYS := rw
|
||||
$1_RW_REPLACEMENT :=
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_BUFFER_$1, \
|
||||
SOURCE_FILE := $$(BUFFER_INPUT_DIR)/$$($1_TEMPLATE).java.template, \
|
||||
OUTPUT_FILE := $$($1_OUTPUT), \
|
||||
INFO := Generating buffer class $1.java, \
|
||||
KEYS := \
|
||||
$$($1_TYPE) \
|
||||
$$($1_RW_KEYS) \
|
||||
bo$$($1_BYTE_ORDER) \
|
||||
$$(call Conv, $$($1_TYPE), category) \
|
||||
$$(call Conv, $$($1_TYPE), streams), \
|
||||
REPLACEMENTS := \
|
||||
type=$$($1_TYPE) \
|
||||
BO=$$($1_BYTE_ORDER) \
|
||||
RW=$$($1_RW_REPLACEMENT) \
|
||||
LG_BYTES_PER_VALUE=$$($1_LBPV) \
|
||||
BYTES_PER_VALUE="(1$$$$(SPACE)<<$$$$(SPACE)$$($1_$2_LBPV))" \
|
||||
a=$$(call Conv, $$($1_TYPE), a) \
|
||||
A=$$(call Conv, $$($1_TYPE), A) \
|
||||
fulltype=$$(call Conv, $$($1_TYPE), fulltype) \
|
||||
Fulltype=$$(call Conv, $$($1_TYPE), Fulltype) \
|
||||
memtype=$$(call Conv, $$($1_TYPE), memtype) \
|
||||
Memtype=$$(call Conv, $$($1_TYPE), Memtype) \
|
||||
streamtype=$$(call Conv, $$($1_TYPE), streamtype) \
|
||||
Streamtype=$$(call Conv, $$($1_TYPE), Streamtype) \
|
||||
Type=$$(call Conv, $$($1_TYPE), Type) \
|
||||
x=$$(call Conv, $$($1_TYPE), x) \
|
||||
fromBits=$$(call Conv, $$($1_TYPE), fromBits, $$($1_BYTE_ORDER)) \
|
||||
toBits=$$(call Conv, $$($1_TYPE), toBits, $$($1_BYTE_ORDER)) \
|
||||
swap=$$(call Conv, $$($1_TYPE), swap, $$($1_BYTE_ORDER)) \
|
||||
Swaptype=$$(call Conv, $$($1_TYPE), Swaptype, $$($1_BYTE_ORDER)), \
|
||||
))
|
||||
TARGETS += $$(GEN_BUFFER_$1)
|
||||
$1 += $$(GEN_BUFFER_$1)
|
||||
|
||||
ifeq ($$($1_GENERATE_BIN), true)
|
||||
# Setup generation of snippet files, one for each non-byte type. This will
|
||||
# populate $1_BIN_SNIPPET_FILES.
|
||||
$1_BIN_SNIPPET_FILES :=
|
||||
$$(foreach t, $$(NON_BYTE_NUMBER_TYPES), \
|
||||
$$(eval $$(call SetupGenBufferBinSnippets,$1,$$t)) \
|
||||
)
|
||||
|
||||
# Inject these snippets in the file generated by GEN_BUFFER_$1
|
||||
$$($1_REAL_OUTPUT): $$($1_OUTPUT) $$($1_BIN_SNIPPET_FILES)
|
||||
$$(call LogInfo, Concatenating buffer class bin snippets for $1)
|
||||
# Delete everything from the line containing #BIN and below
|
||||
$$(SED) -e '/#BIN/,$$$$d' < $$($1_OUTPUT) > $$($1_REAL_OUTPUT).tmp
|
||||
$$(CAT) $$($1_BIN_SNIPPET_FILES) >> $$($1_REAL_OUTPUT).tmp
|
||||
$$(ECHO) "}" >> $$($1_REAL_OUTPUT).tmp
|
||||
$$(MV) $$($1_REAL_OUTPUT).tmp $$($1_REAL_OUTPUT)
|
||||
|
||||
TARGETS += $$($1_REAL_OUTPUT)
|
||||
$1 += $$($1_REAL_OUTPUT)
|
||||
endif
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Helper method to setup generation of all buffer classes, for a given
|
||||
# modifiability state (read-only or not)
|
||||
#
|
||||
# arg $1: READ_ONLY argument, true or false
|
||||
# arg $2: Modifiability marker for class name (R or empty)
|
||||
define SetupGenerateBuffersWithRO
|
||||
ifeq ($1, false)
|
||||
# The basic buffer classes are not generated in READ_ONLY versions
|
||||
$$(eval $$(call SetupGenBuffer, ByteBuffer, \
|
||||
TYPE := byte, \
|
||||
TEMPLATE := X-Buffer, \
|
||||
GENERATE_BIN := true, \
|
||||
))
|
||||
TARGETS += $$(ByteBuffer)
|
||||
|
||||
$$(foreach t, $$(NON_BYTE_NUMBER_TYPES), \
|
||||
$$(eval $$(call SetupGenBuffer, $$(call titlecase, $$t)Buffer, \
|
||||
TYPE := $$t, \
|
||||
TEMPLATE := X-Buffer, \
|
||||
)) \
|
||||
$$(eval TARGETS += $$($$(call titlecase, $$t)Buffer)) \
|
||||
)
|
||||
endif
|
||||
|
||||
# Buffers whose contents are heap-allocated, one for every type
|
||||
$$(foreach t, $$(NUMBER_TYPES), \
|
||||
$$(eval $$(call SetupGenBuffer, Heap$$(call titlecase, $$t)Buffer$2, \
|
||||
TYPE := $$t, \
|
||||
TEMPLATE := Heap-X-Buffer, \
|
||||
READ_ONLY := $1, \
|
||||
)) \
|
||||
$$(eval TARGETS += $$(Heap$$(call titlecase, $$t)Buffer$2)) \
|
||||
)
|
||||
|
||||
# Treat byte special for DirectByteBuffer classes
|
||||
$$(eval $$(call SetupGenBuffer, DirectByteBuffer$2, \
|
||||
TEMPLATE := Direct-X-Buffer, \
|
||||
TYPE := byte, \
|
||||
GENERATE_BIN := true, \
|
||||
READ_ONLY := $1, \
|
||||
))
|
||||
TARGETS += $$(DirectByteBuffer$2)
|
||||
|
||||
# Generate Swapped and Unswapped views of the direct byte buffers, each for
|
||||
# every non-byte type
|
||||
$$(foreach b, U S, \
|
||||
$$(foreach t, $$(NON_BYTE_NUMBER_TYPES), \
|
||||
$$(eval $$(call SetupGenBuffer, Direct$$(call titlecase, $$t)Buffer$2$$b, \
|
||||
TYPE := $$t, \
|
||||
TEMPLATE := Direct-X-Buffer, \
|
||||
BYTE_ORDER := $$b, \
|
||||
READ_ONLY := $1, \
|
||||
)) \
|
||||
$$(eval TARGETS += $$(Direct$$(call titlecase, $$t)Buffer$2$$b)) \
|
||||
) \
|
||||
)
|
||||
|
||||
# Generate Big and Little endian views of the direct byte buffers, each for
|
||||
# every non-byte type
|
||||
$$(foreach b, B L, \
|
||||
$$(foreach t, $$(NON_BYTE_NUMBER_TYPES), \
|
||||
$$(eval $$(call SetupGenBuffer, ByteBufferAs$$(call titlecase, $$t)Buffer$2$$b, \
|
||||
TYPE := $$t, \
|
||||
TEMPLATE := ByteBufferAs-X-Buffer, \
|
||||
BYTE_ORDER := $$b, \
|
||||
READ_ONLY := $1, \
|
||||
)) \
|
||||
$$(eval TARGETS += $$(ByteBufferAs$$(call titlecase, $$t)Buffer$2$$b)) \
|
||||
) \
|
||||
)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Generate buffers in both read-write and read-only variants for all buffers
|
||||
|
||||
$(eval $(call SetupGenerateBuffersWithRO,false,))
|
||||
$(eval $(call SetupGenerateBuffersWithRO,true,R))
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
93
make/modules/java.base/gensrc/GensrcCharacterData.gmk
Normal file
93
make/modules/java.base/gensrc/GensrcCharacterData.gmk
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
# Rules to create $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/lang/CharacterData*.java
|
||||
################################################################################
|
||||
|
||||
GENSRC_CHARACTERDATA :=
|
||||
|
||||
CHARACTERDATA_TEMPLATES = $(MODULE_SRC)/share/classes/java/lang
|
||||
UNICODEDATA = $(MODULE_SRC)/share/data/unicodedata
|
||||
|
||||
ifneq ($(DEBUG_LEVEL), release)
|
||||
ifeq ($(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT), true)
|
||||
DEBUG_OPTION := -d
|
||||
endif
|
||||
endif
|
||||
|
||||
define SetupCharacterData
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/$1.java: \
|
||||
$(CHARACTERDATA_TEMPLATES)/$1.java.template
|
||||
$$(call LogInfo, Generating $1.java)
|
||||
$$(call MakeDir, $$(@D))
|
||||
$(TOOL_GENERATECHARACTER) $2 $(DEBUG_OPTION) \
|
||||
-template $(CHARACTERDATA_TEMPLATES)/$1.java.template \
|
||||
-spec $(UNICODEDATA)/UnicodeData.txt \
|
||||
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
|
||||
-proplist $(UNICODEDATA)/PropList.txt \
|
||||
-derivedprops $(UNICODEDATA)/DerivedCoreProperties.txt \
|
||||
-emojidata $(UNICODEDATA)/emoji/emoji-data.txt \
|
||||
-o $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/$1.java \
|
||||
-usecharforbyte $3
|
||||
|
||||
GENSRC_CHARACTERDATA += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/$1.java
|
||||
endef
|
||||
|
||||
$(eval $(call SetupCharacterData,CharacterDataLatin1, , -latin1 8))
|
||||
$(eval $(call SetupCharacterData,CharacterData00, -string -plane 0, 11 4 1))
|
||||
$(eval $(call SetupCharacterData,CharacterData01, -string -plane 1, 11 4 1))
|
||||
$(eval $(call SetupCharacterData,CharacterData02, -string -plane 2, 11 4 1))
|
||||
$(eval $(call SetupCharacterData,CharacterData03, -string -plane 3, 11 4 1))
|
||||
$(eval $(call SetupCharacterData,CharacterData0E, -string -plane 14, 11 4 1))
|
||||
|
||||
$(GENSRC_CHARACTERDATA): $(BUILD_TOOLS_JDK)
|
||||
|
||||
TARGETS += $(GENSRC_CHARACTERDATA)
|
||||
|
||||
################################################################################
|
||||
|
||||
|
||||
GENSRC_STRINGCASEFOLDING := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/lang/CaseFolding.java
|
||||
|
||||
STRINGCASEFOLDING_TEMPLATE := $(MODULE_SRC)/share/classes/jdk/internal/lang/CaseFolding.java.template
|
||||
CASEFOLDINGTXT := $(MODULE_SRC)/share/data/unicodedata/CaseFolding.txt
|
||||
|
||||
$(GENSRC_STRINGCASEFOLDING): $(BUILD_TOOLS_JDK) $(STRINGCASEFOLDING_TEMPLATE) $(CASEFOLDINGTXT)
|
||||
$(call LogInfo, Generating $@)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_GENERATECASEFOLDING) \
|
||||
$(STRINGCASEFOLDING_TEMPLATE) \
|
||||
$(CASEFOLDINGTXT) \
|
||||
$(GENSRC_STRINGCASEFOLDING)
|
||||
|
||||
TARGETS += $(GENSRC_STRINGCASEFOLDING)
|
||||
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
103
make/modules/java.base/gensrc/GensrcCharsetCoder.gmk
Normal file
103
make/modules/java.base/gensrc/GensrcCharsetCoder.gmk
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
CHARSETCODER_INPUT := $(MODULE_SRC)/share/classes/java/nio/charset/Charset-X-Coder.java.template
|
||||
CHARSETCODER_OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/nio/charset
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupStreamPreProcessing, GEN_CHARSETDECODER, \
|
||||
SOURCE_FILE := $(CHARSETCODER_INPUT), \
|
||||
OUTPUT_FILE := $(CHARSETCODER_OUTPUT_DIR)/CharsetDecoder.java, \
|
||||
INFO := Generating CharsetDecoder.java, \
|
||||
KEYS := decoder, \
|
||||
REPLACEMENTS := \
|
||||
A='A' \
|
||||
a='a' \
|
||||
Code='Decode' \
|
||||
code='decode' \
|
||||
itypesPhrase='bytes$$(SPACE)in$$(SPACE)a$$(SPACE)specific$$(SPACE)charset' \
|
||||
otypesPhrase='sixteen-bit$$(SPACE)Unicode$$(SPACE)characters' \
|
||||
itype='byte' \
|
||||
otype='character' \
|
||||
Itype='Byte' \
|
||||
Otype='Char' \
|
||||
coder='decoder' \
|
||||
Coder='Decoder' \
|
||||
coding='decoding' \
|
||||
OtherCoder='Encoder' \
|
||||
replTypeName='string' \
|
||||
replType='String' \
|
||||
replFQType='java.lang.String' \
|
||||
replLength='length()' \
|
||||
ItypesPerOtype='CharsPerByte' \
|
||||
notLegal='not$$(SPACE)legal$$(SPACE)for$$(SPACE)this$$(SPACE)charset' \
|
||||
otypes-per-itype='chars-per-byte' \
|
||||
outSequence='Unicode$$(SPACE)character', \
|
||||
))
|
||||
|
||||
TARGETS += $(GEN_CHARSETDECODER)
|
||||
|
||||
$(eval $(call SetupStreamPreProcessing, GEN_CHARSETENCODER, \
|
||||
SOURCE_FILE := $(CHARSETCODER_INPUT), \
|
||||
OUTPUT_FILE := $(CHARSETCODER_OUTPUT_DIR)/CharsetEncoder.java, \
|
||||
INFO := Generating CharsetEncoder.java, \
|
||||
KEYS := encoder, \
|
||||
REPLACEMENTS := \
|
||||
A='An' \
|
||||
a='an' \
|
||||
Code='Encode' \
|
||||
code='encode' \
|
||||
itypesPhrase='sixteen-bit$$(SPACE)Unicode$$(SPACE)characters' \
|
||||
otypesPhrase='bytes$$(SPACE)in$$(SPACE)a$$(SPACE)specific$$(SPACE)charset' \
|
||||
itype='character' \
|
||||
otype='byte' \
|
||||
Itype='Char' \
|
||||
Otype='Byte' \
|
||||
coder='encoder' \
|
||||
Coder='Encoder' \
|
||||
coding='encoding' \
|
||||
OtherCoder='Decoder' \
|
||||
replTypeName='byte$$(SPACE)array' \
|
||||
replType='byte[]' \
|
||||
replFQType='byte[]' \
|
||||
replLength='length' \
|
||||
ItypesPerOtype='BytesPerChar' \
|
||||
notLegal='not$$(SPACE)a$$(SPACE)legal$$(SPACE)sixteen-bit$$(SPACE)Unicode$$(SPACE)sequence' \
|
||||
otypes-per-itype='bytes-per-char' \
|
||||
outSequence='byte$$(SPACE)sequence$$(SPACE)in$$(SPACE)the$$(SPACE)given$$(SPACE)charset', \
|
||||
))
|
||||
|
||||
TARGETS += $(GEN_CHARSETENCODER)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
64
make/modules/java.base/gensrc/GensrcCharsetMapping.gmk
Normal file
64
make/modules/java.base/gensrc/GensrcCharsetMapping.gmk
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
# Generate StandardCharsets.java and individul sun.nio.cs charset class using
|
||||
# the charsetmapping tool
|
||||
################################################################################
|
||||
|
||||
CHARSET_DATA_DIR := $(TOPDIR)/make/data/charsetmapping
|
||||
CHARSET_EXTSRC_DIR := $(TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
|
||||
CHARSET_GENSRC_JAVA_DIR_BASE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/cs
|
||||
CHARSET_DONE_BASE := $(CHARSET_GENSRC_JAVA_DIR_BASE)/_the.charsetmapping
|
||||
CHARSET_COPYRIGHT_HEADER := $(TOPDIR)/make/jdk/src/classes/build/tools/charsetmapping
|
||||
CHARSET_TEMPLATES := \
|
||||
$(CHARSET_DATA_DIR)/SingleByte-X.java.template \
|
||||
$(CHARSET_DATA_DIR)/DoubleByte-X.java.template
|
||||
CHARSET_STANDARD_JAVA_TEMPLATES := \
|
||||
$(TOPDIR)/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template
|
||||
CHARSET_STANDARD_OS := stdcs-$(OPENJDK_TARGET_OS)
|
||||
|
||||
$(CHARSET_DONE_BASE)-stdcs: $(CHARSET_DATA_DIR)/charsets \
|
||||
$(wildcard $(CHARSET_DATA_DIR)/$(CHARSET_STANDARD_OS)) \
|
||||
$(CHARSET_TEMPLATES) $(CHARSET_STANDARD_JAVA_TEMPLATES) \
|
||||
$(BUILD_TOOLS_JDK)
|
||||
$(call LogInfo, Generating java.base charset mapping)
|
||||
$(call MakeDir, $(@D))
|
||||
$(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR_BASE) \
|
||||
stdcs charsets $(CHARSET_STANDARD_OS) \
|
||||
$(CHARSET_STANDARD_JAVA_TEMPLATES) $(CHARSET_EXTSRC_DIR) \
|
||||
$(CHARSET_COPYRIGHT_HEADER) \
|
||||
$(LOG_DEBUG)
|
||||
$(TOUCH) '$@'
|
||||
|
||||
TARGETS += $(CHARSET_DONE_BASE)-stdcs
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
166
make/modules/java.base/gensrc/GensrcMisc.gmk
Normal file
166
make/modules/java.base/gensrc/GensrcMisc.gmk
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
################################################################################
|
||||
# Install the launcher name, release version string, full version
|
||||
# string and the runtime name into the VersionProps.java file.
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
|
||||
SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/java/lang/VersionProps.java.template, \
|
||||
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/VersionProps.java, \
|
||||
REPLACEMENTS := \
|
||||
@@LAUNCHER_NAME@@ => $(LAUNCHER_NAME) ; \
|
||||
@@RUNTIME_NAME@@ => $(RUNTIME_NAME) ; \
|
||||
@@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
|
||||
@@VERSION_STRING@@ => $(VERSION_STRING) ; \
|
||||
@@VERSION_NUMBER@@ => $(VERSION_NUMBER) ; \
|
||||
@@VERSION_PRE@@ => $(VERSION_PRE) ; \
|
||||
@@VERSION_BUILD@@ => $(VERSION_BUILD) ; \
|
||||
@@VERSION_OPT@@ => $(VERSION_OPT) ; \
|
||||
@@VERSION_DATE@@ => $(VERSION_DATE) ; \
|
||||
@@VERSION_CLASSFILE_MAJOR@@ => $(VERSION_CLASSFILE_MAJOR) ; \
|
||||
@@VERSION_CLASSFILE_MINOR@@ => $(VERSION_CLASSFILE_MINOR) ; \
|
||||
@@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
|
||||
@@VENDOR_VERSION_STRING@@ => $(VENDOR_VERSION_STRING) ; \
|
||||
@@VENDOR@@ => $(COMPANY_NAME) ; \
|
||||
@@VENDOR_URL@@ => $(VENDOR_URL) ; \
|
||||
@@VENDOR_URL_BUG@@ => $(VENDOR_URL_BUG) ; \
|
||||
@@VENDOR_URL_VM_BUG@@ => $(VENDOR_URL_VM_BUG), \
|
||||
))
|
||||
|
||||
|
||||
# Normalize OPENJDK_TARGET_CPU name to match jdk.internal.util.Architecture enum
|
||||
ifneq ($(filter $(OPENJDK_TARGET_CPU), s390x), )
|
||||
OPENJDK_TARGET_ARCH_CANONICAL = s390
|
||||
else ifneq ($(filter $(OPENJDK_TARGET_CPU), x86_64 amd64), )
|
||||
OPENJDK_TARGET_ARCH_CANONICAL = x64
|
||||
else
|
||||
OPENJDK_TARGET_ARCH_CANONICAL := $(OPENJDK_TARGET_CPU)
|
||||
endif
|
||||
|
||||
# Normalize OPENJDK_TARGET_OS operating system name to match jdk.internal.util.OperatingSystem enum
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
OPENJDK_TARGET_OS_CANONICAL = macos
|
||||
else
|
||||
OPENJDK_TARGET_OS_CANONICAL := $(OPENJDK_TARGET_OS)
|
||||
endif
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_PLATFORMPROPERTIES_JAVA, \
|
||||
SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/jdk/internal/util/PlatformProps.java.template, \
|
||||
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/util/PlatformProps.java, \
|
||||
REPLACEMENTS := \
|
||||
@@OPENJDK_TARGET_OS@@ => $(OPENJDK_TARGET_OS_CANONICAL) ; \
|
||||
@@OPENJDK_TARGET_CPU@@ => $(OPENJDK_TARGET_ARCH_CANONICAL) ; \
|
||||
@@OPENJDK_TARGET_CPU_ENDIAN@@ => $(OPENJDK_TARGET_CPU_ENDIAN) ; \
|
||||
@@OPENJDK_TARGET_CPU_BITS@@ => $(OPENJDK_TARGET_CPU_BITS), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_VERSION_JAVA) $(BUILD_PLATFORMPROPERTIES_JAVA)
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
|
||||
# Need to specify language since the template file has a non standard
|
||||
# extension.
|
||||
CPP_FLAGS += -x c
|
||||
else ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||
CPP_FLAGS += -nologo
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU), aarch64)
|
||||
# cl.exe does only recognize few file extensions as valid (ex: .c, .h, .cpp), so
|
||||
# make sure *.java.template files are recognized as valid input files
|
||||
CPP_FILEPREFIX = -Tc
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generate a java source file from a template through the C preprocessor for the
|
||||
# target system. First extract the copyright notice at the start of the file.
|
||||
# Run the preprocessor. Filter out the default compiler stderr output on
|
||||
# Windows. Filter out all the header files output. Remove all "PREFIX_" strings
|
||||
# that were added to variable references in the template files to avoid being
|
||||
# matched by the preprocessor. Remove any #line directives left by the
|
||||
# preprocessor.
|
||||
define generate-preproc-src
|
||||
$(call MakeDir, $(@D))
|
||||
$(call ExecuteWithLog, $(SUPPORT_OUTPUTDIR)/gensrc/java.base/_$(@F), \
|
||||
( $(AWK) '/@@END_COPYRIGHT@@/{exit}1' $< && \
|
||||
$(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $(CPP_FILEPREFIX) $< \
|
||||
2> >($(GREP) -v '^$(<F)$$' >&2) \
|
||||
| $(AWK) '/@@START_HERE@@/,0' \
|
||||
| $(SED) -e 's/@@START_HERE@@/\/\/ AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' \
|
||||
-e 's/PREFIX_//' -e 's/^#.*//' \
|
||||
) > $@ \
|
||||
)
|
||||
endef
|
||||
|
||||
GENSRC_SOR_FILE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java
|
||||
|
||||
$(GENSRC_SOR_FILE): \
|
||||
$(TOPDIR)/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template
|
||||
$(generate-preproc-src)
|
||||
|
||||
TARGETS += $(GENSRC_SOR_FILE)
|
||||
|
||||
################################################################################
|
||||
|
||||
ifeq ($(call isTargetOs, windows), false)
|
||||
|
||||
GENSRC_UC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java
|
||||
|
||||
$(GENSRC_UC_FILE): \
|
||||
$(TOPDIR)/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template
|
||||
$(generate-preproc-src)
|
||||
|
||||
TARGETS += $(GENSRC_UC_FILE)
|
||||
|
||||
endif
|
||||
|
||||
# Create the javax/crypto/JceSecurity.class, using the build default.
|
||||
#
|
||||
ifeq ($(UNLIMITED_CRYPTO), true)
|
||||
JCE_DEFAULT_POLICY = unlimited
|
||||
else
|
||||
JCE_DEFAULT_POLICY = limited
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template), )
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_JCESECURITY_JAVA, \
|
||||
SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template, \
|
||||
OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/javax/crypto/JceSecurity.java, \
|
||||
REPLACEMENTS := \
|
||||
@@JCE_DEFAULT_POLICY@@ => $(JCE_DEFAULT_POLICY), \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_JCESECURITY_JAVA)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
68
make/modules/java.base/gensrc/GensrcModuleLoaderMap.gmk
Normal file
68
make/modules/java.base/gensrc/GensrcModuleLoaderMap.gmk
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#
|
||||
# Copyright (c) 2015, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
include Modules.gmk
|
||||
|
||||
$(eval $(call ReadImportMetaData))
|
||||
|
||||
# Replacing double-comma with a single comma is to workaround the issue
|
||||
# with some version of make on windows that doesn't substitute spaces
|
||||
# with one comma properly as with make 4.0
|
||||
define SubstComma
|
||||
$(strip \
|
||||
$(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1))) \
|
||||
)
|
||||
endef
|
||||
BOOT_MODULES_LIST := $(call SubstComma, $(BOOT_MODULES))
|
||||
PLATFORM_MODULES_LIST := $(call SubstComma, $(PLATFORM_MODULES))
|
||||
NATIVE_ACCESS_MODULES_LIST := $(call SubstComma, $(NATIVE_ACCESS_MODULES))
|
||||
|
||||
VARDEPS_VALUE := $(BOOT_MODULES_LIST) $(PLATFORM_MODULES_LIST) $(NATIVE_ACCESS_MODULES_LIST)
|
||||
VARDEPS_FILE := $(call DependOnVariable, VARDEPS_VALUE)
|
||||
|
||||
################################################################################
|
||||
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/module/ModuleLoaderMap.java: \
|
||||
$(TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java \
|
||||
$(VARDEPS_FILE) $(BUILD_TOOLS_JDK)
|
||||
$(call MakeTargetDir)
|
||||
$(RM) $@ $@.tmp
|
||||
$(TOOL_GENCLASSLOADERMAP) -boot $(BOOT_MODULES_LIST) \
|
||||
-platform $(PLATFORM_MODULES_LIST) \
|
||||
-native-access $(NATIVE_ACCESS_MODULES_LIST) \
|
||||
-o $@.tmp $<
|
||||
$(MV) $@.tmp $@
|
||||
|
||||
TARGETS += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/module/ModuleLoaderMap.java
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
54
make/modules/java.base/gensrc/GensrcRegex.gmk
Normal file
54
make/modules/java.base/gensrc/GensrcRegex.gmk
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#
|
||||
# Copyright (c) 2023, 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)
|
||||
|
||||
################################################################################
|
||||
# Rules to create java files under
|
||||
# $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/util/regex/
|
||||
################################################################################
|
||||
|
||||
GENSRC_INDICCONJUNCTBREAK := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/util/regex/IndicConjunctBreak.java
|
||||
|
||||
INDICCONJUNCTBREAKTEMP := $(MODULE_SRC)/share/classes/jdk/internal/util/regex/IndicConjunctBreak.java.template
|
||||
INDICCONJUNCTBREAKPROPS := $(MODULE_SRC)/share/data/unicodedata/DerivedCoreProperties.txt
|
||||
INDICCONJUNCTBREAKPARAMS := InCB=Linker InCB=Extend InCB=Consonant
|
||||
|
||||
$(GENSRC_INDICCONJUNCTBREAK): $(BUILD_TOOLS_JDK) $(INDICCONJUNCTBREAKTEMP) $(INDICCONJUNCTBREAKPROPS)
|
||||
$(call LogInfo, Generating $@)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_GENERATEEXTRAPROPERTIES) \
|
||||
$(INDICCONJUNCTBREAKTEMP) \
|
||||
$(INDICCONJUNCTBREAKPROPS) \
|
||||
$(GENSRC_INDICCONJUNCTBREAK) \
|
||||
$(INDICCONJUNCTBREAKPARAMS)
|
||||
|
||||
TARGETS += $(GENSRC_INDICCONJUNCTBREAK)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
106
make/modules/java.base/gensrc/GensrcScopedMemoryAccess.gmk
Normal file
106
make/modules/java.base/gensrc/GensrcScopedMemoryAccess.gmk
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
#
|
||||
# Copyright (c) 2020, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
SCOPED_INPUT_DIR := $(MODULE_SRC)/share/classes/jdk/internal/misc
|
||||
SCOPED_INPUT := $(SCOPED_INPUT_DIR)/X-ScopedMemoryAccess.java.template
|
||||
SCOPED_OUTPUT := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/misc/ScopedMemoryAccess.java
|
||||
|
||||
################################################################################
|
||||
# Helper method to setup generation of scoped snippets.
|
||||
# Will add the generated snippet file name to SCOPED_SNIPPET_FILES.
|
||||
#
|
||||
# arg $1: type for this snippet
|
||||
define SetupGenScopedSnippets
|
||||
$1_SCOPED_SNIPPET_FILE := $$(SCOPED_OUTPUT).snippet.$1
|
||||
|
||||
$1_KEYS := $1 CAS
|
||||
ifneq ($$(filter byte, $1),)
|
||||
$1_KEYS += byte
|
||||
endif
|
||||
ifneq ($$(filter float double, $1),)
|
||||
$1_KEYS += floatingPoint
|
||||
endif
|
||||
ifneq ($$(filter char short int long, $1),)
|
||||
$1_KEYS += Unaligned
|
||||
endif
|
||||
ifneq ($$(filter boolean byte char short, $1),)
|
||||
$1_KEYS += ShorterThanInt
|
||||
endif
|
||||
ifeq ($$(filter boolean, $1),)
|
||||
$1_KEYS += AtomicAdd
|
||||
endif
|
||||
ifeq ($$(filter float double, $1),)
|
||||
$1_KEYS += Bitwise
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_SCOPED_SNIPPET_$1, \
|
||||
SOURCE_FILE := $$(SCOPED_INPUT_DIR)/X-ScopedMemoryAccess-bin.java.template, \
|
||||
OUTPUT_FILE := $$($1_SCOPED_SNIPPET_FILE), \
|
||||
INFO := Generating snippets for ScopedMemoryAccess ($1), \
|
||||
SUBST_EMPTY_LINES := false, \
|
||||
KEYS := $$($1_KEYS), \
|
||||
REPLACEMENTS := \
|
||||
type=$1 \
|
||||
Type=$$(call Conv, $1, Type), \
|
||||
))
|
||||
TARGETS += $$(GEN_SCOPED_SNIPPET_$1)
|
||||
|
||||
SCOPED_SNIPPET_FILES += $$($1_SCOPED_SNIPPET_FILE)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Setup generation of snippet files, one for each primitive type. This will
|
||||
# populate SCOPED_SNIPPET_FILES.
|
||||
|
||||
# SCOPED_TYPES is identical to PRIMITIVE_TYPES, but with a slightly different
|
||||
# order. Keep the original SCOPED_TYPES order for now to not change the
|
||||
# generated file.
|
||||
SCOPED_TYPES := boolean byte short char int long float double
|
||||
|
||||
SCOPED_SNIPPET_FILES :=
|
||||
$(foreach t, $(SCOPED_TYPES), \
|
||||
$(eval $(call SetupGenScopedSnippets,$t)) \
|
||||
)
|
||||
|
||||
# Setup a rule for generating the ScopedMemoryAccess java class by incorporating
|
||||
# those snippets
|
||||
$(SCOPED_OUTPUT): $(SCOPED_INPUT) $(SCOPED_SNIPPET_FILES)
|
||||
$(call LogInfo, Concatenating snippets for ScopedMemoryAccess.java)
|
||||
$(CAT) $(SCOPED_INPUT) > $(SCOPED_OUTPUT).tmp
|
||||
$(CAT) $(SCOPED_SNIPPET_FILES) >> $(SCOPED_OUTPUT).tmp
|
||||
$(ECHO) "}" >> $(SCOPED_OUTPUT).tmp
|
||||
$(MV) $(SCOPED_OUTPUT).tmp $(SCOPED_OUTPUT)
|
||||
|
||||
TARGETS += $(SCOPED_OUTPUT)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
173
make/modules/java.base/gensrc/GensrcVarHandles.gmk
Normal file
173
make/modules/java.base/gensrc/GensrcVarHandles.gmk
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
#
|
||||
# Copyright (c) 2015, 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
VARHANDLES_INPUT_DIR := $(MODULE_SRC)/share/classes/java/lang/invoke
|
||||
VARHANDLES_OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/invoke
|
||||
|
||||
################################################################################
|
||||
# Setup a rule for generating a VarHandle java class
|
||||
#
|
||||
# arg $1: type for this varhandle
|
||||
define GenerateVarHandle
|
||||
VARHANDLE_$1_type := $$(strip $$(if $$(filter reference, $1), Object, $1))
|
||||
VARHANDLE_$1_Type := $$(call Conv, $1, Type)
|
||||
|
||||
$1_KEYS := $$(VARHANDLE_$1_type) CAS
|
||||
ifneq ($$(filter byte short char, $1),)
|
||||
$1_KEYS += ShorterThanInt
|
||||
endif
|
||||
ifeq ($$(filter boolean reference, $1),)
|
||||
$1_KEYS += AtomicAdd
|
||||
endif
|
||||
ifeq ($$(filter float double reference, $1),)
|
||||
$1_KEYS += Bitwise
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_VARHANDLE_$1, \
|
||||
SOURCE_FILE := $$(VARHANDLES_INPUT_DIR)/X-VarHandle.java.template, \
|
||||
OUTPUT_FILE := $$(VARHANDLES_OUTPUT_DIR)/VarHandle$$(VARHANDLE_$1_Type)s.java, \
|
||||
INFO := Generating VarHandle class for $1, \
|
||||
SUBST_EMPTY_LINES := false, \
|
||||
KEYS := $$($1_KEYS), \
|
||||
REPLACEMENTS := \
|
||||
type=$$(VARHANDLE_$1_type) \
|
||||
Type=$$(VARHANDLE_$1_Type), \
|
||||
))
|
||||
TARGETS += $$(GEN_VARHANDLE_$1)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Setup a rule for generating a VarHandleByteArray java class
|
||||
#
|
||||
# arg $1: type for this varhandle
|
||||
define GenerateVarHandleByteArray
|
||||
VARHANDLE_BYTEARRAY_$1_Type := $$(call Conv, $1, Type)
|
||||
|
||||
$1_KEYS := $1
|
||||
ifneq ($$(filter int long float double, $1),)
|
||||
$1_KEYS += CAS
|
||||
endif
|
||||
ifneq ($$(filter float double, $1),)
|
||||
$1_KEYS += floatingPoint
|
||||
endif
|
||||
ifneq ($$(filter int long, $1),)
|
||||
$1_KEYS += AtomicAdd Bitwise
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_VARHANDLE_BYTEARRAY_$1, \
|
||||
SOURCE_FILE := $$(VARHANDLES_INPUT_DIR)/X-VarHandleByteArrayView.java.template, \
|
||||
OUTPUT_FILE := $$(VARHANDLES_OUTPUT_DIR)/VarHandleByteArrayAs$$(VARHANDLE_BYTEARRAY_$1_Type)s.java, \
|
||||
INFO := Generating VarHandleByteArray class for $1, \
|
||||
SUBST_EMPTY_LINES := false, \
|
||||
KEYS := $$($1_KEYS), \
|
||||
REPLACEMENTS := \
|
||||
type=$1 \
|
||||
Type=$$(VARHANDLE_BYTEARRAY_$1_Type) \
|
||||
BoxType=$$(call Conv, $1, Fulltype) \
|
||||
rawType=$$(call Conv, $1, memtype) \
|
||||
RawType=$$(call Conv, $1, Memtype) \
|
||||
RawBoxType=$$(call Conv, $1, FullMemtype), \
|
||||
))
|
||||
TARGETS += $$(GEN_VARHANDLE_BYTEARRAY_$1)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Setup a rule for generating a VarHandleMemorySegment java class
|
||||
#
|
||||
# arg $1: type for this varhandle
|
||||
define GenerateVarHandleMemorySegment
|
||||
VARHANDLE_SEGMENT_$1_Type := $$(call Conv, $1, Type)
|
||||
|
||||
|
||||
$1_KEYS := $1
|
||||
ifneq ($$(filter int long float double, $1),)
|
||||
$1_KEYS += CAS
|
||||
endif
|
||||
ifneq ($$(filter boolean byte, $1),)
|
||||
$1_KEYS += byte
|
||||
endif
|
||||
ifneq ($$(filter float double, $1),)
|
||||
$1_KEYS += floatingPoint
|
||||
endif
|
||||
ifneq ($$(filter boolean byte short char, $1),)
|
||||
$1_KEYS += ShorterThanInt
|
||||
endif
|
||||
ifneq ($$(filter int long, $1),)
|
||||
$1_KEYS += AtomicAdd Bitwise
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupStreamPreProcessing, GEN_VARHANDLE_SEGMENT_$1, \
|
||||
SOURCE_FILE := $$(VARHANDLES_INPUT_DIR)/X-VarHandleSegmentView.java.template, \
|
||||
OUTPUT_FILE := $$(VARHANDLES_OUTPUT_DIR)/VarHandleSegmentAs$$(VARHANDLE_SEGMENT_$1_Type)s.java, \
|
||||
INFO := Generating VarHandleSegment class for $1, \
|
||||
SUBST_EMPTY_LINES := false, \
|
||||
KEYS := $$($1_KEYS), \
|
||||
REPLACEMENTS := \
|
||||
type=$1 \
|
||||
Type=$$(VARHANDLE_SEGMENT_$1_Type) \
|
||||
BoxType=$$(call Conv, $1, Fulltype) \
|
||||
rawType=$$(call Conv, $1, memtype) \
|
||||
RawType=$$(call Conv, $1, Memtype) \
|
||||
RawBoxType=$$(call Conv, $1, FullMemtype), \
|
||||
))
|
||||
TARGETS += $$(GEN_VARHANDLE_SEGMENT_$1)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
# Generate all VarHandle related classes
|
||||
|
||||
$(foreach t, $(PRIMITIVE_TYPES) reference, \
|
||||
$(eval $(call GenerateVarHandle,$t)) \
|
||||
)
|
||||
|
||||
$(foreach t, $(NON_BYTE_NUMBER_TYPES), \
|
||||
$(eval $(call GenerateVarHandleByteArray,$t)) \
|
||||
)
|
||||
|
||||
$(foreach t, $(PRIMITIVE_TYPES), \
|
||||
$(eval $(call GenerateVarHandleMemorySegment,$t)) \
|
||||
)
|
||||
|
||||
################################################################################
|
||||
|
||||
GENSRC_VARHANDLEGUARDS := $(VARHANDLES_OUTPUT_DIR)/VarHandleGuards.java
|
||||
|
||||
$(GENSRC_VARHANDLEGUARDS): $(BUILD_TOOLS_JDK)
|
||||
$(call LogInfo, Generating $@)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_VARHANDLEGUARDMETHODGENERATOR) \
|
||||
$(GENSRC_VARHANDLEGUARDS)
|
||||
|
||||
TARGETS += $(GENSRC_VARHANDLEGUARDS)
|
||||
|
||||
################################################################################
|
||||
|
||||
endif # include guard
|
||||
include MakeIncludeEnd.gmk
|
||||
207
make/modules/java.base/lib/CoreLibraries.gmk
Normal file
207
make/modules/java.base/lib/CoreLibraries.gmk
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
#
|
||||
# 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue