xref: /freebsd/share/mk/bsd.lib.mk (revision 84f94a79a03d9df7f22224ac30832e6944991dad)
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.
11f67eb0dcSJohn Polstra.if defined(NOPIC)
12f67eb0dcSJohn Polstra.undef SHLIB_NAME
13f67eb0dcSJohn Polstra.undef INSTALL_PIC_ARCHIVE
14f67eb0dcSJohn Polstra.else
15f67eb0dcSJohn Polstra.if ${OBJFORMAT} == elf
16f67eb0dcSJohn Polstra.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR)
17f67eb0dcSJohn PolstraSHLIB_NAME=	lib${LIB}.so.${SHLIB_MAJOR}
18f67eb0dcSJohn PolstraSHLIB_LINK?=	lib${LIB}.so
19f67eb0dcSJohn Polstra.endif
20f67eb0dcSJohn PolstraSONAME?=	${SHLIB_NAME}
21f67eb0dcSJohn Polstra.else
22f67eb0dcSJohn Polstra.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
23f67eb0dcSJohn PolstraSHLIB_NAME?=	lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
24f67eb0dcSJohn Polstra.endif
25f67eb0dcSJohn Polstra.endif
26e782d0b5SPeter Wemm.endif
27e782d0b5SPeter Wemm
28e82b0b99SJordan K. Hubbard.if defined(DEBUG_FLAGS)
29e82b0b99SJordan K. HubbardCFLAGS+= ${DEBUG_FLAGS}
30e82b0b99SJordan K. Hubbard.endif
31e82b0b99SJordan K. Hubbard
32e82b0b99SJordan K. Hubbard.if !defined(DEBUG_FLAGS)
33afe61c15SRodney W. GrimesSTRIP?=	-s
34e82b0b99SJordan K. Hubbard.endif
35afe61c15SRodney W. Grimes
36368c8de4SJohn Polstra.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
371a5ed802SBruce Evans.include <bsd.libnames.mk>
38e3ace70eSBruce Evans.endif
391a5ed802SBruce Evans
40afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
41f92bdbd0SJohn Polstra# .So used for PIC object files
42afe61c15SRodney W. Grimes.SUFFIXES:
43e517d11eSDavid E. O'Brien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln
44766f7d6eSMark Murray
452a53f3fbSRuslan Ermilov.if !defined(PICFLAG)
462a53f3fbSRuslan Ermilov.if ${MACHINE_ARCH} == "sparc64"
472a53f3fbSRuslan ErmilovPICFLAG=-fPIC
482a53f3fbSRuslan Ermilov.else
492a53f3fbSRuslan ErmilovPICFLAG=-fpic
502a53f3fbSRuslan Ermilov.endif
512a53f3fbSRuslan Ermilov.endif
522a53f3fbSRuslan Ermilov
53766f7d6eSMark Murray.c.ln:
54766f7d6eSMark Murray	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
55766f7d6eSMark Murray	    touch ${.TARGET}
56766f7d6eSMark Murray
57766f7d6eSMark Murray.cc.ln .C.ln .cpp.ln .cxx.ln:
58bbb467cdSRuslan Ermilov	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
59766f7d6eSMark Murray	    touch ${.TARGET}
60afe61c15SRodney W. Grimes
61afe61c15SRodney W. Grimes.c.o:
623585b293SGarrett Wollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
63d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
64d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
65afe61c15SRodney W. Grimes
66afe61c15SRodney W. Grimes.c.po:
679c8ff5b5SJohn Polstra	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
68d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
69d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
70afe61c15SRodney W. Grimes
71f92bdbd0SJohn Polstra.c.So:
723585b293SGarrett Wollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
73d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
74d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
753585b293SGarrett Wollman
76c7cbe79eSDmitrij Tejblum.cc.o .C.o .cpp.o .cxx.o:
773585b293SGarrett Wollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
78d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
79d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
803585b293SGarrett Wollman
81c7cbe79eSDmitrij Tejblum.cc.po .C.po .cpp.po .cxx.po:
829c8ff5b5SJohn Polstra	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
83d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
84d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
853585b293SGarrett Wollman
86f92bdbd0SJohn Polstra.cc.So .C.So .cpp.So .cxx.So:
873585b293SGarrett Wollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
88d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
89d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
903585b293SGarrett Wollman
913585b293SGarrett Wollman.f.o:
923585b293SGarrett Wollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
93d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
94d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
953585b293SGarrett Wollman
963585b293SGarrett Wollman.f.po:
979c8ff5b5SJohn Polstra	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
98d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
99d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1003585b293SGarrett Wollman
101f92bdbd0SJohn Polstra.f.So:
1023585b293SGarrett Wollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
103d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
104d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1053585b293SGarrett Wollman
10670a6e331SBruce Evans.m.o:
10770a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
108d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
109d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
11070a6e331SBruce Evans
11170a6e331SBruce Evans.m.po:
11270a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
113d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
114d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
11570a6e331SBruce Evans
116f92bdbd0SJohn Polstra.m.So:
11770a6e331SBruce Evans	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
118d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
119d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
12070a6e331SBruce Evans
12172d54907SRuslan Ermilov.s.o .asm.o:
12279273cd7SRuslan Ermilov	${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \
1236ba7f9ffSPeter Wemm	    ${.IMPSRC} -o ${.TARGET}
124d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
125d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
126afe61c15SRodney W. Grimes
12772d54907SRuslan Ermilov.s.po .asm.po:
12879273cd7SRuslan Ermilov	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \
1296ba7f9ffSPeter Wemm	    ${.IMPSRC} -o ${.TARGET}
130d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
131d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
132afe61c15SRodney W. Grimes
13372d54907SRuslan Ermilov.s.So .asm.So:
13479273cd7SRuslan Ermilov	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
1352738ffebSMark Murray	    ${AINC} -c ${.IMPSRC} -o ${.TARGET}
136d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
137d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1383585b293SGarrett Wollman
1393585b293SGarrett Wollman.S.o:
14079273cd7SRuslan Ermilov	${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
141d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
142d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1433585b293SGarrett Wollman
1443585b293SGarrett Wollman.S.po:
14579273cd7SRuslan Ermilov	${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
146d23aa1efSDavid E. O'Brien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
147d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1483585b293SGarrett Wollman
149f92bdbd0SJohn Polstra.S.So:
15079273cd7SRuslan Ermilov	${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \
1512738ffebSMark Murray	    -o ${.TARGET}
152d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
153d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1543585b293SGarrett Wollman
1552a53f3fbSRuslan Ermilovall: objwarn
1562a53f3fbSRuslan Ermilov
1572a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB)
1585aa23756SDavid E. O'Brien_LIBS=		lib${LIB}.a
1592a53f3fbSRuslan ErmilovOBJS+=		${SRCS:N*.h:R:S/$/.o/}
160afe61c15SRodney W. Grimes
1612a53f3fbSRuslan Ermilovlib${LIB}.a: ${OBJS} ${STATICOBJS}
162f45b036fSPeter Wemm	@${ECHO} building static ${LIB} library
1632a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1642a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
1652a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
166afe61c15SRodney W. Grimes
1672a53f3fbSRuslan Ermilov.if !defined(INTERNALLIB)
1682a53f3fbSRuslan Ermilov
1691cfd4a8bSPeter Wemm.if !defined(NOPROFILE)
1702a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_p.a
1712a53f3fbSRuslan ErmilovPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
1722a53f3fbSRuslan Ermilov
1732a53f3fbSRuslan Ermilovlib${LIB}_p.a: ${POBJS}
17480c02d59SBruce Evans	@${ECHO} building profiled ${LIB} library
1752a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
1762a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
1772a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
17886af0db9SBruce Evans.endif
1793585b293SGarrett Wollman
180f92bdbd0SJohn PolstraSOBJS+=		${OBJS:.o=.So}
1818c05a446SPeter Wemm
182f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
1832a53f3fbSRuslan Ermilov_LIBS+=		${SHLIB_NAME}
1842a53f3fbSRuslan Ermilov
185f67eb0dcSJohn Polstra${SHLIB_NAME}: ${SOBJS}
186f67eb0dcSJohn Polstra	@${ECHO} building shared library ${SHLIB_NAME}
1872a53f3fbSRuslan Ermilov	@rm -f ${.TARGET} ${SHLIB_LINK}
188f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
1892a53f3fbSRuslan Ermilov	@ln -fs ${.TARGET} ${SHLIB_LINK}
190f67eb0dcSJohn Polstra.endif
191cdaa52cfSJohn Birrell.if ${OBJFORMAT} == aout
192ea5c0da9SRuslan Ermilov	@${CC} -shared -Wl,-x,-assert,pure-text \
1932a53f3fbSRuslan Ermilov	    -o ${.TARGET} \
194ea5c0da9SRuslan Ermilov	    `lorder ${SOBJS} | tsort -q` ${LDADD}
1958c05a446SPeter Wemm.else
196e20b0b73SDavid E. O'Brien	@${CC} ${LDFLAGS} -shared -Wl,-x \
1972a53f3fbSRuslan Ermilov	    -o ${.TARGET} -Wl,-soname,${SONAME} \
198ea5c0da9SRuslan Ermilov	    `lorder ${SOBJS} | tsort -q` ${LDADD}
1998c05a446SPeter Wemm.endif
200f67eb0dcSJohn Polstra.endif
2013585b293SGarrett Wollman
202f67eb0dcSJohn Polstra.if defined(INSTALL_PIC_ARCHIVE)
2032a53f3fbSRuslan Ermilov_LIBS+=		lib${LIB}_pic.a
2042a53f3fbSRuslan Ermilov
2052a53f3fbSRuslan Ermilovlib${LIB}_pic.a: ${SOBJS}
20680c02d59SBruce Evans	@${ECHO} building special pic ${LIB} library
2072a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
2082a53f3fbSRuslan Ermilov	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
2092a53f3fbSRuslan Ermilov	${RANLIB} ${.TARGET}
21086af0db9SBruce Evans.endif
211afe61c15SRodney W. Grimes
2122a53f3fbSRuslan Ermilov.if defined(WANT_LINT)
2132a53f3fbSRuslan ErmilovLINTLIB=	llib-l${LIB}.ln
2142a53f3fbSRuslan Ermilov_LIBS+=		${LINTLIB}
2152a53f3fbSRuslan ErmilovLINTOBJS+=	${SRCS:M*.c:.c=.ln}
2162a53f3fbSRuslan Ermilov
217766f7d6eSMark Murray${LINTLIB}: ${LINTOBJS}
2182a53f3fbSRuslan Ermilov	@${ECHO} building lint library ${.TARGET}
2192a53f3fbSRuslan Ermilov	@rm -f ${.TARGET}
220766f7d6eSMark Murray	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
221766f7d6eSMark Murray.endif
222afe61c15SRodney W. Grimes
2232a53f3fbSRuslan Ermilov.endif !defined(INTERNALLIB)
2242a53f3fbSRuslan Ermilov
2252a53f3fbSRuslan Ermilovall: ${_LIBS}
2262a53f3fbSRuslan Ermilov
2272a53f3fbSRuslan Ermilov.endif defined(LIB) && !empty(LIB)
2282a53f3fbSRuslan Ermilov
2292a53f3fbSRuslan Ermilov.if !defined(NOMAN)
2302a53f3fbSRuslan Ermilovall: _manpages
231afe61c15SRodney W. Grimes.endif
232afe61c15SRodney W. Grimes
23312e0852aSRuslan Ermilov.if !target(clean)
23412e0852aSRuslan Ermilovclean:
235dd247f73SJuli Mallett.if defined(CLEANFILES) && !empty(CLEANFILES)
23612e0852aSRuslan Ermilov	rm -f ${CLEANFILES}
237dd247f73SJuli Mallett.endif
23812e0852aSRuslan Ermilov.if defined(LIB) && !empty(LIB)
23912e0852aSRuslan Ermilov	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
24012e0852aSRuslan Ermilov.if !defined(INTERNALLIB)
24112e0852aSRuslan Ermilov.if !defined(NOPROFILE)
24212e0852aSRuslan Ermilov	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
24312e0852aSRuslan Ermilov.endif
24412e0852aSRuslan Ermilov	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
24512e0852aSRuslan Ermilov.if defined(SHLIB_NAME)
24612e0852aSRuslan Ermilov	rm -f ${SHLIB_LINK} lib${LIB}.so.* lib${LIB}.so
24712e0852aSRuslan Ermilov.endif
24812e0852aSRuslan Ermilov.if defined(WANT_LINT)
24912e0852aSRuslan Ermilov	rm -f ${LINTOBJS}
25012e0852aSRuslan Ermilov.endif
25112e0852aSRuslan Ermilov.endif !defined(INTERNALLIB)
25212e0852aSRuslan Ermilov	rm -f ${_LIBS}
25312e0852aSRuslan Ermilov.endif defined(LIB) && !empty(LIB)
25412e0852aSRuslan Ermilov.if defined(CLEANDIRS) && !empty(CLEANDIRS)
25512e0852aSRuslan Ermilov	rm -rf ${CLEANDIRS}
25612e0852aSRuslan Ermilov.endif
25712e0852aSRuslan Ermilov.endif
25812e0852aSRuslan Ermilov
259fcccc50bSBruce Evans_EXTRADEPEND:
260663e9677SBruce Evans	@TMP=_depend$$$$; \
261f92bdbd0SJohn Polstra	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
262663e9677SBruce Evans	    > $$TMP; \
263663e9677SBruce Evans	mv $$TMP ${DEPENDFILE}
264f67eb0dcSJohn Polstra.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
265cdaa52cfSJohn Birrell.if ${OBJFORMAT} == aout
266f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: \
267ea5c0da9SRuslan Ermilov	    `${CC} -shared -Wl,-f ${LDADD}` \
268ef431e2eSJohn Polstra	    >> ${DEPENDFILE}
2698c05a446SPeter Wemm.else
270e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD)
271f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
2728c05a446SPeter Wemm.endif
2738c05a446SPeter Wemm.endif
2742799473bSSatoshi Asami.endif
275afe61c15SRodney W. Grimes
276afe61c15SRodney W. Grimes.if !target(install)
277afe61c15SRodney W. Grimes
2780099533aSJohn-Mark Gurney.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
279c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg
280c59ae063SGarrett Wollman.endif
281c59ae063SGarrett Wollman
282e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${INSTALLFLAGS}
283e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
284e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
285e902c1bbSTim Vanderhoek.endfor
2861a66233dSRuslan Ermilov_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
287e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
288e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
289e902c1bbSTim Vanderhoek.endfor
290e902c1bbSTim Vanderhoek
2912a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB) && !defined(INTERNALLIB)
292b25a566dSRuslan Ermilovrealinstall: _libinstall
293b25a566dSRuslan Ermilov_libinstall:
2942a53f3fbSRuslan Ermilov.if !defined(NOINSTALLLIB)
2958fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
296e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2972a53f3fbSRuslan Ermilov.endif
298afe61c15SRodney W. Grimes.if !defined(NOPROFILE)
2998fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
300e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
301afe61c15SRodney W. Grimes.endif
302f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
3030099533aSJohn-Mark Gurney	${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
304e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
305f67eb0dcSJohn Polstra	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
306f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
3072a53f3fbSRuslan Ermilov	ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
3088c05a446SPeter Wemm.endif
3098c05a446SPeter Wemm.endif
3103585b293SGarrett Wollman.if defined(INSTALL_PIC_ARCHIVE)
3113585b293SGarrett Wollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
312e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
3133585b293SGarrett Wollman.endif
3142a53f3fbSRuslan Ermilov.if defined(WANT_LINT)
315c7b111cbSRuslan Ermilov	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
316c7b111cbSRuslan Ermilov	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
317c7b111cbSRuslan Ermilov.endif
3182a53f3fbSRuslan Ermilov.endif defined(LIB) && !empty(LIB) && !defined(INTERNALLIB)
319c7b111cbSRuslan Ermilov
320af2dc868SRuslan Ermilov.include <bsd.files.mk>
3215d862037SRuslan Ermilov.include <bsd.incs.mk>
32284f94a79SRuslan Ermilov.include <bsd.links.mk>
323afe61c15SRodney W. Grimes
324b90dab70SRuslan Ermilov.if !defined(NOMAN)
325afeaaa84SRuslan Ermilovrealinstall: _maninstall
326b90dab70SRuslan Ermilov.endif
327b90dab70SRuslan Ermilov
328afe61c15SRodney W. Grimes.endif
329afe61c15SRodney W. Grimes
330afe61c15SRodney W. Grimes.if !target(lint)
331b25a566dSRuslan Ermilovlint: ${SRCS:M*.c}
332bbb467cdSRuslan Ermilov	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
333afe61c15SRodney W. Grimes.endif
334afe61c15SRodney W. Grimes
3353585b293SGarrett Wollman.if !defined(NOMAN)
336afe61c15SRodney W. Grimes.include <bsd.man.mk>
337918fb560SRuslan Ermilov.endif
3383585b293SGarrett Wollman
3393585b293SGarrett Wollman.include <bsd.dep.mk>
34014172e46SBruce Evans
3412a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB)
34288505e11SRuslan Ermilov.if !exists(${.OBJDIR}/${DEPENDFILE})
343f67eb0dcSJohn Polstra${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h}
34414172e46SBruce Evans.endif
3452a53f3fbSRuslan Ermilov.endif
34614172e46SBruce Evans
347cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk>
348d510ecb4SKris Kennaway
349d510ecb4SKris Kennaway.include <bsd.sys.mk>
350