1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
# Copyright 1990 Silicon Graphics, Inc. All rights reserved.
#
#ident "$Revision: 1.2 $"
#
# Common makefile rules.
#
# Notes:
# - After including $(IVDEPTH)/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 the parent makefile must overload the common targets with special
# rules (e.g. to perform recursive or subdirectory makes), then set
# COMMONPREF to some unique prefix before including $(COMMONRULES),
# and make sure that each common target depends on its prefixed name.
# For example, a makefile which passes common targets and install on
# to makes in subdirectories listed in DIRS might say
#
# COMMONPREF=xxx
# include $(COMMONRULES)
#
# $(COMMONTARGS) install: $(COMMONPREF)$$@
# @for d in $(DIRS); do \
# $(ECHO) "\tcd $$d; $(MAKE) $@"; \
# cd $$d; $(MAKE) $@; cd ..; \
# done
#
# Thus, all of the common rules plus install are passed to sub-makes
# *and* executed in the current makefile (as xxxclean, xxxclobber,
# xxxinstall, etc). SUBDIRS_MAKERULE in commondefs is a convenience
# macro that expands to the above loop.
#
#
# 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.
#
.PHONY: $(COMMONPREF)clobber $(COMMONPREF)clean $(COMMONPREF)rmtargets
$(COMMONPREF)clobber: $(COMMONPREF)clean $(COMMONPREF)rmtargets
rm -rf $(MKDEPFILE)
$(COMMONPREF)clean:
rm -rf $(DIRT)
$(COMMONPREF)rmtargets:
rm -rf $(TARGETS)
#
# Lint and C tags support.
#
.PHONY: $(COMMONPREF)fluff $(COMMONPREF)tags $(COMMONPREF)TAGS
$(COMMONPREF)fluff:
$(LINT) $(LINTFLAGS) $(CDEFS) $(CINCS) $(CFILES) $(LDLIBS)
CTAGS=ctags
$(COMMONPREF)tags:
rm -f tags
find . $(CTAGFILES) \
! -name '.*' ! -name 'llib-*' ! -name '*,v' \
$(CTAGFINDARGS) -print | \
sed 's:^\./::' | \
xargs $(CTAGS) -a $(CTAGOPTS)
if test -f tags; then \
sort -u +0 -1 -o tags tags; \
fi
ETAGS=etags
$(COMMONPREF)TAGS:
rm -f TAGS
find . $(CTAGFILES) \
! -name '.*' ! -name 'llib-*' ! -name '*,v' \
$(CTAGFINDARGS) -print | \
sed 's:^\./::' | \
xargs $(ETAGS) -a $(ETAGOPTS)
#
# Implicit rule to compile files with .c++ extension.
#
.SUFFIXES: .c++
.c++.o:
$(CXX) $(CXXFLAGS) -c $<
#
# Include the make dependency file if it exists.
#
sinclude $(MKDEPFILE)
#
# Local make rules
#
sinclude $(LOCALRULES)
|