commonrules
2.81 KB
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
# Copyright 1990 Silicon Graphics, Inc. All rights reserved.
#
#ident "$Revision: 1.2 $"
#
# 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 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.
#
#
# 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.
#
$(COMMONPREF)clobber: $(COMMONPREF)clean $(COMMONPREF)rmtargets $(_FORCE)
rm -rf $(MKDEPFILE)
$(COMMONPREF)clean: $(_FORCE)
rm -rf $(DIRT)
$(COMMONPREF)rmtargets: $(_FORCE)
rm -rf $(TARGETS)
#
# Lint and C tags support.
#
$(COMMONPREF)fluff: $(_FORCE)
$(LINT) $(LINTFLAGS) $(CDEFS) $(CINCS) $(CFILES) $(LDLIBS)
CTAGS=ctags
$(COMMONPREF)tags: $(_FORCE)
rm -f tags
find . \( -name '*.[cfhlpy]' -o -name '*.c++' \) \
! -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
#
# 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 $?
#
# Include the make dependency file if it exists.
#
sinclude $(MKDEPFILE)
#
# Local make rules
#
sinclude $(LOCALRULES)