bsd.lib.mk revision 28945
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
228945Speter#	$Id: bsd.lib.mk,v 1.60 1997/08/05 03:49:48 asami 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
1128945Speter.if ${BINFORMAT} == aout
121844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
131844Swollman.endif
1428945Speter.endif
151844Swollman
161844Swollman.if defined(DESTDIR)
171844SwollmanCFLAGS+= -I${DESTDIR}/usr/include
1826051SasamiCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
191844Swollman.endif
202353Sbde
212827Sjkh.if defined(DEBUG_FLAGS)
222827SjkhCFLAGS+= ${DEBUG_FLAGS}
232827Sjkh.endif
242827Sjkh
252827Sjkh.if !defined(DEBUG_FLAGS)
261638SrgrimesSTRIP?=	-s
272827Sjkh.endif
281638Srgrimes
2918529Sbde.include <bsd.libnames.mk>
3018529Sbde
311638Srgrimes.MAIN: all
321638Srgrimes
331638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
341844Swollman# .so used for PIC object files
351638Srgrimes.SUFFIXES:
361844Swollman.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
371638Srgrimes
381638Srgrimes.c.o:
391844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4015959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
411638Srgrimes
421638Srgrimes.c.po:
4324761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4415959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
451638Srgrimes
461844Swollman.c.so:
471844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
491844Swollman
5016097Sjfieber.cc.o .C.o .cxx.o:
511844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5215959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
531844Swollman
5416097Sjfieber.cc.po .C.po .cxx.po:
5524761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5615959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
571844Swollman
5816097Sjfieber.cc.so .C.so .cxx.so:
591844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6015959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
611844Swollman
621844Swollman.f.o:
631844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6415959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
651844Swollman
661844Swollman.f.po:
6724761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
6815959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
691844Swollman
701844Swollman.f.so:
711844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
7215959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
731844Swollman
741638Srgrimes.s.o:
7526715Sasami	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
7617510Speter	    ${.IMPSRC} -o ${.TARGET}
7715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
781638Srgrimes
791638Srgrimes.s.po:
8026715Sasami	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
8117510Speter	    ${.IMPSRC} -o ${.TARGET}
8215959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
831638Srgrimes
841844Swollman.s.so:
8526715Sasami	${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \
8617510Speter	    ${.IMPSRC} -o ${.TARGET}
8715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
881638Srgrimes
891844Swollman.S.o:
9026715Sasami	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9125104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
921844Swollman
931844Swollman.S.po:
9426715Sasami	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9525104Sbde	@${LD} -O ${.TARGET} -X -r ${.TARGET}
961844Swollman
971844Swollman.S.so:
9826715Sasami	${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9915959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
1001844Swollman
10125104Sbde.m.o:
10225104Sbde	${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET}
10325104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
10425104Sbde
1051844Swollman.m.po:
10624761Sjdp	${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET}
10715959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1081844Swollman
1092870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
1102868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
1111638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a
1121638Srgrimes.else
1131638Srgrimes_LIBS=lib${LIB}.a
1141638Srgrimes.endif
1152870Swollman.endif
1161638Srgrimes
1171844Swollman.if !defined(NOPIC)
11828945Speter.if ${BINFORMAT} == aout
1191844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1201844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1211638Srgrimes.endif
12228945Speter.else
12328945Speter.if defined(SHLIB_MAJOR)
12428945Speter_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}
12528945Speter.endif
12628945Speter.endif
1271844Swollman.if defined(INSTALL_PIC_ARCHIVE)
1281844Swollman_LIBS+=lib${LIB}_pic.a
1291844Swollman.endif
1301844Swollman.endif
1311638Srgrimes
1321844Swollman.if !defined(PICFLAG)
1331844SwollmanPICFLAG=-fpic
1341844Swollman.endif
1351638Srgrimes
13618340Sswallaceall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
1371844Swollman
1381844SwollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
1391844Swollman
1401638Srgrimeslib${LIB}.a:: ${OBJS}
1412353Sbde	@${ECHO} building standard ${LIB} library
1421638Srgrimes	@rm -f lib${LIB}.a
14317400Sjkh	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD}
1441844Swollman	${RANLIB} lib${LIB}.a
1451638Srgrimes
1463859Sbde.if !defined(NOPROFILE)
1471638SrgrimesPOBJS+=	${OBJS:.o=.po}
1481638Srgrimeslib${LIB}_p.a:: ${POBJS}
1492353Sbde	@${ECHO} building profiled ${LIB} library
1501638Srgrimes	@rm -f lib${LIB}_p.a
15117400Sjkh	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
1521844Swollman	${RANLIB} lib${LIB}_p.a
1533859Sbde.endif
1541638Srgrimes
1551844Swollman.if defined(DESTDIR)
15625468SjdpLDDESTDIRENV?=	LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib
1571844Swollman.endif
1581844Swollman
1593859Sbde.if !defined(NOPIC)
1601844SwollmanSOBJS+= ${OBJS:.o=.so}
16128945Speter
16228945Speter.if ${BINFORMAT} == aout
1631844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
1642353Sbde	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
1651844Swollman	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
16626073Sdfr	@${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \
1671844Swollman	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
16817400Sjkh	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
16928945Speter.else
17028945Speterlib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS}
17128945Speter	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\)
17228945Speter	@rm -f lib${LIB}.so.${SHLIB_MAJOR}
17328945Speter	@${LDDESTDIRENV} ${CC} -shared -Wl,-x \
17428945Speter	    -o lib${LIB}.so.${SHLIB_MAJOR} \
17528945Speter	    -Wl,-soname,lib${LIB}.so.${SHLIB_MAJOR} \
17628945Speter	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
17728945Speter.endif
1781844Swollman
1791844Swollmanlib${LIB}_pic.a:: ${SOBJS}
1802353Sbde	@${ECHO} building special pic ${LIB} library
1811844Swollman	@rm -f lib${LIB}_pic.a
1825253Sache	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
1831844Swollman	${RANLIB} lib${LIB}_pic.a
1843859Sbde.endif
1851844Swollman
1861638Srgrimesllib-l${LIB}.ln: ${SRCS}
1871638Srgrimes	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
1881638Srgrimes
1891638Srgrimes.if !target(clean)
19016663Sjkhclean:	_SUBDIR
1911844Swollman	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
1921844Swollman	rm -f lib${LIB}.a llib-l${LIB}.ln
1931844Swollman	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
1941844Swollman	rm -f ${SOBJS} shared/*.o
1951844Swollman	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
19616826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS)
19716437Sphk	rm -rf ${CLEANDIRS}
1981638Srgrimes.endif
19916437Sphk.endif
2001638Srgrimes
2011844Swollman.if defined(SRCS)
20224750Sbde_EXTRADEPEND::
20324750Sbde	@TMP=_depend$$$$; \
20424750Sbde	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \
20524750Sbde	    > $$TMP; \
20624750Sbde	mv $$TMP ${DEPENDFILE}
2071638Srgrimes.endif
20827910Sasami.if !defined(NOEXTRADEPEND)
20924750Sbde_EXTRADEPEND::
21028945Speter.if ${BINFORMAT} == aout
21124750Sbde	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
21225468Sjdp	    `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \
21325468Sjdp	    >> ${DEPENDFILE}
21428945Speter.else
21528945Speter.if defined(DPADD) && ${DPADD} != ""
21628945Speter	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
21728945Speter	    ${DPADD} >> ${DEPENDFILE}
21827910Sasami.endif
21928945Speter.endif
22028945Speter.endif
2211638Srgrimes
2221638Srgrimes.if !target(install)
2231638Srgrimes.if !target(beforeinstall)
2241638Srgrimesbeforeinstall:
2251638Srgrimes.endif
2261638Srgrimes
2272298Swollman.if defined(PRECIOUSLIB)
2282298SwollmanSHLINSTALLFLAGS+= -fschg
2292298Swollman.endif
2302298Swollman
2311638Srgrimesrealinstall: beforeinstall
2322298Swollman.if !defined(INTERNALLIB)
2331996Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2341996Swollman	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2351638Srgrimes.if !defined(NOPROFILE)
2361844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2371996Swollman	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2381638Srgrimes.endif
2392298Swollman.endif
2401844Swollman.if !defined(NOPIC)
24128945Speter.if ${BINFORMAT} == aout
2421844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2431844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2442298Swollman	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
2452298Swollman	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
2464450Sbde	    ${DESTDIR}${SHLIBDIR}
2471844Swollman.endif
24828945Speter.else
24928945Speter.if defined(SHLIB_MAJOR)
25028945Speter	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
25128945Speter	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
25228945Speter	    lib${LIB}.so.${SHLIB_MAJOR} \
25328945Speter	    ${DESTDIR}${SHLIBDIR}
25428945Speter	ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \
25528945Speter	    ${DESTDIR}${SHLIBDIR}/lib${LIB}.so
25628945Speter.endif
25728945Speter.endif
2581844Swollman.if defined(INSTALL_PIC_ARCHIVE)
2591844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2601996Swollman	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2611844Swollman.endif
2621844Swollman.endif
2631638Srgrimes.if defined(LINKS) && !empty(LINKS)
2641638Srgrimes	@set ${LINKS}; \
2651638Srgrimes	while test $$# -ge 2; do \
2661638Srgrimes		l=${DESTDIR}$$1; \
2671638Srgrimes		shift; \
2681638Srgrimes		t=${DESTDIR}$$1; \
2691638Srgrimes		shift; \
2702353Sbde		${ECHO} $$t -\> $$l; \
2711638Srgrimes		rm -f $$t; \
2726032Sjkh		ln ${LN_FLAGS} $$l $$t; \
2731638Srgrimes	done; true
2741638Srgrimes.endif
2751638Srgrimes
27616663Sjkhinstall: afterinstall _SUBDIR
2771844Swollman.if !defined(NOMAN)
2781844Swollmanafterinstall: realinstall maninstall
2791844Swollman.else
2801638Srgrimesafterinstall: realinstall
2811638Srgrimes.endif
2821638Srgrimes.endif
2831638Srgrimes
2845585SjkhDISTRIBUTION?=	bin
2854442Sphk.if !target(distribute)
28616663Sjkhdistribute:	_SUBDIR
28726760Sjkh.for dist in ${DISTRIBUTION}
28826760Sjkh	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
28926760Sjkh.endfor
2904442Sphk.endif
2914442Sphk
2921638Srgrimes.if !target(lint)
2931638Srgrimeslint:
2941638Srgrimes.endif
2951638Srgrimes
29624861Sjkh.if defined(NOTAGS)
29724861Sjkhtags:
29824861Sjkh.endif
29924861Sjkh
3001638Srgrimes.if !target(tags)
30116663Sjkhtags: ${SRCS} _SUBDIR
30224861Sjkh	@cd ${.CURDIR} && gtags ${GTAGSFLAGS}
30324861Sjkh.if defined(HTML)
30424861Sjkh	@cd ${.CURDIR} && htags ${HTAGSFLAGS}
3051638Srgrimes.endif
30624861Sjkh.endif
3071638Srgrimes
3081844Swollman.if !defined(NOMAN)
3091638Srgrimes.include <bsd.man.mk>
3101844Swollman.elif !target(maninstall)
3111844Swollmanmaninstall:
31211136Swollmanall-man:
3131844Swollman.endif
3141844Swollman
3151844Swollman.include <bsd.dep.mk>
31616663Sjkh.include <bsd.obj.mk>
317