bsd.lib.mk revision 117034
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 117034 2003-06-29 18:16:26Z gordon $
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
24117034SgordonCFLAGS+=	${CRUNCH_CFLAGS}
25117034Sgordon
262827Sjkh.if defined(DEBUG_FLAGS)
272827SjkhCFLAGS+= ${DEBUG_FLAGS}
282827Sjkh.endif
292827Sjkh
302827Sjkh.if !defined(DEBUG_FLAGS)
311638SrgrimesSTRIP?=	-s
322827Sjkh.endif
331638Srgrimes
3418529Sbde.include <bsd.libnames.mk>
3518529Sbde
361638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
3742450Sjdp# .So used for PIC object files
381638Srgrimes.SUFFIXES:
3995064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln
401638Srgrimes
4196512Sru.if !defined(PICFLAG)
4296512Sru.if ${MACHINE_ARCH} == "sparc64"
4396512SruPICFLAG=-fPIC
4496512Sru.else
4596512SruPICFLAG=-fpic
4696512Sru.endif
4796512Sru.endif
4896512Sru
4992491Smarkm.c.ln:
5092491Smarkm	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
5192553Sru	    touch ${.TARGET}
5292491Smarkm
5392491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln:
5492553Sru	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
5592553Sru	    touch ${.TARGET}
5692491Smarkm
571638Srgrimes.c.o:
581844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
59116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
6038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
611638Srgrimes
621638Srgrimes.c.po:
6324761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
64116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
6538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
661638Srgrimes
6742450Sjdp.c.So:
681844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6996258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
7038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
711844Swollman
7236673Sdt.cc.o .C.o .cpp.o .cxx.o:
731844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
74116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
7538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
761844Swollman
7736673Sdt.cc.po .C.po .cpp.po .cxx.po:
7824761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
79116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
8038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
811844Swollman
8242450Sjdp.cc.So .C.So .cpp.So .cxx.So:
831844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8496258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
8538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
861844Swollman
871844Swollman.f.o:
881844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
89116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
9038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
911844Swollman
921844Swollman.f.po:
9324761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
94116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
9538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
961844Swollman
9742450Sjdp.f.So:
981844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
9996258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
10038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1011844Swollman
10236054Sbde.m.o:
10336054Sbde	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
104116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
10538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
10636054Sbde
10736054Sbde.m.po:
10836054Sbde	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
109116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
11038186Speter	@mv ${.TARGET}.tmp ${.TARGET}
11136054Sbde
11242450Sjdp.m.So:
11336054Sbde	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
11496258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
11538186Speter	@mv ${.TARGET}.tmp ${.TARGET}
11636054Sbde
11795251Sru.s.o .asm.o:
11897101Sru	${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \
11917510Speter	    ${.IMPSRC} -o ${.TARGET}
12096258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
12138186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1221638Srgrimes
12395251Sru.s.po .asm.po:
12497101Sru	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \
12517510Speter	    ${.IMPSRC} -o ${.TARGET}
12696258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
12738186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1281638Srgrimes
12995251Sru.s.So .asm.So:
13097101Sru	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
13195216Smarkm	    ${AINC} -c ${.IMPSRC} -o ${.TARGET}
132116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
13338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1341638Srgrimes
1351844Swollman.S.o:
13697101Sru	${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
13796258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
13838186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1391844Swollman
1401844Swollman.S.po:
14197101Sru	${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
14296258Sobrien	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET}
14338186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1441844Swollman
14542450Sjdp.S.So:
14697101Sru	${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \
14795216Smarkm	    -o ${.TARGET}
148116855Speter	@${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET}
14938186Speter	@mv ${.TARGET}.tmp ${.TARGET}
1501844Swollman
15196512Sruall: objwarn
1521638Srgrimes
15399362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
15499362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
15599362Sru.endif
15699362Sru
15796512Sru.if defined(LIB) && !empty(LIB)
15896512Sru_LIBS=		lib${LIB}.a
1591638Srgrimes
16096512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
16196512Sru	@${ECHO} building static ${LIB} library
16296512Sru	@rm -f ${.TARGET}
16396512Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
16496512Sru	${RANLIB} ${.TARGET}
16599362Sru.endif
1661638Srgrimes
16796512Sru.if !defined(INTERNALLIB)
16895114Sobrien
16999362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
17096512Sru_LIBS+=		lib${LIB}_p.a
17196512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
17295306Sru
17396512Srulib${LIB}_p.a: ${POBJS}
17496512Sru	@${ECHO} building profiled ${LIB} library
17596512Sru	@rm -f ${.TARGET}
17696512Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
17796512Sru	${RANLIB} ${.TARGET}
17874805Sru.endif
1791844Swollman
18099362Sru.if defined(SHLIB_NAME) || \
18199362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
18296512SruSOBJS+=		${OBJS:.o=.So}
18399362Sru.endif
1841844Swollman
18596512Sru.if defined(SHLIB_NAME)
18696512Sru_LIBS+=		${SHLIB_NAME}
1871638Srgrimes
18842915Sjdp${SHLIB_NAME}: ${SOBJS}
18942915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
19096512Sru	@rm -f ${.TARGET} ${SHLIB_LINK}
19142915Sjdp.if defined(SHLIB_LINK)
19296512Sru	@ln -fs ${.TARGET} ${SHLIB_LINK}
19342915Sjdp.endif
19496343Sobrien	@${CC} ${LDFLAGS} -shared -Wl,-x \
19596512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
19691011Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
19728945Speter.endif
1981844Swollman
19999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
20096512Sru_LIBS+=		lib${LIB}_pic.a
20196512Sru
20296512Srulib${LIB}_pic.a: ${SOBJS}
2032353Sbde	@${ECHO} building special pic ${LIB} library
20496512Sru	@rm -f ${.TARGET}
20596512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
20696512Sru	${RANLIB} ${.TARGET}
2073859Sbde.endif
2081844Swollman
209103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
21096512SruLINTLIB=	llib-l${LIB}.ln
21196512Sru_LIBS+=		${LINTLIB}
21296512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
21396512Sru
21492491Smarkm${LINTLIB}: ${LINTOBJS}
21596512Sru	@${ECHO} building lint library ${.TARGET}
21696512Sru	@rm -f ${.TARGET}
21792491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
21892491Smarkm.endif
2191638Srgrimes
22096512Sru.endif !defined(INTERNALLIB)
22196512Sru
22296512Sruall: ${_LIBS}
22396512Sru
22496512Sru.if !defined(NOMAN)
22596512Sruall: _manpages
2261638Srgrimes.endif
2271638Srgrimes
22834179Sbde_EXTRADEPEND:
22924750Sbde	@TMP=_depend$$$$; \
23042450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
23124750Sbde	    > $$TMP; \
23224750Sbde	mv $$TMP ${DEPENDFILE}
23342915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
23431809Sbde.if defined(DPADD) && !empty(DPADD)
23542915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
23627910Sasami.endif
23728945Speter.endif
2381638Srgrimes
2391638Srgrimes.if !target(install)
2401638Srgrimes
24148204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
2422298SwollmanSHLINSTALLFLAGS+= -fschg
2432298Swollman.endif
2442298Swollman
24549328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
24649328Shoek.for ie in ${INSTALLFLAGS_EDIT}
24749328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
24849328Shoek.endfor
24956971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
25049328Shoek.for ie in ${INSTALLFLAGS_EDIT}
25149328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
25249328Shoek.endfor
25349328Shoek
25499362Sru.if !defined(INTERNALLIB)
25595306Srurealinstall: _libinstall
25699343Sru.ORDER: beforeinstall _libinstall
25795306Sru_libinstall:
25899362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB)
25992980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
26049328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
26196512Sru.endif
26299362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
26392980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
26449328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2651638Srgrimes.endif
266116144Sobrien.if defined(SHLIB_NAME)
267100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
26849328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
26942915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
27042915Sjdp.if defined(SHLIB_LINK)
27196512Sru	ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
2721844Swollman.endif
27328945Speter.endif
27499362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
275100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
27649328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2771844Swollman.endif
278103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
279100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
28096462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
28196462Sru.endif
28299362Sru.endif !defined(INTERNALLIB)
28396462Sru
28497769Sru.include <bsd.files.mk>
28596668Sru.include <bsd.incs.mk>
28699256Sru.include <bsd.links.mk>
28796462Sru
28896162Sru.if !defined(NOMAN)
28996164Srurealinstall: _maninstall
29099343Sru.ORDER: beforeinstall _maninstall
29196162Sru.endif
29296162Sru
2931638Srgrimes.endif
2941638Srgrimes
2951638Srgrimes.if !target(lint)
29695306Srulint: ${SRCS:M*.c}
297103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2981638Srgrimes.endif
2991638Srgrimes
3001844Swollman.if !defined(NOMAN)
3011638Srgrimes.include <bsd.man.mk>
30274842Sru.endif
3031844Swollman
3041844Swollman.include <bsd.dep.mk>
30534092Sbde
30699362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
30796512Sru.if defined(LIB) && !empty(LIB)
30899362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
30934092Sbde.endif
31099362Sru.if defined(SHLIB_NAME) || \
31199362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
31299362Sru${SOBJS}: ${SRCS:M*.h}
31396512Sru.endif
31499362Sru.endif
31534092Sbde
316100457Sru.if !target(clean)
317100457Sruclean:
318100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
319100457Sru	rm -f ${CLEANFILES}
320100457Sru.endif
321100457Sru.if defined(LIB) && !empty(LIB)
322100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
323100457Sru.endif
324100457Sru.if !defined(INTERNALLIB)
325100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
326100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
327100457Sru.endif
328100457Sru.if defined(SHLIB_NAME) || \
329100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
330100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
331100457Sru.endif
332100457Sru.if defined(SHLIB_NAME)
333100457Sru.if defined(SHLIB_LINK)
334100457Sru	rm -f ${SHLIB_LINK}
335100457Sru.endif
336100457Sru.if defined(LIB) && !empty(LIB)
337100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
338100457Sru.endif
339100457Sru.endif
340100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
341100457Sru	rm -f ${LINTOBJS}
342100457Sru.endif
343100457Sru.endif !defined(INTERNALLIB)
344100457Sru.if defined(_LIBS) && !empty(_LIBS)
345100457Sru	rm -f ${_LIBS}
346100457Sru.endif
347100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
348100457Sru	rm -rf ${CLEANDIRS}
349100457Sru.endif
350100457Sru.endif
351100457Sru
35216663Sjkh.include <bsd.obj.mk>
35376861Skris
35476861Skris.include <bsd.sys.mk>
355