From de1f5a3c437ab4c6009f8be6f9f109ed36fb0b53 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Thu, 25 Sep 2025 17:42:46 +0000 Subject: [PATCH] 8368468: Split out everything but configure results from spec.gmk Reviewed-by: erikj --- make/RunTestsPrebuilt.gmk | 5 +- make/RunTestsPrebuiltSpec.gmk | 58 +-- make/autoconf/boot-jdk.m4 | 8 +- make/autoconf/bootcycle-spec.gmk.template | 21 +- make/autoconf/build-performance.m4 | 20 +- make/autoconf/buildjdk-spec.gmk.template | 79 +--- make/autoconf/help.m4 | 4 +- make/autoconf/hotspot.m4 | 2 +- make/autoconf/jdk-options.m4 | 6 +- make/autoconf/spec.gmk.template | 343 +++-------------- make/common/CommonVars.gmk | 442 ++++++++++++++++++++++ make/common/MakeBase.gmk | 1 + 12 files changed, 524 insertions(+), 465 deletions(-) create mode 100644 make/common/CommonVars.gmk diff --git a/make/RunTestsPrebuilt.gmk b/make/RunTestsPrebuilt.gmk index f5fe1d33830..3ea0d330d58 100644 --- a/make/RunTestsPrebuilt.gmk +++ b/make/RunTestsPrebuilt.gmk @@ -131,7 +131,7 @@ $(eval $(call SetupVariable,MAKE,make,NO_CHECK)) $(eval $(call SetupVariable,BASH,bash,NO_CHECK)) # Check optional variables -$(eval $(call SetupVariable,JIB_JAR,OPTIONAL)) +$(eval $(call SetupVariable,JIB_HOME,OPTIONAL)) # Now that we have verified that we have the required variables available, we # can include the prebuilt spec file ourselves, without an ephemeral spec @@ -265,7 +265,7 @@ $(call CreateNewSpec, $(NEW_SPEC), \ SYMBOLS_IMAGE_DIR := $(SYMBOLS_IMAGE_DIR), \ MAKE := $(MAKE), \ BASH := $(BASH), \ - JIB_JAR := $(JIB_JAR), \ + JIB_HOME := $(JIB_HOME), \ FIXPATH_BASE := $(FIXPATH_BASE), \ FIXPATH := $(FIXPATH), \ OPENJDK_TARGET_OS := $(OPENJDK_TARGET_OS), \ @@ -295,6 +295,7 @@ test-prebuilt: # ExecuteWithLog is called in RunTests.gmk. The PrepareFailureLogs macro # is unfortunately not available at this point. $(call MakeDir, $(MAKESUPPORT_OUTPUTDIR)/failure-logs) + $(call MakeDir, $(JAVA_TMP_DIR)) @$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error # We need to fill the FindTest cache before entering RunTests.gmk. @cd $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) SPEC=$(SPEC) \ diff --git a/make/RunTestsPrebuiltSpec.gmk b/make/RunTestsPrebuiltSpec.gmk index e9fd901c9e1..132532b3b38 100644 --- a/make/RunTestsPrebuiltSpec.gmk +++ b/make/RunTestsPrebuiltSpec.gmk @@ -27,9 +27,6 @@ # Fake minimalistic spec file for RunTestsPrebuilt.gmk. ################################################################################ -# Make sure all shell commands are executed with the C locale -export LC_ALL := C - define VerifyVariable ifeq ($$($1), ) $$(info Error: Variable $1 is missing, needed by RunTestPrebuiltSpec.gmk) @@ -57,26 +54,18 @@ $(eval $(call VerifyVariable,BASH)) # The "human readable" name of this configuration CONF_NAME := run-test-prebuilt +LOCALE_USED := C + # Number of parallel jobs to use for compilation -JOBS ?= $(NUM_CORES) -TEST_JOBS ?= 0 +CONF_JOBS := $(NUM_CORES) +CONF_TEST_JOBS := 0 # Use hard-coded values for java flags (one size, fits all!) JAVA_FLAGS := -Duser.language=en -Duser.country=US JAVA_FLAGS_BIG := -Xms64M -Xmx2048M JAVA_FLAGS_SMALL := -XX:+UseSerialGC -Xms32M -Xmx512M -XX:TieredStopAtLevel=1 -BUILDJDK_JAVA_FLAGS_SMALL := -Xms32M -Xmx512M -XX:TieredStopAtLevel=1 -BUILD_JAVA_FLAGS := $(JAVA_FLAGS_BIG) - -################################################################################ -# Hard-coded values copied from spec.gmk.in. -X := -SPACE := $(X) $(X) -COMMA := , -MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \ - MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" LOG_LEVEL=$(LOG_LEVEL) -BASH_ARGS := -o pipefail -e -SHELL := $(BASH) $(BASH_ARGS) +BUILD_JAVA_FLAGS_SMALL := -Xms32M -Xmx512M -XX:TieredStopAtLevel=1 +BOOTCYCLE_JVM_ARGS_BIG := $(JAVA_FLAGS_BIG) ################################################################################ # Set some reasonable defaults for features @@ -84,20 +73,6 @@ DEBUG_LEVEL := release HOTSPOT_DEBUG_LEVEL := release BUILD_FAILURE_HANDLER := true -################################################################################ -# Alias some paths (that should not really be used) to our JDK image under test. -SUPPORT_OUTPUTDIR := $(OUTPUTDIR)/support -BUILDTOOLS_OUTPUTDIR := $(OUTPUTDIR)/buildtools -HOTSPOT_OUTPUTDIR := $(OUTPUTDIR)/hotspot -JDK_OUTPUTDIR := $(OUTPUTDIR)/jdk -IMAGES_OUTPUTDIR := $(OUTPUTDIR)/images -BUNDLES_OUTPUTDIR := $(OUTPUTDIR)/bundles -TESTMAKE_OUTPUTDIR := $(OUTPUTDIR)/test-make -MAKESUPPORT_OUTPUTDIR := $(OUTPUTDIR)/make-support -BUILDJDK_OUTPUTDIR := $(OUTPUTDIR)/buildjdk - -JRE_IMAGE_DIR := $(JDK_IMAGE_DIR) - ################################################################################ # Assume build platform is same as target platform OPENJDK_BUILD_OS := $(OPENJDK_TARGET_OS) @@ -109,30 +84,19 @@ OPENJDK_BUILD_CPU_ARCH := $(OPENJDK_TARGET_CPU_ARCH) OPENJDK_BUILD_CPU_BITS := $(OPENJDK_TARGET_CPU_BITS) OPENJDK_BUILD_CPU_ENDIAN := $(OPENJDK_TARGET_CPU_ENDIAN) +EXTERNAL_BUILDJDK_PATH := + ################################################################################ # Java executable definitions -JAVA_CMD := $(BOOT_JDK)/bin/java -JAVAC_CMD := $(BOOT_JDK)/bin/javac -JAR_CMD := $(BOOT_JDK)/bin/jar -JLINK_CMD := $(JDK_OUTPUTDIR)/bin/jlink -JMOD_CMD := $(JDK_OUTPUTDIR)/bin/jmod +JAVA_CMD := $(FIXPATH) $(BOOT_JDK)/bin/java +JAVAC_CMD := $(FIXPATH) $(BOOT_JDK)/bin/javac +JAR_CMD := $(FIXPATH) $(BOOT_JDK)/bin/jar -JAVA := $(FIXPATH) $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) -JAVA_SMALL := $(FIXPATH) $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS) -JAVAC := $(FIXPATH) $(JAVAC_CMD) -JAR := $(FIXPATH) $(JAR_CMD) -JLINK := $(FIXPATH) $(JLINK_CMD) -JMOD := $(FIXPATH) $(JMOD_CMD) - -JTREG_JAVA := $(FIXPATH) $(JTREG_JDK)/bin/java $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) - -BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA ################################################################################ # Some common tools. Assume most common name and no path. AWK := awk BASENAME := basename CAT := cat -CD := cd CHMOD := chmod CP := cp CUT := cut diff --git a/make/autoconf/boot-jdk.m4 b/make/autoconf/boot-jdk.m4 index 1dd768b2ae1..49a3842573c 100644 --- a/make/autoconf/boot-jdk.m4 +++ b/make/autoconf/boot-jdk.m4 @@ -376,10 +376,10 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK], AC_SUBST(BOOT_JDK) # Setup tools from the Boot JDK. - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA, java) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC, javac) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVADOC, javadoc) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR, jar) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA_CMD, java) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC_CMD, javac) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVADOC_CMD, javadoc) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR_CMD, jar) # Finally, set some other options... diff --git a/make/autoconf/bootcycle-spec.gmk.template b/make/autoconf/bootcycle-spec.gmk.template index 8b6035606a5..572ea8f221f 100644 --- a/make/autoconf/bootcycle-spec.gmk.template +++ b/make/autoconf/bootcycle-spec.gmk.template @@ -28,23 +28,4 @@ # First include the real base spec.gmk file include @SPEC@ -# Override specific values to do a boot cycle build - -# Use a different Boot JDK -BOOT_JDK := $(JDK_IMAGE_DIR) - -# The bootcycle build has a different output directory -OLD_OUTPUTDIR := @OUTPUTDIR@ -OUTPUTDIR := $(OLD_OUTPUTDIR)/bootcycle-build -# No spaces in patsubst to avoid leading space in variable -JAVAC_SERVER_DIR := $(patsubst $(OLD_OUTPUTDIR)%,$(OUTPUTDIR)%,$(JAVAC_SERVER_DIR)) - -JAVA_CMD := $(FIXPATH) $(BOOT_JDK)/bin/java -JAVAC_CMD := $(FIXPATH) $(BOOT_JDK)/bin/javac -JAR_CMD := $(FIXPATH) $(BOOT_JDK)/bin/jar -# The bootcycle JVM arguments may differ from the original boot jdk. -JAVA_FLAGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@ -# Any CDS settings generated for the bootjdk are invalid in the bootcycle build. -# By filtering out those JVM args, the bootcycle JVM will use its default -# settings for CDS. -JAVA_FLAGS := $(filter-out -XX:SharedArchiveFile% -Xshare%, $(JAVA_FLAGS)) +IS_BOOTCYCLE_JDK_SPEC := true diff --git a/make/autoconf/build-performance.m4 b/make/autoconf/build-performance.m4 index dfc9e979d2f..49ae9b39cf2 100644 --- a/make/autoconf/build-performance.m4 +++ b/make/autoconf/build-performance.m4 @@ -130,18 +130,18 @@ AC_DEFUN_ONCE([BPERF_SETUP_BUILD_JOBS], memory_gb=`expr $MEMORY_SIZE / 1024` # Pick the lowest of memory in gb and number of cores. if test "$memory_gb" -lt "$NUM_CORES"; then - JOBS="$memory_gb" + CONF_JOBS="$memory_gb" else - JOBS="$NUM_CORES" + CONF_JOBS="$NUM_CORES" fi - if test "$JOBS" -eq "0"; then - JOBS=1 + if test "$CONF_JOBS" -eq "0"; then + CONF_JOBS=1 fi - AC_MSG_RESULT([$JOBS]) + AC_MSG_RESULT([$CONF_JOBS]) else - JOBS=$with_jobs + CONF_JOBS=$with_jobs fi - AC_SUBST(JOBS) + AC_SUBST(CONF_JOBS) ]) AC_DEFUN_ONCE([BPERF_SETUP_TEST_JOBS], @@ -150,11 +150,11 @@ AC_DEFUN_ONCE([BPERF_SETUP_TEST_JOBS], AC_ARG_WITH(test-jobs, [AS_HELP_STRING([--with-test-jobs], [number of parallel tests jobs to run @<:@based on build jobs@:>@])]) if test "x$with_test_jobs" = x; then - TEST_JOBS=0 + CONF_TEST_JOBS=0 else - TEST_JOBS=$with_test_jobs + CONF_TEST_JOBS=$with_test_jobs fi - AC_SUBST(TEST_JOBS) + AC_SUBST(CONF_TEST_JOBS) ]) AC_DEFUN([BPERF_SETUP_CCACHE], diff --git a/make/autoconf/buildjdk-spec.gmk.template b/make/autoconf/buildjdk-spec.gmk.template index 924389b94e8..02f2a6396ce 100644 --- a/make/autoconf/buildjdk-spec.gmk.template +++ b/make/autoconf/buildjdk-spec.gmk.template @@ -30,81 +30,4 @@ # First include the real base spec.gmk file include @SPEC@ -CC := @BUILD_CC@ -CXX := @BUILD_CXX@ -# Ideally this should be probed by configure but that is tricky to implement, -# and this should work in most cases. -CPP := @BUILD_CC@ -E -LD := @BUILD_LD@ -LDCXX := @BUILD_LDCXX@ -AS := @BUILD_AS@ -NM := @BUILD_NM@ -AR := @BUILD_AR@ -LIB := @BUILD_LIB@ -OBJCOPY := @BUILD_OBJCOPY@ -STRIP := @BUILD_STRIP@ -SYSROOT_CFLAGS := @BUILD_SYSROOT_CFLAGS@ -SYSROOT_LDFLAGS := @BUILD_SYSROOT_LDFLAGS@ - -# These directories should not be moved to BUILDJDK_OUTPUTDIR -HOTSPOT_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(HOTSPOT_OUTPUTDIR)) -BUILDTOOLS_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(BUILDTOOLS_OUTPUTDIR)) -SUPPORT_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(SUPPORT_OUTPUTDIR)) -JDK_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(JDK_OUTPUTDIR)) -IMAGES_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUTPUTDIR)) - -OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@ -OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@ -OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@ -OPENJDK_TARGET_CPU := @OPENJDK_BUILD_CPU@ -OPENJDK_TARGET_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@ -OPENJDK_TARGET_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@ -OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@ -OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@ -OPENJDK_TARGET_LIBC := @OPENJDK_BUILD_LIBC@ -OPENJDK_TARGET_OS_INCLUDE_SUBDIR := @OPENJDK_BUILD_OS_INCLUDE_SUBDIR@ - -HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@ -HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@ -HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@ -HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@ -HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@ -HOTSPOT_TARGET_LIBC := @HOTSPOT_BUILD_LIBC@ - -CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@ -CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@ -LDFLAGS_JDKLIB := @OPENJDK_BUILD_LDFLAGS_JDKLIB@ -CFLAGS_JDKEXE := @OPENJDK_BUILD_CFLAGS_JDKEXE@ -CXXFLAGS_JDKEXE := @OPENJDK_BUILD_CXXFLAGS_JDKEXE@ -LDFLAGS_JDKEXE := @OPENJDK_BUILD_LDFLAGS_JDKEXE@ - -JVM_CFLAGS := @OPENJDK_BUILD_JVM_CFLAGS@ -JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@ -JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@ -JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@ - -FDLIBM_CFLAGS := @OPENJDK_BUILD_FDLIBM_CFLAGS@ - -INTERIM_LANGTOOLS_ARGS := $(subst $(OUTPUTDIR),$(BUILDJDK_OUTPUTDIR),$(INTERIM_LANGTOOLS_ARGS)) - -# The compiler for the build platform is likely not warning compatible with the official -# compiler. -WARNINGS_AS_ERRORS := false -DISABLE_WARNING_PREFIX := @BUILD_CC_DISABLE_WARNING_PREFIX@ - -# Save speed and disk space by not enabling debug symbols for the buildjdk -ENABLE_DEBUG_SYMBOLS := false - -JVM_VARIANTS := server -JVM_VARIANT_MAIN := server -JVM_FEATURES_server := cds compiler1 compiler2 g1gc serialgc - -# Some users still set EXTRA_*FLAGS on the make command line. Must -# make sure to override that when building buildjdk. -override EXTRA_CFLAGS := -override EXTRA_CXXFLAGS := -override EXTRA_LDFLAGS := - -# hsdis is not needed -HSDIS_BACKEND := none -ENABLE_HSDIS_BUNDLING := false +IS_BUILD_JDK_SPEC := true diff --git a/make/autoconf/help.m4 b/make/autoconf/help.m4 index d8c0b2ffaef..4dc3cb5c267 100644 --- a/make/autoconf/help.m4 +++ b/make/autoconf/help.m4 @@ -305,7 +305,7 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS], $ECHO "* Version string: $VERSION_STRING ($VERSION_SHORT)" if test "x$SOURCE_DATE" != xupdated; then - source_date_info="$SOURCE_DATE ($SOURCE_DATE_ISO_8601)" + source_date_info="$SOURCE_DATE ($SOURCE_DATE_ISO_8601_FIXED)" else source_date_info="Determined at build time" fi @@ -330,7 +330,7 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS], $ECHO "" $ECHO "Build performance summary:" - $ECHO "* Build jobs: $JOBS" + $ECHO "* Build jobs: $CONF_JOBS" $ECHO "* Memory limit: $MEMORY_SIZE MB" if test "x$CCACHE_STATUS" != "x"; then $ECHO "* ccache status: $CCACHE_STATUS" diff --git a/make/autoconf/hotspot.m4 b/make/autoconf/hotspot.m4 index 6dc46d17aa3..aba5f1ef1d2 100644 --- a/make/autoconf/hotspot.m4 +++ b/make/autoconf/hotspot.m4 @@ -129,7 +129,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_MISC], AC_MSG_RESULT([determined at build time (default)]) else # If we have a fixed value for SOURCE_DATE, use it as default - HOTSPOT_BUILD_TIME="$SOURCE_DATE_ISO_8601" + HOTSPOT_BUILD_TIME="$SOURCE_DATE_ISO_8601_FIXED" AC_MSG_RESULT([$HOTSPOT_BUILD_TIME (from --with-source-date)]) fi fi diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-options.m4 index d4299078abf..6de43d0a169 100644 --- a/make/autoconf/jdk-options.m4 +++ b/make/autoconf/jdk-options.m4 @@ -897,15 +897,15 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD], # for the rest of configure. SOURCE_DATE_EPOCH="$SOURCE_DATE" if test "x$IS_GNU_DATE" = xyes; then - SOURCE_DATE_ISO_8601=`$DATE --utc --date="@$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null` + SOURCE_DATE_ISO_8601_FIXED=`$DATE --utc --date="@$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null` else - SOURCE_DATE_ISO_8601=`$DATE -u -j -f "%s" "$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null` + SOURCE_DATE_ISO_8601_FIXED=`$DATE -u -j -f "%s" "$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null` fi fi AC_SUBST(SOURCE_DATE) AC_SUBST(ISO_8601_FORMAT_STRING) - AC_SUBST(SOURCE_DATE_ISO_8601) + AC_SUBST(SOURCE_DATE_ISO_8601_FIXED) ]) ################################################################################ diff --git a/make/autoconf/spec.gmk.template b/make/autoconf/spec.gmk.template index 0b336721d65..3258e87e2be 100644 --- a/make/autoconf/spec.gmk.template +++ b/make/autoconf/spec.gmk.template @@ -46,33 +46,15 @@ SPEC := @SPEC@ # Path to autoconf if overridden by the user, to be used by "make reconfigure" AUTOCONF := @AUTOCONF@ -# SPACE and COMMA are defined in MakeBase.gmk, but they are also used in -# some definitions here, and are needed if MakeBase.gmk is not included before -# this file. -X := -SPACE := $(X) $(X) -COMMA := , - # What make to use for main processing, after bootstrapping top-level Makefile. MAKE := @MAKE@ -# Make sure all shell commands are executed with a proper locale -export LC_ALL := @LOCALE_USED@ - -# Make sure we override any local CLASSPATH variable -export CLASSPATH := @CLASSPATH@ - -# The default make arguments -MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \ - MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" $(MAKE_LOG_VARS) - OUTPUT_SYNC_SUPPORTED := @OUTPUT_SYNC_SUPPORTED@ OUTPUT_SYNC := @OUTPUT_SYNC@ # Override the shell with bash BASH := @BASH@ BASH_ARGS := @BASH_ARGS@ -SHELL := $(BASH) $(BASH_ARGS) # The "human readable" name of this configuration CONF_NAME := @CONF_NAME@ @@ -121,9 +103,33 @@ OPENJDK_BUILD_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@ OPENJDK_BUILD_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@ OPENJDK_BUILD_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@ +OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@ +OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@ OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@ -OPENJDK_BUILD_OS_INCLUDE_SUBDIR := @OPENJDK_TARGET_OS_INCLUDE_SUBDIR@ +OPENJDK_BUILD_OS_INCLUDE_SUBDIR := @OPENJDK_BUILD_OS_INCLUDE_SUBDIR@ + +HOTSPOT_BUILD_OS := @HOTSPOT_BUILD_OS@ +HOTSPOT_BUILD_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@ +HOTSPOT_BUILD_CPU := @HOTSPOT_BUILD_CPU@ +HOTSPOT_BUILD_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@ +HOTSPOT_BUILD_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@ +HOTSPOT_BUILD_LIBC := @HOTSPOT_BUILD_LIBC@ + +OPENJDK_BUILD_CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@ +OPENJDK_BUILD_CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@ +OPENJDK_BUILD_LDFLAGS_JDKLIB := @OPENJDK_BUILD_LDFLAGS_JDKLIB@ +OPENJDK_BUILD_CFLAGS_JDKEXE := @OPENJDK_BUILD_CFLAGS_JDKEXE@ +OPENJDK_BUILD_CXXFLAGS_JDKEXE := @OPENJDK_BUILD_CXXFLAGS_JDKEXE@ +OPENJDK_BUILD_LDFLAGS_JDKEXE := @OPENJDK_BUILD_LDFLAGS_JDKEXE@ + +OPENJDK_BUILD_JVM_CFLAGS := @OPENJDK_BUILD_JVM_CFLAGS@ +OPENJDK_BUILD_JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@ +OPENJDK_BUILD_JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@ +OPENJDK_BUILD_JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@ + +OPENJDK_BUILD_FDLIBM_CFLAGS := @OPENJDK_BUILD_FDLIBM_CFLAGS@ +BUILD_CC_DISABLE_WARNING_PREFIX := @BUILD_CC_DISABLE_WARNING_PREFIX@ # Target platform value in ModuleTarget class file attribute. OPENJDK_MODULE_TARGET_PLATFORM := @OPENJDK_MODULE_TARGET_PLATFORM@ @@ -135,12 +141,7 @@ RELEASE_FILE_LIBC := @RELEASE_FILE_LIBC@ SOURCE_DATE := @SOURCE_DATE@ ISO_8601_FORMAT_STRING := @ISO_8601_FORMAT_STRING@ - -ifneq ($(SOURCE_DATE), updated) - # For "updated" source date value, these are set in InitSupport.gmk - export SOURCE_DATE_EPOCH := $(SOURCE_DATE) - SOURCE_DATE_ISO_8601 := @SOURCE_DATE_ISO_8601@ -endif +SOURCE_DATE_ISO_8601_FIXED := @SOURCE_DATE_ISO_8601_FIXED@ LIBM := @LIBM@ LIBDL := @LIBDL@ @@ -149,23 +150,9 @@ LIBPTHREAD := @LIBPTHREAD@ WINENV_ROOT := @WINENV_ROOT@ WINENV_PREFIX := @WINENV_PREFIX@ -ifneq ($(findstring windows.wsl, @OPENJDK_BUILD_OS_ENV@), ) - # Tell WSL to convert PATH between linux and windows - export WSLENV := PATH/l -else ifeq (@OPENJDK_BUILD_OS_ENV@, windows.msys2) - # Prohibit msys2 from attempting any path wrangling - export MSYS2_ARG_CONV_EXCL := "*" -endif - # Save the original path before replacing it with the Visual Studio tools ORIGINAL_PATH := @ORIGINAL_PATH@ -ifeq (@TOOLCHAIN_TYPE@, microsoft) - # The Visual Studio toolchain needs the PATH to be adjusted to include - # Visual Studio tools. - export PATH := @TOOLCHAIN_PATH@:$(PATH) -endif - SYSROOT_CFLAGS := @SYSROOT_CFLAGS@ SYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@ @@ -230,8 +217,6 @@ VERSION_NUMBER_FOUR_POSITIONS := @VERSION_NUMBER_FOUR_POSITIONS@ VERSION_STRING := @VERSION_STRING@ # The short version string, without trailing zeroes and just PRE, if present. VERSION_SHORT := @VERSION_SHORT@ -# The Java specification version. It usually equals the feature version number. -VERSION_SPECIFICATION := @VERSION_FEATURE@ # A GA version is defined by the PRE string being empty. Rather than testing for # that, this variable defines it with true/false. VERSION_IS_GA := @VERSION_IS_GA@ @@ -251,57 +236,6 @@ VERSION_DOCS_API_SINCE := @VERSION_DOCS_API_SINCE@ JDK_SOURCE_TARGET_VERSION := @JDK_SOURCE_TARGET_VERSION@ -# Convenience CFLAGS settings for passing version information into native programs. -VERSION_CFLAGS = \ - -DVERSION_FEATURE=$(VERSION_FEATURE) \ - -DVERSION_INTERIM=$(VERSION_INTERIM) \ - -DVERSION_UPDATE=$(VERSION_UPDATE) \ - -DVERSION_PATCH=$(VERSION_PATCH) \ - -DVERSION_EXTRA1=$(VERSION_EXTRA1) \ - -DVERSION_EXTRA2=$(VERSION_EXTRA2) \ - -DVERSION_EXTRA3=$(VERSION_EXTRA3) \ - -DVERSION_PRE='"$(VERSION_PRE)"' \ - -DVERSION_BUILD=$(VERSION_BUILD) \ - -DVERSION_OPT='"$(VERSION_OPT)"' \ - -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \ - -DVERSION_STRING='"$(VERSION_STRING)"' \ - -DVERSION_SHORT='"$(VERSION_SHORT)"' \ - -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \ - -DVERSION_DATE='"$(VERSION_DATE)"' \ - -DVENDOR_VERSION_STRING='"$(VENDOR_VERSION_STRING)"' \ - -DVERSION_CLASSFILE_MAJOR=$(VERSION_CLASSFILE_MAJOR) \ - -DVERSION_CLASSFILE_MINOR=$(VERSION_CLASSFILE_MINOR) \ - # - -ifneq ($(COMPANY_NAME), ) - # COMPANY_NAME is set to "N/A" in make/conf/branding.conf by default, - # but can be customized with the '--with-vendor-name' configure option. - # Only export "VENDOR" to the build if COMPANY_NAME contains a real value. - # Otherwise the default value for VENDOR, which is used to set the "java.vendor" - # and "java.vm.vendor" properties is hard-coded into the source code (i.e. in - # VersionProps.java.template in the jdk for "java.vendor" and - # vm_version.cpp in the VM for "java.vm.vendor") - ifneq ($(COMPANY_NAME), N/A) - VERSION_CFLAGS += -DVENDOR='"$(COMPANY_NAME)"' - endif -endif - -# Only export VENDOR_URL, VENDOR_URL_BUG and VENDOR_VM_URL_BUG to the build if -# they are not empty. Otherwise, default values which are defined in the sources -# will be used. -ifneq ($(VENDOR_URL), ) - VERSION_CFLAGS += -DVENDOR_URL='"$(VENDOR_URL)"' -endif -ifneq ($(VENDOR_URL_BUG), ) - VERSION_CFLAGS += -DVENDOR_URL_BUG='"$(VENDOR_URL_BUG)"' -endif -ifneq ($(VENDOR_URL_VM_BUG), ) - VERSION_CFLAGS += -DVENDOR_URL_VM_BUG='"$(VENDOR_URL_VM_BUG)"' -endif - -# Different naming strings generated from the above information. -RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX) - # How to compile the code: release, fastdebug or slowdebug DEBUG_LEVEL := @DEBUG_LEVEL@ HOTSPOT_DEBUG_LEVEL := @HOTSPOT_DEBUG_LEVEL@ @@ -343,22 +277,8 @@ ENABLE_FULL_DOCS := @ENABLE_FULL_DOCS@ # You can run $(JDK_OUTPUTDIR)/bin/java OUTPUTDIR := @OUTPUTDIR@ -# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images -SUPPORT_OUTPUTDIR = $(OUTPUTDIR)/support -BUILDTOOLS_OUTPUTDIR = $(OUTPUTDIR)/buildtools -HOTSPOT_OUTPUTDIR = $(OUTPUTDIR)/hotspot -JDK_OUTPUTDIR = $(OUTPUTDIR)/jdk -IMAGES_OUTPUTDIR = $(OUTPUTDIR)/images -BUNDLES_OUTPUTDIR = $(OUTPUTDIR)/bundles -TESTMAKE_OUTPUTDIR = $(OUTPUTDIR)/test-make -MAKESUPPORT_OUTPUTDIR = $(OUTPUTDIR)/make-support - -JAVA_TMP_DIR = $(SUPPORT_OUTPUTDIR)/javatmp - -# This does not get overridden in a bootcycle build CONFIGURESUPPORT_OUTPUTDIR := @CONFIGURESUPPORT_OUTPUTDIR@ -BUILDJDK_OUTPUTDIR = $(OUTPUTDIR)/buildjdk BUILD_FAILURE_HANDLER := @BUILD_FAILURE_HANDLER@ @@ -388,21 +308,6 @@ BOOT_JDK := @BOOT_JDK@ EXTERNAL_BUILDJDK_PATH := @EXTERNAL_BUILDJDK_PATH@ -ifneq ($(EXTERNAL_BUILDJDK_PATH), ) - EXTERNAL_BUILDJDK := true - CREATE_BUILDJDK := false - BUILD_JDK := $(EXTERNAL_BUILDJDK_PATH) -else - EXTERNAL_BUILDJDK := false - ifeq ($(COMPILE_TYPE), cross) - CREATE_BUILDJDK := true - BUILD_JDK := $(BUILDJDK_OUTPUTDIR)/jdk - else - CREATE_BUILDJDK := false - BUILD_JDK := $(JDK_OUTPUTDIR) - endif -endif - # Whether the boot jdk jar supports --date=TIMESTAMP BOOT_JDK_JAR_SUPPORTS_DATE := @BOOT_JDK_JAR_SUPPORTS_DATE@ @@ -413,13 +318,10 @@ OLDEST_BOOT_JDK_VERSION := @OLDEST_BOOT_JDK_VERSION@ NUM_CORES := @NUM_CORES@ MEMORY_SIZE := @MEMORY_SIZE@ ENABLE_JAVAC_SERVER := @ENABLE_JAVAC_SERVER@ -# Store javac server synchronization files here, and -# the javac server log files. -JAVAC_SERVER_DIR = $(MAKESUPPORT_OUTPUTDIR)/javacservers # Number of parallel jobs to use for compilation -JOBS ?= @JOBS@ -TEST_JOBS ?= @TEST_JOBS@ +CONF_JOBS := @CONF_JOBS@ +CONF_TEST_JOBS := @CONF_TEST_JOBS@ # Default make target DEFAULT_MAKE_TARGET := @DEFAULT_MAKE_TARGET@ @@ -537,7 +439,7 @@ ADLC_LANGSTD_CXXFLAGS := @ADLC_LANGSTD_CXXFLAGS@ ADLC_LDFLAGS := @ADLC_LDFLAGS@ # Tools that potentially need to be cross compilation aware. -CC := @CCACHE@ @ICECC@ @CC@ +CC := @CC@ # CFLAGS used to compile the jdk native libraries (C-code) CFLAGS_JDKLIB := @CFLAGS_JDKLIB@ @@ -563,7 +465,7 @@ EXTRA_CXXFLAGS := @EXTRA_CXXFLAGS@ EXTRA_LDFLAGS := @EXTRA_LDFLAGS@ EXTRA_ASFLAGS := @EXTRA_ASFLAGS@ -CXX := @CCACHE@ @ICECC@ @CXX@ +CXX := @CXX@ CPP := @CPP@ @@ -594,8 +496,8 @@ LIBCXX := @LIBCXX@ # BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the # build platform. -BUILD_CC := @BUILD_ICECC@ @BUILD_CC@ -BUILD_CXX := @BUILD_ICECC@ @BUILD_CXX@ +BUILD_CC := @BUILD_CC@ +BUILD_CXX := @BUILD_CXX@ BUILD_LD := @BUILD_LD@ BUILD_LDCXX := @BUILD_LDCXX@ BUILD_AS := @BUILD_AS@ @@ -646,77 +548,24 @@ OBJ_SUFFIX := @OBJ_SUFFIX@ STRIPFLAGS := @STRIPFLAGS@ -JAVA_FLAGS_TMPDIR := -Djava.io.tmpdir=$(JAVA_TMP_DIR) -JAVA_FLAGS := @JAVA_FLAGS@ $(JAVA_FLAGS_TMPDIR) +JAVA_FLAGS := @JAVA_FLAGS@ JAVA_FLAGS_BIG := @JAVA_FLAGS_BIG@ JAVA_FLAGS_SMALL := @JAVA_FLAGS_SMALL@ BUILD_JAVA_FLAGS_SMALL := @BUILD_JAVA_FLAGS_SMALL@ JAVA_TOOL_FLAGS_SMALL := @JAVA_TOOL_FLAGS_SMALL@ -# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk -# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD -# versions of the variables directly. -JAVA_CMD := @JAVA@ -JAVAC_CMD := @JAVAC@ -JAVADOC_CMD := @JAVADOC@ -JAR_CMD := @JAR@ -JLINK_CMD := @FIXPATH@ $(BUILD_JDK)/bin/jlink -JMOD_CMD := @FIXPATH@ $(BUILD_JDK)/bin/jmod -# These variables are meant to be used. They are defined with = instead of := to make -# it possible to override only the *_CMD variables. -JAVA = $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) -JAVA_SMALL = $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS) -JAVAC = $(JAVAC_CMD) -JAVADOC = $(JAVADOC_CMD) -JAR = $(JAR_CMD) -JLINK = $(JLINK_CMD) -JMOD = $(JMOD_CMD) +# Do not use the *_CMD versions of the variables directly. +JAVA_CMD := @JAVA_CMD@ +JAVAC_CMD := @JAVAC_CMD@ +JAVADOC_CMD := @JAVADOC_CMD@ +JAR_CMD := @JAR_CMD@ JTREG_JDK := @JTREG_JDK@ -JTREG_JAVA = @FIXPATH@ $(JTREG_JDK)/bin/java $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) -BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@ -BUILD_JAVA = @FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS) -BUILD_JAVA_SMALL = @FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS_SMALL) -BUILD_JAVAC = @FIXPATH@ $(BUILD_JDK)/bin/javac -BUILD_JAR = @FIXPATH@ $(BUILD_JDK)/bin/jar +BOOTCYCLE_JVM_ARGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@ DOCS_REFERENCE_JAVADOC := @DOCS_REFERENCE_JAVADOC@ -# A file containing a way to uniquely identify the source code revision that -# the build was created from -SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker - -# Interim langtools modules and arguments -INTERIM_LANGTOOLS_BASE_MODULES := java.compiler jdk.compiler jdk.internal.md jdk.javadoc -INTERIM_LANGTOOLS_MODULES := $(addsuffix .interim, $(INTERIM_LANGTOOLS_BASE_MODULES)) -INTERIM_LANGTOOLS_ADD_EXPORTS := \ - --add-exports java.base/sun.reflect.annotation=jdk.compiler.interim \ - --add-exports java.base/jdk.internal.jmod=jdk.compiler.interim \ - --add-exports java.base/jdk.internal.misc=jdk.compiler.interim \ - --add-exports java.base/sun.invoke.util=jdk.compiler.interim \ - --add-exports java.base/jdk.internal.javac=java.compiler.interim \ - --add-exports java.base/jdk.internal.javac=jdk.compiler.interim \ - --add-exports jdk.internal.opt/jdk.internal.opt=jdk.compiler.interim \ - --add-exports jdk.internal.opt/jdk.internal.opt=jdk.javadoc.interim \ - # -INTERIM_LANGTOOLS_MODULES_COMMA := $(strip $(subst $(SPACE),$(COMMA),$(strip \ - $(INTERIM_LANGTOOLS_MODULES)))) -INTERIM_LANGTOOLS_ARGS := \ - --limit-modules java.base,jdk.zipfs,$(INTERIM_LANGTOOLS_MODULES_COMMA) \ - --add-modules $(INTERIM_LANGTOOLS_MODULES_COMMA) \ - --module-path $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules \ - --patch-module java.base=$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.base.interim \ - $(INTERIM_LANGTOOLS_ADD_EXPORTS) \ - # -JAVAC_MAIN_CLASS := -m jdk.compiler.interim/com.sun.tools.javac.Main -JAVADOC_MAIN_CLASS := -m jdk.javadoc.interim/jdk.javadoc.internal.tool.Main - -# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ... -# Use = assignment to be able to override in bootcycle-spec.gmk -NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) $(JAVAC_MAIN_CLASS) -NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) $(JAVADOC_MAIN_CLASS) - JMOD_COMPRESS := @JMOD_COMPRESS@ JLINK_KEEP_PACKAGED_MODULES := @JLINK_KEEP_PACKAGED_MODULES@ JLINK_PRODUCE_LINKABLE_RUNTIME := @JLINK_PRODUCE_LINKABLE_RUNTIME@ @@ -729,8 +578,6 @@ AWK := @AWK@ BASENAME := @BASENAME@ CAT := @CAT@ CCACHE := @CCACHE@ -# CD is going away, but remains to cater for legacy makefiles. -CD := cd CHMOD := @CHMOD@ CMAKE := @CMAKE@ CODESIGN := @CODESIGN@ @@ -781,7 +628,6 @@ MT := @MT@ RC := @RC@ DUMPBIN := @DUMPBIN@ PATHTOOL := @PATHTOOL@ -WSLPATH := @WSLPATH@ LDD := @LDD@ OTOOL := @OTOOL@ READELF := @READELF@ @@ -846,110 +692,11 @@ OS_VERSION_MICRO := @OS_VERSION_MICRO@ # Arm SVE SVE_CFLAGS := @SVE_CFLAGS@ -# Images directory definitions -JDK_IMAGE_SUBDIR := jdk -JRE_IMAGE_SUBDIR := jre -JCOV_IMAGE_SUBDIR := jdk-jcov -STATIC_JDK_IMAGE_SUBDIR := static-jdk - -# Colon left out to be able to override output dir for bootcycle-images -JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR) -JRE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR) -STATIC_JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(STATIC_JDK_IMAGE_SUBDIR) -JCOV_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JCOV_IMAGE_SUBDIR) - -# Test image, as above -TEST_IMAGE_SUBDIR := test -TEST_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR) - -# Symbols image -SYMBOLS_IMAGE_SUBDIR := symbols -SYMBOLS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR) - -# Interim image -INTERIM_JMODS_DIR := $(SUPPORT_OUTPUTDIR)/interim-jmods -INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image - -# Docs image -DOCS_JDK_IMAGE_SUBDIR := docs -DOCS_JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JDK_IMAGE_SUBDIR) -DOCS_JAVASE_IMAGE_SUBDIR := docs-javase -DOCS_JAVASE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JAVASE_IMAGE_SUBDIR) -DOCS_REFERENCE_IMAGE_SUBDIR := docs-reference -DOCS_REFERENCE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_REFERENCE_IMAGE_SUBDIR) -# Output docs directly into image -DOCS_OUTPUTDIR := $(DOCS_JDK_IMAGE_DIR) - -# Static libs image -STATIC_LIBS_IMAGE_SUBDIR := static-libs -STATIC_LIBS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(STATIC_LIBS_IMAGE_SUBDIR) - -# Graal static libs image -STATIC_LIBS_GRAAL_IMAGE_SUBDIR := static-libs-graal -STATIC_LIBS_GRAAL_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(STATIC_LIBS_GRAAL_IMAGE_SUBDIR) - -# Graal builder image -GRAAL_BUILDER_IMAGE_SUBDIR := graal-builder-jdk -GRAAL_BUILDER_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(GRAAL_BUILDER_IMAGE_SUBDIR) - -# Macosx bundles directory definitions -JDK_MACOSX_BUNDLE_SUBDIR := jdk-bundle -JRE_MACOSX_BUNDLE_SUBDIR := jre-bundle -JDK_MACOSX_BUNDLE_SUBDIR_SIGNED := jdk-bundle-signed -JRE_MACOSX_BUNDLE_SUBDIR_SIGNED := jre-bundle-signed -JDK_MACOSX_BUNDLE_DIR = $(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR) -JRE_MACOSX_BUNDLE_DIR = $(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR) -JDK_MACOSX_BUNDLE_DIR_SIGNED = $(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR_SIGNED) -JRE_MACOSX_BUNDLE_DIR_SIGNED = $(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR_SIGNED) -JDK_MACOSX_BUNDLE_TOP_SUBDIR = jdk-$(VERSION_NUMBER).jdk -JRE_MACOSX_BUNDLE_TOP_SUBDIR = jre-$(VERSION_NUMBER).jre -JDK_MACOSX_CONTENTS_SUBDIR = $(JDK_MACOSX_BUNDLE_TOP_SUBDIR)/Contents -JRE_MACOSX_CONTENTS_SUBDIR = $(JRE_MACOSX_BUNDLE_TOP_SUBDIR)/Contents -JDK_MACOSX_CONTENTS_DIR = $(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR) -JRE_MACOSX_CONTENTS_DIR = $(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR) -JDK_MACOSX_BUNDLE_TOP_DIR = $(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_BUNDLE_TOP_SUBDIR) -JRE_MACOSX_BUNDLE_TOP_DIR = $(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_BUNDLE_TOP_SUBDIR) - -# Bundle names -ifneq ($(VERSION_BUILD), ) - BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM) -else - BASE_NAME := $(VERSION_SHORT)_$(OPENJDK_TARGET_BUNDLE_PLATFORM) -endif - -ifeq ($(DEBUG_LEVEL), fastdebug) - DEBUG_PART := -debug -else ifneq ($(DEBUG_LEVEL), release) - DEBUG_PART := -$(DEBUG_LEVEL) -endif -ifeq ($(OPENJDK_TARGET_OS), windows) - JDK_BUNDLE_EXTENSION := zip -else - JDK_BUNDLE_EXTENSION := tar.gz -endif -JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) -JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) -JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz -TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz -TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz -DOCS_JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz -DOCS_JAVASE_BUNDLE_NAME := javase-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz -DOCS_REFERENCE_BUNDLE_NAME := jdk-reference-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz -STATIC_LIBS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs$(DEBUG_PART).tar.gz -STATIC_LIBS_GRAAL_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs-graal$(DEBUG_PART).tar.gz -STATIC_JDK_BUNDLE_NAME := static-jdk-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) -JCOV_BUNDLE_NAME := jdk-jcov-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) - -JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME) -JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME) -JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME) -TEST_DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_DEMOS_BUNDLE_NAME) -TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME) -DOCS_JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JDK_BUNDLE_NAME) -DOCS_JAVASE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JAVASE_BUNDLE_NAME) -DOCS_REFERENCE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_REFERENCE_BUNDLE_NAME) -STATIC_JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(STATIC_JDK_BUNDLE_NAME) -JCOV_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JCOV_BUNDLE_NAME) +BUILD_ICECC := @BUILD_ICECC@ +ICECC := @ICECC@ +TOOLCHAIN_PATH := @TOOLCHAIN_PATH@ +LOCALE_USED := @LOCALE_USED@ +CLASSPATH := @CLASSPATH@ # This macro is called to allow inclusion of closed source counterparts. # Unless overridden in closed sources, it expands to nothing. @@ -960,4 +707,4 @@ define IncludeCustomExtension endef # Include the custom-spec.gmk file if it exists --include $(dir @SPEC@)/custom-spec.gmk +-include $(dir $(SPEC))/custom-spec.gmk diff --git a/make/common/CommonVars.gmk b/make/common/CommonVars.gmk new file mode 100644 index 00000000000..1ee6cc27481 --- /dev/null +++ b/make/common/CommonVars.gmk @@ -0,0 +1,442 @@ +# +# 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) + +################################################################################ +# CommonVars include common variables and definitions used in multiple +# makefiles. +################################################################################ + +# Make sure all shell commands are executed with a proper locale +export LC_ALL := $(LOCALE_USED) + +# Make sure we override any local CLASSPATH variable +export CLASSPATH := $(CLASSPATH) + +# The default make arguments +MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \ + MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" $(MAKE_LOG_VARS) + +SHELL := $(BASH) $(BASH_ARGS) + +ifneq ($(SOURCE_DATE), updated) + # For "updated" source date value, these are set in InitSupport.gmk + export SOURCE_DATE_EPOCH := $(SOURCE_DATE) + SOURCE_DATE_ISO_8601 := $(SOURCE_DATE_ISO_8601_FIXED) +endif + +ifneq ($(findstring windows.wsl, $(OPENJDK_BUILD_OS_ENV)), ) + # Tell WSL to convert PATH between linux and windows + export WSLENV := PATH/l +else ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys2) + # Prohibit msys2 from attempting any path wrangling + export MSYS2_ARG_CONV_EXCL := "*" +endif + +ifeq ($(TOOLCHAIN_TYPE), microsoft) + # The Visual Studio toolchain needs the PATH to be adjusted to include + # Visual Studio tools. + export PATH := $(TOOLCHAIN_PATH):$(PATH) +endif + +# The Java specification version. It usually equals the feature version number. +VERSION_SPECIFICATION := $(VERSION_FEATURE) + +# Convenience CFLAGS settings for passing version information into native programs. +VERSION_CFLAGS = \ + -DVERSION_FEATURE=$(VERSION_FEATURE) \ + -DVERSION_INTERIM=$(VERSION_INTERIM) \ + -DVERSION_UPDATE=$(VERSION_UPDATE) \ + -DVERSION_PATCH=$(VERSION_PATCH) \ + -DVERSION_EXTRA1=$(VERSION_EXTRA1) \ + -DVERSION_EXTRA2=$(VERSION_EXTRA2) \ + -DVERSION_EXTRA3=$(VERSION_EXTRA3) \ + -DVERSION_PRE='"$(VERSION_PRE)"' \ + -DVERSION_BUILD=$(VERSION_BUILD) \ + -DVERSION_OPT='"$(VERSION_OPT)"' \ + -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \ + -DVERSION_STRING='"$(VERSION_STRING)"' \ + -DVERSION_SHORT='"$(VERSION_SHORT)"' \ + -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \ + -DVERSION_DATE='"$(VERSION_DATE)"' \ + -DVENDOR_VERSION_STRING='"$(VENDOR_VERSION_STRING)"' \ + -DVERSION_CLASSFILE_MAJOR=$(VERSION_CLASSFILE_MAJOR) \ + -DVERSION_CLASSFILE_MINOR=$(VERSION_CLASSFILE_MINOR) \ + # + +ifneq ($(COMPANY_NAME), ) + # COMPANY_NAME is set to "N/A" in make/conf/branding.conf by default, + # but can be customized with the '--with-vendor-name' configure option. + # Only export "VENDOR" to the build if COMPANY_NAME contains a real value. + # Otherwise the default value for VENDOR, which is used to set the "java.vendor" + # and "java.vm.vendor" properties is hard-coded into the source code (i.e. in + # VersionProps.java.template in the jdk for "java.vendor" and + # vm_version.cpp in the VM for "java.vm.vendor") + ifneq ($(COMPANY_NAME), N/A) + VERSION_CFLAGS += -DVENDOR='"$(COMPANY_NAME)"' + endif +endif + +# Only export VENDOR_URL, VENDOR_URL_BUG and VENDOR_VM_URL_BUG to the build if +# they are not empty. Otherwise, default values which are defined in the sources +# will be used. +ifneq ($(VENDOR_URL), ) + VERSION_CFLAGS += -DVENDOR_URL='"$(VENDOR_URL)"' +endif +ifneq ($(VENDOR_URL_BUG), ) + VERSION_CFLAGS += -DVENDOR_URL_BUG='"$(VENDOR_URL_BUG)"' +endif +ifneq ($(VENDOR_URL_VM_BUG), ) + VERSION_CFLAGS += -DVENDOR_URL_VM_BUG='"$(VENDOR_URL_VM_BUG)"' +endif + +# Different naming strings generated from the above information. +RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX) + +# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images +SUPPORT_OUTPUTDIR = $(OUTPUTDIR)/support +BUILDTOOLS_OUTPUTDIR = $(OUTPUTDIR)/buildtools + +HOTSPOT_OUTPUTDIR = $(OUTPUTDIR)/hotspot +JDK_OUTPUTDIR = $(OUTPUTDIR)/jdk +IMAGES_OUTPUTDIR = $(OUTPUTDIR)/images +BUNDLES_OUTPUTDIR = $(OUTPUTDIR)/bundles +TESTMAKE_OUTPUTDIR = $(OUTPUTDIR)/test-make +MAKESUPPORT_OUTPUTDIR = $(OUTPUTDIR)/make-support + +JAVA_TMP_DIR = $(SUPPORT_OUTPUTDIR)/javatmp + +BUILDJDK_OUTPUTDIR = $(OUTPUTDIR)/buildjdk + +ifneq ($(EXTERNAL_BUILDJDK_PATH), ) + EXTERNAL_BUILDJDK := true + CREATE_BUILDJDK := false + BUILD_JDK := $(EXTERNAL_BUILDJDK_PATH) +else + EXTERNAL_BUILDJDK := false + ifeq ($(COMPILE_TYPE), cross) + CREATE_BUILDJDK := true + BUILD_JDK := $(BUILDJDK_OUTPUTDIR)/jdk + else + CREATE_BUILDJDK := false + BUILD_JDK := $(JDK_OUTPUTDIR) + endif +endif + +# Store javac server synchronization files here, and +# the javac server log files. +JAVAC_SERVER_DIR = $(MAKESUPPORT_OUTPUTDIR)/javacservers + +# Number of parallel jobs to use for compilation +JOBS ?= $(CONF_JOBS) +TEST_JOBS ?= $(CONF_TEST_JOBS) + +# Tools that potentially need to be cross compilation aware. +CC := $(CCACHE) $(ICECC) $(CC) + +CXX := $(CCACHE) $(ICECC) $(CXX) + +# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the +# build platform. +BUILD_CC := $(BUILD_ICECC) $(BUILD_CC) +BUILD_CXX := $(BUILD_ICECC) $(BUILD_CXX) + +JAVA_FLAGS_TMPDIR := -Djava.io.tmpdir=$(JAVA_TMP_DIR) +JAVA_FLAGS := $(JAVA_FLAGS) $(JAVA_FLAGS_TMPDIR) + +JLINK_CMD := $(FIXPATH) $(BUILD_JDK)/bin/jlink +JMOD_CMD := $(FIXPATH) $(BUILD_JDK)/bin/jmod + +# These variables are meant to be used. They are defined with = instead of := to make +# it possible to override only the *_CMD variables. +JAVA = $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) +JAVA_SMALL = $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS) +JAVAC = $(JAVAC_CMD) +JAVADOC = $(JAVADOC_CMD) +JAR = $(JAR_CMD) +JLINK = $(JLINK_CMD) +JMOD = $(JMOD_CMD) + +JTREG_JAVA = $(FIXPATH) $(JTREG_JDK)/bin/java $(JAVA_FLAGS_BIG) $(JAVA_FLAGS) + +BUILD_JAVA_FLAGS := $(BOOTCYCLE_JVM_ARGS_BIG) +BUILD_JAVA = $(FIXPATH) $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS) +BUILD_JAVA_SMALL = $(FIXPATH) $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS_SMALL) +BUILD_JAVAC = $(FIXPATH) $(BUILD_JDK)/bin/javac +BUILD_JAR = $(FIXPATH) $(BUILD_JDK)/bin/jar + +# A file containing a way to uniquely identify the source code revision that +# the build was created from +SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker + +# Interim langtools modules and arguments +INTERIM_LANGTOOLS_BASE_MODULES := java.compiler jdk.compiler jdk.internal.md jdk.javadoc +INTERIM_LANGTOOLS_MODULES := $(addsuffix .interim, $(INTERIM_LANGTOOLS_BASE_MODULES)) +INTERIM_LANGTOOLS_ADD_EXPORTS := \ + --add-exports java.base/sun.reflect.annotation=jdk.compiler.interim \ + --add-exports java.base/jdk.internal.jmod=jdk.compiler.interim \ + --add-exports java.base/jdk.internal.misc=jdk.compiler.interim \ + --add-exports java.base/sun.invoke.util=jdk.compiler.interim \ + --add-exports java.base/jdk.internal.javac=java.compiler.interim \ + --add-exports java.base/jdk.internal.javac=jdk.compiler.interim \ + --add-exports jdk.internal.opt/jdk.internal.opt=jdk.compiler.interim \ + --add-exports jdk.internal.opt/jdk.internal.opt=jdk.javadoc.interim \ + # +INTERIM_LANGTOOLS_MODULES_COMMA := $(strip $(subst $(SPACE),$(COMMA),$(strip \ + $(INTERIM_LANGTOOLS_MODULES)))) +INTERIM_LANGTOOLS_ARGS := \ + --limit-modules java.base,jdk.zipfs,$(INTERIM_LANGTOOLS_MODULES_COMMA) \ + --add-modules $(INTERIM_LANGTOOLS_MODULES_COMMA) \ + --module-path $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules \ + --patch-module java.base=$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.base.interim \ + $(INTERIM_LANGTOOLS_ADD_EXPORTS) \ + # + +JAVADOC_MAIN_CLASS := -m jdk.javadoc.interim/jdk.javadoc.internal.tool.Main +# Use = assignment to pick up overridden INTERIM_LANGTOOLS_ARGS in bootcycle builds +NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) $(JAVADOC_MAIN_CLASS) + +# CD is going away, but remains to cater for legacy makefiles. +CD := cd + +# Images directory definitions +JDK_IMAGE_SUBDIR := jdk +JRE_IMAGE_SUBDIR := jre +JCOV_IMAGE_SUBDIR := jdk-jcov +STATIC_JDK_IMAGE_SUBDIR := static-jdk + +# Colon left out to be able to override output dir for bootcycle-images +ifeq ($(JDK_IMAGE_DIR), ) + JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR) +endif +JRE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR) +STATIC_JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(STATIC_JDK_IMAGE_SUBDIR) +ifeq ($(JCOV_IMAGE_DIR), ) + JCOV_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(JCOV_IMAGE_SUBDIR) +endif +# Test image, as above +TEST_IMAGE_SUBDIR := test +ifeq ($(TEST_IMAGE_DIR), ) + TEST_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR) +endif + +# Symbols image +SYMBOLS_IMAGE_SUBDIR := symbols +ifeq ($(SYMBOLS_IMAGE_DIR), ) + SYMBOLS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR) +endif + +# Interim image +INTERIM_JMODS_DIR := $(SUPPORT_OUTPUTDIR)/interim-jmods +INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image + +# Docs image +DOCS_JDK_IMAGE_SUBDIR := docs +DOCS_JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JDK_IMAGE_SUBDIR) +DOCS_JAVASE_IMAGE_SUBDIR := docs-javase +DOCS_JAVASE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JAVASE_IMAGE_SUBDIR) +DOCS_REFERENCE_IMAGE_SUBDIR := docs-reference +DOCS_REFERENCE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_REFERENCE_IMAGE_SUBDIR) +# Output docs directly into image +DOCS_OUTPUTDIR := $(DOCS_JDK_IMAGE_DIR) + +# Static libs image +STATIC_LIBS_IMAGE_SUBDIR := static-libs +STATIC_LIBS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(STATIC_LIBS_IMAGE_SUBDIR) + +# Graal static libs image +STATIC_LIBS_GRAAL_IMAGE_SUBDIR := static-libs-graal +STATIC_LIBS_GRAAL_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(STATIC_LIBS_GRAAL_IMAGE_SUBDIR) + +# Graal builder image +GRAAL_BUILDER_IMAGE_SUBDIR := graal-builder-jdk +GRAAL_BUILDER_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(GRAAL_BUILDER_IMAGE_SUBDIR) + +# Macosx bundles directory definitions +JDK_MACOSX_BUNDLE_SUBDIR := jdk-bundle +JRE_MACOSX_BUNDLE_SUBDIR := jre-bundle +JDK_MACOSX_BUNDLE_SUBDIR_SIGNED := jdk-bundle-signed +JRE_MACOSX_BUNDLE_SUBDIR_SIGNED := jre-bundle-signed +JDK_MACOSX_BUNDLE_DIR = $(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR) +JRE_MACOSX_BUNDLE_DIR = $(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR) +JDK_MACOSX_BUNDLE_DIR_SIGNED = $(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR_SIGNED) +JRE_MACOSX_BUNDLE_DIR_SIGNED = $(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR_SIGNED) +JDK_MACOSX_BUNDLE_TOP_SUBDIR = jdk-$(VERSION_NUMBER).jdk +JRE_MACOSX_BUNDLE_TOP_SUBDIR = jre-$(VERSION_NUMBER).jre +JDK_MACOSX_CONTENTS_SUBDIR = $(JDK_MACOSX_BUNDLE_TOP_SUBDIR)/Contents +JRE_MACOSX_CONTENTS_SUBDIR = $(JRE_MACOSX_BUNDLE_TOP_SUBDIR)/Contents +JDK_MACOSX_CONTENTS_DIR = $(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR) +JRE_MACOSX_CONTENTS_DIR = $(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR) +JDK_MACOSX_BUNDLE_TOP_DIR = $(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_BUNDLE_TOP_SUBDIR) +JRE_MACOSX_BUNDLE_TOP_DIR = $(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_BUNDLE_TOP_SUBDIR) + +# Bundle names +ifneq ($(VERSION_BUILD), ) + BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM) +else + BASE_NAME := $(VERSION_SHORT)_$(OPENJDK_TARGET_BUNDLE_PLATFORM) +endif + +ifeq ($(DEBUG_LEVEL), fastdebug) + DEBUG_PART := -debug +else ifneq ($(DEBUG_LEVEL), release) + DEBUG_PART := -$(DEBUG_LEVEL) +endif +ifeq ($(OPENJDK_TARGET_OS), windows) + JDK_BUNDLE_EXTENSION := zip +else + JDK_BUNDLE_EXTENSION := tar.gz +endif +JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) +JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) +JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz +TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz +TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz +DOCS_JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz +DOCS_JAVASE_BUNDLE_NAME := javase-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz +DOCS_REFERENCE_BUNDLE_NAME := jdk-reference-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz +STATIC_LIBS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs$(DEBUG_PART).tar.gz +STATIC_LIBS_GRAAL_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs-graal$(DEBUG_PART).tar.gz +STATIC_JDK_BUNDLE_NAME := static-jdk-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) +JCOV_BUNDLE_NAME := jdk-jcov-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION) + +JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME) +JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME) +JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME) +TEST_DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_DEMOS_BUNDLE_NAME) +TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME) +DOCS_JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JDK_BUNDLE_NAME) +DOCS_JAVASE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JAVASE_BUNDLE_NAME) +DOCS_REFERENCE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_REFERENCE_BUNDLE_NAME) +STATIC_JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(STATIC_JDK_BUNDLE_NAME) +JCOV_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JCOV_BUNDLE_NAME) + +ifeq ($(IS_BUILD_JDK_SPEC), true) + CC := $(BUILD_CC) + CXX := $(BUILD_CXX) + # Ideally this should be probed by configure but that is tricky to implement, + # and this should work in most cases. + CPP := $(BUILD_CC) -E + LD := $(BUILD_LD) + LDCXX := $(BUILD_LDCXX) + AS := $(BUILD_AS) + NM := $(BUILD_NM) + AR := $(BUILD_AR) + LIB := $(BUILD_LIB) + OBJCOPY := $(BUILD_OBJCOPY) + STRIP := $(BUILD_STRIP) + SYSROOT_CFLAGS := $(BUILD_SYSROOT_CFLAGS) + SYSROOT_LDFLAGS := $(BUILD_SYSROOT_LDFLAGS) + + # These directories should not be moved to BUILDJDK_OUTPUTDIR + HOTSPOT_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(HOTSPOT_OUTPUTDIR)) + BUILDTOOLS_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(BUILDTOOLS_OUTPUTDIR)) + SUPPORT_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(SUPPORT_OUTPUTDIR)) + JDK_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(JDK_OUTPUTDIR)) + IMAGES_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUTPUTDIR)) + + OPENJDK_TARGET_CPU := $(OPENJDK_BUILD_CPU) + OPENJDK_TARGET_CPU_ARCH := $(OPENJDK_BUILD_CPU_ARCH) + OPENJDK_TARGET_CPU_BITS := $(OPENJDK_BUILD_CPU_BITS) + OPENJDK_TARGET_CPU_ENDIAN := $(OPENJDK_BUILD_CPU_ENDIAN) + OPENJDK_TARGET_CPU_LEGACY := $(OPENJDK_BUILD_CPU_LEGACY) + OPENJDK_TARGET_LIBC := $(OPENJDK_BUILD_LIBC) + OPENJDK_TARGET_OS_INCLUDE_SUBDIR := $(OPENJDK_BUILD_OS_INCLUDE_SUBDIR) + + HOTSPOT_TARGET_OS := $(HOTSPOT_BUILD_OS) + HOTSPOT_TARGET_OS_TYPE := $(HOTSPOT_BUILD_OS_TYPE) + HOTSPOT_TARGET_CPU := $(HOTSPOT_BUILD_CPU) + HOTSPOT_TARGET_CPU_ARCH := $(HOTSPOT_BUILD_CPU_ARCH) + HOTSPOT_TARGET_CPU_DEFINE := $(HOTSPOT_BUILD_CPU_DEFINE) + HOTSPOT_TARGET_LIBC := $(HOTSPOT_BUILD_LIBC) + + CFLAGS_JDKLIB := $(OPENJDK_BUILD_CFLAGS_JDKLIB) + CXXFLAGS_JDKLIB := $(OPENJDK_BUILD_CXXFLAGS_JDKLIB) + LDFLAGS_JDKLIB := $(OPENJDK_BUILD_LDFLAGS_JDKLIB) + CFLAGS_JDKEXE := $(OPENJDK_BUILD_CFLAGS_JDKEXE) + CXXFLAGS_JDKEXE := $(OPENJDK_BUILD_CXXFLAGS_JDKEXE) + LDFLAGS_JDKEXE := $(OPENJDK_BUILD_LDFLAGS_JDKEXE) + + JVM_CFLAGS := $(OPENJDK_BUILD_JVM_CFLAGS) + JVM_LDFLAGS := $(OPENJDK_BUILD_JVM_LDFLAGS) + JVM_ASFLAGS := $(OPENJDK_BUILD_JVM_ASFLAGS) + JVM_LIBS := $(OPENJDK_BUILD_JVM_LIBS) + + FDLIBM_CFLAGS := $(OPENJDK_BUILD_FDLIBM_CFLAGS) + + INTERIM_LANGTOOLS_ARGS := $(subst $(OUTPUTDIR),$(BUILDJDK_OUTPUTDIR),$(INTERIM_LANGTOOLS_ARGS)) + + # The compiler for the build platform is likely not warning compatible with the official + # compiler. + WARNINGS_AS_ERRORS := false + DISABLE_WARNING_PREFIX := $(BUILD_CC_DISABLE_WARNING_PREFIX) + + # Save speed and disk space by not enabling debug symbols for the buildjdk + ENABLE_DEBUG_SYMBOLS := false + + JVM_VARIANTS := server + JVM_VARIANT_MAIN := server + JVM_FEATURES_server := cds compiler1 compiler2 g1gc serialgc + + # Some users still set EXTRA_*FLAGS on the make command line. Must + # make sure to override that when building buildjdk. + override EXTRA_CFLAGS := + override EXTRA_CXXFLAGS := + override EXTRA_LDFLAGS := + + # hsdis is not needed + HSDIS_BACKEND := none + ENABLE_HSDIS_BUNDLING := false +endif + +ifeq ($(IS_BOOTCYCLE_JDK_SPEC), true) + # Override specific values to do a boot cycle build + + # Use a different Boot JDK + BOOT_JDK := $(JDK_IMAGE_DIR) + + # The bootcycle build has a different output directory + OLD_OUTPUTDIR := $(OUTPUTDIR) + OUTPUTDIR := $(OLD_OUTPUTDIR)/bootcycle-build + # No spaces in patsubst to avoid leading space in variable + JAVAC_SERVER_DIR := $(patsubst $(OLD_OUTPUTDIR)%,$(OUTPUTDIR)%,$(JAVAC_SERVER_DIR)) + + JAVA_CMD := $(FIXPATH) $(BOOT_JDK)/bin/java + JAVAC_CMD := $(FIXPATH) $(BOOT_JDK)/bin/javac + JAR_CMD := $(FIXPATH) $(BOOT_JDK)/bin/jar + # The bootcycle JVM arguments may differ from the original boot jdk. + JAVA_FLAGS_BIG := $(BOOTCYCLE_JVM_ARGS_BIG) + # Any CDS settings generated for the bootjdk are invalid in the bootcycle build. + # By filtering out those JVM args, the bootcycle JVM will use its default + # settings for CDS. + JAVA_FLAGS := $(filter-out -XX:SharedArchiveFile% -Xshare%, $(JAVA_FLAGS)) +endif + +################################################################################ + +include MakeIncludeEnd.gmk +endif # include guard diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk index 97ef88932cb..2bc5d562924 100644 --- a/make/common/MakeBase.gmk +++ b/make/common/MakeBase.gmk @@ -75,6 +75,7 @@ endif # least for now. # Utils.gmk must be included before FileUtils.gmk, since it uses some of the # basic utility functions there. +include $(TOPDIR)/make/common/CommonVars.gmk include $(TOPDIR)/make/common/Utils.gmk include $(TOPDIR)/make/common/FileUtils.gmk