Makefile.subdirs revision 919
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# -*- Makefile -*- rules commonly shared among X consolidation open source dirs
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Makefile.subdirs has rules for recursively iterating through module subdirs
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Use is subject to license terms.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Permission is hereby granted, free of charge, to any person obtaining a
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# copy of this software and associated documentation files (the "Software"),
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# to deal in the Software without restriction, including without limitation
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# the rights to use, copy, modify, merge, publish, distribute, sublicense,
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# and/or sell copies of the Software, and to permit persons to whom the
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Software is furnished to do so, subject to the following conditions:
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# The above copyright notice and this permission notice (including the next
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# paragraph) shall be included in all copies or substantial portions of the
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Software.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3fc1b5e9b2ff286cd528a06154cc998198de1e70Craig McDonnell# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
3fc1b5e9b2ff286cd528a06154cc998198de1e70Craig McDonnell# DEALINGS IN THE SOFTWARE.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major#
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Need to set $MACH
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorinclude $(TOP)/common/Makefile.init
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter MajorOS_SUBDIRS=$(OS_SUBDIRS_$(MACH))
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major.DEFAULT:
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major $(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=$@
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter MajorWorld: clean all
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorclean: clean-subdirs clean-obsolete-subdirs
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorclean-subdirs:
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major $(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=clean
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorsubdirs: $(OS_SUBDIRS)
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major$(OS_SUBDIRS): ALWAYS_RUN
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @case '${MAKEFLAGS}' in *[ik]*) set +e;; esac; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major cd $@ ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major print "## making" $(OS_TARGET) "in open-src/$(DIRNAME)$@..."; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major $(MAKE) $(MAKEFLAGS) CDEBUGFLAGS="$(CDEBUGFLAGS)" $(OS_TARGET)
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorclean-obsolete-subdirs:
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @ set +e; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major if [[ ! -z "$(OBSOLETE_SUBDIRS)" ]] ; then \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major for i in $(OBSOLETE_SUBDIRS) ; do \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major if [[ -d $$i ]] ; then \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major if [[ -f $$i/Makefile ]] ; then \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major $(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=clean OS_SUBDIRS=$$i ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major else ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major print "## removing obsolete build directories in open-src/$(DIRNAME)$$i..."; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major ($(START_CMD_ECHO) ; \
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford cd $$i && rm -rf build_32 build_64 ) ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major if [[ -d $$i/SCCS ]] ; then \
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford ($(START_CMD_ECHO) ; rmdir $$i/SCCS) ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major fi ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major ($(START_CMD_ECHO) ; rmdir $$i ) ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major fi ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major fi ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major done ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major fi ; \
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major return 0
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Dummy target to force another target to always be run, even if a file
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford# or directory with the same name already exists (as it will for subdirs)
218850cd2701baccfca6d95a95e7bcbffe1293cePeter MajorALWAYS_RUN:
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major# Tell dmake it can build subdirs in parallel
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major.PARALLEL: $(OS_SUBDIRS)
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major