--- old/make/MacBundles.gmk 2017-10-11 18:39:55.081195327 +0200 +++ new/make/MacBundles.gmk 2017-10-11 18:39:54.493174849 +0200 @@ -49,22 +49,19 @@ BUNDLE_VENDOR := $(COMPANY_NAME) endif - JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR)) - JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR)) - - JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_CONTENTS_DIR)/Home/,$(JDK_FILE_LIST)) - JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_CONTENTS_DIR)/Home/,$(JRE_FILE_LIST)) - - # Copy empty directories (jre/lib/applet). - $(JDK_MACOSX_CONTENTS_DIR)/Home/%: $(JDK_IMAGE_DIR)/% - $(call LogInfo, Copying $(patsubst $(OUTPUTDIR)/%,%,$@)) - $(MKDIR) -p $(@D) - if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi - - $(JRE_MACOSX_CONTENTS_DIR)/Home/%: $(JRE_IMAGE_DIR)/% - $(call LogInfo, Copying $(patsubst $(OUTPUTDIR)/%,%,$@)) - $(MKDIR) -p $(@D) - if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi + # Ideally the prerequisites of these two rules should be all files in the src + # dir, but running find over all of them takes unnecessary time, and more + # importantly, there may be files with spaces in the names which are very + # tricky to handle in make. + $(JDK_MACOSX_CONTENTS_DIR)/Home/bin/java: $(JDK_IMAGE_DIR)/bin/java + $(call LogInfo, Copying $(JDK_MACOSX_CONTENTS_DIR)/Home) + $(call MakeDir, $(JDK_MACOSX_CONTENTS_DIR)/Home) + $(CP) -f -R -P $(JDK_IMAGE_DIR)/. $(JDK_MACOSX_CONTENTS_DIR)/Home/ + + $(JRE_MACOSX_CONTENTS_DIR)/Home/bin/java: $(JRE_IMAGE_DIR)/bin/java + $(call LogInfo, Copying $(JRE_MACOSX_CONTENTS_DIR)/Home) + $(call MakeDir, $(JRE_MACOSX_CONTENTS_DIR)/Home) + $(CP) -f -R -P $(JRE_IMAGE_DIR)/. $(JRE_MACOSX_CONTENTS_DIR)/Home/ $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib: $(call LogInfo, Creating link $(patsubst $(OUTPUTDIR)/%,%,$@)) @@ -102,11 +99,13 @@ @@VENDOR@@ => $(BUNDLE_VENDOR) , \ )) - jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ + jdk-bundle: $(JDK_MACOSX_CONTENTS_DIR)/Home/bin/java \ + $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ $(BUILD_JDK_PLIST) $(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR)) - jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ + jre-bundle: $(JRE_MACOSX_CONTENTS_DIR)/Home/bin/java \ + $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ $(BUILD_JRE_PLIST) $(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR))