#
#
#  Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of version 2 of the GNU General Public License as
#  published by the Free Software Foundation.
#
#  This program is distributed in the hope that it would be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
#
#  Further, this software is distributed without any warranty that it is
#  free of the rightful claim of any third person regarding infringement 
#  or the like.  Any license provided herein, whether implied or 
#  otherwise, applies only to this software file.  Patent licenses, if 
#  any, provided herein do not apply to combinations of this program with 
#  other software, or any other product whatsoever.  
#
#  You should have received a copy of the GNU General Public License along
#  with this program; if not, write the Free Software Foundation, Inc., 59
#  Temple Place - Suite 330, Boston MA 02111-1307, USA.
#
#  Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
#  Mountain View, CA 94043, or:
#
#  http://www.sgi.com
#
#  For further information regarding this notice, see:
#
#  http://oss.sgi.com/projects/GenInfo/NoticeExplan
#
#

#ident "$Revision: 1.3 $"
#
# Common makefile rules.
#
# Notes:
#	- After including $(ROOT)/usr/include/make/commondefs, a makefile may
#	  say ``include $(COMMONRULES)'' to get this file.
#	- It is up to the including makefile to define a default rule before
#	  including $(COMMONRULES).
#	- The parent makefile must define TARGETS in order for clobber to work.
#
#	- if BUILD_SUBDIRS is set, then iterate over that for the COMMONTARGS

#
# An always-unsatisfied target.  The name is unlikely to occur in a file tree,
# but if _force existed in a make's current directory, this target would be
# always-satisfied and targets that depended on it would not be made.
#
$(_FORCE):

#
# File removal rules: there are three.
#	- clean removes dirt
#	- clobber removes targets, dirt, and Makedepend
#	- rmtargets removes targets only
# One might 'make clean' in a large tree to reclaim disk space after targets
# are built, but before they are archived into distribution images on disk.
# One might 'make rmtargets' to remove badly-linked executables, and then
# run a 'make' to re-link the good objects.
#
CWD := $(shell pwd)

ifdef BUILD_SUBDIRS
# use separate clobber so don't recurse on each sub-target
clobber: $(_FORCE)
	rm -rf $(DIRT)
	rm -rf $(TARGETS)
	rm -rf $(MKDEPFILE)
	rm -rf $(PLATFORM_DIRTS_COMMON)
	rm -rf $(PLATFORM_DIRTS_SPECIFIC)
	@for d in $(BUILD_SUBDIRS); do cd $(CWD)/$$d && $(MAKE) $@; done
else
clobber: clean rmtargets $(_FORCE)
	rm -rf $(DIRT)
	rm -rf $(TARGETS)
endif

clean: $(_FORCE)
#	rm -rf $(DIRT)
	rm -rf *.o *.a *~ .*~ \#*
	rm -rf $(MKDEPFILE)
	rm -rf $(PLATFORM_DIRTS_COMMON)
	rm -rf $(PLATFORM_DIRTS_SPECIFIC)
ifdef BUILD_SUBDIRS
	@for d in $(BUILD_SUBDIRS); do cd $(CWD)/$$d && $(MAKE) $@; done
endif

rmtargets: $(_FORCE)
	rm -rf $(TARGETS)
ifdef BUILD_SUBDIRS
	@for d in $(BUILD_SUBDIRS); do cd $(CWD)/$$d && $(MAKE) $@; done
endif

#
# A better version of smake's makelib.mk rule.
# XXX fix makelib.mk in next release and remove this rule.
#
MAKELIB: .USE .PRECIOUS
	$(AR) c$(ARFLAGS) $@ $?
	rm -f $?

#
# Use tools/DependenceGenerator and tools/DependenceVerify to handle
# file dependence checking, so we don't need to bother uncompatible
# mechanisms on different platforms and compilers
#
make_deps:

make_libdeps :

#
# Local make rules
#
-include $(LOCALRULES)
