bsd.lib.mk revision 144893
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 144893 2005-04-11 07:13:29Z harti $
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
312827Sjkh.if defined(DEBUG_FLAGS)
322827SjkhCFLAGS+= ${DEBUG_FLAGS}
332827Sjkh.endif
342827Sjkh
352827Sjkh.if !defined(DEBUG_FLAGS)
361638SrgrimesSTRIP?=	-s
372827Sjkh.endif
381638Srgrimes
3918529Sbde.include <bsd.libnames.mk>
4018529Sbde
411638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
4242450Sjdp# .So used for PIC object files
431638Srgrimes.SUFFIXES:
44117173Sru.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
451638Srgrimes
4696512Sru.if !defined(PICFLAG)
4796512Sru.if ${MACHINE_ARCH} == "sparc64"
4896512SruPICFLAG=-fPIC
4996512Sru.else
5096512SruPICFLAG=-fpic
5196512Sru.endif
5296512Sru.endif
5396512Sru
54126890Strhodes.if ${CC} == "icc"
55126890StrhodesPO_FLAG=-p
56126890Strhodes.else
57126890StrhodesPO_FLAG=-pg
58126890Strhodes.endif
59126890Strhodes
601638Srgrimes.c.po:
61126890Strhodes	${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
621638Srgrimes
6342450Sjdp.c.So:
641844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
651844Swollman
6636673Sdt.cc.po .C.po .cpp.po .cxx.po:
67126890Strhodes	${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
681844Swollman
6942450Sjdp.cc.So .C.So .cpp.So .cxx.So:
701844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
711844Swollman
721844Swollman.f.po:
73127027Strhodes	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
741844Swollman
7542450Sjdp.f.So:
761844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
771844Swollman
7836054Sbde.m.po:
7936054Sbde	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
8036054Sbde
8142450Sjdp.m.So:
8236054Sbde	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8336054Sbde
84117173Sru.s.po .s.So:
85117159Sru	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
861638Srgrimes
87117173Sru.asm.po:
88117173Sru	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
89117173Sru
90117173Sru.asm.So:
91117173Sru	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
92117173Sru	    -c ${.IMPSRC} -o ${.TARGET}
93117173Sru
941844Swollman.S.po:
95117122Sru	${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
961844Swollman
9742450Sjdp.S.So:
98117122Sru	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
991844Swollman
10096512Sruall: objwarn
1011638Srgrimes
10299362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
10399362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
10499362Sru.endif
10599362Sru
10696512Sru.if defined(LIB) && !empty(LIB)
10796512Sru_LIBS=		lib${LIB}.a
1081638Srgrimes
10996512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
11096512Sru	@${ECHO} building static ${LIB} library
11196512Sru	@rm -f ${.TARGET}
11296512Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
11396512Sru	${RANLIB} ${.TARGET}
11499362Sru.endif
1151638Srgrimes
11696512Sru.if !defined(INTERNALLIB)
11795114Sobrien
118139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
11996512Sru_LIBS+=		lib${LIB}_p.a
12096512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
12195306Sru
12296512Srulib${LIB}_p.a: ${POBJS}
12396512Sru	@${ECHO} building profiled ${LIB} library
12496512Sru	@rm -f ${.TARGET}
12596512Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
12696512Sru	${RANLIB} ${.TARGET}
12774805Sru.endif
1281844Swollman
12999362Sru.if defined(SHLIB_NAME) || \
13099362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
13196512SruSOBJS+=		${OBJS:.o=.So}
13299362Sru.endif
1331844Swollman
13496512Sru.if defined(SHLIB_NAME)
13596512Sru_LIBS+=		${SHLIB_NAME}
1361638Srgrimes
13742915Sjdp${SHLIB_NAME}: ${SOBJS}
13842915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
13996512Sru	@rm -f ${.TARGET} ${SHLIB_LINK}
14042915Sjdp.if defined(SHLIB_LINK)
14196512Sru	@ln -fs ${.TARGET} ${SHLIB_LINK}
14242915Sjdp.endif
14396343Sobrien	@${CC} ${LDFLAGS} -shared -Wl,-x \
14496512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
14591011Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
14628945Speter.endif
1471844Swollman
14899362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
14996512Sru_LIBS+=		lib${LIB}_pic.a
15096512Sru
15196512Srulib${LIB}_pic.a: ${SOBJS}
1522353Sbde	@${ECHO} building special pic ${LIB} library
15396512Sru	@rm -f ${.TARGET}
15496512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
15596512Sru	${RANLIB} ${.TARGET}
1563859Sbde.endif
1571844Swollman
158139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
15996512SruLINTLIB=	llib-l${LIB}.ln
16096512Sru_LIBS+=		${LINTLIB}
16196512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
16296512Sru
16392491Smarkm${LINTLIB}: ${LINTOBJS}
16496512Sru	@${ECHO} building lint library ${.TARGET}
16596512Sru	@rm -f ${.TARGET}
16692491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
16792491Smarkm.endif
1681638Srgrimes
169144893Sharti.endif # !defined(INTERNALLIB)
17096512Sru
17196512Sruall: ${_LIBS}
17296512Sru
173139103Sru.if !defined(NO_MAN)
17496512Sruall: _manpages
1751638Srgrimes.endif
1761638Srgrimes
17734179Sbde_EXTRADEPEND:
17824750Sbde	@TMP=_depend$$$$; \
17942450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
18024750Sbde	    > $$TMP; \
18124750Sbde	mv $$TMP ${DEPENDFILE}
182139107Sru.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
18331809Sbde.if defined(DPADD) && !empty(DPADD)
18442915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
18527910Sasami.endif
18628945Speter.endif
1871638Srgrimes
1881638Srgrimes.if !target(install)
1891638Srgrimes
190136019Sru.if defined(PRECIOUSLIB)
191139111Sru.if !defined(NO_FSCHG)
1922298SwollmanSHLINSTALLFLAGS+= -fschg
1932298Swollman.endif
194136019SruSHLINSTALLFLAGS+= -S
195136019Sru.endif
1962298Swollman
19749328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
19849328Shoek.for ie in ${INSTALLFLAGS_EDIT}
19949328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
20049328Shoek.endfor
20156971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
20249328Shoek.for ie in ${INSTALLFLAGS_EDIT}
20349328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
20449328Shoek.endfor
20549328Shoek
20699362Sru.if !defined(INTERNALLIB)
20795306Srurealinstall: _libinstall
20899343Sru.ORDER: beforeinstall _libinstall
20995306Sru_libinstall:
210139110Sru.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB)
21192980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
21249328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
21396512Sru.endif
214139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
21592980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
21649328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2171638Srgrimes.endif
218116144Sobrien.if defined(SHLIB_NAME)
219100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
22049328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
22142915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
22242915Sjdp.if defined(SHLIB_LINK)
223119846Sru.if ${SHLIBDIR} == ${LIBDIR}
224119846Sru	ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
225119846Sru.else
226119846Sru	ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
227119730Speter	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
228119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
229119846Sru	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
230119846Sru	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
2311844Swollman.endif
23228945Speter.endif
233119730Speter.endif
234119846Sru.endif
23599362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
236100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
23749328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2381844Swollman.endif
239139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
240100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
24196462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
24296462Sru.endif
243144893Sharti.endif # !defined(INTERNALLIB)
24496462Sru
245141503Sphantom.include <bsd.nls.mk>
24697769Sru.include <bsd.files.mk>
24796668Sru.include <bsd.incs.mk>
24899256Sru.include <bsd.links.mk>
24996462Sru
250139103Sru.if !defined(NO_MAN)
25196164Srurealinstall: _maninstall
25299343Sru.ORDER: beforeinstall _maninstall
25396162Sru.endif
25496162Sru
2551638Srgrimes.endif
2561638Srgrimes
2571638Srgrimes.if !target(lint)
25895306Srulint: ${SRCS:M*.c}
259103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2601638Srgrimes.endif
2611638Srgrimes
262139103Sru.if !defined(NO_MAN)
2631638Srgrimes.include <bsd.man.mk>
26474842Sru.endif
2651844Swollman
2661844Swollman.include <bsd.dep.mk>
26734092Sbde
26899362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
26996512Sru.if defined(LIB) && !empty(LIB)
27099362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
271124637Sru.for _S in ${SRCS:N*.[hly]}
272124637Sru${_S:R}.po: ${_S}
273124637Sru.endfor
27434092Sbde.endif
27599362Sru.if defined(SHLIB_NAME) || \
27699362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
27799362Sru${SOBJS}: ${SRCS:M*.h}
278124637Sru.for _S in ${SRCS:N*.[hly]}
279124637Sru${_S:R}.So: ${_S}
280124637Sru.endfor
28196512Sru.endif
28299362Sru.endif
28334092Sbde
284100457Sru.if !target(clean)
285100457Sruclean:
286100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
287100457Sru	rm -f ${CLEANFILES}
288100457Sru.endif
289100457Sru.if defined(LIB) && !empty(LIB)
290100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
291100457Sru.endif
292100457Sru.if !defined(INTERNALLIB)
293139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
294100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
295100457Sru.endif
296100457Sru.if defined(SHLIB_NAME) || \
297100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
298100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
299100457Sru.endif
300100457Sru.if defined(SHLIB_NAME)
301100457Sru.if defined(SHLIB_LINK)
302100457Sru	rm -f ${SHLIB_LINK}
303100457Sru.endif
304100457Sru.if defined(LIB) && !empty(LIB)
305100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
306100457Sru.endif
307100457Sru.endif
308100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
309100457Sru	rm -f ${LINTOBJS}
310100457Sru.endif
311144893Sharti.endif # !defined(INTERNALLIB)
312100457Sru.if defined(_LIBS) && !empty(_LIBS)
313100457Sru	rm -f ${_LIBS}
314100457Sru.endif
315100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
316100457Sru	rm -rf ${CLEANDIRS}
317100457Sru.endif
318100457Sru.endif
319100457Sru
32016663Sjkh.include <bsd.obj.mk>
32176861Skris
32276861Skris.include <bsd.sys.mk>
323