bsd.lib.mk revision 252827
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: stable/9/share/mk/bsd.lib.mk 252827 2013-07-05 19:35:51Z emaste $
31844Swollman#
41638Srgrimes
594940Sru.include <bsd.init.mk>
61638Srgrimes
742915Sjdp# Set up the variables controlling shared libraries.  After this section,
842915Sjdp# SHLIB_NAME will be defined only if we are to create a shared library.
942915Sjdp# SHLIB_LINK will be defined only if we are to create a link to it.
1042915Sjdp# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive.
11139106Sru.if defined(NO_PIC)
1242915Sjdp.undef SHLIB_NAME
1342915Sjdp.undef INSTALL_PIC_ARCHIVE
1442915Sjdp.else
15129024Sdes.if !defined(SHLIB) && defined(LIB)
16129024SdesSHLIB=		${LIB}
1729141Speter.endif
18129024Sdes.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR)
19129024SdesSHLIB_NAME=	lib${SHLIB}.so.${SHLIB_MAJOR}
20129024Sdes.endif
21125119Sru.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*)
22100332SruSHLIB_LINK?=	${SHLIB_NAME:R}
23100332Sru.endif
2442915SjdpSONAME?=	${SHLIB_NAME}
2542915Sjdp.endif
2629141Speter
27119607Sru.if defined(CRUNCH_CFLAGS)
28117034SgordonCFLAGS+=	${CRUNCH_CFLAGS}
29119607Sru.endif
30117034Sgordon
31162210Simp.if ${MK_ASSERT_DEBUG} == "no"
32162210SimpCFLAGS+= -DNDEBUG
33162293SobrienNO_WERROR=
34162210Simp.endif
35162210Simp
362827Sjkh.if defined(DEBUG_FLAGS)
372827SjkhCFLAGS+= ${DEBUG_FLAGS}
38179184Sjb
39241711Sjhb.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != ""
40179184SjbCTFFLAGS+= -g
412827Sjkh.endif
42251686Semaste.else
431638SrgrimesSTRIP?=	-s
442827Sjkh.endif
451638Srgrimes
46252827Semaste.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \
47252827Semaste    empty(DEBUG_FLAGS:M-gdwarf*)
48252827SemasteCFLAGS+= -g
49252827SemasteCTFFLAGS+= -g
50252827Semaste.endif
51252827Semaste
5218529Sbde.include <bsd.libnames.mk>
5318529Sbde
541638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
5542450Sjdp# .So used for PIC object files
561638Srgrimes.SUFFIXES:
57220755Sdim.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
581638Srgrimes
5996512Sru.if !defined(PICFLAG)
60211725Simp.if ${MACHINE_CPUARCH} == "sparc64"
6196512SruPICFLAG=-fPIC
6296512Sru.else
6396512SruPICFLAG=-fpic
6496512Sru.endif
6596512Sru.endif
6696512Sru
67126890StrhodesPO_FLAG=-pg
68126890Strhodes
69236114Sdes.c.o:
70236114Sdes	${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
71241711Sjhb	${CTFCONVERT_CMD}
72236114Sdes
731638Srgrimes.c.po:
74236114Sdes	${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
75241711Sjhb	${CTFCONVERT_CMD}
761638Srgrimes
7742450Sjdp.c.So:
78236114Sdes	${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
79241711Sjhb	${CTFCONVERT_CMD}
801844Swollman
81237814Sdim.cc.o .C.o .cpp.o .cxx.o:
82236114Sdes	${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
83236114Sdes
8436673Sdt.cc.po .C.po .cpp.po .cxx.po:
85236114Sdes	${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
861844Swollman
8742450Sjdp.cc.So .C.So .cpp.So .cxx.So:
88236114Sdes	${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
891844Swollman
901844Swollman.f.po:
91127027Strhodes	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
92241711Sjhb	${CTFCONVERT_CMD}
931844Swollman
9442450Sjdp.f.So:
951844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
96241711Sjhb	${CTFCONVERT_CMD}
971844Swollman
98117173Sru.s.po .s.So:
99117159Sru	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
100241711Sjhb	${CTFCONVERT_CMD}
1011638Srgrimes
102117173Sru.asm.po:
103217100Skib	${CC} -x assembler-with-cpp -DPROF ${PO_CFLAGS} ${ACFLAGS} \
104217100Skib		-c ${.IMPSRC} -o ${.TARGET}
105241711Sjhb	${CTFCONVERT_CMD}
106117173Sru
107117173Sru.asm.So:
108217100Skib	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \
109117173Sru	    -c ${.IMPSRC} -o ${.TARGET}
110241711Sjhb	${CTFCONVERT_CMD}
111117173Sru
1121844Swollman.S.po:
113217100Skib	${CC} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
114241711Sjhb	${CTFCONVERT_CMD}
1151844Swollman
11642450Sjdp.S.So:
117217100Skib	${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
118241711Sjhb	${CTFCONVERT_CMD}
1191844Swollman
12096512Sruall: objwarn
1211638Srgrimes
122252827Semaste.if defined(SHLIB_NAME)
123252827Semaste.if ${MK_DEBUG_FILES} != "no"
124252827SemasteSHLIB_NAME_FULL=${SHLIB_NAME}.full
125252827Semaste# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
126252827Semaste.if ${SHLIBDIR} == "/boot" ||\
127252827Semaste    ${SHLIBDIR:C%/lib(/.*)?$%/lib%} == "/lib" ||\
128252827Semaste    ${SHLIBDIR:C%/usr/lib(32)?(/.*)?%/usr/lib%} == "/usr/lib"
129252827SemasteDEBUGFILEDIR=${DEBUGDIR}${SHLIBDIR}
130252827Semaste.else
131252827SemasteDEBUGFILEDIR=${SHLIBDIR}/.debug
132252827SemasteDEBUGMKDIR=
133252827Semaste.endif
134252827Semaste.else
135252827SemasteSHLIB_NAME_FULL=${SHLIB_NAME}
136252827Semaste.endif
137252827Semaste.endif
138252827Semaste
139168317Skan.include <bsd.symver.mk>
140156772Sdeischen
141178047Skan# Allow libraries to specify their own version map or have it
142168317Skan# automatically generated (see bsd.symver.mk above).
143169822Sru.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP)
144252827Semaste${SHLIB_NAME_FULL}:	${VERSION_MAP}
145156772SdeischenLDFLAGS+=	-Wl,--version-script=${VERSION_MAP}
146156772Sdeischen.endif
147156772Sdeischen
14899362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
14999362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
15099362Sru.endif
15199362Sru
15296512Sru.if defined(LIB) && !empty(LIB)
15396512Sru_LIBS=		lib${LIB}.a
1541638Srgrimes
15596512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
15696512Sru	@${ECHO} building static ${LIB} library
15796512Sru	@rm -f ${.TARGET}
158163683Sru.if !defined(NM)
159163683Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
160163683Sru.else
161163683Sru	@${AR} cq ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
162163683Sru.endif
16396512Sru	${RANLIB} ${.TARGET}
16499362Sru.endif
1651638Srgrimes
16696512Sru.if !defined(INTERNALLIB)
16795114Sobrien
168156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
16996512Sru_LIBS+=		lib${LIB}_p.a
17096512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
17195306Sru
17296512Srulib${LIB}_p.a: ${POBJS}
17396512Sru	@${ECHO} building profiled ${LIB} library
17496512Sru	@rm -f ${.TARGET}
175163683Sru.if !defined(NM)
176163683Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
177163683Sru.else
178163683Sru	@${AR} cq ${.TARGET} `NM='${NM}' lorder ${POBJS} | tsort -q` ${ARADD}
179163683Sru.endif
18096512Sru	${RANLIB} ${.TARGET}
18174805Sru.endif
1821844Swollman
18399362Sru.if defined(SHLIB_NAME) || \
18499362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
18596512SruSOBJS+=		${OBJS:.o=.So}
18699362Sru.endif
1871844Swollman
18896512Sru.if defined(SHLIB_NAME)
18996512Sru_LIBS+=		${SHLIB_NAME}
1901638Srgrimes
191229380SkibSOLINKOPTS=	-shared -Wl,-x
192229380Skib.if !defined(ALLOW_SHARED_TEXTREL)
193229380SkibSOLINKOPTS+=	-Wl,--fatal-warnings -Wl,--warn-shared-textrel
194229380Skib.endif
195229380Skib
196212423Srpaulo.if target(beforelinking)
197252827Semastebeforelinking: ${SOBJS}
198252827Semaste${SHLIB_NAME_FULL}: beforelinking
199251686Semaste.endif
200252827Semaste${SHLIB_NAME_FULL}: ${SOBJS}
20142915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
202252827Semaste	@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
20342915Sjdp.if defined(SHLIB_LINK)
204250121Sbrooks	@${INSTALL_SYMLINK} ${SHLIB_NAME} ${SHLIB_LINK}
20542915Sjdp.endif
206163683Sru.if !defined(NM)
207229380Skib	@${CC} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
20896512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
209163683Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
210163683Sru.else
211229380Skib	@${CC} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
212163683Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
213163683Sru	    `NM='${NM}' lorder ${SOBJS} | tsort -q` ${LDADD}
21428945Speter.endif
215241711Sjhb.if ${MK_CTF} != "no"
216241711Sjhb	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
217163683Sru.endif
218252827Semaste
219252827Semaste.if ${MK_DEBUG_FILES} != "no"
220252827SemasteCLEANFILES+=	${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug
221252827Semaste${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug
222252827Semaste	${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.debug \
223252827Semaste	    ${SHLIB_NAME_FULL} ${.TARGET}
224252827Semaste
225252827Semaste${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL}
226252827Semaste	${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET}
227241711Sjhb.endif
228252827Semaste.endif
2291844Swollman
230156813Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
23196512Sru_LIBS+=		lib${LIB}_pic.a
23296512Sru
23396512Srulib${LIB}_pic.a: ${SOBJS}
2342353Sbde	@${ECHO} building special pic ${LIB} library
23596512Sru	@rm -f ${.TARGET}
23696512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
23796512Sru	${RANLIB} ${.TARGET}
2383859Sbde.endif
2391844Swollman
240139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
24196512SruLINTLIB=	llib-l${LIB}.ln
24296512Sru_LIBS+=		${LINTLIB}
24396512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
24496512Sru
24592491Smarkm${LINTLIB}: ${LINTOBJS}
24696512Sru	@${ECHO} building lint library ${.TARGET}
24796512Sru	@rm -f ${.TARGET}
24892491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
24992491Smarkm.endif
2501638Srgrimes
251144893Sharti.endif # !defined(INTERNALLIB)
25296512Sru
25396512Sruall: ${_LIBS}
25496512Sru
255156813Sru.if ${MK_MAN} != "no"
25696512Sruall: _manpages
2571638Srgrimes.endif
2581638Srgrimes
25934179Sbde_EXTRADEPEND:
26024750Sbde	@TMP=_depend$$$$; \
26142450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
26224750Sbde	    > $$TMP; \
26324750Sbde	mv $$TMP ${DEPENDFILE}
264139107Sru.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
26531809Sbde.if defined(DPADD) && !empty(DPADD)
26642915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
26727910Sasami.endif
26828945Speter.endif
2691638Srgrimes
2701638Srgrimes.if !target(install)
2711638Srgrimes
272136019Sru.if defined(PRECIOUSLIB)
273139111Sru.if !defined(NO_FSCHG)
2742298SwollmanSHLINSTALLFLAGS+= -fschg
2752298Swollman.endif
276136019SruSHLINSTALLFLAGS+= -S
277136019Sru.endif
2782298Swollman
27949328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
28049328Shoek.for ie in ${INSTALLFLAGS_EDIT}
28149328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
28249328Shoek.endfor
28356971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
28449328Shoek.for ie in ${INSTALLFLAGS_EDIT}
28549328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
28649328Shoek.endfor
28749328Shoek
28899362Sru.if !defined(INTERNALLIB)
28995306Srurealinstall: _libinstall
29099343Sru.ORDER: beforeinstall _libinstall
29195306Sru_libinstall:
292172832Sru.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
29392980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
29449328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
29596512Sru.endif
296156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
29792980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
29849328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2991638Srgrimes.endif
300116144Sobrien.if defined(SHLIB_NAME)
301100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
30249328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
30342915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
304252827Semaste.if ${MK_DEBUG_FILES} != "no"
305252827Semaste.if defined(DEBUGMKDIR)
306252827Semaste	${INSTALL} -T debug -d ${DESTDIR}${DEBUGFILEDIR}
307252827Semaste.endif
308252827Semaste	${INSTALL} -T debug -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \
309252827Semaste	    ${_INSTALLFLAGS} \
310252827Semaste	    ${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}
311252827Semaste.endif
31242915Sjdp.if defined(SHLIB_LINK)
313235534Sjlh# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
314235534Sjlh# and when building 32 bits library shims.  ${_SHLIBDIRPREFIX} is the directory
315250999Sjlh# prefix where shared objects will be installed by the install target.
316250999Sjlh#
317250999Sjlh# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating
318250999Sjlh# ld(1) scripts.  The crosstools' ld is configured to lookup libraries in an
319250999Sjlh# alternative directory which is called "sysroot", so during buildworld binaries
320250999Sjlh# won't be linked against the running system libraries but against the ones of
321250999Sjlh# the current source tree.  ${_LDSCRIPTROOT} behavior is twisted because of
322250999Sjlh# the location where we store them:
323250999Sjlh# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty
324250999Sjlh#   because ld(1) will manage to find them from sysroot;
325235534Sjlh# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full
326250999Sjlh#   path, outside of sysroot.
327250999Sjlh# Note that ld(1) scripts are generated both during buildworld and
328250999Sjlh# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty
329250999Sjlh# because on the target system, libraries are meant to be looked up from /.
330235534Sjlh.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
331235534Sjlh	sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${SHLIBDIR}/${SHLIB_NAME},g' \
332235534Sjlh	    -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${LIBDIR},g' \
333235534Sjlh	    ${.CURDIR}/${SHLIB_LDSCRIPT} > lib${LIB}.ld
334235534Sjlh	${INSTALL} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
335235534Sjlh	    ${_INSTALLFLAGS} lib${LIB}.ld ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
336235534Sjlh.else
337119846Sru.if ${SHLIBDIR} == ${LIBDIR}
338250121Sbrooks	${INSTALL_SYMLINK} ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
339119846Sru.else
340250121Sbrooks	${INSTALL_SYMLINK} ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
341119730Speter	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
342119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
343119846Sru	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
344119846Sru	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
3451844Swollman.endif
34628945Speter.endif
347235534Sjlh.endif # SHLIB_LDSCRIPT
348235534Sjlh.endif # SHLIB_LINK
349235534Sjlh.endif # SHIB_NAME
350156813Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
351100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
35249328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
3531844Swollman.endif
354139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
355100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
35696462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
35796462Sru.endif
358144893Sharti.endif # !defined(INTERNALLIB)
35996462Sru
360248350Sbrooks.if !defined(LIBRARIES_ONLY)
361141503Sphantom.include <bsd.nls.mk>
36297769Sru.include <bsd.files.mk>
36396668Sru.include <bsd.incs.mk>
364248350Sbrooks.endif
365248350Sbrooks
36699256Sru.include <bsd.links.mk>
36796462Sru
368248350Sbrooks.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY)
36996164Srurealinstall: _maninstall
37099343Sru.ORDER: beforeinstall _maninstall
37196162Sru.endif
37296162Sru
3731638Srgrimes.endif
3741638Srgrimes
3751638Srgrimes.if !target(lint)
37695306Srulint: ${SRCS:M*.c}
377103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
3781638Srgrimes.endif
3791638Srgrimes
380248350Sbrooks.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY)
3811638Srgrimes.include <bsd.man.mk>
38274842Sru.endif
3831844Swollman
3841844Swollman.include <bsd.dep.mk>
38534092Sbde
38699362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
38796512Sru.if defined(LIB) && !empty(LIB)
38899362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
389124637Sru.for _S in ${SRCS:N*.[hly]}
390124637Sru${_S:R}.po: ${_S}
391124637Sru.endfor
39234092Sbde.endif
39399362Sru.if defined(SHLIB_NAME) || \
39499362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
39599362Sru${SOBJS}: ${SRCS:M*.h}
396124637Sru.for _S in ${SRCS:N*.[hly]}
397124637Sru${_S:R}.So: ${_S}
398124637Sru.endfor
39996512Sru.endif
40099362Sru.endif
40134092Sbde
402100457Sru.if !target(clean)
403100457Sruclean:
404100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
405100457Sru	rm -f ${CLEANFILES}
406100457Sru.endif
407100457Sru.if defined(LIB) && !empty(LIB)
408100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
409100457Sru.endif
410100457Sru.if !defined(INTERNALLIB)
411156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
412100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
413100457Sru.endif
414100457Sru.if defined(SHLIB_NAME) || \
415100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
416100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
417100457Sru.endif
418100457Sru.if defined(SHLIB_NAME)
419100457Sru.if defined(SHLIB_LINK)
420235534Sjlh.if defined(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
421235534Sjlh	rm -f lib${LIB}.ld
422235534Sjlh.endif
423100457Sru	rm -f ${SHLIB_LINK}
424100457Sru.endif
425100457Sru.if defined(LIB) && !empty(LIB)
426100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
427100457Sru.endif
428100457Sru.endif
429100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
430100457Sru	rm -f ${LINTOBJS}
431100457Sru.endif
432144893Sharti.endif # !defined(INTERNALLIB)
433100457Sru.if defined(_LIBS) && !empty(_LIBS)
434100457Sru	rm -f ${_LIBS}
435100457Sru.endif
436100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
437100457Sru	rm -rf ${CLEANDIRS}
438100457Sru.endif
439157054Sdes.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
440157054Sdes	rm -f ${VERSION_MAP}
441100457Sru.endif
442157054Sdes.endif
443100457Sru
44416663Sjkh.include <bsd.obj.mk>
44576861Skris
44676861Skris.include <bsd.sys.mk>
447