xref: /freebsd/share/mk/bsd.lib.mk (revision ab52e991982f91a2cff52fdcfb0b6fc7450d61ca)
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
31e82b0b99SJordan K. Hubbard.if defined(DEBUG_FLAGS)
32e82b0b99SJordan K. HubbardCFLAGS+= ${DEBUG_FLAGS}
33e82b0b99SJordan K. Hubbard.endif
34e82b0b99SJordan K. Hubbard
35e82b0b99SJordan K. Hubbard.if !defined(DEBUG_FLAGS)
36afe61c15SRodney W. GrimesSTRIP?=	-s
37e82b0b99SJordan K. Hubbard.endif
38afe61c15SRodney W. Grimes
391a5ed802SBruce Evans.include <bsd.libnames.mk>
401a5ed802SBruce Evans
41afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
42f92bdbd0SJohn Polstra# .So used for PIC object files
43afe61c15SRodney W. Grimes.SUFFIXES:
44d58e932fSRuslan Ermilov.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
45766f7d6eSMark Murray
462a53f3fbSRuslan Ermilov.if !defined(PICFLAG)
472a53f3fbSRuslan Ermilov.if ${MACHINE_ARCH} == "sparc64"
482a53f3fbSRuslan ErmilovPICFLAG=-fPIC
492a53f3fbSRuslan Ermilov.else
502a53f3fbSRuslan ErmilovPICFLAG=-fpic
512a53f3fbSRuslan Ermilov.endif
522a53f3fbSRuslan Ermilov.endif
532a53f3fbSRuslan Ermilov
5406d6e4fcSTom Rhodes.if ${CC} == "icc"
5506d6e4fcSTom RhodesPO_FLAG=-p
5606d6e4fcSTom Rhodes.else
5706d6e4fcSTom RhodesPO_FLAG=-pg
5806d6e4fcSTom Rhodes.endif
5906d6e4fcSTom Rhodes
60afe61c15SRodney W. Grimes.c.po:
6106d6e4fcSTom Rhodes	${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
62afe61c15SRodney W. Grimes
63f92bdbd0SJohn Polstra.c.So:
643585b293SGarrett Wollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
653585b293SGarrett Wollman
66c7cbe79eSDmitrij Tejblum.cc.po .C.po .cpp.po .cxx.po:
6706d6e4fcSTom Rhodes	${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
683585b293SGarrett Wollman
69f92bdbd0SJohn Polstra.cc.So .C.So .cpp.So .cxx.So:
703585b293SGarrett Wollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
713585b293SGarrett Wollman
723585b293SGarrett Wollman.f.po:
739c8ff5b5SJohn Polstra	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
743585b293SGarrett Wollman
75f92bdbd0SJohn Polstra.f.So:
763585b293SGarrett Wollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
773585b293SGarrett Wollman
7870a6e331SBruce Evans.m.po:
7970a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
8070a6e331SBruce Evans
81f92bdbd0SJohn Polstra.m.So:
8270a6e331SBruce Evans	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8370a6e331SBruce Evans
84d58e932fSRuslan Ermilov.s.po .s.So:
85f79d11b7SRuslan Ermilov	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
863585b293SGarrett Wollman
87d58e932fSRuslan Ermilov.asm.po:
88d58e932fSRuslan Ermilov	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
89d58e932fSRuslan Ermilov
90d58e932fSRuslan Ermilov.asm.So:
91d58e932fSRuslan Ermilov	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
92d58e932fSRuslan Ermilov	    -c ${.IMPSRC} -o ${.TARGET}
93d58e932fSRuslan Ermilov
943585b293SGarrett Wollman.S.po:
95a51613b6SRuslan Ermilov	${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
963585b293SGarrett Wollman
97f92bdbd0SJohn Polstra.S.So:
98a51613b6SRuslan Ermilov	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
993585b293SGarrett Wollman
1002a53f3fbSRuslan Ermilovall: objwarn
1012a53f3fbSRuslan Ermilov
102ab52e991SDaniel Eischen# Generate the version map given the version definitions
103ab52e991SDaniel Eischen# and symbol maps.
104ab52e991SDaniel Eischen.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
105ab52e991SDaniel Eischen# Find the awk script that generates the version map.
106ab52e991SDaniel EischenVERSION_GEN?=	version_gen.awk
107ab52e991SDaniel EischenVERSION_MAP?=	Version.map
108ab52e991SDaniel Eischen
109ab52e991SDaniel Eischen# Compute the make's -m path.
110ab52e991SDaniel Eischen_mpath=
111ab52e991SDaniel Eischen_oarg=
112ab52e991SDaniel Eischen.for _arg in ${.MAKEFLAGS}
113ab52e991SDaniel Eischen.if ${_oarg} == "-m"
114ab52e991SDaniel Eischen_mpath+= ${_arg}
115ab52e991SDaniel Eischen.endif
116ab52e991SDaniel Eischen_oarg=  ${_arg}
117ab52e991SDaniel Eischen.endfor
118ab52e991SDaniel Eischen_mpath+= /usr/share/mk
119ab52e991SDaniel Eischen
120ab52e991SDaniel Eischen# Look up ${VERSION_GEN} in ${_mpath}.
121ab52e991SDaniel Eischen_vgen=
122ab52e991SDaniel Eischen.for path in ${_mpath}
123ab52e991SDaniel Eischen.if empty(_vgen)
124ab52e991SDaniel Eischen.if exists(${path}/${VERSION_GEN})
125ab52e991SDaniel Eischen_vgen=  ${path}/${VERSION_GEN}
126ab52e991SDaniel Eischen.endif
127ab52e991SDaniel Eischen.endif
128ab52e991SDaniel Eischen.endfor
129ab52e991SDaniel Eischen
130ab52e991SDaniel Eischen${VERSION_MAP}:
131ab52e991SDaniel Eischen	awk -v vfile=${VERSION_DEF} -f ${_vgen} ${SYMBOL_MAPS} \
132ab52e991SDaniel Eischen	    > ${.TARGET}
133ab52e991SDaniel Eischen.endif	# !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
134ab52e991SDaniel Eischen
135ab52e991SDaniel Eischen# Allow librararies to specify their own version map or have it
136ab52e991SDaniel Eischen# automatically generated (see above).
137ab52e991SDaniel Eischen.if !empty(VERSION_MAP)
138ab52e991SDaniel Eischen${SHLIB_NAME}:	${VERSION_MAP}
139ab52e991SDaniel EischenLDFLAGS+=	-Wl,--version-script=${VERSION_MAP}
140ab52e991SDaniel Eischen.endif
141ab52e991SDaniel Eischen
1424d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
1434d7d5e7cSRuslan ErmilovOBJS+=		${SRCS:N*.h:R:S/$/.o/}
1444d7d5e7cSRuslan Ermilov.endif
1454d7d5e7cSRuslan Ermilov
1462a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB)
1475aa23756SDavid E. O'Brien_LIBS=		lib${LIB}.a
148afe61c15SRodney W. Grimes
1492a53f3fbSRuslan Ermilovlib${LIB}.a: ${OBJS} ${STATICOBJS}
150f45b036fSPeter Wemm	@${ECHO} building static ${LIB} library
1512a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1522a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
1532a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
1544d7d5e7cSRuslan Ermilov.endif
155afe61c15SRodney W. Grimes
1562a53f3fbSRuslan Ermilov.if !defined(INTERNALLIB)
1572a53f3fbSRuslan Ermilov
158ab7a2947SRuslan Ermilov.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
1592a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_p.a
1602a53f3fbSRuslan ErmilovPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
1612a53f3fbSRuslan Ermilov
1622a53f3fbSRuslan Ermilovlib${LIB}_p.a: ${POBJS}
16380c02d59SBruce Evans	@${ECHO} building profiled ${LIB} library
1642a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1652a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
1662a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
16786af0db9SBruce Evans.endif
1683585b293SGarrett Wollman
1694d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \
1704d7d5e7cSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
171f92bdbd0SJohn PolstraSOBJS+=		${OBJS:.o=.So}
1724d7d5e7cSRuslan Ermilov.endif
1738c05a446SPeter Wemm
174f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
1752a53f3fbSRuslan Ermilov_LIBS+=		${SHLIB_NAME}
1762a53f3fbSRuslan Ermilov
177f67eb0dcSJohn Polstra${SHLIB_NAME}: ${SOBJS}
178f67eb0dcSJohn Polstra	@${ECHO} building shared library ${SHLIB_NAME}
1792a53f3fbSRuslan Ermilov	@rm -f ${.TARGET} ${SHLIB_LINK}
180f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
1812a53f3fbSRuslan Ermilov	@ln -fs ${.TARGET} ${SHLIB_LINK}
182f67eb0dcSJohn Polstra.endif
183e20b0b73SDavid E. O'Brien	@${CC} ${LDFLAGS} -shared -Wl,-x \
1842a53f3fbSRuslan Ermilov	    -o ${.TARGET} -Wl,-soname,${SONAME} \
185ea5c0da9SRuslan Ermilov	    `lorder ${SOBJS} | tsort -q` ${LDADD}
1868c05a446SPeter Wemm.endif
1873585b293SGarrett Wollman
1889c662f35SPoul-Henning Kamp.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && !defined(NO_TOOLCHAIN)
1892a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_pic.a
1902a53f3fbSRuslan Ermilov
1912a53f3fbSRuslan Ermilovlib${LIB}_pic.a: ${SOBJS}
19280c02d59SBruce Evans	@${ECHO} building special pic ${LIB} library
1932a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1942a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
1952a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
19686af0db9SBruce Evans.endif
197afe61c15SRodney W. Grimes
198ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
1992a53f3fbSRuslan ErmilovLINTLIB=	llib-l${LIB}.ln
2002a53f3fbSRuslan Ermilov_LIBS+=		${LINTLIB}
2012a53f3fbSRuslan ErmilovLINTOBJS+=	${SRCS:M*.c:.c=.ln}
2022a53f3fbSRuslan Ermilov
203766f7d6eSMark Murray${LINTLIB}: ${LINTOBJS}
2042a53f3fbSRuslan Ermilov	@${ECHO} building lint library ${.TARGET}
2052a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
206766f7d6eSMark Murray	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
207766f7d6eSMark Murray.endif
208afe61c15SRodney W. Grimes
20984aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
2102a53f3fbSRuslan Ermilov
2112a53f3fbSRuslan Ermilovall: ${_LIBS}
2122a53f3fbSRuslan Ermilov
213e653b48cSRuslan Ermilov.if !defined(NO_MAN)
2142a53f3fbSRuslan Ermilovall: _manpages
215afe61c15SRodney W. Grimes.endif
216afe61c15SRodney W. Grimes
217fcccc50bSBruce Evans_EXTRADEPEND:
218663e9677SBruce Evans	@TMP=_depend$$$$; \
219f92bdbd0SJohn Polstra	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
220663e9677SBruce Evans	    > $$TMP; \
221663e9677SBruce Evans	mv $$TMP ${DEPENDFILE}
222a399b3b4SRuslan Ermilov.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
223e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD)
224f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
2258c05a446SPeter Wemm.endif
2268c05a446SPeter Wemm.endif
227afe61c15SRodney W. Grimes
228afe61c15SRodney W. Grimes.if !target(install)
229afe61c15SRodney W. Grimes
230c33bd5d6SRuslan Ermilov.if defined(PRECIOUSLIB)
23100fbd407SRuslan Ermilov.if !defined(NO_FSCHG)
232c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg
233c59ae063SGarrett Wollman.endif
234c33bd5d6SRuslan ErmilovSHLINSTALLFLAGS+= -S
235c33bd5d6SRuslan Ermilov.endif
236c59ae063SGarrett Wollman
237e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${INSTALLFLAGS}
238e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
239e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
240e902c1bbSTim Vanderhoek.endfor
2411a66233dSRuslan Ermilov_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
242e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
243e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
244e902c1bbSTim Vanderhoek.endfor
245e902c1bbSTim Vanderhoek
2464d7d5e7cSRuslan Ermilov.if !defined(INTERNALLIB)
247b25a566dSRuslan Ermilovrealinstall: _libinstall
248badb7c1cSRuslan Ermilov.ORDER: beforeinstall _libinstall
249b25a566dSRuslan Ermilov_libinstall:
2502c74b2cbSRuslan Ermilov.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB)
2518fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
252e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2532a53f3fbSRuslan Ermilov.endif
254ab7a2947SRuslan Ermilov.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
2558fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
256e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
257afe61c15SRodney W. Grimes.endif
258a89bd620SDavid E. O'Brien.if defined(SHLIB_NAME)
259d2893b16SRuslan Ermilov	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
260e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
261f67eb0dcSJohn Polstra	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
262f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
263be01c222SRuslan Ermilov.if ${SHLIBDIR} == ${LIBDIR}
264be01c222SRuslan Ermilov	ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
265be01c222SRuslan Ermilov.else
266be01c222SRuslan Ermilov	ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
267eb7f25e1SPeter Wemm	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
268be01c222SRuslan Ermilov.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
269be01c222SRuslan Ermilov	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
270be01c222SRuslan Ermilov	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
271be01c222SRuslan Ermilov.endif
272eb7f25e1SPeter Wemm.endif
2738c05a446SPeter Wemm.endif
2748c05a446SPeter Wemm.endif
2759c662f35SPoul-Henning Kamp.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && !defined(NO_TOOLCHAIN)
276d2893b16SRuslan Ermilov	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
277e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2783585b293SGarrett Wollman.endif
279ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
280d2893b16SRuslan Ermilov	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
281c7b111cbSRuslan Ermilov	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
282c7b111cbSRuslan Ermilov.endif
28384aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
284c7b111cbSRuslan Ermilov
285b9f5e422SAlexey Zelkin.include <bsd.nls.mk>
286af2dc868SRuslan Ermilov.include <bsd.files.mk>
2875d862037SRuslan Ermilov.include <bsd.incs.mk>
28884f94a79SRuslan Ermilov.include <bsd.links.mk>
289afe61c15SRodney W. Grimes
290e653b48cSRuslan Ermilov.if !defined(NO_MAN)
291afeaaa84SRuslan Ermilovrealinstall: _maninstall
292badb7c1cSRuslan Ermilov.ORDER: beforeinstall _maninstall
293b90dab70SRuslan Ermilov.endif
294b90dab70SRuslan Ermilov
295afe61c15SRodney W. Grimes.endif
296afe61c15SRodney W. Grimes
297afe61c15SRodney W. Grimes.if !target(lint)
298b25a566dSRuslan Ermilovlint: ${SRCS:M*.c}
2995741a42fSMark Murray	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
300afe61c15SRodney W. Grimes.endif
301afe61c15SRodney W. Grimes
302e653b48cSRuslan Ermilov.if !defined(NO_MAN)
303afe61c15SRodney W. Grimes.include <bsd.man.mk>
304918fb560SRuslan Ermilov.endif
3053585b293SGarrett Wollman
3063585b293SGarrett Wollman.include <bsd.dep.mk>
30714172e46SBruce Evans
30888505e11SRuslan Ermilov.if !exists(${.OBJDIR}/${DEPENDFILE})
3094d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB)
3104d7d5e7cSRuslan Ermilov${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
3116b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]}
3126b14fdfaSRuslan Ermilov${_S:R}.po: ${_S}
3136b14fdfaSRuslan Ermilov.endfor
3144d7d5e7cSRuslan Ermilov.endif
3154d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \
3164d7d5e7cSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
3174d7d5e7cSRuslan Ermilov${SOBJS}: ${SRCS:M*.h}
3186b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]}
3196b14fdfaSRuslan Ermilov${_S:R}.So: ${_S}
3206b14fdfaSRuslan Ermilov.endfor
32114172e46SBruce Evans.endif
3222a53f3fbSRuslan Ermilov.endif
32314172e46SBruce Evans
324397304feSRuslan Ermilov.if !target(clean)
325397304feSRuslan Ermilovclean:
326397304feSRuslan Ermilov.if defined(CLEANFILES) && !empty(CLEANFILES)
327397304feSRuslan Ermilov	rm -f ${CLEANFILES}
328397304feSRuslan Ermilov.endif
329397304feSRuslan Ermilov.if defined(LIB) && !empty(LIB)
330397304feSRuslan Ermilov	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
331397304feSRuslan Ermilov.endif
332397304feSRuslan Ermilov.if !defined(INTERNALLIB)
333ab7a2947SRuslan Ermilov.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
334397304feSRuslan Ermilov	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
335397304feSRuslan Ermilov.endif
336397304feSRuslan Ermilov.if defined(SHLIB_NAME) || \
337397304feSRuslan Ermilov    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
338397304feSRuslan Ermilov	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
339397304feSRuslan Ermilov.endif
340397304feSRuslan Ermilov.if defined(SHLIB_NAME)
341397304feSRuslan Ermilov.if defined(SHLIB_LINK)
342397304feSRuslan Ermilov	rm -f ${SHLIB_LINK}
343397304feSRuslan Ermilov.endif
344397304feSRuslan Ermilov.if defined(LIB) && !empty(LIB)
345397304feSRuslan Ermilov	rm -f lib${LIB}.so.* lib${LIB}.so
346397304feSRuslan Ermilov.endif
347397304feSRuslan Ermilov.endif
348397304feSRuslan Ermilov.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
349397304feSRuslan Ermilov	rm -f ${LINTOBJS}
350397304feSRuslan Ermilov.endif
35184aac273SHartmut Brandt.endif # !defined(INTERNALLIB)
352397304feSRuslan Ermilov.if defined(_LIBS) && !empty(_LIBS)
353397304feSRuslan Ermilov	rm -f ${_LIBS}
354397304feSRuslan Ermilov.endif
355397304feSRuslan Ermilov.if defined(CLEANDIRS) && !empty(CLEANDIRS)
356397304feSRuslan Ermilov	rm -rf ${CLEANDIRS}
357397304feSRuslan Ermilov.endif
358397304feSRuslan Ermilov.endif
359397304feSRuslan Ermilov
360cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk>
361d510ecb4SKris Kennaway
362d510ecb4SKris Kennaway.include <bsd.sys.mk>
363