bsd.lib.mk revision 127027
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 127027 2004-03-15 17:01:31Z trhodes $
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
18125119Sru.if defined(SHLIB_NAME) && !empty(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
51126890Strhodes.if ${CC} == "icc"
52126890StrhodesPO_FLAG=-p
53126890Strhodes.else
54126890StrhodesPO_FLAG=-pg
55126890Strhodes.endif
56126890Strhodes
571638Srgrimes.c.po:
58126890Strhodes	${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
591638Srgrimes
6042450Sjdp.c.So:
611844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
621844Swollman
6336673Sdt.cc.po .C.po .cpp.po .cxx.po:
64126890Strhodes	${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
651844Swollman
6642450Sjdp.cc.So .C.So .cpp.So .cxx.So:
671844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
681844Swollman
691844Swollman.f.po:
70127027Strhodes	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
711844Swollman
7242450Sjdp.f.So:
731844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
741844Swollman
7536054Sbde.m.po:
7636054Sbde	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
7736054Sbde
7842450Sjdp.m.So:
7936054Sbde	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
8036054Sbde
81117173Sru.s.po .s.So:
82117159Sru	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
831638Srgrimes
84117173Sru.asm.po:
85117173Sru	${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
86117173Sru
87117173Sru.asm.So:
88117173Sru	${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
89117173Sru	    -c ${.IMPSRC} -o ${.TARGET}
90117173Sru
911844Swollman.S.po:
92117122Sru	${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
931844Swollman
9442450Sjdp.S.So:
95117122Sru	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
961844Swollman
9796512Sruall: objwarn
981638Srgrimes
9999362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
10099362SruOBJS+=		${SRCS:N*.h:R:S/$/.o/}
10199362Sru.endif
10299362Sru
10396512Sru.if defined(LIB) && !empty(LIB)
10496512Sru_LIBS=		lib${LIB}.a
1051638Srgrimes
10696512Srulib${LIB}.a: ${OBJS} ${STATICOBJS}
10796512Sru	@${ECHO} building static ${LIB} library
10896512Sru	@rm -f ${.TARGET}
10996512Sru	@${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
11096512Sru	${RANLIB} ${.TARGET}
11199362Sru.endif
1121638Srgrimes
11396512Sru.if !defined(INTERNALLIB)
11495114Sobrien
11599362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
11696512Sru_LIBS+=		lib${LIB}_p.a
11796512SruPOBJS+=		${OBJS:.o=.po} ${STATICOBJS:.o=.po}
11895306Sru
11996512Srulib${LIB}_p.a: ${POBJS}
12096512Sru	@${ECHO} building profiled ${LIB} library
12196512Sru	@rm -f ${.TARGET}
12296512Sru	@${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
12396512Sru	${RANLIB} ${.TARGET}
12474805Sru.endif
1251844Swollman
12699362Sru.if defined(SHLIB_NAME) || \
12799362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
12896512SruSOBJS+=		${OBJS:.o=.So}
12999362Sru.endif
1301844Swollman
13196512Sru.if defined(SHLIB_NAME)
13296512Sru_LIBS+=		${SHLIB_NAME}
1331638Srgrimes
13442915Sjdp${SHLIB_NAME}: ${SOBJS}
13542915Sjdp	@${ECHO} building shared library ${SHLIB_NAME}
13696512Sru	@rm -f ${.TARGET} ${SHLIB_LINK}
13742915Sjdp.if defined(SHLIB_LINK)
13896512Sru	@ln -fs ${.TARGET} ${SHLIB_LINK}
13942915Sjdp.endif
14096343Sobrien	@${CC} ${LDFLAGS} -shared -Wl,-x \
14196512Sru	    -o ${.TARGET} -Wl,-soname,${SONAME} \
14291011Sru	    `lorder ${SOBJS} | tsort -q` ${LDADD}
14328945Speter.endif
1441844Swollman
14599362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
14696512Sru_LIBS+=		lib${LIB}_pic.a
14796512Sru
14896512Srulib${LIB}_pic.a: ${SOBJS}
1492353Sbde	@${ECHO} building special pic ${LIB} library
15096512Sru	@rm -f ${.TARGET}
15196512Sru	@${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
15296512Sru	${RANLIB} ${.TARGET}
1533859Sbde.endif
1541844Swollman
155103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
15696512SruLINTLIB=	llib-l${LIB}.ln
15796512Sru_LIBS+=		${LINTLIB}
15896512SruLINTOBJS+=	${SRCS:M*.c:.c=.ln}
15996512Sru
16092491Smarkm${LINTLIB}: ${LINTOBJS}
16196512Sru	@${ECHO} building lint library ${.TARGET}
16296512Sru	@rm -f ${.TARGET}
16392491Smarkm	${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
16492491Smarkm.endif
1651638Srgrimes
166126938Strhodes.endif !defined(INTERNALLIB)
16796512Sru
16896512Sruall: ${_LIBS}
16996512Sru
17096512Sru.if !defined(NOMAN)
17196512Sruall: _manpages
1721638Srgrimes.endif
1731638Srgrimes
17434179Sbde_EXTRADEPEND:
17524750Sbde	@TMP=_depend$$$$; \
17642450Sjdp	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
17724750Sbde	    > $$TMP; \
17824750Sbde	mv $$TMP ${DEPENDFILE}
17942915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME)
18031809Sbde.if defined(DPADD) && !empty(DPADD)
18142915Sjdp	echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
18227910Sasami.endif
18328945Speter.endif
1841638Srgrimes
1851638Srgrimes.if !target(install)
1861638Srgrimes
18748204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG)
1882298SwollmanSHLINSTALLFLAGS+= -fschg
1892298Swollman.endif
1902298Swollman
19149328Shoek_INSTALLFLAGS:=	${INSTALLFLAGS}
19249328Shoek.for ie in ${INSTALLFLAGS_EDIT}
19349328Shoek_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
19449328Shoek.endfor
19556971Sru_SHLINSTALLFLAGS:=	${SHLINSTALLFLAGS}
19649328Shoek.for ie in ${INSTALLFLAGS_EDIT}
19749328Shoek_SHLINSTALLFLAGS:=	${_SHLINSTALLFLAGS${ie}}
19849328Shoek.endfor
19949328Shoek
20099362Sru.if !defined(INTERNALLIB)
20195306Srurealinstall: _libinstall
20299343Sru.ORDER: beforeinstall _libinstall
20395306Sru_libinstall:
20499362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB)
20592980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
20649328Shoek	    ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
20796512Sru.endif
20899362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
20992980Sdes	${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
21049328Shoek	    ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2111638Srgrimes.endif
212116144Sobrien.if defined(SHLIB_NAME)
213100872Sru	${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
21449328Shoek	    ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
21542915Sjdp	    ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
21642915Sjdp.if defined(SHLIB_LINK)
217119846Sru.if ${SHLIBDIR} == ${LIBDIR}
218119846Sru	ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
219119846Sru.else
220119846Sru	ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
221119730Speter	    ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
222119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
223119846Sru	-chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
224119846Sru	rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
2251844Swollman.endif
22628945Speter.endif
227119730Speter.endif
228119846Sru.endif
22999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
230100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
23149328Shoek	    ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2321844Swollman.endif
233103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB)
234100872Sru	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
23596462Sru	    ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
23696462Sru.endif
23799362Sru.endif !defined(INTERNALLIB)
23896462Sru
23997769Sru.include <bsd.files.mk>
24096668Sru.include <bsd.incs.mk>
24199256Sru.include <bsd.links.mk>
24296462Sru
24396162Sru.if !defined(NOMAN)
24496164Srurealinstall: _maninstall
24599343Sru.ORDER: beforeinstall _maninstall
24696162Sru.endif
24796162Sru
2481638Srgrimes.endif
2491638Srgrimes
2501638Srgrimes.if !target(lint)
25195306Srulint: ${SRCS:M*.c}
252103713Smarkm	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
2531638Srgrimes.endif
2541638Srgrimes
2551844Swollman.if !defined(NOMAN)
2561638Srgrimes.include <bsd.man.mk>
25774842Sru.endif
2581844Swollman
2591844Swollman.include <bsd.dep.mk>
26034092Sbde
26199362Sru.if !exists(${.OBJDIR}/${DEPENDFILE})
26296512Sru.if defined(LIB) && !empty(LIB)
26399362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
264124637Sru.for _S in ${SRCS:N*.[hly]}
265124637Sru${_S:R}.po: ${_S}
266124637Sru.endfor
26734092Sbde.endif
26899362Sru.if defined(SHLIB_NAME) || \
26999362Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
27099362Sru${SOBJS}: ${SRCS:M*.h}
271124637Sru.for _S in ${SRCS:N*.[hly]}
272124637Sru${_S:R}.So: ${_S}
273124637Sru.endfor
27496512Sru.endif
27599362Sru.endif
27634092Sbde
277100457Sru.if !target(clean)
278100457Sruclean:
279100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES)
280100457Sru	rm -f ${CLEANFILES}
281100457Sru.endif
282100457Sru.if defined(LIB) && !empty(LIB)
283100457Sru	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
284100457Sru.endif
285100457Sru.if !defined(INTERNALLIB)
286100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB)
287100457Sru	rm -f ${POBJS} ${POBJS:S/$/.tmp/}
288100457Sru.endif
289100457Sru.if defined(SHLIB_NAME) || \
290100457Sru    defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
291100457Sru	rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
292100457Sru.endif
293100457Sru.if defined(SHLIB_NAME)
294100457Sru.if defined(SHLIB_LINK)
295100457Sru	rm -f ${SHLIB_LINK}
296100457Sru.endif
297100457Sru.if defined(LIB) && !empty(LIB)
298100457Sru	rm -f lib${LIB}.so.* lib${LIB}.so
299100457Sru.endif
300100457Sru.endif
301100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
302100457Sru	rm -f ${LINTOBJS}
303100457Sru.endif
304100457Sru.endif !defined(INTERNALLIB)
305100457Sru.if defined(_LIBS) && !empty(_LIBS)
306100457Sru	rm -f ${_LIBS}
307100457Sru.endif
308100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS)
309100457Sru	rm -rf ${CLEANDIRS}
310100457Sru.endif
311100457Sru.endif
312100457Sru
31316663Sjkh.include <bsd.obj.mk>
31476861Skris
31576861Skris.include <bsd.sys.mk>
316