xref: /freebsd/share/mk/bsd.lib.mk (revision 4df1f59e8f2f4078f1f9eea17a40c335294a7f4b)
13585b293SGarrett Wollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
27f3dea24SPeter Wemm# $FreeBSD$
33585b293SGarrett Wollman#
4afe61c15SRodney W. Grimes
52bdaf7e8SRuslan Ermilov.include <bsd.init.mk>
6afe61c15SRodney W. Grimes
7f67eb0dcSJohn Polstra# Set up the variables controlling shared libraries.  After this section,
8f67eb0dcSJohn Polstra# SHLIB_NAME will be defined only if we are to create a shared library.
9f67eb0dcSJohn Polstra# SHLIB_LINK will be defined only if we are to create a link to it.
10f67eb0dcSJohn Polstra# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive.
11ab7a2947SRuslan Ermilov.if defined(NO_PIC)
12f67eb0dcSJohn Polstra.undef SHLIB_NAME
13f67eb0dcSJohn Polstra.undef INSTALL_PIC_ARCHIVE
14f67eb0dcSJohn Polstra.else
1510717e2eSDag-Erling Smørgrav.if !defined(SHLIB) && defined(LIB)
1610717e2eSDag-Erling SmørgravSHLIB=		${LIB}
1710717e2eSDag-Erling Smørgrav.endif
1810717e2eSDag-Erling Smørgrav.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR)
1910717e2eSDag-Erling SmørgravSHLIB_NAME=	lib${SHLIB}.so.${SHLIB_MAJOR}
2042c0ad02SRuslan Ermilov.endif
2165d2bdc6SRuslan Ermilov.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*)
2242c0ad02SRuslan ErmilovSHLIB_LINK?=	${SHLIB_NAME:R}
23f67eb0dcSJohn Polstra.endif
24f67eb0dcSJohn PolstraSONAME?=	${SHLIB_NAME}
25e782d0b5SPeter Wemm.endif
26e782d0b5SPeter Wemm
2741f89315SRuslan Ermilov.if defined(CRUNCH_CFLAGS)
283c9b8563SGordon TetlowCFLAGS+=	${CRUNCH_CFLAGS}
2941f89315SRuslan Ermilov.endif
303c9b8563SGordon Tetlow
314df1f59eSWarner Losh.if ${MK_ASSERT_DEBUG} == "no"
324df1f59eSWarner LoshCFLAGS+= -DNDEBUG
334df1f59eSWarner Losh.endif
344df1f59eSWarner Losh
35e82b0b99SJordan K. Hubbard.if defined(DEBUG_FLAGS)
36e82b0b99SJordan K. HubbardCFLAGS+= ${DEBUG_FLAGS}
37e82b0b99SJordan K. Hubbard.endif
38e82b0b99SJordan K. Hubbard
39e82b0b99SJordan K. Hubbard.if !defined(DEBUG_FLAGS)
40afe61c15SRodney W. GrimesSTRIP?=	-s
41e82b0b99SJordan K. Hubbard.endif
42afe61c15SRodney W. Grimes
431a5ed802SBruce Evans.include <bsd.libnames.mk>
441a5ed802SBruce Evans
45afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
46f92bdbd0SJohn Polstra# .So used for PIC object files
47afe61c15SRodney W. Grimes.SUFFIXES:
48d58e932fSRuslan Ermilov.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
49766f7d6eSMark Murray
502a53f3fbSRuslan Ermilov.if !defined(PICFLAG)
512a53f3fbSRuslan Ermilov.if ${MACHINE_ARCH} == "sparc64"
522a53f3fbSRuslan ErmilovPICFLAG=-fPIC
532a53f3fbSRuslan Ermilov.else
542a53f3fbSRuslan ErmilovPICFLAG=-fpic
552a53f3fbSRuslan Ermilov.endif
562a53f3fbSRuslan Ermilov.endif
572a53f3fbSRuslan Ermilov
5806d6e4fcSTom Rhodes.if ${CC} == "icc"
5906d6e4fcSTom RhodesPO_FLAG=-p
6006d6e4fcSTom Rhodes.else
6106d6e4fcSTom RhodesPO_FLAG=-pg
6206d6e4fcSTom Rhodes.endif
6306d6e4fcSTom Rhodes
64afe61c15SRodney W. Grimes.c.po:
6506d6e4fcSTom Rhodes	${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
66afe61c15SRodney W. Grimes
67f92bdbd0SJohn Polstra.c.So:
683585b293SGarrett Wollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
693585b293SGarrett Wollman
70c7cbe79eSDmitrij Tejblum.cc.po .C.po .cpp.po .cxx.po:
7106d6e4fcSTom Rhodes	${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
723585b293SGarrett Wollman
73f92bdbd0SJohn Polstra.cc.So .C.So .cpp.So .cxx.So:
743585b293SGarrett Wollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
753585b293SGarrett Wollman
763585b293SGarrett Wollman.f.po:
779c8ff5b5SJohn Polstra	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
783585b293SGarrett Wollman
79f92bdbd0SJohn Polstra.f.So:
803585b293SGarrett Wollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
813585b293SGarrett Wollman
8270a6e331SBruce Evans.m.po:
8370a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
8470a6e331SBruce Evans
85f92bdbd0SJohn Polstra.m.So:
8670a6e331SBruce Evans	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8770a6e331SBruce Evans
88d58e932fSRuslan Ermilov.s.po .s.So:
89f79d11b7SRuslan Ermilov	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
903585b293SGarrett Wollman
91d58e932fSRuslan Ermilov.asm.po:
92d58e932fSRuslan Ermilov	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
93d58e932fSRuslan Ermilov
94d58e932fSRuslan Ermilov.asm.So:
95d58e932fSRuslan Ermilov	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
96d58e932fSRuslan Ermilov	    -c ${.IMPSRC} -o ${.TARGET}
97d58e932fSRuslan Ermilov
983585b293SGarrett Wollman.S.po:
99a51613b6SRuslan Ermilov	${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
1003585b293SGarrett Wollman
101f92bdbd0SJohn Polstra.S.So:
102a51613b6SRuslan Ermilov	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
1033585b293SGarrett Wollman
1042a53f3fbSRuslan Ermilovall: objwarn
1052a53f3fbSRuslan Ermilov
106ab52e991SDaniel Eischen# Generate the version map given the version definitions
107ab52e991SDaniel Eischen# and symbol maps.
108ab52e991SDaniel Eischen.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
109ab52e991SDaniel Eischen# Find the awk script that generates the version map.
110ab52e991SDaniel EischenVERSION_GEN?=	version_gen.awk
111ab52e991SDaniel EischenVERSION_MAP?=	Version.map
112ab52e991SDaniel Eischen
113ab52e991SDaniel Eischen# Compute the make's -m path.
114ab52e991SDaniel Eischen_mpath=
115ab52e991SDaniel Eischen_oarg=
116ab52e991SDaniel Eischen.for _arg in ${.MAKEFLAGS}
117ab52e991SDaniel Eischen.if ${_oarg} == "-m"
118ab52e991SDaniel Eischen_mpath+= ${_arg}
119ab52e991SDaniel Eischen.endif
120ab52e991SDaniel Eischen_oarg=  ${_arg}
121ab52e991SDaniel Eischen.endfor
122ab52e991SDaniel Eischen_mpath+= /usr/share/mk
123ab52e991SDaniel Eischen
124ab52e991SDaniel Eischen# Look up ${VERSION_GEN} in ${_mpath}.
125ab52e991SDaniel Eischen_vgen=
126ab52e991SDaniel Eischen.for path in ${_mpath}
127ab52e991SDaniel Eischen.if empty(_vgen)
128ab52e991SDaniel Eischen.if exists(${path}/${VERSION_GEN})
129ab52e991SDaniel Eischen_vgen=  ${path}/${VERSION_GEN}
130ab52e991SDaniel Eischen.endif
131ab52e991SDaniel Eischen.endif
132ab52e991SDaniel Eischen.endfor
133ab52e991SDaniel Eischen
134add47b95SDag-Erling Smørgrav${VERSION_MAP}: ${VERSION_DEF} ${_vgen} ${SYMBOL_MAPS}
135ab52e991SDaniel Eischen	awk -v vfile=${VERSION_DEF} -f ${_vgen} ${SYMBOL_MAPS} \
136ab52e991SDaniel Eischen	    > ${.TARGET}
137ab52e991SDaniel Eischen.endif	# !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
138ab52e991SDaniel Eischen
139ab52e991SDaniel Eischen# Allow librararies to specify their own version map or have it
140ab52e991SDaniel Eischen# automatically generated (see above).
141ab52e991SDaniel Eischen.if !empty(VERSION_MAP)
142ab52e991SDaniel Eischen${SHLIB_NAME}:	${VERSION_MAP}
143ab52e991SDaniel EischenLDFLAGS+=	-Wl,--version-script=${VERSION_MAP}
144ab52e991SDaniel Eischen.endif
145ab52e991SDaniel Eischen
1464d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
1474d7d5e7cSRuslan ErmilovOBJS+=		${SRCS:N*.h:R:S/$/.o/}
1484d7d5e7cSRuslan Ermilov.endif
1494d7d5e7cSRuslan Ermilov
1502a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB)
1515aa23756SDavid E. O'Brien_LIBS=		lib${LIB}.a
152afe61c15SRodney W. Grimes
1532a53f3fbSRuslan Ermilovlib${LIB}.a: ${OBJS} ${STATICOBJS}
154f45b036fSPeter Wemm	@${ECHO} building static ${LIB} library
1552a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
156b608b452SWarner Losh	@${AR} cq ${.TARGET} `env NM=${NM} lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
1572a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
1584d7d5e7cSRuslan Ermilov.endif
159afe61c15SRodney W. Grimes
1602a53f3fbSRuslan Ermilov.if !defined(INTERNALLIB)
1612a53f3fbSRuslan Ermilov
1625740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
1632a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_p.a
1642a53f3fbSRuslan ErmilovPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
1652a53f3fbSRuslan Ermilov
1662a53f3fbSRuslan Ermilovlib${LIB}_p.a: ${POBJS}
16780c02d59SBruce Evans	@${ECHO} building profiled ${LIB} library
1682a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
169b608b452SWarner Losh	@${AR} cq ${.TARGET} `env NM=${NM} lorder ${POBJS} | tsort -q` ${ARADD}
1702a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
17186af0db9SBruce Evans.endif
1723585b293SGarrett Wollman
1734d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \
1744d7d5e7cSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
175f92bdbd0SJohn PolstraSOBJS+=		${OBJS:.o=.So}
1764d7d5e7cSRuslan Ermilov.endif
1778c05a446SPeter Wemm
178f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
1792a53f3fbSRuslan Ermilov_LIBS+=		${SHLIB_NAME}
1802a53f3fbSRuslan Ermilov
181f67eb0dcSJohn Polstra${SHLIB_NAME}: ${SOBJS}
182f67eb0dcSJohn Polstra	@${ECHO} building shared library ${SHLIB_NAME}
1832a53f3fbSRuslan Ermilov	@rm -f ${.TARGET} ${SHLIB_LINK}
184f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
1852a53f3fbSRuslan Ermilov	@ln -fs ${.TARGET} ${SHLIB_LINK}
186f67eb0dcSJohn Polstra.endif
187e20b0b73SDavid E. O'Brien	@${CC} ${LDFLAGS} -shared -Wl,-x \
1882a53f3fbSRuslan Ermilov	    -o ${.TARGET} -Wl,-soname,${SONAME} \
189b608b452SWarner Losh	    `env NM=${NM} lorder ${SOBJS} | tsort -q` ${LDADD}
1908c05a446SPeter Wemm.endif
1913585b293SGarrett Wollman
192e1fe3dbaSRuslan Ermilov.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
1932a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_pic.a
1942a53f3fbSRuslan Ermilov
1952a53f3fbSRuslan Ermilovlib${LIB}_pic.a: ${SOBJS}
19680c02d59SBruce Evans	@${ECHO} building special pic ${LIB} library
1972a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1982a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
1992a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
20086af0db9SBruce Evans.endif
201afe61c15SRodney W. Grimes
202ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
2032a53f3fbSRuslan ErmilovLINTLIB=	llib-l${LIB}.ln
2042a53f3fbSRuslan Ermilov_LIBS+=		${LINTLIB}
2052a53f3fbSRuslan ErmilovLINTOBJS+=	${SRCS:M*.c:.c=.ln}
2062a53f3fbSRuslan Ermilov
207766f7d6eSMark Murray${LINTLIB}: ${LINTOBJS}
2082a53f3fbSRuslan Ermilov	@${ECHO} building lint library ${.TARGET}
2092a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
210766f7d6eSMark Murray	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
211766f7d6eSMark Murray.endif
212afe61c15SRodney W. Grimes
21384aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
2142a53f3fbSRuslan Ermilov
2152a53f3fbSRuslan Ermilovall: ${_LIBS}
2162a53f3fbSRuslan Ermilov
217e1fe3dbaSRuslan Ermilov.if ${MK_MAN} != "no"
2182a53f3fbSRuslan Ermilovall: _manpages
219afe61c15SRodney W. Grimes.endif
220afe61c15SRodney W. Grimes
221fcccc50bSBruce Evans_EXTRADEPEND:
222663e9677SBruce Evans	@TMP=_depend$$$$; \
223f92bdbd0SJohn Polstra	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
224663e9677SBruce Evans	    > $$TMP; \
225663e9677SBruce Evans	mv $$TMP ${DEPENDFILE}
226a399b3b4SRuslan Ermilov.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
227e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD)
228f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
2298c05a446SPeter Wemm.endif
2308c05a446SPeter Wemm.endif
231afe61c15SRodney W. Grimes
232afe61c15SRodney W. Grimes.if !target(install)
233afe61c15SRodney W. Grimes
234c33bd5d6SRuslan Ermilov.if defined(PRECIOUSLIB)
23500fbd407SRuslan Ermilov.if !defined(NO_FSCHG)
236c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg
237c59ae063SGarrett Wollman.endif
238c33bd5d6SRuslan ErmilovSHLINSTALLFLAGS+= -S
239c33bd5d6SRuslan Ermilov.endif
240c59ae063SGarrett Wollman
241e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${INSTALLFLAGS}
242e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
243e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
244e902c1bbSTim Vanderhoek.endfor
2451a66233dSRuslan Ermilov_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
246e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
247e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
248e902c1bbSTim Vanderhoek.endfor
249e902c1bbSTim Vanderhoek
2504d7d5e7cSRuslan Ermilov.if !defined(INTERNALLIB)
251b25a566dSRuslan Ermilovrealinstall: _libinstall
252badb7c1cSRuslan Ermilov.ORDER: beforeinstall _libinstall
253b25a566dSRuslan Ermilov_libinstall:
2542c74b2cbSRuslan Ermilov.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB)
2558fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
256e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2572a53f3fbSRuslan Ermilov.endif
2585740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
2598fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
260e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
261afe61c15SRodney W. Grimes.endif
262a89bd620SDavid E. O'Brien.if defined(SHLIB_NAME)
263d2893b16SRuslan Ermilov	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
264e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
265f67eb0dcSJohn Polstra	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
266f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
267be01c222SRuslan Ermilov.if ${SHLIBDIR} == ${LIBDIR}
268be01c222SRuslan Ermilov	ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
269be01c222SRuslan Ermilov.else
270be01c222SRuslan Ermilov	ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
271eb7f25e1SPeter Wemm	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
272be01c222SRuslan Ermilov.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
273be01c222SRuslan Ermilov	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
274be01c222SRuslan Ermilov	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
275be01c222SRuslan Ermilov.endif
276eb7f25e1SPeter Wemm.endif
2778c05a446SPeter Wemm.endif
2788c05a446SPeter Wemm.endif
279e1fe3dbaSRuslan Ermilov.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
280d2893b16SRuslan Ermilov	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
281e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2823585b293SGarrett Wollman.endif
283ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
284d2893b16SRuslan Ermilov	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
285c7b111cbSRuslan Ermilov	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
286c7b111cbSRuslan Ermilov.endif
28784aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
288c7b111cbSRuslan Ermilov
289b9f5e422SAlexey Zelkin.include <bsd.nls.mk>
290af2dc868SRuslan Ermilov.include <bsd.files.mk>
2915d862037SRuslan Ermilov.include <bsd.incs.mk>
29284f94a79SRuslan Ermilov.include <bsd.links.mk>
293afe61c15SRodney W. Grimes
294e1fe3dbaSRuslan Ermilov.if ${MK_MAN} != "no"
295afeaaa84SRuslan Ermilovrealinstall: _maninstall
296badb7c1cSRuslan Ermilov.ORDER: beforeinstall _maninstall
297b90dab70SRuslan Ermilov.endif
298b90dab70SRuslan Ermilov
299afe61c15SRodney W. Grimes.endif
300afe61c15SRodney W. Grimes
301afe61c15SRodney W. Grimes.if !target(lint)
302b25a566dSRuslan Ermilovlint: ${SRCS:M*.c}
3035741a42fSMark Murray	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
304afe61c15SRodney W. Grimes.endif
305afe61c15SRodney W. Grimes
306e1fe3dbaSRuslan Ermilov.if ${MK_MAN} != "no"
307afe61c15SRodney W. Grimes.include <bsd.man.mk>
308918fb560SRuslan Ermilov.endif
3093585b293SGarrett Wollman
3103585b293SGarrett Wollman.include <bsd.dep.mk>
31114172e46SBruce Evans
31288505e11SRuslan Ermilov.if !exists(${.OBJDIR}/${DEPENDFILE})
3134d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB)
3144d7d5e7cSRuslan Ermilov${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
3156b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]}
3166b14fdfaSRuslan Ermilov${_S:R}.po: ${_S}
3176b14fdfaSRuslan Ermilov.endfor
3184d7d5e7cSRuslan Ermilov.endif
3194d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \
3204d7d5e7cSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
3214d7d5e7cSRuslan Ermilov${SOBJS}: ${SRCS:M*.h}
3226b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]}
3236b14fdfaSRuslan Ermilov${_S:R}.So: ${_S}
3246b14fdfaSRuslan Ermilov.endfor
32514172e46SBruce Evans.endif
3262a53f3fbSRuslan Ermilov.endif
32714172e46SBruce Evans
328397304feSRuslan Ermilov.if !target(clean)
329397304feSRuslan Ermilovclean:
330397304feSRuslan Ermilov.if defined(CLEANFILES) && !empty(CLEANFILES)
331397304feSRuslan Ermilov	rm -f ${CLEANFILES}
332397304feSRuslan Ermilov.endif
333397304feSRuslan Ermilov.if defined(LIB) && !empty(LIB)
334397304feSRuslan Ermilov	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
335397304feSRuslan Ermilov.endif
336397304feSRuslan Ermilov.if !defined(INTERNALLIB)
3375740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
338397304feSRuslan Ermilov	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
339397304feSRuslan Ermilov.endif
340397304feSRuslan Ermilov.if defined(SHLIB_NAME) || \
341397304feSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
342397304feSRuslan Ermilov	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
343397304feSRuslan Ermilov.endif
344397304feSRuslan Ermilov.if defined(SHLIB_NAME)
345397304feSRuslan Ermilov.if defined(SHLIB_LINK)
346397304feSRuslan Ermilov	rm -f ${SHLIB_LINK}
347397304feSRuslan Ermilov.endif
348397304feSRuslan Ermilov.if defined(LIB) && !empty(LIB)
349397304feSRuslan Ermilov	rm -f lib${LIB}.so.* lib${LIB}.so
350397304feSRuslan Ermilov.endif
351397304feSRuslan Ermilov.endif
352397304feSRuslan Ermilov.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
353397304feSRuslan Ermilov	rm -f ${LINTOBJS}
354397304feSRuslan Ermilov.endif
35584aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
356397304feSRuslan Ermilov.if defined(_LIBS) && !empty(_LIBS)
357397304feSRuslan Ermilov	rm -f ${_LIBS}
358397304feSRuslan Ermilov.endif
359397304feSRuslan Ermilov.if defined(CLEANDIRS) && !empty(CLEANDIRS)
360397304feSRuslan Ermilov	rm -rf ${CLEANDIRS}
361397304feSRuslan Ermilov.endif
362add47b95SDag-Erling Smørgrav.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
363add47b95SDag-Erling Smørgrav	rm -f ${VERSION_MAP}
364add47b95SDag-Erling Smørgrav.endif
365397304feSRuslan Ermilov.endif
366397304feSRuslan Ermilov
367cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk>
368d510ecb4SKris Kennaway
369d510ecb4SKris Kennaway.include <bsd.sys.mk>
370