bsd.lib.mk revision 116144
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 116144 2003-06-10 04:47:49Z obrien $
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.
1142915Sjdp.if defined(NOPIC)
1242915Sjdp.undef SHLIB_NAME
1342915Sjdp.undef INSTALL_PIC_ARCHIVE
1442915Sjdp.else
1599362Sru.if !defined(SHLIB_NAME) && defined(LIB) && defined(SHLIB_MAJOR)
1642915SjdpSHLIB_NAME=	lib${LIB}.so.${SHLIB_MAJOR}
1729141Speter.endif
18100375Sru.if defined(SHLIB_NAME) && ${SHLIB_NAME:M*.so.*}
19100332SruSHLIB_LINK?=	${SHLIB_NAME:R}
20100332Sru.endif
2142915SjdpSONAME?=	${SHLIB_NAME}
2242915Sjdp.endif
2329141Speter
242827Sjkh.if defined(DEBUG_FLAGS)
252827SjkhCFLAGS+= ${DEBUG_FLAGS}
262827Sjkh.endif
272827Sjkh
282827Sjkh.if !defined(DEBUG_FLAGS)
291638SrgrimesSTRIP?=	-s
302827Sjkh.endif
311638Srgrimes
3218529Sbde.include <bsd.libnames.mk>
3318529Sbde
341638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
3542450Sjdp# .So used for PIC object files
361638Srgrimes.SUFFIXES:
3795064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln
381638Srgrimes
3996512Sru.if !defined(PICFLAG)
4096512Sru.if ${MACHINE_ARCH} == "sparc64"
4196512SruPICFLAG=-fPIC
4296512Sru.else
4396512SruPICFLAG=-fpic
4496512Sru.endif
4596512Sru.endif
4696512Sru
4792491Smarkm.c.ln:
4892491Smarkm	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
4992553Sru	    touch ${.TARGET}
5092491Smarkm
5192491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln:
5292553Sru	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
5392553Sru	    touch ${.TARGET}
5492491Smarkm
551638Srgrimes.c.o:
561844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5738186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
5838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
591638Srgrimes
601638Srgrimes.c.po:
6124761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6238186Speter	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
6338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
641638Srgrimes
6542450Sjdp.c.So:
661844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6796258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
6838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
691844Swollman
7036673Sdt.cc.o .C.o .cpp.o .cxx.o:
711844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
7238186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
7338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
741844Swollman
7536673Sdt.cc.po .C.po .cpp.po .cxx.po:
7624761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
7738186Speter	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
7838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
791844Swollman
8042450Sjdp.cc.So .C.So .cpp.So .cxx.So:
811844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8296258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
8338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
841844Swollman
851844Swollman.f.o:
861844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
8738186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
8838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
891844Swollman
901844Swollman.f.po:
9124761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
9238186Speter	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
9338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
941844Swollman
9542450Sjdp.f.So:
961844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
9796258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
9838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
991844Swollman
10036054Sbde.m.o:
10136054Sbde	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
10238186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
10338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
10436054Sbde
10536054Sbde.m.po:
10636054Sbde	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
10738186Speter	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
10838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
10936054Sbde
11042450Sjdp.m.So:
11136054Sbde	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
11296258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
11338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
11436054Sbde
11595251Sru.s.o .asm.o:
11697101Sru	${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \
11717510Speter	    ${.IMPSRC} -o ${.TARGET}
11896258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
11938186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1201638Srgrimes
12195251Sru.s.po .asm.po:
12297101Sru	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \
12317510Speter	    ${.IMPSRC} -o ${.TARGET}
12496258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
12538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1261638Srgrimes
12795251Sru.s.So .asm.So:
12897101Sru	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
12995216Smarkm	    ${AINC} -c ${.IMPSRC} -o ${.TARGET}
13038186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
13138186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1321638Srgrimes
1331844Swollman.S.o:
13497101Sru	${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
13596258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
13638186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1371844Swollman
1381844Swollman.S.po:
13997101Sru	${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
14096258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
14138186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1421844Swollman
14342450Sjdp.S.So:
14497101Sru	${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \
14595216Smarkm	    -o ${.TARGET}
14638186Speter	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
14738186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1481844Swollman
14996512Sruall: objwarn
1501638Srgrimes
15199362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
15299362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
15399362Sru.endif
15499362Sru
15596512Sru.if defined(LIB) && !empty(LIB)
15696512Sru_LIBS=		lib${LIB}.a
1571638Srgrimes
15896512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
15996512Sru	@${ECHO} building static ${LIB} library
16096512Sru	@rm -f ${.TARGET}
16196512Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
16296512Sru	${RANLIB} ${.TARGET}
16399362Sru.endif
1641638Srgrimes
16596512Sru.if !defined(INTERNALLIB)
16695114Sobrien
16799362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
16896512Sru_LIBS+=		lib${LIB}_p.a
16996512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
17095306Sru
17196512Srulib${LIB}_p.a: ${POBJS}
17296512Sru	@${ECHO} building profiled ${LIB} library
17396512Sru	@rm -f ${.TARGET}
17496512Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
17596512Sru	${RANLIB} ${.TARGET}
17674805Sru.endif
1771844Swollman
17899362Sru.if defined(SHLIB_NAME) || \
17999362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
18096512SruSOBJS+=		${OBJS:.o=.So}
18199362Sru.endif
1821844Swollman
18396512Sru.if defined(SHLIB_NAME)
18496512Sru_LIBS+=		${SHLIB_NAME}
1851638Srgrimes
18642915Sjdp${SHLIB_NAME}: ${SOBJS}
18742915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
18896512Sru	@rm -f ${.TARGET} ${SHLIB_LINK}
18942915Sjdp.if defined(SHLIB_LINK)
19096512Sru	@ln -fs ${.TARGET} ${SHLIB_LINK}
19142915Sjdp.endif
19296343Sobrien	@${CC} ${LDFLAGS} -shared -Wl,-x \
19396512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
19491011Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
19528945Speter.endif
1961844Swollman
19799362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
19896512Sru_LIBS+=		lib${LIB}_pic.a
19996512Sru
20096512Srulib${LIB}_pic.a: ${SOBJS}
2012353Sbde	@${ECHO} building special pic ${LIB} library
20296512Sru	@rm -f ${.TARGET}
20396512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
20496512Sru	${RANLIB} ${.TARGET}
2053859Sbde.endif
2061844Swollman
207103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
20896512SruLINTLIB=	llib-l${LIB}.ln
20996512Sru_LIBS+=		${LINTLIB}
21096512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
21196512Sru
21292491Smarkm${LINTLIB}: ${LINTOBJS}
21396512Sru	@${ECHO} building lint library ${.TARGET}
21496512Sru	@rm -f ${.TARGET}
21592491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
21692491Smarkm.endif
2171638Srgrimes
21896512Sru.endif !defined(INTERNALLIB)
21996512Sru
22096512Sruall: ${_LIBS}
22196512Sru
22296512Sru.if !defined(NOMAN)
22396512Sruall: _manpages
2241638Srgrimes.endif
2251638Srgrimes
22634179Sbde_EXTRADEPEND:
22724750Sbde	@TMP=_depend$$$$; \
22842450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
22924750Sbde	    > $$TMP; \
23024750Sbde	mv $$TMP ${DEPENDFILE}
23142915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
23231809Sbde.if defined(DPADD) && !empty(DPADD)
23342915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
23427910Sasami.endif
23528945Speter.endif
2361638Srgrimes
2371638Srgrimes.if !target(install)
2381638Srgrimes
23948204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
2402298SwollmanSHLINSTALLFLAGS+= -fschg
2412298Swollman.endif
2422298Swollman
24349328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
24449328Shoek.for ie in ${INSTALLFLAGS_EDIT}
24549328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
24649328Shoek.endfor
24756971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
24849328Shoek.for ie in ${INSTALLFLAGS_EDIT}
24949328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
25049328Shoek.endfor
25149328Shoek
25299362Sru.if !defined(INTERNALLIB)
25395306Srurealinstall: _libinstall
25499343Sru.ORDER: beforeinstall _libinstall
25595306Sru_libinstall:
25699362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB)
25792980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
25849328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
25996512Sru.endif
26099362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
26192980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
26249328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2631638Srgrimes.endif
264116144Sobrien.if defined(SHLIB_NAME)
265100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
26649328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
26742915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
26842915Sjdp.if defined(SHLIB_LINK)
26996512Sru	ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
2701844Swollman.endif
27128945Speter.endif
27299362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
273100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
27449328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2751844Swollman.endif
276103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
277100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
27896462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
27996462Sru.endif
28099362Sru.endif !defined(INTERNALLIB)
28196462Sru
28297769Sru.include <bsd.files.mk>
28396668Sru.include <bsd.incs.mk>
28499256Sru.include <bsd.links.mk>
28596462Sru
28696162Sru.if !defined(NOMAN)
28796164Srurealinstall: _maninstall
28899343Sru.ORDER: beforeinstall _maninstall
28996162Sru.endif
29096162Sru
2911638Srgrimes.endif
2921638Srgrimes
2931638Srgrimes.if !target(lint)
29495306Srulint: ${SRCS:M*.c}
295103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2961638Srgrimes.endif
2971638Srgrimes
2981844Swollman.if !defined(NOMAN)
2991638Srgrimes.include <bsd.man.mk>
30074842Sru.endif
3011844Swollman
3021844Swollman.include <bsd.dep.mk>
30334092Sbde
30499362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
30596512Sru.if defined(LIB) && !empty(LIB)
30699362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
30734092Sbde.endif
30899362Sru.if defined(SHLIB_NAME) || \
30999362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
31099362Sru${SOBJS}: ${SRCS:M*.h}
31196512Sru.endif
31299362Sru.endif
31334092Sbde
314100457Sru.if !target(clean)
315100457Sruclean:
316100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
317100457Sru	rm -f ${CLEANFILES}
318100457Sru.endif
319100457Sru.if defined(LIB) && !empty(LIB)
320100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
321100457Sru.endif
322100457Sru.if !defined(INTERNALLIB)
323100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
324100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
325100457Sru.endif
326100457Sru.if defined(SHLIB_NAME) || \
327100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
328100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
329100457Sru.endif
330100457Sru.if defined(SHLIB_NAME)
331100457Sru.if defined(SHLIB_LINK)
332100457Sru	rm -f ${SHLIB_LINK}
333100457Sru.endif
334100457Sru.if defined(LIB) && !empty(LIB)
335100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
336100457Sru.endif
337100457Sru.endif
338100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
339100457Sru	rm -f ${LINTOBJS}
340100457Sru.endif
341100457Sru.endif !defined(INTERNALLIB)
342100457Sru.if defined(_LIBS) && !empty(_LIBS)
343100457Sru	rm -f ${_LIBS}
344100457Sru.endif
345100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
346100457Sru	rm -rf ${CLEANDIRS}
347100457Sru.endif
348100457Sru.endif
349100457Sru
35016663Sjkh.include <bsd.obj.mk>
35176861Skris
35276861Skris.include <bsd.sys.mk>
353