bsd.lib.mk revision 16663
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
216663Sjkh#	$Id: bsd.lib.mk,v 1.35 1996/06/17 15:59:51 phk 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
161844SwollmanCXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
171844Swollman.endif
182353Sbde
192827Sjkh.if defined(DEBUG_FLAGS)
202827SjkhCFLAGS+= ${DEBUG_FLAGS}
212827Sjkh.endif
222827Sjkh
232827Sjkh.if !defined(DEBUG_FLAGS)
241638SrgrimesSTRIP?=	-s
252827Sjkh.endif
261638Srgrimes
271638Srgrimes.MAIN: all
281638Srgrimes
291638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
301844Swollman# .so used for PIC object files
311638Srgrimes.SUFFIXES:
321844Swollman.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
331638Srgrimes
341638Srgrimes.c.o:
351844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
3615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
371638Srgrimes
381638Srgrimes.c.po:
391638Srgrimes	${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4015959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
411638Srgrimes
421844Swollman.c.so:
431844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4415959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
451844Swollman
4616097Sjfieber.cc.o .C.o .cxx.o:
471844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
491844Swollman
5016097Sjfieber.cc.po .C.po .cxx.po:
511844Swollman	${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5215959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
531844Swollman
5416097Sjfieber.cc.so .C.so .cxx.so:
551844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
571844Swollman
581844Swollman.f.o:
591844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6015959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
611844Swollman
621844Swollman.f.po:
631844Swollman	${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6415959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
651844Swollman
661844Swollman.f.so:
671844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
6815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
691844Swollman
701638Srgrimes.s.o:
711638Srgrimes	${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
721638Srgrimes	    ${AS} -o ${.TARGET}
7315959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
741638Srgrimes
751638Srgrimes.s.po:
761638Srgrimes	${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
771638Srgrimes	    ${AS} -o ${.TARGET}
7815959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
791638Srgrimes
801844Swollman.s.so:
811844Swollman	${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
821844Swollman	   ${AS} -k -o ${.TARGET}
8315959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
841638Srgrimes
851844Swollman.S.o:
861844Swollman	${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
871844Swollman	    ${AS} -o ${.TARGET}
881844Swollman
891844Swollman.S.po:
901844Swollman	${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
911844Swollman	    ${AS} -o ${.TARGET}
921844Swollman
931844Swollman.S.so:
941844Swollman	${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
951844Swollman	   ${AS} -k -o ${.TARGET}
9615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
971844Swollman
981844Swollman.m.po:
991844Swollman	${CC} ${CFLAGS} -p -c ${.IMPSRC} -o ${.TARGET}
10015959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1011844Swollman
1021844Swollman.m.o:
1031844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
10415959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1051844Swollman
1062870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
1072868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
1081638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a
1091638Srgrimes.else
1101638Srgrimes_LIBS=lib${LIB}.a
1111638Srgrimes.endif
1122870Swollman.endif
1131638Srgrimes
1141844Swollman.if !defined(NOPIC)
1151844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1161844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1171638Srgrimes.endif
1181844Swollman.if defined(INSTALL_PIC_ARCHIVE)
1191844Swollman_LIBS+=lib${LIB}_pic.a
1201844Swollman.endif
1211844Swollman.endif
1221638Srgrimes
1231844Swollman.if !defined(PICFLAG)
1241844SwollmanPICFLAG=-fpic
1251844Swollman.endif
1261638Srgrimes
12716663Sjkhall: ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
1281844Swollman
1291844SwollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
1301844Swollman
1311638Srgrimeslib${LIB}.a:: ${OBJS}
1322353Sbde	@${ECHO} building standard ${LIB} library
1331638Srgrimes	@rm -f lib${LIB}.a
1345253Sache	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD}
1351844Swollman	${RANLIB} lib${LIB}.a
1361638Srgrimes
1373859Sbde.if !defined(NOPROFILE)
1381638SrgrimesPOBJS+=	${OBJS:.o=.po}
1391638Srgrimeslib${LIB}_p.a:: ${POBJS}
1402353Sbde	@${ECHO} building profiled ${LIB} library
1411638Srgrimes	@rm -f lib${LIB}_p.a
1425253Sache	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD}
1431844Swollman	${RANLIB} lib${LIB}_p.a
1443859Sbde.endif
1451638Srgrimes
1461844Swollman.if defined(DESTDIR)
1471844SwollmanLDDESTDIR?=	-L${DESTDIR}/usr/lib
1481844Swollman.endif
1491844Swollman
1503859Sbde.if !defined(NOPIC)
15113535Sjdp.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir)
1521844SwollmanSOBJS+= ${DESTDIR}/usr/lib/c++rt0.o
1531844Swollman.endif
1541844Swollman
1551844SwollmanSOBJS+= ${OBJS:.o=.so}
1561844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
1572353Sbde	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
1581844Swollman	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
15915336Sjdp	@${LD} -Bshareable -x \
1601844Swollman	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
1619870Sdg	    `lorder ${SOBJS} | tsort` ${LDDESTDIR} ${LDADD}
1621844Swollman
1631844Swollmanlib${LIB}_pic.a:: ${SOBJS}
1642353Sbde	@${ECHO} building special pic ${LIB} library
1651844Swollman	@rm -f lib${LIB}_pic.a
1665253Sache	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
1671844Swollman	${RANLIB} lib${LIB}_pic.a
1683859Sbde.endif
1691844Swollman
1701638Srgrimesllib-l${LIB}.ln: ${SRCS}
1711638Srgrimes	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
1721638Srgrimes
1731638Srgrimes.if !target(clean)
17416663Sjkhclean:	_SUBDIR
1751844Swollman	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
1761844Swollman	rm -f lib${LIB}.a llib-l${LIB}.ln
1771844Swollman	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
1781844Swollman	rm -f ${SOBJS} shared/*.o
1791844Swollman	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
18016437Sphk.if defined(CLEANDIRS)
18116437Sphk	rm -rf ${CLEANDIRS}
1821638Srgrimes.endif
18316437Sphk.endif
1841638Srgrimes
1851844Swollman.if defined(SRCS)
1861844Swollmanafterdepend:
1871638Srgrimes	@(TMP=/tmp/_depend$$$$; \
1881844Swollman	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \
1891844Swollman	mv $$TMP .depend)
1901638Srgrimes.endif
1911638Srgrimes
1921638Srgrimes.if !target(install)
1931638Srgrimes.if !target(beforeinstall)
1941638Srgrimesbeforeinstall:
1951638Srgrimes.endif
1961638Srgrimes
1972298Swollman.if defined(PRECIOUSLIB)
1982298SwollmanSHLINSTALLFLAGS+= -fschg
1992298Swollman.endif
2002298Swollman
2011638Srgrimesrealinstall: beforeinstall
2022298Swollman.if !defined(INTERNALLIB)
2031996Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2041996Swollman	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2051638Srgrimes.if !defined(NOPROFILE)
2061844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2071996Swollman	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2081638Srgrimes.endif
2092298Swollman.endif
2101844Swollman.if !defined(NOPIC)
2111844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2121844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2132298Swollman	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
2142298Swollman	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
2154450Sbde	    ${DESTDIR}${SHLIBDIR}
2161844Swollman.endif
2171844Swollman.if defined(INSTALL_PIC_ARCHIVE)
2181844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2191996Swollman	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2201844Swollman.endif
2211844Swollman.endif
2221638Srgrimes.if defined(LINKS) && !empty(LINKS)
2231638Srgrimes	@set ${LINKS}; \
2241638Srgrimes	while test $$# -ge 2; do \
2251638Srgrimes		l=${DESTDIR}$$1; \
2261638Srgrimes		shift; \
2271638Srgrimes		t=${DESTDIR}$$1; \
2281638Srgrimes		shift; \
2292353Sbde		${ECHO} $$t -\> $$l; \
2301638Srgrimes		rm -f $$t; \
2316032Sjkh		ln ${LN_FLAGS} $$l $$t; \
2321638Srgrimes	done; true
2331638Srgrimes.endif
2341638Srgrimes
23516663Sjkhinstall: afterinstall _SUBDIR
2361844Swollman.if !defined(NOMAN)
2371844Swollmanafterinstall: realinstall maninstall
2381844Swollman.else
2391638Srgrimesafterinstall: realinstall
2401638Srgrimes.endif
2411638Srgrimes.endif
2421638Srgrimes
2435585SjkhDISTRIBUTION?=	bin
2444442Sphk.if !target(distribute)
24516663Sjkhdistribute:	_SUBDIR
2466716Sphk	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${DISTRIBUTION} SHARED=copies
2474442Sphk.endif
2484442Sphk
2491638Srgrimes.if !target(lint)
2501638Srgrimeslint:
2511638Srgrimes.endif
2521638Srgrimes
2531638Srgrimes.if !target(tags)
25416663Sjkhtags: ${SRCS} _SUBDIR
2551844Swollman	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
2561844Swollman	    sed "s;\${.CURDIR}/;;" > tags
2571638Srgrimes.endif
2581638Srgrimes
2591844Swollman.if !defined(NOMAN)
2601638Srgrimes.include <bsd.man.mk>
2611844Swollman.elif !target(maninstall)
2621844Swollmanmaninstall:
26311136Swollmanall-man:
2641844Swollman.endif
2651844Swollman
2661844Swollman.include <bsd.dep.mk>
26716663Sjkh.include <bsd.obj.mk>
268