< prev index next >

make/Bundles.gmk

Print this page
rev 52919 : 8189861: Refactor CacheFind
Reviewed-by: sgehwolf


  54 define SetupBundleFileBody
  55 
  56   $$(foreach d, $$($1_BASE_DIRS), \
  57     $$(eval $1_$$d_RELATIVE_FILES := $$$$(patsubst $$d/%, %, \
  58         $$$$(filter $$d/%, $$$$($1_FILES)))) \
  59     $$(eval $1_$$d_LIST_FILE := \
  60         $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(OUTPUTDIR)/%,%,$$d)_files)) \
  61   )
  62 
  63   ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), )
  64     $1_TYPE := tar.gz
  65   else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), )
  66     $1_TYPE := zip
  67   else
  68     $$(error Unknown bundle type $$($1_BUNDLE_NAME))
  69   endif
  70 
  71   $$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
  72 
  73   $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
  74         # If any of the files contain a space in the file name, CacheFind
  75         # will have replaced it with ?. Tar does not accept that so need to
  76         # switch it back.
  77         $$(foreach d, $$($1_BASE_DIRS), \
  78           $$(eval $$(call ListPathsSafely, \
  79               $1_$$d_RELATIVE_FILES, $$($1_$$d_LIST_FILE))) \
  80           $$(CAT) $$($1_$$d_LIST_FILE) | $$(TR) '?' ' ' > $$($1_$$d_LIST_FILE).tmp \
  81               && $(MV) $$($1_$$d_LIST_FILE).tmp $$($1_$$d_LIST_FILE) $$(NEWLINE) \
  82         )
  83         $$(call MakeDir, $$(@D))
  84         ifneq ($$($1_SPECIAL_INCLUDES), )
  85           $$(foreach i, $$($1_SPECIAL_INCLUDES), \
  86             $$(foreach d, $$($1_BASE_DIRS), \
  87               ($(CD) $$d && $(FIND) $$i >> $$($1_$$d_LIST_FILE)) ; ))
  88         endif
  89         ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO), .-zip-false)
  90           # If no subdir is specified, zip can be done directly from BASE_DIRS.
  91           $$(foreach d, $$($1_BASE_DIRS), \
  92             ( $(CD) $$d \
  93             && $(ZIPEXE) -qru $$@ . -i@$$($1_$$d_LIST_FILE) \
  94             || test "$$$$?" = "12" )$$(NEWLINE))


 149   JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
 150   JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
 151   JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home
 152   JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
 153   JDK_BUNDLE_SUBDIR :=
 154   JRE_BUNDLE_SUBDIR :=
 155 else
 156   JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
 157   JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
 158   JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
 159   JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
 160   ifneq ($(DEBUG_LEVEL), release)
 161     JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
 162     JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
 163   endif
 164 endif
 165 
 166 ################################################################################
 167 
 168 ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
 169   $(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR)))
 170 
 171   SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
 172 
 173   ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR))


 174 
 175   # Create special filter rules when dealing with unzipped .dSYM directories on
 176   # macosx
 177   ifeq ($(OPENJDK_TARGET_OS), macosx)
 178     ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
 179       JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
 180           $(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES))))
 181     endif
 182   endif
 183 
 184   JDK_BUNDLE_FILES := \
 185       $(filter-out \
 186           $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
 187           $(JDK_EXTRA_EXCLUDES) \
 188           $(SYMBOLS_EXCLUDE_PATTERN) \
 189           $(JDK_IMAGE_HOMEDIR)/demo/% \
 190           , \
 191           $(ALL_JDK_FILES) \
 192       )
 193   JDK_SYMBOLS_BUNDLE_FILES := \
 194       $(filter \
 195           $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
 196           $(SYMBOLS_EXCLUDE_PATTERN) \
 197           , \
 198           $(filter-out \
 199               $(JDK_IMAGE_HOMEDIR)/demo/% \
 200               , \
 201               $(ALL_JDK_FILES) \
 202           ) \
 203       ) \
 204       $(call CacheFind, $(SYMBOLS_IMAGE_DIR))
 205 
 206   TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_IMAGE_HOMEDIR)/demo/%, $(ALL_JDK_FILES))
 207 
 208   ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR))
 209 
 210   # Create special filter rules when dealing with unzipped .dSYM directories on
 211   # macosx
 212   ifeq ($(OPENJDK_TARGET_OS), macosx)
 213     ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
 214       JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
 215           $(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
 216     endif
 217   endif
 218 
 219   JRE_BUNDLE_FILES := $(filter-out \
 220       $(JRE_SYMBOLS_EXCLUDE_PATTERN) \
 221       $(SYMBOLS_EXCLUDE_PATTERN), \
 222       $(ALL_JRE_FILES))
 223 
 224   # On Macosx release builds, when there is a code signing certificate available,
 225   # the final bundle layout can be signed.
 226   SIGN_BUNDLE := false
 227   ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
 228     ifneq ($(CODESIGN), )


 321   ))
 322 
 323   PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
 324 
 325   # The demo bundle is only created to support client tests. Ideally it should
 326   # be built with the main test bundle, but since the prerequisites match
 327   # better with the product build, it makes more sense to keep it there for now.
 328   $(eval $(call SetupBundleFile, BUILD_TEST_DEMOS_BUNDLE, \
 329       BUNDLE_NAME := $(TEST_DEMOS_BUNDLE_NAME), \
 330       FILES := $(TEST_DEMOS_BUNDLE_FILES), \
 331       BASE_DIRS := $(JDK_IMAGE_DIR), \
 332       SUBDIR := $(JDK_BUNDLE_SUBDIR), \
 333   ))
 334 
 335   PRODUCT_TARGETS += $(BUILD_TEST_DEMOS_BUNDLE)
 336 endif
 337 
 338 ################################################################################
 339 
 340 ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
 341   TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR))
 342 
 343   $(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
 344       BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
 345       FILES := $(TEST_BUNDLE_FILES), \
 346       BASE_DIRS := $(TEST_IMAGE_DIR), \
 347   ))
 348 
 349   TEST_TARGETS += $(BUILD_TEST_BUNDLE)
 350 endif
 351 
 352 ################################################################################
 353 
 354 ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
 355   DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR))
 356 
 357   $(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
 358       BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
 359       FILES := $(DOCS_BUNDLE_FILES), \
 360       BASE_DIRS := $(DOCS_IMAGE_DIR), \
 361       SUBDIR := docs, \
 362   ))
 363 
 364   DOCS_TARGETS += $(BUILD_DOCS_BUNDLE)
 365 endif
 366 
 367 ################################################################################
 368 
 369 # Hook to include the corresponding custom file, if present.
 370 $(eval $(call IncludeCustomExtension, Bundles.gmk))
 371 
 372 ################################################################################
 373 
 374 product-bundles: $(PRODUCT_TARGETS)
 375 legacy-bundles: $(LEGACY_TARGETS)


  54 define SetupBundleFileBody
  55 
  56   $$(foreach d, $$($1_BASE_DIRS), \
  57     $$(eval $1_$$d_RELATIVE_FILES := $$$$(patsubst $$d/%, %, \
  58         $$$$(filter $$d/%, $$$$($1_FILES)))) \
  59     $$(eval $1_$$d_LIST_FILE := \
  60         $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(OUTPUTDIR)/%,%,$$d)_files)) \
  61   )
  62 
  63   ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), )
  64     $1_TYPE := tar.gz
  65   else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), )
  66     $1_TYPE := zip
  67   else
  68     $$(error Unknown bundle type $$($1_BUNDLE_NAME))
  69   endif
  70 
  71   $$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
  72 
  73   $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
  74         # If any of the files contain a space in the file name, FindFiles
  75         # will have replaced it with ?. Tar does not accept that so need to
  76         # switch it back.
  77         $$(foreach d, $$($1_BASE_DIRS), \
  78           $$(eval $$(call ListPathsSafely, \
  79               $1_$$d_RELATIVE_FILES, $$($1_$$d_LIST_FILE))) \
  80           $$(CAT) $$($1_$$d_LIST_FILE) | $$(TR) '?' ' ' > $$($1_$$d_LIST_FILE).tmp \
  81               && $(MV) $$($1_$$d_LIST_FILE).tmp $$($1_$$d_LIST_FILE) $$(NEWLINE) \
  82         )
  83         $$(call MakeDir, $$(@D))
  84         ifneq ($$($1_SPECIAL_INCLUDES), )
  85           $$(foreach i, $$($1_SPECIAL_INCLUDES), \
  86             $$(foreach d, $$($1_BASE_DIRS), \
  87               ($(CD) $$d && $(FIND) $$i >> $$($1_$$d_LIST_FILE)) ; ))
  88         endif
  89         ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO), .-zip-false)
  90           # If no subdir is specified, zip can be done directly from BASE_DIRS.
  91           $$(foreach d, $$($1_BASE_DIRS), \
  92             ( $(CD) $$d \
  93             && $(ZIPEXE) -qru $$@ . -i@$$($1_$$d_LIST_FILE) \
  94             || test "$$$$?" = "12" )$$(NEWLINE))


 149   JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
 150   JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
 151   JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home
 152   JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
 153   JDK_BUNDLE_SUBDIR :=
 154   JRE_BUNDLE_SUBDIR :=
 155 else
 156   JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
 157   JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
 158   JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
 159   JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
 160   ifneq ($(DEBUG_LEVEL), release)
 161     JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
 162     JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
 163   endif
 164 endif
 165 
 166 ################################################################################
 167 
 168 ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )

 169 
 170   SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
 171 
 172   # There may be files with spaces in the names, so use ShellFindFiles
 173   # explicitly.
 174   ALL_JDK_FILES := $(call ShellFindFiles, $(JDK_IMAGE_DIR))
 175 
 176   # Create special filter rules when dealing with unzipped .dSYM directories on
 177   # macosx
 178   ifeq ($(OPENJDK_TARGET_OS), macosx)
 179     ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
 180       JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
 181           $(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES))))
 182     endif
 183   endif
 184 
 185   JDK_BUNDLE_FILES := \
 186       $(filter-out \
 187           $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
 188           $(JDK_EXTRA_EXCLUDES) \
 189           $(SYMBOLS_EXCLUDE_PATTERN) \
 190           $(JDK_IMAGE_HOMEDIR)/demo/% \
 191           , \
 192           $(ALL_JDK_FILES) \
 193       )
 194   JDK_SYMBOLS_BUNDLE_FILES := \
 195       $(filter \
 196           $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
 197           $(SYMBOLS_EXCLUDE_PATTERN) \
 198           , \
 199           $(filter-out \
 200               $(JDK_IMAGE_HOMEDIR)/demo/% \
 201               , \
 202               $(ALL_JDK_FILES) \
 203           ) \
 204       ) \
 205       $(call FindFiles, $(SYMBOLS_IMAGE_DIR))
 206 
 207   TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_IMAGE_HOMEDIR)/demo/%, $(ALL_JDK_FILES))
 208 
 209   ALL_JRE_FILES := $(call ShellFindFiles, $(JRE_IMAGE_DIR))
 210 
 211   # Create special filter rules when dealing with unzipped .dSYM directories on
 212   # macosx
 213   ifeq ($(OPENJDK_TARGET_OS), macosx)
 214     ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
 215       JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
 216           $(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
 217     endif
 218   endif
 219 
 220   JRE_BUNDLE_FILES := $(filter-out \
 221       $(JRE_SYMBOLS_EXCLUDE_PATTERN) \
 222       $(SYMBOLS_EXCLUDE_PATTERN), \
 223       $(ALL_JRE_FILES))
 224 
 225   # On Macosx release builds, when there is a code signing certificate available,
 226   # the final bundle layout can be signed.
 227   SIGN_BUNDLE := false
 228   ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
 229     ifneq ($(CODESIGN), )


 322   ))
 323 
 324   PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
 325 
 326   # The demo bundle is only created to support client tests. Ideally it should
 327   # be built with the main test bundle, but since the prerequisites match
 328   # better with the product build, it makes more sense to keep it there for now.
 329   $(eval $(call SetupBundleFile, BUILD_TEST_DEMOS_BUNDLE, \
 330       BUNDLE_NAME := $(TEST_DEMOS_BUNDLE_NAME), \
 331       FILES := $(TEST_DEMOS_BUNDLE_FILES), \
 332       BASE_DIRS := $(JDK_IMAGE_DIR), \
 333       SUBDIR := $(JDK_BUNDLE_SUBDIR), \
 334   ))
 335 
 336   PRODUCT_TARGETS += $(BUILD_TEST_DEMOS_BUNDLE)
 337 endif
 338 
 339 ################################################################################
 340 
 341 ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
 342   TEST_BUNDLE_FILES := $(call FindFiles, $(TEST_IMAGE_DIR))
 343 
 344   $(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
 345       BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
 346       FILES := $(TEST_BUNDLE_FILES), \
 347       BASE_DIRS := $(TEST_IMAGE_DIR), \
 348   ))
 349 
 350   TEST_TARGETS += $(BUILD_TEST_BUNDLE)
 351 endif
 352 
 353 ################################################################################
 354 
 355 ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
 356   DOCS_BUNDLE_FILES := $(call FindFiles, $(DOCS_IMAGE_DIR))
 357 
 358   $(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
 359       BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
 360       FILES := $(DOCS_BUNDLE_FILES), \
 361       BASE_DIRS := $(DOCS_IMAGE_DIR), \
 362       SUBDIR := docs, \
 363   ))
 364 
 365   DOCS_TARGETS += $(BUILD_DOCS_BUNDLE)
 366 endif
 367 
 368 ################################################################################
 369 
 370 # Hook to include the corresponding custom file, if present.
 371 $(eval $(call IncludeCustomExtension, Bundles.gmk))
 372 
 373 ################################################################################
 374 
 375 product-bundles: $(PRODUCT_TARGETS)
 376 legacy-bundles: $(LEGACY_TARGETS)
< prev index next >