Bundles.gmk revision 2436:9ea35cb972ff
1139823Simp# 211150Swollman# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 31541Srgrimes# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 41541Srgrimes# 51541Srgrimes# This code is free software; you can redistribute it and/or modify it 61541Srgrimes# under the terms of the GNU General Public License version 2 only, as 71541Srgrimes# published by the Free Software Foundation. Oracle designates this 81541Srgrimes# particular file as subject to the "Classpath" exception as provided 91541Srgrimes# by Oracle in the LICENSE file that accompanied this code. 101541Srgrimes# 111541Srgrimes# This code is distributed in the hope that it will be useful, but WITHOUT 121541Srgrimes# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 131541Srgrimes# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 141541Srgrimes# version 2 for more details (a copy is included in the LICENSE file that 151541Srgrimes# accompanied this code). 161541Srgrimes# 171541Srgrimes# You should have received a copy of the GNU General Public License version 181541Srgrimes# 2 along with this work; if not, write to the Free Software Foundation, 191541Srgrimes# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 201541Srgrimes# 211541Srgrimes# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 221541Srgrimes# or visit www.oracle.com if you need additional information or have any 231541Srgrimes# questions. 241541Srgrimes# 251541Srgrimes 261541Srgrimesdefault: all 271541Srgrimes 281541Srgrimesinclude $(SPEC) 2911150Swollmaninclude MakeBase.gmk 301541Srgrimes 311541SrgrimesPRODUCT_TARGETS := 32172467SsilbyTEST_TARGETS := 33172467SsilbyDOCS_TARGETS := 34172467Ssilby 35125680Sbms# On Windows tar frequently complains that "file changed as we read it" for 3655679Sshin# some random source files. This seems to be cause by anti virus scanners and 3729514Sjoerg# is most likely safe to ignore. When it happens, tar returns '1'. 3829514Sjoergifeq ($(OPENJDK_BUILD_OS), windows) 391541Srgrimes TAR_IGNORE_EXIT_VALUE := || test "$$$$?" = "1" 4012172Sphkendif 411541Srgrimes 421541Srgrimes# Hook to include the corresponding custom file, if present. 431541Srgrimes$(eval $(call IncludeCustomExtension, , Bundles-pre.gmk)) 441541Srgrimes################################################################################ 4595759Stanimura# BUNDLE : Name of bundle to create 4615038Sphk# FILES : Files in BASE_DIRS to add to bundle 4795759Stanimura# SPECIAL_INCLUDES : List of directories inside BASE_DIRS to look for additional 481541Srgrimes# files in. These files will not get proper dependency handling. Use when 49126193Sandre# files or directories may contain spaces. 50126193Sandre# BASE_DIRS : Base directories for the root dir in the bundle. 511541Srgrimes# SUBDIR : Optional name of root dir in bundle. 521541SrgrimesSetupBundleFile = $(NamedParamsMacroTemplate) 53196019Srwatsondefine SetupBundleFileBody 541541Srgrimes 551541Srgrimes $$(foreach d, $$($1_BASE_DIRS), \ 5695759Stanimura $$(eval $1_$$d_RELATIVE_FILES := $$$$(patsubst $$d/%, %, \ 571541Srgrimes $$$$(filter $$d/%, $$$$($1_FILES)))) \ 5895759Stanimura $$(eval $1_$$d_LIST_FILE := \ 591541Srgrimes $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(TOPDIR)/%,%,$$d)_files)) \ 601541Srgrimes ) 61152592Sandre 6262587Sitojun ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), ) 6395759Stanimura $1_TYPE := tar.gz 6495759Stanimura else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), ) 6562587Sitojun $1_TYPE := zip 661541Srgrimes else 671541Srgrimes $$(error Unknown bundle type $$($1_BUNDLE_NAME)) 681541Srgrimes endif 691541Srgrimes 701541Srgrimes $$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false) 7155679Sshin 721541Srgrimes $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES) 732788Sdg $$(foreach d, $$($1_BASE_DIRS), \ 741541Srgrimes $$(eval $$(call ListPathsSafely, \ 7555679Sshin $1_$$d_RELATIVE_FILES, $$($1_$$d_LIST_FILE))) \ 7655679Sshin ) 77213912Slstewart $$(call MakeDir, $$(@D)) 78213912Slstewart ifneq ($$($1_SPECIAL_INCLUDES), ) 79227309Sed $$(foreach i, $$($1_SPECIAL_INCLUDES), \ 80167721Sandre $$(foreach d, $$($1_BASE_DIRS), \ 81126193Sandre ($(CD) $$d && $(FIND) $$i >> $$($1_$$d_LIST_FILE)) ; )) 82285979Sdelphij endif 83285979Sdelphij ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO), .-zip-false) 84285979Sdelphij # If no subdir is specified, zip can be done directly from BASE_DIRS. 85167721Sandre $$(foreach d, $$($1_BASE_DIRS), \ 86126193Sandre ( $(CD) $$d \ 87285979Sdelphij && $(ZIPEXE) -qru $$@ . -i@$$($1_$$d_LIST_FILE) \ 88242253Sandre || test "$$$$?" = "12" )$$(NEWLINE)) 89167721Sandre else ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO)-$$(words $$($1_BASE_DIRS)), \ 90126193Sandre .-tar.gz-false-1) 91285979Sdelphij # If no subdir is specified and only one BASE_DIR, tar.gz can be done 92285979Sdelphij # directly from BASE_DIR. 93217554Smdf $(CD) $$($1_BASE_DIRS) \ 94285979Sdelphij && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \ 95167721Sandre -$(TAR_INCLUDE_PARAM) $$($1_$$($1_BASE_DIRS)_LIST_FILE) \ 96126193Sandre $(TAR_IGNORE_EXIT_VALUE) ) \ 97285979Sdelphij | $(GZIP) > $$@ 98213158Slstewart else ifeq ($$($1_TYPE)-$(TAR_SUPPORTS_TRANSFORM)-$$($1_UNZIP_DEBUGINFO)-$$(words $$($1_BASE_DIRS)), \ 99126193Sandre tar.gz-true-false-1) 100157927Sps # If only one BASE_DIR, but with a SUBDIR set, tar.gz can use the 101157927Sps # transform option to create bundle directly from the BASE_DIR. 102157927Sps $(CD) $$($1_BASE_DIRS) \ 103157927Sps && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \ 104242253Sandre -$(TAR_INCLUDE_PARAM) $$($1_$$($1_BASE_DIRS)_LIST_FILE) \ 105285979Sdelphij $$(if $$($1_SUBDIR), --transform 's|^|$$($1_SUBDIR)/|S') \ 106285979Sdelphij $(TAR_IGNORE_EXIT_VALUE) ) \ 107285979Sdelphij | $(GZIP) > $$@ 108157927Sps else 109157927Sps # In all other cases, need to copy all files into a temporary location 110126193Sandre # before creation bundle. 111285979Sdelphij $(RM) -r $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) 112126193Sandre $(MKDIR) -p $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) 113169454Srwatson $$(foreach d, $$($1_BASE_DIRS), \ 114285979Sdelphij ( $(CD) $$d \ 115126193Sandre && $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \ 116285979Sdelphij $(TAR_IGNORE_EXIT_VALUE) ) \ 117285979Sdelphij | ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) ) 118126193Sandre # Unzip any zipped debuginfo files 119242253Sandre ifeq ($$($1_UNZIP_DEBUGINFO), true) 120285979Sdelphij for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \ 121285979Sdelphij $(CD) $$$${f%/*} && $(UNZIP) -q $$$${f} && $(RM) $$$${f}; \ 122157927Sps done 123157927Sps endif 124126193Sandre ifeq ($$($1_TYPE), tar.gz) 125126193Sandre $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && \ 126204838Sbz ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \ 127213158Slstewart $$(if $$($1_SUBDIR), $$($1_SUBDIR), .) $(TAR_IGNORE_EXIT_VALUE) ) \ 128213158Slstewart | $(GZIP) > $$@ 129213158Slstewart else ifeq ($$($1_TYPE), zip) 130213158Slstewart $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && $(ZIPEXE) -qr $$@ . 131213158Slstewart endif 132213158Slstewart endif 133213158Slstewart 134213158Slstewart $1 += $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME) 135213158Slstewart 136285979Sdelphijendef 137213158Slstewart 138213158Slstewart################################################################################ 139213158Slstewart 140213158Slstewart# On Macosx, we bundle up the macosx specific images which already have the 141213158Slstewart# correct base directories. 142213158Slstewartifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release) 143213158Slstewart JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR) 144213158Slstewart JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR) 145213912Slstewart JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home 146242253Sandre JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home 147213912Slstewart JDK_BUNDLE_SUBDIR := 148242253Sandre JRE_BUNDLE_SUBDIR := 149213912Slstewartelse 150285979Sdelphij JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR) 151244680Sglebius JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR) 152213912Slstewart JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER) 153213912Slstewart JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER) 154169541Sandre JRE_COMPACT1_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact1 155167785Sandre JRE_COMPACT2_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact2 1561541Srgrimes JRE_COMPACT3_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact3 15755679Sshin ifneq ($(DEBUG_LEVEL), release) 15855679Sshin JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL) 15955679Sshin JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL) 160126193Sandre endif 1611541Srgrimesendif 162226113Sandre 1631541Srgrimes################################################################################ 164226113Sandre 1651541Srgrimesifneq ($(filter product-bundles, $(MAKECMDGOALS)), ) 166178285Srwatson $(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR))) 167138040Srwatson 1681541Srgrimes SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map 169126193Sandre 170192761Srwatson ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR)) 171126193Sandre 172126193Sandre # Create special filter rules when dealing with unzipped .dSYM directories on 173126193Sandre # macosx 174138040Srwatson ifeq ($(OPENJDK_TARGET_OS), macosx) 1751541Srgrimes ifeq ($(ZIP_DEBUGINFO_FILES), false) 1761541Srgrimes JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \ 177138040Srwatson $(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES)))) 1781541Srgrimes endif 1791541Srgrimes endif 180126193Sandre 181213913Slstewart JDK_BUNDLE_FILES := \ 182213913Slstewart $(filter-out \ 183213913Slstewart $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ 184213913Slstewart $(JDK_EXTRA_EXCLUDES) \ 185213913Slstewart $(SYMBOLS_EXCLUDE_PATTERN) \ 186213913Slstewart $(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \ 187213913Slstewart , \ 188213913Slstewart $(ALL_JDK_FILES) \ 189213913Slstewart ) 190213913Slstewart DEMOS_BUNDLE_FILES := \ 191213913Slstewart $(filter-out \ 192213913Slstewart $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ 193213913Slstewart $(SYMBOLS_EXCLUDE_PATTERN) \ 194213913Slstewart , \ 195126193Sandre $(filter \ 196265122Sdelphij $(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \ 197213913Slstewart $(JDK_IMAGE_HOMEDIR)/release \ 198285979Sdelphij , \ 199190948Srwatson $(ALL_JDK_FILES) \ 200126193Sandre ) \ 201144857Sps ) 202226113Sandre JDK_SYMBOLS_BUNDLE_FILES := \ 203226113Sandre $(filter \ 204226113Sandre $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ 205226113Sandre $(SYMBOLS_EXCLUDE_PATTERN) \ 206226113Sandre , \ 207126193Sandre $(filter-out \ 208126193Sandre $(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \ 209126193Sandre , \ 210126193Sandre $(ALL_JDK_FILES) \ 211126193Sandre ) \ 212126193Sandre ) \ 213226113Sandre $(call CacheFind, $(SYMBOLS_IMAGE_DIR)) 214226113Sandre 215226113Sandre ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR)) 216126193Sandre 217285979Sdelphij # Create special filter rules when dealing with unzipped .dSYM directories on 218228016Slstewart # macosx 219265122Sdelphij ifeq ($(OPENJDK_TARGET_OS), macosx) 220228016Slstewart ifeq ($(ZIP_DEBUGINFO_FILES), false) 221228016Slstewart JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \ 222228016Slstewart $(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES)))) 223228016Slstewart endif 224228016Slstewart endif 225228016Slstewart 226228016Slstewart JRE_BUNDLE_FILES := $(filter-out \ 227228016Slstewart $(JRE_SYMBOLS_EXCLUDE_PATTERN) \ 228228016Slstewart $(SYMBOLS_EXCLUDE_PATTERN), \ 229228016Slstewart $(ALL_JRE_FILES)) 230228016Slstewart JRE_SYMBOLS_BUNDLE_FILES := $(filter \ 231228016Slstewart $(JRE_SYMBOLS_EXCLUDE_PATTERN) \ 232228016Slstewart $(SYMBOLS_EXCLUDE_PATTERN), \ 233228016Slstewart $(ALL_JRE_FILES)) 234228016Slstewart 235228016Slstewart $(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \ 236228016Slstewart BUNDLE_NAME := $(JDK_BUNDLE_NAME), \ 237228016Slstewart FILES := $(JDK_BUNDLE_FILES), \ 238228016Slstewart SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \ 239228016Slstewart BASE_DIRS := $(JDK_IMAGE_DIR), \ 240226113Sandre SUBDIR := $(JDK_BUNDLE_SUBDIR), \ 24155679Sshin )) 242126193Sandre 24338513Sdfr PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE) 2441541Srgrimes 2451541Srgrimes $(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \ 2461541Srgrimes BUNDLE_NAME := $(JRE_BUNDLE_NAME), \ 24755679Sshin FILES := $(JRE_BUNDLE_FILES), \ 24855679Sshin BASE_DIRS := $(JRE_IMAGE_DIR), \ 2491541Srgrimes SUBDIR := $(JRE_BUNDLE_SUBDIR), \ 25055679Sshin )) 25155679Sshin 2521541Srgrimes PRODUCT_TARGETS += $(BUILD_JRE_BUNDLE) 2531541Srgrimes 2541541Srgrimes $(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \ 2551541Srgrimes BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \ 2561541Srgrimes FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \ 2571541Srgrimes BASE_DIRS := $(JDK_IMAGE_DIR) $(wildcard $(SYMBOLS_IMAGE_DIR)), \ 25838513Sdfr SUBDIR := $(JDK_BUNDLE_SUBDIR), \ 259167785Sandre UNZIP_DEBUGINFO := true, \ 2601541Srgrimes )) 26155679Sshin 2621541Srgrimes PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE) 26355679Sshin 264190948Srwatson $(eval $(call SetupBundleFile, BUILD_JRE_SYMBOLS_BUNDLE, \ 265190948Srwatson BUNDLE_NAME := $(JRE_SYMBOLS_BUNDLE_NAME), \ 2661541Srgrimes FILES := $(JRE_SYMBOLS_BUNDLE_FILES), \ 267265122Sdelphij BASE_DIRS := $(JRE_IMAGE_DIR), \ 268285979Sdelphij SUBDIR := $(JRE_BUNDLE_SUBDIR), \ 269126193Sandre UNZIP_DEBUGINFO := true, \ 2706283Swollman )) 2716283Swollman 2726283Swollman PRODUCT_TARGETS += $(BUILD_JRE_SYMBOLS_BUNDLE) 2736283Swollman 2746283Swollman $(eval $(call SetupBundleFile, BUILD_DEMOS_BUNDLE, \ 2756283Swollman BUNDLE_NAME := $(DEMOS_BUNDLE_NAME), \ 2766283Swollman FILES := $(DEMOS_BUNDLE_FILES), \ 2771541Srgrimes BASE_DIRS := $(JDK_IMAGE_DIR), \ 2781541Srgrimes SUBDIR := $(JDK_BUNDLE_SUBDIR), \ 27955679Sshin )) 28055679Sshin 2811541Srgrimes PRODUCT_TARGETS += $(BUILD_DEMOS_BUNDLE) 2821541Srgrimesendif 283217126Sjhb 284190948Srwatson################################################################################ 285190948Srwatson 2861541Srgrimesifneq ($(filter profiles-bundles, $(MAKECMDGOALS)), ) 2871541Srgrimes ifeq ($(OPENJDK_TARGET_OS), macosx) 2881541Srgrimes $(error Creating compact profiles bundles on macosx is unsupported) 2891541Srgrimes endif 2901541Srgrimes 29138513Sdfr define GenerateCompactProfilesBundles 292167785Sandre ALL_JRE_COMPACT$1_FILES := $$(call CacheFind, $$(JRE_COMPACT$1_IMAGE_DIR)) 2931541Srgrimes 2941541Srgrimes JRE_COMPACT$1_BUNDLE_FILES := $$(filter-out \ 29555679Sshin $$(SYMBOLS_EXCLUDE_PATTERN), \ 29655679Sshin $$(ALL_JRE_COMPACT$1_FILES)) 29755679Sshin 29855679Sshin $$(eval $$(call SetupBundleFile, BUILD_JRE_COMPACT$1_BUNDLE, \ 2991541Srgrimes BUNDLE_NAME := $$(JRE_COMPACT$1_BUNDLE_NAME), \ 3001541Srgrimes FILES := $$(JRE_COMPACT$1_BUNDLE_FILES), \ 30138513Sdfr BASE_DIRS := $$(JRE_COMPACT$1_IMAGE_DIR), \ 30255679Sshin SUBDIR := $$(JRE_COMPACT$1_BUNDLE_SUBDIR), \ 30355679Sshin )) 30455679Sshin 305285979Sdelphij PROFILES_TARGETS += $$(BUILD_JRE_COMPACT$1_BUNDLE) 306126193Sandre endef 30738513Sdfr 3081541Srgrimes $(eval $(call GenerateCompactProfilesBundles,1)) 3091541Srgrimes $(eval $(call GenerateCompactProfilesBundles,2)) 31055679Sshin $(eval $(call GenerateCompactProfilesBundles,3)) 31155679Sshinendif 31255679Sshin 31355679Sshin################################################################################ 31455679Sshin 31538513Sdfrifneq ($(filter test-bundles, $(MAKECMDGOALS)), ) 31655679Sshin TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR)) 31738513Sdfr 318226113Sandre $(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \ 319226113Sandre BUNDLE_NAME := $(TEST_BUNDLE_NAME), \ 32055679Sshin FILES := $(TEST_BUNDLE_FILES), \ 32138513Sdfr BASE_DIRS := $(TEST_IMAGE_DIR), \ 3221541Srgrimes )) 3231541Srgrimes 3241541Srgrimes TEST_TARGETS += $(BUILD_TEST_BUNDLE) 3251541Srgrimesendif 3261541Srgrimes 3271541Srgrimes################################################################################ 3286283Swollman 3291541Srgrimesifneq ($(filter docs-bundles, $(MAKECMDGOALS)), ) 33055679Sshin DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR)) 33155679Sshin 3321541Srgrimes $(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \ 333131151Srwatson BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \ 3341541Srgrimes FILES := $(DOCS_BUNDLE_FILES), \ 33555679Sshin BASE_DIRS := $(DOCS_IMAGE_DIR), \ 33655679Sshin SUBDIR := docs, \ 33755679Sshin )) 33855679Sshin 339130480Srwatson DOCS_TARGETS += $(BUILD_DOCS_BUNDLE) 34055679Sshinendif 34197658Stanimura 342131151Srwatson################################################################################ 343226113Sandre 344285979Sdelphij# Hook to include the corresponding custom file, if present. 345126193Sandre$(eval $(call IncludeCustomExtension, , Bundles.gmk)) 34638513Sdfr 34755679Sshin################################################################################ 34855679Sshin 349131151Srwatsonproduct-bundles: $(PRODUCT_TARGETS) 3501541Srgrimesprofiles-bundles: $(PROFILES_TARGETS) 3511541Srgrimestest-bundles: $(TEST_TARGETS) 352docs-bundles: $(DOCS_TARGETS) 353 354.PHONY: all default product-bundles profiles-bundles test-bundles docs-bundles 355