aggregate.make   [plain text]


##
# Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
#
# @APPLE_LICENSE_HEADER_START@
# 
# The contents of this file constitute Original Code as defined in and
# are subject to the Apple Public Source License Version 1.1 (the
# "License").  You may not use this file except in compliance with the
# License.  Please obtain a copy of the License at
# http://www.apple.com/publicsource and read it before using this file.
# 
# This Original Code and all software distributed under the License are
# distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
# License for the specific language governing rights and limitations
# under the License.
# 
# @APPLE_LICENSE_HEADER_END@
##
#
# aggregate.make
#
# Variable definitions and rules for building aggregate projects.  An
# aggregate is a project which does not itself contain any code or
# resources, but instead contains a number of related subprojects.  For
# example, if you have a framework, a palette which palettizes the framework
# classes, and some applications which use the palette, then you would
# create an aggregate which contains all of them.
#
# PUBLIC TARGETS
#    aggregate: synonymous with all
#
# IMPORTED VARIABLES
#    none
#
# EXPORTED VARIABLES
#    none
#

.PHONY: aggregate all
aggregate: all
PROJTYPE = AGGREGATE

include $(MAKEFILEDIR)/common.make

-include $(LOCAL_MAKEFILEDIR)/aggregate.make.preamble

#
# ensure that subprojects will have access to each other's products
#

RECURSIVE_CFLAGS += -I$(BUILD_SYMROOT)/Headers -I$(BUILD_SYMROOT)/PrivateHeaders -F$(SYMROOT)
RECURSIVE_LDFLAGS += -F$(SYMROOT) -L$(SYMROOT)

#
# unlike most project types, the aggregate does no processing on its
# own and simply recursively invokes the given target on all subprojects
#

ifneq "YES" "$(SUPPRESS_BUILD)"
all: banner-for-all $(RECURSABLE_DIRS:%=all@%)
clean: banner-for-clean $(RECURSABLE_DIRS:%=clean@%)
mostlyclean: banner-for-mostlyclean $(RECURSABLE_DIRS:%=mostlyclean@%)
depend: banner-for-depend $(RECURSABLE_DIRS:%=depend@%)
prebuild: banner-for-prebuild $(RECURSABLE_DIRS:%=prebuild@%)
build: banner-for-build $(RECURSABLE_DIRS:%=build@%)
installhdrs: banner-for-installhdrs $(RECURSABLE_DIRS:%=installhdrs@%)
ifeq ($(OS)-$(REINSTALLING)-$(STRIP_ON_INSTALL), WINDOWS--YES)
install: all
	$(MAKE) reinstall-stripped REINSTALLING=YES
else
install: banner-for-install $(BEFORE_INSTALL) $(RECURSABLE_DIRS:%=install@%) $(AFTER_INSTALL)
endif
else
all clean mostlyclean depend prebuild build installhdrs install:
endif


$(RECURSABLE_DIRS:%=all@%): banner-for-all
$(RECURSABLE_DIRS:%=clean@%): banner-for-clean
$(RECURSABLE_DIRS:%=mostlyclean@%): banner-for-mostlyclean
$(RECURSABLE_DIRS:%=depend@%): banner-for-depend
$(RECURSABLE_DIRS:%=prebuild@%): banner-for-prebuild
$(RECURSABLE_DIRS:%=build@%): banner-for-build
$(RECURSABLE_DIRS:%=installhdrs@%): banner-for-installhdrs
$(RECURSABLE_DIRS:%=install@%): banner-for-install

BANNER_TARGET = $(subst banner-for-,,$@)
banner-for-%:
	$(SILENT) $(ECHO) == Making $(BANNER_TARGET) for $(TARGET_ARCHS) in $(ALL_SUBPROJECTS) ==

# 
# Special rules for making stripped targets on NT
# Note that this section is duplicated in install.make, and any
# changes made here must be reflected there.  
#

ifeq "$(OS)" "WINDOWS"
include $(MAKEFILEDIR)/reinstall.make
endif

-include $(LOCAL_MAKEFILEDIR)/aggregate.make.postamble