bsd.lib.mk revision 119846
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 119846 2003-09-07 14:15:40Z ru $
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
24119607Sru.if defined(CRUNCH_CFLAGS)
25117034SgordonCFLAGS+=	${CRUNCH_CFLAGS}
26119607Sru.endif
27117034Sgordon
282827Sjkh.if defined(DEBUG_FLAGS)
292827SjkhCFLAGS+= ${DEBUG_FLAGS}
302827Sjkh.endif
312827Sjkh
322827Sjkh.if !defined(DEBUG_FLAGS)
331638SrgrimesSTRIP?=	-s
342827Sjkh.endif
351638Srgrimes
3618529Sbde.include <bsd.libnames.mk>
3718529Sbde
381638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
3942450Sjdp# .So used for PIC object files
401638Srgrimes.SUFFIXES:
41117173Sru.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
421638Srgrimes
4396512Sru.if !defined(PICFLAG)
4496512Sru.if ${MACHINE_ARCH} == "sparc64"
4596512SruPICFLAG=-fPIC
4696512Sru.else
4796512SruPICFLAG=-fpic
4896512Sru.endif
4996512Sru.endif
5096512Sru
511638Srgrimes.c.po:
5224761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
531638Srgrimes
5442450Sjdp.c.So:
551844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
561844Swollman
5736673Sdt.cc.po .C.po .cpp.po .cxx.po:
5824761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
591844Swollman
6042450Sjdp.cc.So .C.So .cpp.So .cxx.So:
611844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
621844Swollman
631844Swollman.f.po:
6424761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
651844Swollman
6642450Sjdp.f.So:
671844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
681844Swollman
6936054Sbde.m.po:
7036054Sbde	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
7136054Sbde
7242450Sjdp.m.So:
7336054Sbde	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
7436054Sbde
75117173Sru.s.po .s.So:
76117159Sru	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
771638Srgrimes
78117173Sru.asm.po:
79117173Sru	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
80117173Sru
81117173Sru.asm.So:
82117173Sru	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
83117173Sru	    -c ${.IMPSRC} -o ${.TARGET}
84117173Sru
851844Swollman.S.po:
86117122Sru	${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
871844Swollman
8842450Sjdp.S.So:
89117122Sru	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
901844Swollman
9196512Sruall: objwarn
921638Srgrimes
9399362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
9499362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
9599362Sru.endif
9699362Sru
9796512Sru.if defined(LIB) && !empty(LIB)
9896512Sru_LIBS=		lib${LIB}.a
991638Srgrimes
10096512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
10196512Sru	@${ECHO} building static ${LIB} library
10296512Sru	@rm -f ${.TARGET}
10396512Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
10496512Sru	${RANLIB} ${.TARGET}
10599362Sru.endif
1061638Srgrimes
10796512Sru.if !defined(INTERNALLIB)
10895114Sobrien
10999362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
11096512Sru_LIBS+=		lib${LIB}_p.a
11196512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
11295306Sru
11396512Srulib${LIB}_p.a: ${POBJS}
11496512Sru	@${ECHO} building profiled ${LIB} library
11596512Sru	@rm -f ${.TARGET}
11696512Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
11796512Sru	${RANLIB} ${.TARGET}
11874805Sru.endif
1191844Swollman
12099362Sru.if defined(SHLIB_NAME) || \
12199362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
12296512SruSOBJS+=		${OBJS:.o=.So}
12399362Sru.endif
1241844Swollman
12596512Sru.if defined(SHLIB_NAME)
12696512Sru_LIBS+=		${SHLIB_NAME}
1271638Srgrimes
12842915Sjdp${SHLIB_NAME}: ${SOBJS}
12942915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
13096512Sru	@rm -f ${.TARGET} ${SHLIB_LINK}
13142915Sjdp.if defined(SHLIB_LINK)
13296512Sru	@ln -fs ${.TARGET} ${SHLIB_LINK}
13342915Sjdp.endif
13496343Sobrien	@${CC} ${LDFLAGS} -shared -Wl,-x \
13596512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
13691011Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
13728945Speter.endif
1381844Swollman
13999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
14096512Sru_LIBS+=		lib${LIB}_pic.a
14196512Sru
14296512Srulib${LIB}_pic.a: ${SOBJS}
1432353Sbde	@${ECHO} building special pic ${LIB} library
14496512Sru	@rm -f ${.TARGET}
14596512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
14696512Sru	${RANLIB} ${.TARGET}
1473859Sbde.endif
1481844Swollman
149103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
15096512SruLINTLIB=	llib-l${LIB}.ln
15196512Sru_LIBS+=		${LINTLIB}
15296512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
15396512Sru
15492491Smarkm${LINTLIB}: ${LINTOBJS}
15596512Sru	@${ECHO} building lint library ${.TARGET}
15696512Sru	@rm -f ${.TARGET}
15792491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
15892491Smarkm.endif
1591638Srgrimes
16096512Sru.endif !defined(INTERNALLIB)
16196512Sru
16296512Sruall: ${_LIBS}
16396512Sru
16496512Sru.if !defined(NOMAN)
16596512Sruall: _manpages
1661638Srgrimes.endif
1671638Srgrimes
16834179Sbde_EXTRADEPEND:
16924750Sbde	@TMP=_depend$$$$; \
17042450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
17124750Sbde	    > $$TMP; \
17224750Sbde	mv $$TMP ${DEPENDFILE}
17342915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
17431809Sbde.if defined(DPADD) && !empty(DPADD)
17542915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
17627910Sasami.endif
17728945Speter.endif
1781638Srgrimes
1791638Srgrimes.if !target(install)
1801638Srgrimes
18148204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
1822298SwollmanSHLINSTALLFLAGS+= -fschg
1832298Swollman.endif
1842298Swollman
18549328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
18649328Shoek.for ie in ${INSTALLFLAGS_EDIT}
18749328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
18849328Shoek.endfor
18956971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
19049328Shoek.for ie in ${INSTALLFLAGS_EDIT}
19149328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
19249328Shoek.endfor
19349328Shoek
19499362Sru.if !defined(INTERNALLIB)
19595306Srurealinstall: _libinstall
19699343Sru.ORDER: beforeinstall _libinstall
19795306Sru_libinstall:
19899362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB)
19992980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
20049328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
20196512Sru.endif
20299362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
20392980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
20449328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2051638Srgrimes.endif
206116144Sobrien.if defined(SHLIB_NAME)
207100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
20849328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
20942915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
21042915Sjdp.if defined(SHLIB_LINK)
211119846Sru.if ${SHLIBDIR} == ${LIBDIR}
212119846Sru	ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
213119846Sru.else
214119846Sru	ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
215119730Speter	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
216119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
217119846Sru	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
218119846Sru	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
2191844Swollman.endif
22028945Speter.endif
221119730Speter.endif
222119846Sru.endif
22399362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
224100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
22549328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2261844Swollman.endif
227103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
228100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
22996462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
23096462Sru.endif
23199362Sru.endif !defined(INTERNALLIB)
23296462Sru
23397769Sru.include <bsd.files.mk>
23496668Sru.include <bsd.incs.mk>
23599256Sru.include <bsd.links.mk>
23696462Sru
23796162Sru.if !defined(NOMAN)
23896164Srurealinstall: _maninstall
23999343Sru.ORDER: beforeinstall _maninstall
24096162Sru.endif
24196162Sru
2421638Srgrimes.endif
2431638Srgrimes
2441638Srgrimes.if !target(lint)
24595306Srulint: ${SRCS:M*.c}
246103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2471638Srgrimes.endif
2481638Srgrimes
2491844Swollman.if !defined(NOMAN)
2501638Srgrimes.include <bsd.man.mk>
25174842Sru.endif
2521844Swollman
2531844Swollman.include <bsd.dep.mk>
25434092Sbde
25599362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
25696512Sru.if defined(LIB) && !empty(LIB)
25799362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
25834092Sbde.endif
25999362Sru.if defined(SHLIB_NAME) || \
26099362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
26199362Sru${SOBJS}: ${SRCS:M*.h}
26296512Sru.endif
26399362Sru.endif
26434092Sbde
265100457Sru.if !target(clean)
266100457Sruclean:
267100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
268100457Sru	rm -f ${CLEANFILES}
269100457Sru.endif
270100457Sru.if defined(LIB) && !empty(LIB)
271100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
272100457Sru.endif
273100457Sru.if !defined(INTERNALLIB)
274100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
275100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
276100457Sru.endif
277100457Sru.if defined(SHLIB_NAME) || \
278100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
279100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
280100457Sru.endif
281100457Sru.if defined(SHLIB_NAME)
282100457Sru.if defined(SHLIB_LINK)
283100457Sru	rm -f ${SHLIB_LINK}
284100457Sru.endif
285100457Sru.if defined(LIB) && !empty(LIB)
286100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
287100457Sru.endif
288100457Sru.endif
289100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
290100457Sru	rm -f ${LINTOBJS}
291100457Sru.endif
292100457Sru.endif !defined(INTERNALLIB)
293100457Sru.if defined(_LIBS) && !empty(_LIBS)
294100457Sru	rm -f ${_LIBS}
295100457Sru.endif
296100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
297100457Sru	rm -rf ${CLEANDIRS}
298100457Sru.endif
299100457Sru.endif
300100457Sru
30116663Sjkh.include <bsd.obj.mk>
30276861Skris
30376861Skris.include <bsd.sys.mk>
304