diff --git a/make/Images.gmk b/make/Images.gmk index 86303f8f7f7..befae87987a 100644 --- a/make/Images.gmk +++ b/make/Images.gmk @@ -64,48 +64,9 @@ JRE_COMPACT2_MODULES_LIST := $(call CommaList, $(JRE_COMPACT2_MODULES)) JRE_COMPACT3_MODULES_LIST := $(call CommaList, $(JRE_COMPACT3_MODULES)) ################################################################################ -# Release file BASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release -# Common way to emit a line into the release or info file -define info-file-item # name value - $(PRINTF) '%s="%s"\n' $1 $2 >> $@ -endef - -# Param 1 - The file containing the MODULES list -define create-info-file - $(if $(JDK_ARCH_ABI_PROP_NAME), \ - $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)")) - $(call info-file-item, "SOURCE", "$(strip $(SOURCE_REVISION))") -endef - -# Param 1 - The file containing the MODULES list -define prepare-info-file - $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) - $(MKDIR) -p $(@D) - $(RM) $@ -endef - -define info-file - $(call prepare-info-file) - $(call create-info-file) -endef - -# Create a variable dependency file common for all release info files. -INFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file) - -SOURCE_REVISION = $(shell \ - if [ -f $(SOURCE_REVISION_TRACKER) ] ; then \ - $(CAT) $(SOURCE_REVISION_TRACKER) ; \ - fi) - -# The SOURCE_REVISION_TRACKER file may not exist. Only depend on it if it does. -$(BASE_RELEASE_FILE): $(INFO_FILE_VARDEPS) $(wildcard $(SOURCE_REVISION_TRACKER)) - $(info-file) - -################################################################################ - JMODS := $(wildcard $(IMAGES_OUTPUTDIR)/jmods/*.jmod) # Use this file inside the image as target for make rule diff --git a/make/Main.gmk b/make/Main.gmk index 1add025480c..e264d91d6ad 100644 --- a/make/Main.gmk +++ b/make/Main.gmk @@ -324,13 +324,16 @@ profiles: mac-bundles-jdk: +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk) +release-file: + +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk) + exploded-image-optimize: +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk) ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \ zip-source jrtfs-jar jdk-image jre-image \ symbols-image profiles mac-bundles-jdk \ - exploded-image-optimize + release-file exploded-image-optimize ################################################################################ # Docs targets @@ -679,10 +682,12 @@ else java.base-jmod jdk-image jre-image: generate-link-opt-data endif - jdk-image: jmods zip-source create-source-revision-tracker demos samples - jre-image: jmods create-source-revision-tracker + release-file: create-source-revision-tracker - profiles: jmods zip-source create-source-revision-tracker + jdk-image: jmods zip-source demos samples release-file + jre-image: jmods release-file + + profiles: jmods release-file mac-bundles-jdk: jdk-image jre-image @@ -789,7 +794,7 @@ samples: samples-jdk # The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk. exploded-image-base: $(ALL_MODULES) -exploded-image: exploded-image-base +exploded-image: exploded-image-base release-file # When cross compiling, no need to optimize the exploded image since it won't # be runnable on the host platform anyway. ifneq ($(COMPILE_TYPE), cross) diff --git a/make/ReleaseFile.gmk b/make/ReleaseFile.gmk new file mode 100644 index 00000000000..d68d9e47901 --- /dev/null +++ b/make/ReleaseFile.gmk @@ -0,0 +1,86 @@ +# +# Copyright (c) 2016, 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. +# + +default: all + +include $(SPEC) +include MakeBase.gmk + +################################################################################ +# This makefile generates the "release" file into the exploded image. Jlink is +# then responsible for using this as the base for release files in each linked +# image. +# +################################################################################ + +BASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release + +# Common way to emit a line into the release or info file +define info-file-item # name value + $(PRINTF) '%s="%s"\n' $1 $2 >> $@ +endef + +# Param 1 - The file containing the MODULES list +define create-info-file + $(if $(JDK_ARCH_ABI_PROP_NAME), \ + $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)")) + $(call info-file-item, "SOURCE", "$(strip $(SOURCE_REVISION))") +endef + +# Param 1 - The file containing the MODULES list +define prepare-info-file + $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)) + $(call MakeDir, $(@D)) + $(RM) $@ +endef + +define info-file + $(call prepare-info-file) + $(call create-info-file) +endef + +# Create a variable dependency file common for all release info files. +INFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file) + +SOURCE_REVISION = $(shell \ + if [ -f $(SOURCE_REVISION_TRACKER) ] ; then \ + $(CAT) $(SOURCE_REVISION_TRACKER) ; \ + fi) + +# The SOURCE_REVISION_TRACKER file may not exist. Only depend on it if it does. +$(BASE_RELEASE_FILE): $(INFO_FILE_VARDEPS) $(wildcard $(SOURCE_REVISION_TRACKER)) + $(info-file) + +TARGETS += $(BASE_RELEASE_FILE) + +################################################################################ + +$(eval $(call IncludeCustomExtension, , ReleaseFile.gmk)) + +################################################################################ + +all: $(TARGETS) + +.PHONY: all default