1 # from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
4 .if !target(__initialized__)
6 .if exists(${.CURDIR}/../Makefile.inc)
7 .include "${.CURDIR}/../Makefile.inc"
11 .SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
13 CFLAGS+=${COPTS} ${DEBUG_FLAGS}
15 .if !defined(DEBUG_FLAGS)
19 .if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
26 # If there are Objective C sources, link with Objective C libraries.
27 .if ${SRCS:M*.m} != ""
32 OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
35 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
42 # Always make an intermediate object file because:
43 # - it saves time rebuilding when only the library has changed
44 # - the name of the object gets put into the executable symbol table instead of
45 # the name of a variable temporary object.
46 # - it's useful to keep objects around for crunching.
50 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
55 .if !defined(NOMAN) && !defined(MAN) && \
56 !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
57 !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
58 !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
66 all: objwarn ${PROG} ${SCRIPTS} ${FILES}
72 CLEANFILES+= ${PROG} ${OBJS}
76 .if ${OBJFORMAT} == aout
77 echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \
78 ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
80 echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
85 .if !target(beforeinstall)
89 _INSTALLFLAGS:= ${INSTALLFLAGS}
90 .for ie in ${INSTALLFLAGS_EDIT}
91 _INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
94 realinstall: beforeinstall
97 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
98 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
100 ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
101 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
104 .if defined(HIDEGAME)
105 (cd ${DESTDIR}${ORIGBINDIR}; ln -fs dm ${PROG}; \
106 chown -h ${BINOWN}:${ORIGBINGRP} ${PROG})
108 .if defined(LINKS) && !empty(LINKS)
110 while test $$# -ge 2; do \
115 ${ECHO} $$t -\> $$l; \
119 .if defined(SYMLINKS) && !empty(SYMLINKS)
121 while test $$# -ge 2; do \
126 ${ECHO} $$t -\> $$l; \
131 .if defined(SCRIPTS) && !empty(SCRIPTS)
132 realinstall: _scriptsinstall
134 SCRIPTSDIR?= ${BINDIR}
135 SCRIPTSOWN?= ${BINOWN}
136 SCRIPTSGRP?= ${BINGRP}
137 SCRIPTSMODE?= ${BINMODE}
139 .for script in ${SCRIPTS}
140 .if defined(SCRIPTSNAME)
141 SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
143 SCRIPTSNAME_${script:T}?= ${script:T:R}
145 SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
146 SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
147 SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
148 SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
149 _scriptsinstall: _SCRIPTSINS_${script:T}
150 _SCRIPTSINS_${script:T}: ${script}
151 ${INSTALL} ${COPY} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
152 -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
153 ${_INSTALLFLAGS} ${.ALLSRC} \
154 ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
158 .if defined(FILES) && !empty(FILES)
159 realinstall: _filesinstall
162 FILESOWN?= ${SHAREOWN}
163 FILESGRP?= ${SHAREGRP}
164 FILESMODE?= ${SHAREMODE}
166 .for file in ${FILES}
167 .if defined(FILESNAME)
168 FILESNAME_${file:T}?= ${FILESNAME}
170 FILESNAME_${file:T}?= ${file:T}
172 FILESDIR_${file:T}?= ${FILESDIR}
173 FILESOWN_${file:T}?= ${FILESOWN}
174 FILESGRP_${file:T}?= ${FILESGRP}
175 FILESMODE_${file:T}?= ${FILESMODE}
176 _filesinstall: _FILESINS_${file:T}
177 _FILESINS_${file:T}: ${file}
178 ${INSTALL} ${COPY} -o ${FILESOWN_${.ALLSRC:T}} \
179 -g ${FILESGRP_${.ALLSRC:T}} -m ${FILESMODE_${.ALLSRC:T}} \
180 ${_INSTALLFLAGS} ${.ALLSRC} \
181 ${DESTDIR}${FILESDIR_${.ALLSRC:T}}/${FILESNAME_${.ALLSRC:T}}
185 install: afterinstall _SUBDIR
187 afterinstall: realinstall maninstall
189 afterinstall: realinstall
194 .if !target(distribute)
196 .for dist in ${DISTRIBUTION}
197 cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
202 lint: ${SRCS} _SUBDIR
204 ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1
213 tags: ${SRCS} _SUBDIR
215 @cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
217 @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
223 .include <bsd.man.mk>
228 .if !target(maninstall)
237 .if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
238 .include <bsd.libnames.mk>
241 .include <bsd.dep.mk>
243 .if defined(PROG) && !exists(${DEPENDFILE})
244 ${OBJS}: ${SRCS:M*.h}
247 .include <bsd.obj.mk>
249 .include <bsd.sys.mk>