xref: /freebsd/share/mk/bsd.lib.mk (revision b25a566d47d2f34c5bfed6e032e0531f8c5bad30)
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
73585b293SGarrett Wollman.if exists(${.CURDIR}/shlib_version)
83585b293SGarrett WollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
9cdaa52cfSJohn Birrell.if ${OBJFORMAT} == aout
103585b293SGarrett WollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
113585b293SGarrett Wollman.endif
128c05a446SPeter Wemm.endif
133585b293SGarrett Wollman
14f67eb0dcSJohn Polstra# Set up the variables controlling shared libraries.  After this section,
15f67eb0dcSJohn Polstra# SHLIB_NAME will be defined only if we are to create a shared library.
16f67eb0dcSJohn Polstra# SHLIB_LINK will be defined only if we are to create a link to it.
17f67eb0dcSJohn Polstra# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive.
18f67eb0dcSJohn Polstra.if defined(NOPIC)
19f67eb0dcSJohn Polstra.undef SHLIB_NAME
20f67eb0dcSJohn Polstra.undef INSTALL_PIC_ARCHIVE
21f67eb0dcSJohn Polstra.else
22f67eb0dcSJohn Polstra.if ${OBJFORMAT} == elf
23f67eb0dcSJohn Polstra.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR)
24f67eb0dcSJohn PolstraSHLIB_NAME=	lib${LIB}.so.${SHLIB_MAJOR}
25f67eb0dcSJohn PolstraSHLIB_LINK?=	lib${LIB}.so
26f67eb0dcSJohn Polstra.endif
27f67eb0dcSJohn PolstraSONAME?=	${SHLIB_NAME}
28f67eb0dcSJohn Polstra.else
29f67eb0dcSJohn Polstra.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
30f67eb0dcSJohn PolstraSHLIB_NAME?=	lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
31f67eb0dcSJohn Polstra.endif
32f67eb0dcSJohn Polstra.endif
33e782d0b5SPeter Wemm.endif
34e782d0b5SPeter Wemm
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
43368c8de4SJohn Polstra.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
441a5ed802SBruce Evans.include <bsd.libnames.mk>
45e3ace70eSBruce Evans.endif
461a5ed802SBruce Evans
47afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
48f92bdbd0SJohn Polstra# .So used for PIC object files
49afe61c15SRodney W. Grimes.SUFFIXES:
50e517d11eSDavid E. O'Brien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln
51766f7d6eSMark Murray
52766f7d6eSMark Murray.c.ln:
53766f7d6eSMark Murray	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
54766f7d6eSMark Murray	    touch ${.TARGET}
55766f7d6eSMark Murray
56766f7d6eSMark Murray.cc.ln .C.ln .cpp.ln .cxx.ln:
57bbb467cdSRuslan Ermilov	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
58766f7d6eSMark Murray	    touch ${.TARGET}
59afe61c15SRodney W. Grimes
60afe61c15SRodney W. Grimes.c.o:
613585b293SGarrett Wollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
62d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
63d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
64afe61c15SRodney W. Grimes
65afe61c15SRodney W. Grimes.c.po:
669c8ff5b5SJohn Polstra	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
67d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
68d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
69afe61c15SRodney W. Grimes
70f92bdbd0SJohn Polstra.c.So:
713585b293SGarrett Wollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
72d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
73d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
743585b293SGarrett Wollman
75c7cbe79eSDmitrij Tejblum.cc.o .C.o .cpp.o .cxx.o:
763585b293SGarrett Wollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
77d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
78d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
793585b293SGarrett Wollman
80c7cbe79eSDmitrij Tejblum.cc.po .C.po .cpp.po .cxx.po:
819c8ff5b5SJohn Polstra	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
82d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
83d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
843585b293SGarrett Wollman
85f92bdbd0SJohn Polstra.cc.So .C.So .cpp.So .cxx.So:
863585b293SGarrett Wollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
87d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
88d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
893585b293SGarrett Wollman
903585b293SGarrett Wollman.f.o:
913585b293SGarrett Wollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
92d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
93d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
943585b293SGarrett Wollman
953585b293SGarrett Wollman.f.po:
969c8ff5b5SJohn Polstra	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
97d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
98d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
993585b293SGarrett Wollman
100f92bdbd0SJohn Polstra.f.So:
1013585b293SGarrett Wollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
102d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
103d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1043585b293SGarrett Wollman
10570a6e331SBruce Evans.m.o:
10670a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
107d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
108d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
10970a6e331SBruce Evans
11070a6e331SBruce Evans.m.po:
11170a6e331SBruce Evans	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
112d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
113d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
11470a6e331SBruce Evans
115f92bdbd0SJohn Polstra.m.So:
11670a6e331SBruce Evans	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
117d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
118d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
11970a6e331SBruce Evans
12072d54907SRuslan Ermilov.s.o .asm.o:
121e1eecc08SSatoshi Asami	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
1226ba7f9ffSPeter Wemm	    ${.IMPSRC} -o ${.TARGET}
123d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
124d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
125afe61c15SRodney W. Grimes
12672d54907SRuslan Ermilov.s.po .asm.po:
127e1eecc08SSatoshi Asami	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
1286ba7f9ffSPeter Wemm	    ${.IMPSRC} -o ${.TARGET}
129d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
130d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
131afe61c15SRodney W. Grimes
13272d54907SRuslan Ermilov.s.So .asm.So:
1332738ffebSMark Murray	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} \
1342738ffebSMark Murray	    ${AINC} -c ${.IMPSRC} -o ${.TARGET}
135d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
136d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1373585b293SGarrett Wollman
1383585b293SGarrett Wollman.S.o:
139e1eecc08SSatoshi Asami	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
140d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
141d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1423585b293SGarrett Wollman
1433585b293SGarrett Wollman.S.po:
144e1eecc08SSatoshi Asami	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
145d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
146d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1473585b293SGarrett Wollman
148f92bdbd0SJohn Polstra.S.So:
1492738ffebSMark Murray	${CC} ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} \
1502738ffebSMark Murray	    -o ${.TARGET}
151d9eb0d4dSPeter Wemm	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
152d9eb0d4dSPeter Wemm	@mv ${.TARGET}.tmp ${.TARGET}
1533585b293SGarrett Wollman
154ac1a8b47SGarrett Wollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
15566415998SGarrett Wollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
156afe61c15SRodney W. Grimes_LIBS=lib${LIB}.a lib${LIB}_p.a
157afe61c15SRodney W. Grimes.else
158afe61c15SRodney W. Grimes_LIBS=lib${LIB}.a
159afe61c15SRodney W. Grimes.endif
160ac1a8b47SGarrett Wollman.endif
161afe61c15SRodney W. Grimes
162f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
163f67eb0dcSJohn Polstra_LIBS+=${SHLIB_NAME}
1648c05a446SPeter Wemm.endif
1653585b293SGarrett Wollman.if defined(INSTALL_PIC_ARCHIVE)
1663585b293SGarrett Wollman_LIBS+=lib${LIB}_pic.a
1673585b293SGarrett Wollman.endif
168afe61c15SRodney W. Grimes
1693585b293SGarrett Wollman.if !defined(PICFLAG)
170e3ed55f8SDavid E. O'Brien.if ${MACHINE_ARCH} == "sparc64"
171e3ed55f8SDavid E. O'BrienPICFLAG=-fPIC
172e3ed55f8SDavid E. O'Brien.else
1733585b293SGarrett WollmanPICFLAG=-fpic
1743585b293SGarrett Wollman.endif
175e3ed55f8SDavid E. O'Brien.endif
1763585b293SGarrett Wollman
1773b9a798fSDavid E. O'BrienLINTOBJS+= ${SRCS:M*.c:C/\..+$/.ln/}
1783b9a798fSDavid E. O'Brien
1793b9a798fSDavid E. O'Brien.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
1803b9a798fSDavid E. O'BrienLINTLIB=llib-l${LIB}.ln
1813b9a798fSDavid E. O'Brien_LIBS+=${LINTLIB}
1823b9a798fSDavid E. O'Brien.endif
1833b9a798fSDavid E. O'Brien
184b25a566dSRuslan Ermilovall: objwarn ${_LIBS}
185b25a566dSRuslan Ermilov
186b139be25SRuslan Ermilov.if !defined(NOMAN)
187b25a566dSRuslan Ermilovall: all-man
188b139be25SRuslan Ermilov.endif
1893585b293SGarrett Wollman
1903585b293SGarrett WollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
191afe61c15SRodney W. Grimes
192f67eb0dcSJohn Polstralib${LIB}.a:: ${OBJS} ${STATICOBJS}
193f45b036fSPeter Wemm	@${ECHO} building static ${LIB} library
194afe61c15SRodney W. Grimes	@rm -f lib${LIB}.a
195f67eb0dcSJohn Polstra	@${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
1963585b293SGarrett Wollman	${RANLIB} lib${LIB}.a
197afe61c15SRodney W. Grimes
198f67eb0dcSJohn PolstraPOBJS+=	${OBJS:.o=.po} ${STATICOBJS:.o=.po}
1991cfd4a8bSPeter Wemm.if !defined(NOPROFILE)
200afe61c15SRodney W. Grimeslib${LIB}_p.a:: ${POBJS}
20180c02d59SBruce Evans	@${ECHO} building profiled ${LIB} library
202afe61c15SRodney W. Grimes	@rm -f lib${LIB}_p.a
20362eba876SJordan K. Hubbard	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
2043585b293SGarrett Wollman	${RANLIB} lib${LIB}_p.a
20586af0db9SBruce Evans.endif
2063585b293SGarrett Wollman
207f92bdbd0SJohn PolstraSOBJS+= ${OBJS:.o=.So}
2088c05a446SPeter Wemm
209f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
210f67eb0dcSJohn Polstra${SHLIB_NAME}: ${SOBJS}
211f67eb0dcSJohn Polstra	@${ECHO} building shared library ${SHLIB_NAME}
212f67eb0dcSJohn Polstra	@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
213f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
214f67eb0dcSJohn Polstra	@ln -sf ${SHLIB_NAME} ${SHLIB_LINK}
215f67eb0dcSJohn Polstra.endif
216cdaa52cfSJohn Birrell.if ${OBJFORMAT} == aout
217ea5c0da9SRuslan Ermilov	@${CC} -shared -Wl,-x,-assert,pure-text \
218f67eb0dcSJohn Polstra	    -o ${SHLIB_NAME} \
219ea5c0da9SRuslan Ermilov	    `lorder ${SOBJS} | tsort -q` ${LDADD}
2208c05a446SPeter Wemm.else
221ea5c0da9SRuslan Ermilov	@${CC} -shared -Wl,-x \
222f67eb0dcSJohn Polstra	    -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \
223ea5c0da9SRuslan Ermilov	    `lorder ${SOBJS} | tsort -q` ${LDADD}
2248c05a446SPeter Wemm.endif
225f67eb0dcSJohn Polstra.endif
2263585b293SGarrett Wollman
227f67eb0dcSJohn Polstra.if defined(INSTALL_PIC_ARCHIVE)
2283585b293SGarrett Wollmanlib${LIB}_pic.a:: ${SOBJS}
22980c02d59SBruce Evans	@${ECHO} building special pic ${LIB} library
2303585b293SGarrett Wollman	@rm -f lib${LIB}_pic.a
2310cd12228SAndrey A. Chernov	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
2323585b293SGarrett Wollman	${RANLIB} lib${LIB}_pic.a
23386af0db9SBruce Evans.endif
234afe61c15SRodney W. Grimes
235bbb467cdSRuslan Ermilov.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
236766f7d6eSMark Murray${LINTLIB}: ${LINTOBJS}
237bbb467cdSRuslan Ermilov	@${ECHO} building lint library ${LINTLIB}
238766f7d6eSMark Murray	@rm -f ${LINTLIB}
239766f7d6eSMark Murray	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
240766f7d6eSMark Murray.endif
241afe61c15SRodney W. Grimes
242afe61c15SRodney W. Grimes.if !target(clean)
243b25a566dSRuslan Ermilovclean:
244f67eb0dcSJohn Polstra	rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES}
245bbb467cdSRuslan Ermilov	rm -f lib${LIB}.a
2461cfd4a8bSPeter Wemm	rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a
247f92bdbd0SJohn Polstra	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \
248f67eb0dcSJohn Polstra	    ${SHLIB_NAME} ${SHLIB_LINK} \
249f92bdbd0SJohn Polstra	    lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a
250766f7d6eSMark Murray	rm -f ${LINTOBJS} ${LINTLIB}
251209396dfSPoul-Henning Kamp.if defined(CLEANDIRS) && !empty(CLEANDIRS)
2522b9cd238SPoul-Henning Kamp	rm -rf ${CLEANDIRS}
2532b9cd238SPoul-Henning Kamp.endif
254afe61c15SRodney W. Grimes.endif
255afe61c15SRodney W. Grimes
256fcccc50bSBruce Evans_EXTRADEPEND:
257663e9677SBruce Evans	@TMP=_depend$$$$; \
258f92bdbd0SJohn Polstra	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
259663e9677SBruce Evans	    > $$TMP; \
260663e9677SBruce Evans	mv $$TMP ${DEPENDFILE}
261f67eb0dcSJohn Polstra.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
262cdaa52cfSJohn Birrell.if ${OBJFORMAT} == aout
263f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: \
264ea5c0da9SRuslan Ermilov	    `${CC} -shared -Wl,-f ${LDADD}` \
265ef431e2eSJohn Polstra	    >> ${DEPENDFILE}
2668c05a446SPeter Wemm.else
267e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD)
268f67eb0dcSJohn Polstra	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
2698c05a446SPeter Wemm.endif
2708c05a446SPeter Wemm.endif
2712799473bSSatoshi Asami.endif
272afe61c15SRodney W. Grimes
273afe61c15SRodney W. Grimes.if !target(install)
274afe61c15SRodney W. Grimes.if !target(beforeinstall)
275fccf86c1SRodney W. Grimesbeforeinstall: _includeinstall
276fccf86c1SRodney W. Grimes.endif
277fccf86c1SRodney W. Grimes
278fccf86c1SRodney W. Grimes_includeinstall:
279fccf86c1SRodney W. Grimes.if defined(INCS)
280fccf86c1SRodney W. Grimes.for header in ${INCS}
281fccf86c1SRodney W. Grimes	cd ${.CURDIR} && \
282fccf86c1SRodney W. Grimes	${INSTALL} -C -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} \
283fccf86c1SRodney W. Grimes	    ${header} ${DESTDIR}${INCDIR}
284fccf86c1SRodney W. Grimes.endfor
285afe61c15SRodney W. Grimes.endif
286afe61c15SRodney W. Grimes
2870099533aSJohn-Mark Gurney.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
288c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg
289c59ae063SGarrett Wollman.endif
290c59ae063SGarrett Wollman
291e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${INSTALLFLAGS}
292e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
293e902c1bbSTim Vanderhoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
294e902c1bbSTim Vanderhoek.endfor
2951a66233dSRuslan Ermilov_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
296e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT}
297e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
298e902c1bbSTim Vanderhoek.endfor
299e902c1bbSTim Vanderhoek
300afe61c15SRodney W. Grimesrealinstall: beforeinstall
301b25a566dSRuslan Ermilovrealinstall: _libinstall
302b25a566dSRuslan Ermilov_libinstall:
303c59ae063SGarrett Wollman.if !defined(INTERNALLIB)
3048fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
305e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
306afe61c15SRodney W. Grimes.if !defined(NOPROFILE)
3078fd9852bSDag-Erling Smørgrav	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
308e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
309afe61c15SRodney W. Grimes.endif
310c59ae063SGarrett Wollman.endif
311f67eb0dcSJohn Polstra.if defined(SHLIB_NAME)
3120099533aSJohn-Mark Gurney	${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
313e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
314f67eb0dcSJohn Polstra	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
315f67eb0dcSJohn Polstra.if defined(SHLIB_LINK)
3162336a7eaSBruce Evans	ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
3178c05a446SPeter Wemm.endif
3188c05a446SPeter Wemm.endif
3193585b293SGarrett Wollman.if defined(INSTALL_PIC_ARCHIVE)
3203585b293SGarrett Wollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
321e902c1bbSTim Vanderhoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
3223585b293SGarrett Wollman.endif
323afe61c15SRodney W. Grimes.if defined(LINKS) && !empty(LINKS)
324afe61c15SRodney W. Grimes	@set ${LINKS}; \
325afe61c15SRodney W. Grimes	while test $$# -ge 2; do \
326afe61c15SRodney W. Grimes		l=${DESTDIR}$$1; \
327afe61c15SRodney W. Grimes		shift; \
328afe61c15SRodney W. Grimes		t=${DESTDIR}$$1; \
329afe61c15SRodney W. Grimes		shift; \
33080c02d59SBruce Evans		${ECHO} $$t -\> $$l; \
3312336a7eaSBruce Evans		ln -f $$l $$t; \
3322336a7eaSBruce Evans	done; true
3332336a7eaSBruce Evans.endif
3342336a7eaSBruce Evans.if defined(SYMLINKS) && !empty(SYMLINKS)
3352336a7eaSBruce Evans	@set ${SYMLINKS}; \
3362336a7eaSBruce Evans	while test $$# -ge 2; do \
3372336a7eaSBruce Evans		l=$$1; \
3382336a7eaSBruce Evans		shift; \
3392336a7eaSBruce Evans		t=${DESTDIR}$$1; \
3402336a7eaSBruce Evans		shift; \
3412336a7eaSBruce Evans		${ECHO} $$t -\> $$l; \
3422336a7eaSBruce Evans		ln -fs $$l $$t; \
343afe61c15SRodney W. Grimes	done; true
344afe61c15SRodney W. Grimes.endif
345bbb467cdSRuslan Ermilov.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
346766f7d6eSMark Murray	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
347766f7d6eSMark Murray	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
348766f7d6eSMark Murray.endif
349afe61c15SRodney W. Grimes
350b25a566dSRuslan Ermilovinstall: afterinstall
3513585b293SGarrett Wollmanafterinstall: realinstall
352b25a566dSRuslan Ermilov.if !defined(NOMAN)
353b25a566dSRuslan Ermilovafterinstall: maninstall
354afe61c15SRodney W. Grimes.endif
355afe61c15SRodney W. Grimes.endif
356afe61c15SRodney W. Grimes
357d9584d76SJordan K. HubbardDISTRIBUTION?=	bin
35855ff8fb1SPoul-Henning Kamp.if !target(distribute)
359b25a566dSRuslan Ermilovdistribute:
360398ac038SJordan K. Hubbard.for dist in ${DISTRIBUTION}
361398ac038SJordan K. Hubbard	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
362398ac038SJordan K. Hubbard.endfor
36355ff8fb1SPoul-Henning Kamp.endif
36455ff8fb1SPoul-Henning Kamp
365afe61c15SRodney W. Grimes.if !target(lint)
366b25a566dSRuslan Ermilovlint: ${SRCS:M*.c}
367bbb467cdSRuslan Ermilov	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
368afe61c15SRodney W. Grimes.endif
369afe61c15SRodney W. Grimes
3703585b293SGarrett Wollman.if !defined(NOMAN)
371afe61c15SRodney W. Grimes.include <bsd.man.mk>
372918fb560SRuslan Ermilov.endif
3733585b293SGarrett Wollman
3743585b293SGarrett Wollman.include <bsd.dep.mk>
37514172e46SBruce Evans
37688505e11SRuslan Ermilov.if !exists(${.OBJDIR}/${DEPENDFILE})
377f67eb0dcSJohn Polstra${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h}
37814172e46SBruce Evans.endif
37914172e46SBruce Evans
380cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk>
381d510ecb4SKris Kennaway
382d510ecb4SKris Kennaway.include <bsd.sys.mk>
383