# HG changeset patch # User ihse # Date 1549564533 -3600 # Node ID 0258a6f7d03fd49c2fd45c151c3fccea30a9646b # Parent 003703d036337d30fca219f120daf2f3ca0c4a8a Adding SetupExecute to more places, and adding functionality. diff -r 003703d03633 -r 0258a6f7d03f make/CreateJmods.gmk --- a/make/CreateJmods.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/CreateJmods.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -26,6 +26,7 @@ include $(SPEC) include MakeBase.gmk +include Execute.gmk include Modules.gmk ifeq ($(MODULE), ) @@ -37,7 +38,8 @@ ################################################################################ JMODS_DIR := $(IMAGES_OUTPUTDIR)/jmods -JMODS_TEMPDIR := $(SUPPORT_OUTPUTDIR)/jmods +JMODS_SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/jmods +JMOD_FILE := $(MODULE).jmod LIBS_DIR ?= $(firstword $(wildcard $(addsuffix /$(MODULE), \ $(SUPPORT_OUTPUTDIR)/modules_libs $(IMPORT_MODULES_LIBS)))) @@ -156,22 +158,22 @@ JMOD_FLAGS += --exclude '**{_the.*,_*.marker,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}' -# Create jmods in a temp dir and then move them into place to keep the +# Create jmods in the support dir and then move them into place to keep the # module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times. -$(JMODS_DIR)/$(MODULE).jmod: $(DEPS) - $(call LogWarn, Creating $(patsubst $(OUTPUTDIR)/%, %, $@)) - $(call MakeDir, $(JMODS_DIR) $(JMODS_TEMPDIR)) - $(RM) $@ $(JMODS_TEMPDIR)/$(notdir $@) - $(call ExecuteWithLog, $(SUPPORT_OUTPUTDIR)/jmods/$(MODULE).jmod, \ - $(JMOD) create \ - --module-version $(VERSION_SHORT) \ - --target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \ - --module-path $(JMODS_DIR) \ - $(JMOD_FLAGS) $(JMODS_TEMPDIR)/$(notdir $@) \ - ) - $(MV) $(JMODS_TEMPDIR)/$(notdir $@) $@ +$(eval $(call SetupExecute, create_$(JMOD_FILE), \ + WARN := Creating $(JMOD_FILE), \ + DEPS := $(DEPS), \ + OUTPUT_FILE := $(JMODS_DIR)/$(JMOD_FILE), \ + SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \ + PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \ + COMMAND := $(JMOD) create --module-version $(VERSION_SHORT) \ + --target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \ + --module-path $(JMODS_DIR) $(JMOD_FLAGS) \ + $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \ + POST_COMMAND := $(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \ +)) -TARGETS += $(JMODS_DIR)/$(MODULE).jmod +TARGETS += $(create_$(JMOD_FILE)) ################################################################################ diff -r 003703d03633 -r 0258a6f7d03f make/ExplodedImageOptimize.gmk --- a/make/ExplodedImageOptimize.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/ExplodedImageOptimize.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -29,19 +29,21 @@ include $(SPEC) include MakeBase.gmk +include Execute.gmk include $(TOPDIR)/make/ModuleTools.gmk ################################################################################ -PACKAGES_ATTRIBUTE_TARGET := $(JDK_OUTPUTDIR)/_packages_attribute.done ALL_MODULEINFO_CLASSES := $(wildcard $(JDK_OUTPUTDIR)/modules/*/module-info.class) -$(PACKAGES_ATTRIBUTE_TARGET): $(ALL_MODULEINFO_CLASSES) $(BUILD_JIGSAW_CLASSES) - $(call LogInfo, Optimizing the exploded image) - $(call ExecuteWithLog, $@, $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR)) - $(TOUCH) $@ +$(eval $(call SetupExecute, optimize_image, \ + INFO := Optimizing the exploded image, \ + DEPS := $(ALL_MODULEINFO_CLASSES) $(BUILD_JIGSAW_CLASSES), \ + OUTPUT_DIR := $(JDK_OUTPUTDIR), \ + COMMAND := $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR), \ +)) -TARGETS := $(PACKAGES_ATTRIBUTE_TARGET) +TARGETS := $(optimize_image_TARGET) ################################################################################ diff -r 003703d03633 -r 0258a6f7d03f make/Main.gmk --- a/make/Main.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/Main.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -456,7 +456,7 @@ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \ MODULE=$1 \ JMODS_DIR=$(INTERIM_JMODS_DIR) \ - JMODS_TEMPDIR=$(INTERIM_JMODS_DIR)/temp \ + JMODS_SUPPORT_DIR=$(INTERIM_JMODS_DIR)/support \ INTERIM_JMOD=true \ ) endef diff -r 003703d03633 -r 0258a6f7d03f make/UpdateX11Wrappers.gmk --- a/make/UpdateX11Wrappers.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/UpdateX11Wrappers.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -29,6 +29,7 @@ include $(SPEC) include MakeBase.gmk +include Execute.gmk include NativeCompilation.gmk include ToolsJdk.gmk @@ -47,17 +48,21 @@ endif X11WRAPPERS_OUTPUT := $(SUPPORT_OUTPUTDIR)/x11wrappers +GENERATOR_SOURCE_FILE := $(X11WRAPPERS_OUTPUT)/src/data_generator.c GENSRC_X11WRAPPERS_DATADIR := $(TOPDIR)/make/data/x11wrappergen +WRAPPER_OUTPUT_FILE := $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(BITS).txt BITS := $(OPENJDK_TARGET_CPU_BITS) # Generate the C code for the program that will output the offset file. -$(X11WRAPPERS_OUTPUT)/src/data_generator.c: $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BUILD_TOOLS_JDK) - $(call LogInfo, Generating X11 wrapper data generator source code) - $(call MakeDir, $(@D)) - $(call ExecuteWithLog, $@, \ - $(TOOL_WRAPPERGENERATOR) gen_c_source $@ $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BITS)) +$(eval $(call SetupExecute, gensrc_generator, \ + INFO := Generating X11 wrapper data generator source code, \ + DEPS := $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BUILD_TOOLS_JDK), \ + OUTPUT_FILE := $(GENERATOR_SOURCE_FILE), \ + COMMAND := $(TOOL_WRAPPERGENERATOR) gen_c_source $(GENERATOR_SOURCE_FILE) \ + $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(BITS), \ +)) DATA_GENERATOR_INCLUDES := \ -I$(TOPDIR)/src/hotspot/share/include \ @@ -75,7 +80,7 @@ $(eval $(call SetupNativeCompilation, BUILD_DATA_GENERATOR, \ PROGRAM := data_generator, \ OUTPUT_DIR := $(X11WRAPPERS_OUTPUT)/bin, \ - EXTRA_FILES := $(X11WRAPPERS_OUTPUT)/src/data_generator.c, \ + EXTRA_FILES := $(GENERATOR_SOURCE_FILE), \ CFLAGS := $(X_CFLAGS) $(DATA_GENERATOR_INCLUDES) $(CFLAGS_JDKEXE), \ LDFLAGS := $(LDFLAGS_JDKEXE), \ LIBS := $(X_LIBS), \ @@ -83,16 +88,19 @@ )) # Run the executable to create the data file. -$(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(BITS).txt: $(BUILD_DATA_GENERATOR_TARGET) - $(call LogInfo, Generating X11 wrapper data files) - $(call MakeDir, $(@D)) - $(call ExecuteWithLog, $(X11WRAPPERS_OUTPUT)/generation, \ - $(BUILD_DATA_GENERATOR_TARGET) | $(SORT) > $@) +$(eval $(call SetupExecute, run_wrappergen, \ + INFO := Generating X11 wrapper data files, \ + DEPS := $(BUILD_DATA_GENERATOR), \ + OUTPUT_FILE := $(WRAPPER_OUTPUT_FILE), \ + COMMAND := $(BUILD_DATA_GENERATOR_TARGET) | $(SORT) > $(WRAPPER_OUTPUT_FILE), \ +)) + +wrapper-information: $(run_wrappergen) $(ECHO) IMPORTANT: If you update the X11 wrapper data files, they most certainly $(ECHO) need to be updated for both 32 and 64 bit platforms. You have now $(ECHO) updated them for $(BITS) bit platforms only. -TARGETS += $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(BITS).txt +TARGETS += $(run_wrappergen) wrapper-information ################################################################################ diff -r 003703d03633 -r 0258a6f7d03f make/common/Execute.gmk --- a/make/common/Execute.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/common/Execute.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -42,10 +42,13 @@ # # Remaining parameters are named arguments. These include: # COMMAND : The command to execute +# PRE_COMMAND : # POST_COMMAND: # OUTPUT_DIR : The directory that will contain the result from the command +# SUPPORT_DIR : # OUTPUT_FILE : Use this if the command results in a single output file. # INFO : Message to display at LOG=info level when running command (optional). +# WARN : Message to display at LOG=warn level when running command (optional). # DEPS : Dependencies for the execution to take place # @@ -60,48 +63,104 @@ ifneq ($$($1_OUTPUT_DIR), ) $$(error Cannot specify both OUTPUT_DIR and OUTPUT_FILE in SetupExecute $1) endif + # We need to know output dir since we will make sure it is created. $1_OUTPUT_DIR := $$(patsubst %/,%, $$(dir $$($1_OUTPUT_FILE))) - else ifeq ($$($1_OUTPUT_DIR), ) + ifeq ($$($1_SUPPORT_DIR), ) + # If support dir is not given, use base dir of output file. + $1_SUPPORT_DIR := $$($1_OUTPUT_DIR) + endif + else ifneq ($$($1_OUTPUT_DIR), ) + ifeq ($$($1_SUPPORT_DIR), ) + # If support dir is not given, use output dir. + $1_SUPPORT_DIR := $$($1_OUTPUT_DIR) + endif + else $$(error OUTPUT_DIR or OUTPUT_FILE is required in SetupExecute $1) endif - $1_BASE := $$($1_OUTPUT_DIR)/_$1 - $1_MARKER := $$($1_BASE).marker + $1_BASE := $$($1_SUPPORT_DIR)/_$1 + $1_PRE_MARKER := $$($1_BASE)_pre.marker + $1_EXEC_MARKER := $$($1_BASE)_exec.marker + $1_POST_MARKER := $$($1_BASE)_post.marker ifeq ($$($1_OUTPUT_FILE), ) - $1_RESULT := $$($1_MARKER) + # No specified output file, use markers everywhere + $1_EXEC_RESULT := $$($1_EXEC_MARKER) + ifeq ($$($1_POST_COMMAND), ) + $1_FINAL_RESULT := $$($1_EXEC_MARKER) + else + $1_FINAL_RESULT := $$($1_POST_MARKER) + endif + else # If we have a single output file, we don't need a separate marker - $1_RESULT := $$($1_OUTPUT_FILE) + + ifeq ($$($1_POST_COMMAND), ) + $1_EXEC_RESULT := $$($1_OUTPUT_FILE) + $1_FINAL_RESULT := $$($1_EXEC_RESULT) + else + $1_EXEC_RESULT := $$($1_EXEC_MARKER) + $1_FINAL_RESULT := $$($1_OUTPUT_FILE) + endif + endif - ifeq ($$($1_INFO), ) + ifeq ($$($1_INFO)$$($1_WARN), ) + # If neither info nor warn is provided, add basic info text. $1_INFO := Running commands for $1 endif - $$($1_RESULT): $$($1_DEPS) - $$(call LogInfo, $$($1_INFO)) - $$(call MakeDir, $$(@D)) - $$(call ExecuteWithLog, $$($1_BASE), \ + ifneq ($$($1_PRE_COMMAND), ) + + $$($1_PRE_MARKER): $$($1_DEPS) + ifneq ($$($1_WARN), ) + $$(call LogWarn, $$($1_WARN)) + endif + ifneq ($$($1_INFO), ) + $$(call LogInfo, $$($1_INFO)) + endif + $$(call MakeDir, $$($1_SUPPORT_DIR) $$($1_OUTPUT_DIR)) + $$(call ExecuteWithLog, $$($1_BASE)_pre, \ + $$($1_PRE_COMMAND)) + $$(TOUCH) $$@ + + $$($1_EXEC_RESULT): $$($1_PRE_MARKER) + $$(call ExecuteWithLog, $$($1_BASE)_exec, \ $$($1_COMMAND)) - ifeq ($$($1_RESULT), $$($1_MARKER)) + ifeq ($$($1_EXEC_RESULT), $$($1_EXEC_MARKER)) $$(TOUCH) $$@ endif - # Export all our generated targets in $1, and the final target in $1_TARGET. - $1 := $$($1_RESULT) - $1_TARGET := $$($1_RESULT) + $1 := $$($1_PRE_MARKER) $$($1_EXEC_RESULT) + else + $$($1_EXEC_RESULT): $$($1_DEPS) + ifneq ($$($1_WARN), ) + $$(call LogWarn, $$($1_WARN)) + endif + ifneq ($$($1_INFO), ) + $$(call LogInfo, $$($1_INFO)) + endif + $$(call MakeDir, $$($1_SUPPORT_DIR) $$($1_OUTPUT_DIR)) + $$(call ExecuteWithLog, $$($1_BASE)_exec, \ + $$($1_COMMAND)) + ifeq ($$($1_EXEC_RESULT), $$($1_EXEC_MARKER)) + $$(TOUCH) $$@ + endif + + $1 := $$($1_EXEC_RESULT) + endif ifneq ($$($1_POST_COMMAND), ) - $1_POST_MARKER := $$($1_BASE)_post.marker - $$($1_POST_MARKER): $$($1_MARKER) - $$(call ExecuteWithLog, $$($1_BASE), \ + $$($1_FINAL_RESULT): $$($1_EXEC_RESULT) + $$(call ExecuteWithLog, $$($1_BASE)_post, \ $$($1_POST_COMMAND)) $$(TOUCH) $$@ - $1 += $$($1_POST_MARKER) - $1_TARGET := $$($1_POST_MARKER) + $1 += $$($1_FINAL_RESULT) endif + # Export all our generated targets in $1, and the final target in $1_TARGET. + $1_TARGET := $$($1_FINAL_RESULT) + endef diff -r 003703d03633 -r 0258a6f7d03f make/gensrc/GensrcCommonJdk.gmk --- a/make/gensrc/GensrcCommonJdk.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/gensrc/GensrcCommonJdk.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -27,6 +27,7 @@ include $(SPEC) include MakeBase.gmk +include Execute.gmk include JavaCompilation.gmk include NativeCompilation.gmk include TextFileProcessing.gmk diff -r 003703d03633 -r 0258a6f7d03f make/gensrc/GensrcX11Wrappers.gmk --- a/make/gensrc/GensrcX11Wrappers.gmk Thu Feb 07 13:04:38 2019 +0100 +++ b/make/gensrc/GensrcX11Wrappers.gmk Thu Feb 07 19:35:33 2019 +0100 @@ -26,27 +26,22 @@ # Generate java sources using the X11 offsets that are precalculated in files # make/data/x11wrappergen/sizes-
.txt. -GENSRC_X11WRAPPERS_OUTPUT_TOP := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop - -GENSRC_X11WRAPPERS_MARKER := $(GENSRC_X11WRAPPERS_OUTPUT_TOP)/_x11wrappers.marker - # Put the generated Java classes used to interface X11 from awt here. -GENSRC_X11WRAPPERS_OUTPUTDIR := $(GENSRC_X11WRAPPERS_OUTPUT_TOP)/sun/awt/X11 +GENSRC_X11WRAPPERS_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/sun/awt/X11 # The pre-calculated offset file are stored here: GENSRC_X11WRAPPERS_DATADIR := $(TOPDIR)/make/data/x11wrappergen GENSRC_X11WRAPPERS_DATA := $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(OPENJDK_TARGET_CPU_BITS).txt # Run the tool on the offset files to generate several Java classes used in awt. -$(GENSRC_X11WRAPPERS_MARKER): $(BUILD_TOOLS_JDK) $(GENSRC_X11WRAPPERS_DATA) \ - $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt - $(call MakeDir, $(GENSRC_X11WRAPPERS_OUTPUTDIR)) - $(call LogInfo, Generating X11 wrapper source files) - $(call ExecuteWithLog, $@, \ - $(TOOL_WRAPPERGENERATOR) gen_java $(GENSRC_X11WRAPPERS_OUTPUTDIR) \ - $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(GENSRC_X11WRAPPERS_DATA) \ - $(OPENJDK_TARGET_CPU_BITS)) - $(TOUCH) $@ +$(eval $(call SetupExecute, gen_x11wrappers, \ + INFO := Generating X11 wrapper source files, \ + DEPS := $(BUILD_TOOLS_JDK) $(GENSRC_X11WRAPPERS_DATA) \ + $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt, \ + OUTPUT_DIR := $(GENSRC_X11WRAPPERS_OUTPUTDIR), \ + COMMAND := $(TOOL_WRAPPERGENERATOR) gen_java $(GENSRC_X11WRAPPERS_OUTPUTDIR) \ + $(GENSRC_X11WRAPPERS_DATADIR)/xlibtypes.txt $(GENSRC_X11WRAPPERS_DATA) \ + $(OPENJDK_TARGET_CPU_BITS), \ +)) - -GENSRC_JAVA_DESKTOP += $(GENSRC_X11WRAPPERS_MARKER) +GENSRC_JAVA_DESKTOP += $(gen_x11wrappers_TARGET)