bsd.lib.mk revision 27910
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
227910Sasami#	$Id: bsd.lib.mk,v 1.59 1997/06/21 15:40:32 jkh Exp $
31844Swollman#
41638Srgrimes
51638Srgrimes.if exists(${.CURDIR}/../Makefile.inc)
61638Srgrimes.include "${.CURDIR}/../Makefile.inc"
71638Srgrimes.endif
81638Srgrimes
91844Swollman.if exists(${.CURDIR}/shlib_version)
101844SwollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
111844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
121844Swollman.endif
131844Swollman
141844Swollman.if defined(DESTDIR)
151844SwollmanCFLAGS+= -I${DESTDIR}/usr/include
1626051SasamiCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
171844Swollman.endif
182353Sbde
192827Sjkh.if defined(DEBUG_FLAGS)
202827SjkhCFLAGS+= ${DEBUG_FLAGS}
212827Sjkh.endif
222827Sjkh
232827Sjkh.if !defined(DEBUG_FLAGS)
241638SrgrimesSTRIP?=	-s
252827Sjkh.endif
261638Srgrimes
2718529Sbde.include <bsd.libnames.mk>
2818529Sbde
291638Srgrimes.MAIN: all
301638Srgrimes
311638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
321844Swollman# .so used for PIC object files
331638Srgrimes.SUFFIXES:
341844Swollman.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
351638Srgrimes
361638Srgrimes.c.o:
371844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
3815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
391638Srgrimes
401638Srgrimes.c.po:
4124761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4215959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
431638Srgrimes
441844Swollman.c.so:
451844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
471844Swollman
4816097Sjfieber.cc.o .C.o .cxx.o:
491844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5015959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
511844Swollman
5216097Sjfieber.cc.po .C.po .cxx.po:
5324761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5415959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
551844Swollman
5616097Sjfieber.cc.so .C.so .cxx.so:
571844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
591844Swollman
601844Swollman.f.o:
611844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6215959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
631844Swollman
641844Swollman.f.po:
6524761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6615959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
671844Swollman
681844Swollman.f.so:
691844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
7015959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
711844Swollman
721638Srgrimes.s.o:
7326715Sasami	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
7417510Speter	    ${.IMPSRC} -o ${.TARGET}
7515959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
761638Srgrimes
771638Srgrimes.s.po:
7826715Sasami	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
7917510Speter	    ${.IMPSRC} -o ${.TARGET}
8015959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
811638Srgrimes
821844Swollman.s.so:
8326715Sasami	${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \
8417510Speter	    ${.IMPSRC} -o ${.TARGET}
8515959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
861638Srgrimes
871844Swollman.S.o:
8826715Sasami	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
8925104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
901844Swollman
911844Swollman.S.po:
9226715Sasami	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9325104Sbde	@${LD} -O ${.TARGET} -X -r ${.TARGET}
941844Swollman
951844Swollman.S.so:
9626715Sasami	${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
981844Swollman
9925104Sbde.m.o:
10025104Sbde	${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET}
10125104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
10225104Sbde
1031844Swollman.m.po:
10424761Sjdp	${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET}
10515959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1061844Swollman
1072870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
1082868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
1091638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a
1101638Srgrimes.else
1111638Srgrimes_LIBS=lib${LIB}.a
1121638Srgrimes.endif
1132870Swollman.endif
1141638Srgrimes
1151844Swollman.if !defined(NOPIC)
1161844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1171844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1181638Srgrimes.endif
1191844Swollman.if defined(INSTALL_PIC_ARCHIVE)
1201844Swollman_LIBS+=lib${LIB}_pic.a
1211844Swollman.endif
1221844Swollman.endif
1231638Srgrimes
1241844Swollman.if !defined(PICFLAG)
1251844SwollmanPICFLAG=-fpic
1261844Swollman.endif
1271638Srgrimes
12818340Sswallaceall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
1291844Swollman
1301844SwollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
1311844Swollman
1321638Srgrimeslib${LIB}.a:: ${OBJS}
1332353Sbde	@${ECHO} building standard ${LIB} library
1341638Srgrimes	@rm -f lib${LIB}.a
13517400Sjkh	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD}
1361844Swollman	${RANLIB} lib${LIB}.a
1371638Srgrimes
1383859Sbde.if !defined(NOPROFILE)
1391638SrgrimesPOBJS+=	${OBJS:.o=.po}
1401638Srgrimeslib${LIB}_p.a:: ${POBJS}
1412353Sbde	@${ECHO} building profiled ${LIB} library
1421638Srgrimes	@rm -f lib${LIB}_p.a
14317400Sjkh	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
1441844Swollman	${RANLIB} lib${LIB}_p.a
1453859Sbde.endif
1461638Srgrimes
1471844Swollman.if defined(DESTDIR)
14825468SjdpLDDESTDIRENV?=	LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib
1491844Swollman.endif
1501844Swollman
1513859Sbde.if !defined(NOPIC)
1521844SwollmanSOBJS+= ${OBJS:.o=.so}
1531844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
1542353Sbde	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
1551844Swollman	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
15626073Sdfr	@${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \
1571844Swollman	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
15817400Sjkh	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
1591844Swollman
1601844Swollmanlib${LIB}_pic.a:: ${SOBJS}
1612353Sbde	@${ECHO} building special pic ${LIB} library
1621844Swollman	@rm -f lib${LIB}_pic.a
1635253Sache	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
1641844Swollman	${RANLIB} lib${LIB}_pic.a
1653859Sbde.endif
1661844Swollman
1671638Srgrimesllib-l${LIB}.ln: ${SRCS}
1681638Srgrimes	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
1691638Srgrimes
1701638Srgrimes.if !target(clean)
17116663Sjkhclean:	_SUBDIR
1721844Swollman	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
1731844Swollman	rm -f lib${LIB}.a llib-l${LIB}.ln
1741844Swollman	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
1751844Swollman	rm -f ${SOBJS} shared/*.o
1761844Swollman	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
17716826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS)
17816437Sphk	rm -rf ${CLEANDIRS}
1791638Srgrimes.endif
18016437Sphk.endif
1811638Srgrimes
1821844Swollman.if defined(SRCS)
18324750Sbde_EXTRADEPEND::
18424750Sbde	@TMP=_depend$$$$; \
18524750Sbde	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \
18624750Sbde	    > $$TMP; \
18724750Sbde	mv $$TMP ${DEPENDFILE}
1881638Srgrimes.endif
18927910Sasami.if !defined(NOEXTRADEPEND)
19024750Sbde_EXTRADEPEND::
19124750Sbde	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
19225468Sjdp	    `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \
19325468Sjdp	    >> ${DEPENDFILE}
19427910Sasami.endif
1951638Srgrimes
1961638Srgrimes.if !target(install)
1971638Srgrimes.if !target(beforeinstall)
1981638Srgrimesbeforeinstall:
1991638Srgrimes.endif
2001638Srgrimes
2012298Swollman.if defined(PRECIOUSLIB)
2022298SwollmanSHLINSTALLFLAGS+= -fschg
2032298Swollman.endif
2042298Swollman
2051638Srgrimesrealinstall: beforeinstall
2062298Swollman.if !defined(INTERNALLIB)
2071996Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2081996Swollman	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2091638Srgrimes.if !defined(NOPROFILE)
2101844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2111996Swollman	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2121638Srgrimes.endif
2132298Swollman.endif
2141844Swollman.if !defined(NOPIC)
2151844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2161844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2172298Swollman	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
2182298Swollman	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
2194450Sbde	    ${DESTDIR}${SHLIBDIR}
2201844Swollman.endif
2211844Swollman.if defined(INSTALL_PIC_ARCHIVE)
2221844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2231996Swollman	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2241844Swollman.endif
2251844Swollman.endif
2261638Srgrimes.if defined(LINKS) && !empty(LINKS)
2271638Srgrimes	@set ${LINKS}; \
2281638Srgrimes	while test $$# -ge 2; do \
2291638Srgrimes		l=${DESTDIR}$$1; \
2301638Srgrimes		shift; \
2311638Srgrimes		t=${DESTDIR}$$1; \
2321638Srgrimes		shift; \
2332353Sbde		${ECHO} $$t -\> $$l; \
2341638Srgrimes		rm -f $$t; \
2356032Sjkh		ln ${LN_FLAGS} $$l $$t; \
2361638Srgrimes	done; true
2371638Srgrimes.endif
2381638Srgrimes
23916663Sjkhinstall: afterinstall _SUBDIR
2401844Swollman.if !defined(NOMAN)
2411844Swollmanafterinstall: realinstall maninstall
2421844Swollman.else
2431638Srgrimesafterinstall: realinstall
2441638Srgrimes.endif
2451638Srgrimes.endif
2461638Srgrimes
2475585SjkhDISTRIBUTION?=	bin
2484442Sphk.if !target(distribute)
24916663Sjkhdistribute:	_SUBDIR
25026760Sjkh.for dist in ${DISTRIBUTION}
25126760Sjkh	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
25226760Sjkh.endfor
2534442Sphk.endif
2544442Sphk
2551638Srgrimes.if !target(lint)
2561638Srgrimeslint:
2571638Srgrimes.endif
2581638Srgrimes
25924861Sjkh.if defined(NOTAGS)
26024861Sjkhtags:
26124861Sjkh.endif
26224861Sjkh
2631638Srgrimes.if !target(tags)
26416663Sjkhtags: ${SRCS} _SUBDIR
26524861Sjkh	@cd ${.CURDIR} && gtags ${GTAGSFLAGS}
26624861Sjkh.if defined(HTML)
26724861Sjkh	@cd ${.CURDIR} && htags ${HTAGSFLAGS}
2681638Srgrimes.endif
26924861Sjkh.endif
2701638Srgrimes
2711844Swollman.if !defined(NOMAN)
2721638Srgrimes.include <bsd.man.mk>
2731844Swollman.elif !target(maninstall)
2741844Swollmanmaninstall:
27511136Swollmanall-man:
2761844Swollman.endif
2771844Swollman
2781844Swollman.include <bsd.dep.mk>
27916663Sjkh.include <bsd.obj.mk>
280