Deleted Added
full compact
bsd.prog.mk (94518) bsd.prog.mk (94940)
1# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
1# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
2# $FreeBSD: head/share/mk/bsd.prog.mk 94518 2002-04-12 16:25:13Z ru $
2# $FreeBSD: head/share/mk/bsd.prog.mk 94940 2002-04-17 13:49:29Z ru $
3
3
4.if !target(__initialized__)
5__initialized__:
6.if exists(${.CURDIR}/../Makefile.inc)
7.include "${.CURDIR}/../Makefile.inc"
8.endif
9.endif
4.include <bsd.init.mk>
10
11.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
12
13CFLAGS+=${COPTS} ${DEBUG_FLAGS}
14
15.if !defined(DEBUG_FLAGS)
16STRIP?= -s
17.endif
18
19.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
20LDFLAGS+= -static
21.endif
22
23.if defined(PROG_CXX)
24PROG= ${PROG_CXX}
25.endif
26
27.if defined(PROG)
28.if defined(SRCS)
29
30# If there are Objective C sources, link with Objective C libraries.
31.if ${SRCS:M*.m} != ""
32OBJCLIBS?= -lobjc
33LDADD+= ${OBJCLIBS}
34.endif
35
36OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
37
38${PROG}: ${OBJS}
39.if defined(PROG_CXX)
40 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
41.else
42 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
43.endif
44
45.else !defined(SRCS)
46
47.if !target(${PROG})
48.if defined(PROG_CXX)
49SRCS= ${PROG}.cc
50.else
51SRCS= ${PROG}.c
52.endif
53
54# Always make an intermediate object file because:
55# - it saves time rebuilding when only the library has changed
56# - the name of the object gets put into the executable symbol table instead of
57# the name of a variable temporary object.
58# - it's useful to keep objects around for crunching.
59OBJS= ${PROG}.o
60
61${PROG}: ${OBJS}
62.if defined(PROG_CXX)
63 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
64.else
65 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
66.endif
67.endif
68
69.endif
70
71.if !defined(NOMAN) && !defined(MAN) && \
72 !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
73 !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
74 !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
75 !defined(MAN1aout)
76MAN= ${PROG}.1
77MAN1= ${MAN}
78.endif
79.endif
80
5
6.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
7
8CFLAGS+=${COPTS} ${DEBUG_FLAGS}
9
10.if !defined(DEBUG_FLAGS)
11STRIP?= -s
12.endif
13
14.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
15LDFLAGS+= -static
16.endif
17
18.if defined(PROG_CXX)
19PROG= ${PROG_CXX}
20.endif
21
22.if defined(PROG)
23.if defined(SRCS)
24
25# If there are Objective C sources, link with Objective C libraries.
26.if ${SRCS:M*.m} != ""
27OBJCLIBS?= -lobjc
28LDADD+= ${OBJCLIBS}
29.endif
30
31OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
32
33${PROG}: ${OBJS}
34.if defined(PROG_CXX)
35 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
36.else
37 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
38.endif
39
40.else !defined(SRCS)
41
42.if !target(${PROG})
43.if defined(PROG_CXX)
44SRCS= ${PROG}.cc
45.else
46SRCS= ${PROG}.c
47.endif
48
49# Always make an intermediate object file because:
50# - it saves time rebuilding when only the library has changed
51# - the name of the object gets put into the executable symbol table instead of
52# the name of a variable temporary object.
53# - it's useful to keep objects around for crunching.
54OBJS= ${PROG}.o
55
56${PROG}: ${OBJS}
57.if defined(PROG_CXX)
58 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
59.else
60 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
61.endif
62.endif
63
64.endif
65
66.if !defined(NOMAN) && !defined(MAN) && \
67 !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
68 !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
69 !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
70 !defined(MAN1aout)
71MAN= ${PROG}.1
72MAN1= ${MAN}
73.endif
74.endif
75
81.MAIN: all
82all: objwarn ${PROG} ${SCRIPTS} ${FILES}
83.if !defined(NOMAN)
84all: all-man
85.endif
86all: _SUBDIR
87
88CLEANFILES+= ${PROG} ${OBJS}
89
90.if defined(PROG)
91_EXTRADEPEND:
92.if ${OBJFORMAT} == aout
93 echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} \
94 ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
95.else
96 echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
97.if defined(PROG_CXX)
98 echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
99.endif
100.endif
101.endif
102
103.if !target(install)
104.if !target(beforeinstall)
105beforeinstall:
106.endif
107
108_INSTALLFLAGS:= ${INSTALLFLAGS}
109.for ie in ${INSTALLFLAGS_EDIT}
110_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
111.endfor
112
113realinstall: beforeinstall
114.if defined(PROG)
115.if defined(PROGNAME)
116 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
117 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
118.else
119 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
120 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
121.endif
122.endif
123.if defined(HIDEGAME)
124 (cd ${DESTDIR}${ORIGBINDIR}; ln -fs dm ${PROG}; \
125 chown -h ${BINOWN}:${ORIGBINGRP} ${PROG})
126.endif
127.if defined(LINKS) && !empty(LINKS)
128 @set ${LINKS}; \
129 while test $$# -ge 2; do \
130 l=${DESTDIR}$$1; \
131 shift; \
132 t=${DESTDIR}$$1; \
133 shift; \
134 ${ECHO} $$t -\> $$l; \
135 ln -f $$l $$t; \
136 done; true
137.endif
138.if defined(SYMLINKS) && !empty(SYMLINKS)
139 @set ${SYMLINKS}; \
140 while test $$# -ge 2; do \
141 l=$$1; \
142 shift; \
143 t=${DESTDIR}$$1; \
144 shift; \
145 ${ECHO} $$t -\> $$l; \
146 ln -fs $$l $$t; \
147 done; true
148.endif
149
150.if defined(SCRIPTS) && !empty(SCRIPTS)
151realinstall: _scriptsinstall
152
153SCRIPTSDIR?= ${BINDIR}
154SCRIPTSOWN?= ${BINOWN}
155SCRIPTSGRP?= ${BINGRP}
156SCRIPTSMODE?= ${BINMODE}
157
158.for script in ${SCRIPTS}
159.if defined(SCRIPTSNAME)
160SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
161.else
162SCRIPTSNAME_${script:T}?= ${script:T:R}
163.endif
164SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
165SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
166SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
167SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
168_scriptsinstall: _SCRIPTSINS_${script:T}
169_SCRIPTSINS_${script:T}: ${script}
170 ${INSTALL} ${COPY} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
171 -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
172 ${_INSTALLFLAGS} ${.ALLSRC} \
173 ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
174.endfor
175.endif
176
177.if defined(FILES) && !empty(FILES)
178realinstall: _filesinstall
179
180FILESDIR?= ${BINDIR}
181FILESOWN?= ${SHAREOWN}
182FILESGRP?= ${SHAREGRP}
183FILESMODE?= ${SHAREMODE}
184
185.for file in ${FILES}
186.if defined(FILESNAME)
187FILESNAME_${file:T}?= ${FILESNAME}
188.else
189FILESNAME_${file:T}?= ${file:T}
190.endif
191FILESDIR_${file:T}?= ${FILESDIR}
192FILESOWN_${file:T}?= ${FILESOWN}
193FILESGRP_${file:T}?= ${FILESGRP}
194FILESMODE_${file:T}?= ${FILESMODE}
195_filesinstall: _FILESINS_${file:T}
196_FILESINS_${file:T}: ${file}
197 ${INSTALL} ${COPY} -o ${FILESOWN_${.ALLSRC:T}} \
198 -g ${FILESGRP_${.ALLSRC:T}} -m ${FILESMODE_${.ALLSRC:T}} \
199 ${_INSTALLFLAGS} ${.ALLSRC} \
200 ${DESTDIR}${FILESDIR_${.ALLSRC:T}}/${FILESNAME_${.ALLSRC:T}}
201.endfor
202.endif
203
204install: afterinstall _SUBDIR
205.if !defined(NOMAN)
206afterinstall: realinstall maninstall
207.else
208afterinstall: realinstall
209.endif
210.endif
211
212DISTRIBUTION?= bin
213.if !target(distribute)
214distribute: _SUBDIR
215.for dist in ${DISTRIBUTION}
216 cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
217.endfor
218.endif
219
220.if !target(lint)
221lint: ${SRCS} _SUBDIR
222.if defined(PROG)
223 ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1
224.endif
225.endif
226
227.if defined(NOTAGS)
228tags:
229.endif
230
231.if !target(tags)
232tags: ${SRCS} _SUBDIR
233.if defined(PROG)
234 @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
235.if defined(HTML)
236 @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
237.endif
238.endif
239.endif
240
241.if !defined(NOMAN)
242.include <bsd.man.mk>
243.else
244.if !target(all-man)
245all-man:
246.endif
247.if !target(maninstall)
248maninstall:
249.endif
250.endif
251
252.if !target(regress)
253regress:
254.endif
255
256.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
257.include <bsd.libnames.mk>
258.endif
259
260.include <bsd.dep.mk>
261
262.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
263${OBJS}: ${SRCS:M*.h}
264.endif
265
266.include <bsd.obj.mk>
267
268.include <bsd.sys.mk>
76all: objwarn ${PROG} ${SCRIPTS} ${FILES}
77.if !defined(NOMAN)
78all: all-man
79.endif
80all: _SUBDIR
81
82CLEANFILES+= ${PROG} ${OBJS}
83
84.if defined(PROG)
85_EXTRADEPEND:
86.if ${OBJFORMAT} == aout
87 echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} \
88 ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
89.else
90 echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
91.if defined(PROG_CXX)
92 echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
93.endif
94.endif
95.endif
96
97.if !target(install)
98.if !target(beforeinstall)
99beforeinstall:
100.endif
101
102_INSTALLFLAGS:= ${INSTALLFLAGS}
103.for ie in ${INSTALLFLAGS_EDIT}
104_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
105.endfor
106
107realinstall: beforeinstall
108.if defined(PROG)
109.if defined(PROGNAME)
110 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
111 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
112.else
113 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
114 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
115.endif
116.endif
117.if defined(HIDEGAME)
118 (cd ${DESTDIR}${ORIGBINDIR}; ln -fs dm ${PROG}; \
119 chown -h ${BINOWN}:${ORIGBINGRP} ${PROG})
120.endif
121.if defined(LINKS) && !empty(LINKS)
122 @set ${LINKS}; \
123 while test $$# -ge 2; do \
124 l=${DESTDIR}$$1; \
125 shift; \
126 t=${DESTDIR}$$1; \
127 shift; \
128 ${ECHO} $$t -\> $$l; \
129 ln -f $$l $$t; \
130 done; true
131.endif
132.if defined(SYMLINKS) && !empty(SYMLINKS)
133 @set ${SYMLINKS}; \
134 while test $$# -ge 2; do \
135 l=$$1; \
136 shift; \
137 t=${DESTDIR}$$1; \
138 shift; \
139 ${ECHO} $$t -\> $$l; \
140 ln -fs $$l $$t; \
141 done; true
142.endif
143
144.if defined(SCRIPTS) && !empty(SCRIPTS)
145realinstall: _scriptsinstall
146
147SCRIPTSDIR?= ${BINDIR}
148SCRIPTSOWN?= ${BINOWN}
149SCRIPTSGRP?= ${BINGRP}
150SCRIPTSMODE?= ${BINMODE}
151
152.for script in ${SCRIPTS}
153.if defined(SCRIPTSNAME)
154SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
155.else
156SCRIPTSNAME_${script:T}?= ${script:T:R}
157.endif
158SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
159SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
160SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
161SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
162_scriptsinstall: _SCRIPTSINS_${script:T}
163_SCRIPTSINS_${script:T}: ${script}
164 ${INSTALL} ${COPY} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
165 -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
166 ${_INSTALLFLAGS} ${.ALLSRC} \
167 ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
168.endfor
169.endif
170
171.if defined(FILES) && !empty(FILES)
172realinstall: _filesinstall
173
174FILESDIR?= ${BINDIR}
175FILESOWN?= ${SHAREOWN}
176FILESGRP?= ${SHAREGRP}
177FILESMODE?= ${SHAREMODE}
178
179.for file in ${FILES}
180.if defined(FILESNAME)
181FILESNAME_${file:T}?= ${FILESNAME}
182.else
183FILESNAME_${file:T}?= ${file:T}
184.endif
185FILESDIR_${file:T}?= ${FILESDIR}
186FILESOWN_${file:T}?= ${FILESOWN}
187FILESGRP_${file:T}?= ${FILESGRP}
188FILESMODE_${file:T}?= ${FILESMODE}
189_filesinstall: _FILESINS_${file:T}
190_FILESINS_${file:T}: ${file}
191 ${INSTALL} ${COPY} -o ${FILESOWN_${.ALLSRC:T}} \
192 -g ${FILESGRP_${.ALLSRC:T}} -m ${FILESMODE_${.ALLSRC:T}} \
193 ${_INSTALLFLAGS} ${.ALLSRC} \
194 ${DESTDIR}${FILESDIR_${.ALLSRC:T}}/${FILESNAME_${.ALLSRC:T}}
195.endfor
196.endif
197
198install: afterinstall _SUBDIR
199.if !defined(NOMAN)
200afterinstall: realinstall maninstall
201.else
202afterinstall: realinstall
203.endif
204.endif
205
206DISTRIBUTION?= bin
207.if !target(distribute)
208distribute: _SUBDIR
209.for dist in ${DISTRIBUTION}
210 cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
211.endfor
212.endif
213
214.if !target(lint)
215lint: ${SRCS} _SUBDIR
216.if defined(PROG)
217 ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1
218.endif
219.endif
220
221.if defined(NOTAGS)
222tags:
223.endif
224
225.if !target(tags)
226tags: ${SRCS} _SUBDIR
227.if defined(PROG)
228 @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
229.if defined(HTML)
230 @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
231.endif
232.endif
233.endif
234
235.if !defined(NOMAN)
236.include <bsd.man.mk>
237.else
238.if !target(all-man)
239all-man:
240.endif
241.if !target(maninstall)
242maninstall:
243.endif
244.endif
245
246.if !target(regress)
247regress:
248.endif
249
250.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
251.include <bsd.libnames.mk>
252.endif
253
254.include <bsd.dep.mk>
255
256.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
257${OBJS}: ${SRCS:M*.h}
258.endif
259
260.include <bsd.obj.mk>
261
262.include <bsd.sys.mk>