bsd.lib.mk revision 29141
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
229141Speter#	$Id: bsd.lib.mk,v 1.62 1997/09/05 09:09:55 peter Exp $
31844Swollman#
41638Srgrimes
51638Srgrimes.if exists(${.CURDIR}/../Makefile.inc)
61638Srgrimes.include "${.CURDIR}/../Makefile.inc"
71638Srgrimes.endif
81638Srgrimes
929129Speter# Default executable format
1029129SpeterBINFORMAT?=	aout
1129129Speter
121844Swollman.if exists(${.CURDIR}/shlib_version)
131844SwollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
1428945Speter.if ${BINFORMAT} == aout
151844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
161844Swollman.endif
1728945Speter.endif
181844Swollman
1929141Speter.if !defined(NOPIC) && ${BINFORMAT} == elf
2029141SpeterSONAME?=	lib${LIB}.so.${SHLIB_MAJOR}
2129141Speter.endif
2229141Speter
231844Swollman.if defined(DESTDIR)
241844SwollmanCFLAGS+= -I${DESTDIR}/usr/include
2526051SasamiCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
261844Swollman.endif
272353Sbde
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.MAIN: all
391638Srgrimes
401638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
411844Swollman# .so used for PIC object files
421638Srgrimes.SUFFIXES:
431844Swollman.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
441638Srgrimes
451638Srgrimes.c.o:
461844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
481638Srgrimes
491638Srgrimes.c.po:
5024761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5115959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
521638Srgrimes
531844Swollman.c.so:
541844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5515959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
561844Swollman
5716097Sjfieber.cc.o .C.o .cxx.o:
581844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5915959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
601844Swollman
6116097Sjfieber.cc.po .C.po .cxx.po:
6224761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6315959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
641844Swollman
6516097Sjfieber.cc.so .C.so .cxx.so:
661844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
681844Swollman
691844Swollman.f.o:
701844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
7115959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
721844Swollman
731844Swollman.f.po:
7424761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
7515959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
761844Swollman
771844Swollman.f.so:
781844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
7915959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
801844Swollman
811638Srgrimes.s.o:
8226715Sasami	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
8317510Speter	    ${.IMPSRC} -o ${.TARGET}
8415959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
851638Srgrimes
861638Srgrimes.s.po:
8726715Sasami	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
8817510Speter	    ${.IMPSRC} -o ${.TARGET}
8915959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
901638Srgrimes
911844Swollman.s.so:
9226715Sasami	${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \
9317510Speter	    ${.IMPSRC} -o ${.TARGET}
9415959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
951638Srgrimes
961844Swollman.S.o:
9726715Sasami	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
9825104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
991844Swollman
1001844Swollman.S.po:
10126715Sasami	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
10225104Sbde	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1031844Swollman
1041844Swollman.S.so:
10526715Sasami	${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
10615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
1071844Swollman
10825104Sbde.m.o:
10925104Sbde	${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET}
11025104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
11125104Sbde
1121844Swollman.m.po:
11324761Sjdp	${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET}
11415959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1151844Swollman
1162870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
1172868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
1181638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a
1191638Srgrimes.else
1201638Srgrimes_LIBS=lib${LIB}.a
1211638Srgrimes.endif
1222870Swollman.endif
1231638Srgrimes
1241844Swollman.if !defined(NOPIC)
12528945Speter.if ${BINFORMAT} == aout
1261844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1271844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1281638Srgrimes.endif
12928945Speter.else
13028945Speter.if defined(SHLIB_MAJOR)
13128945Speter_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}
13228945Speter.endif
13328945Speter.endif
1341844Swollman.if defined(INSTALL_PIC_ARCHIVE)
1351844Swollman_LIBS+=lib${LIB}_pic.a
1361844Swollman.endif
1371844Swollman.endif
1381638Srgrimes
1391844Swollman.if !defined(PICFLAG)
1401844SwollmanPICFLAG=-fpic
1411844Swollman.endif
1421638Srgrimes
14318340Sswallaceall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
1441844Swollman
1451844SwollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
1461844Swollman
1471638Srgrimeslib${LIB}.a:: ${OBJS}
1482353Sbde	@${ECHO} building standard ${LIB} library
1491638Srgrimes	@rm -f lib${LIB}.a
15017400Sjkh	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD}
1511844Swollman	${RANLIB} lib${LIB}.a
1521638Srgrimes
1533859Sbde.if !defined(NOPROFILE)
1541638SrgrimesPOBJS+=	${OBJS:.o=.po}
1551638Srgrimeslib${LIB}_p.a:: ${POBJS}
1562353Sbde	@${ECHO} building profiled ${LIB} library
1571638Srgrimes	@rm -f lib${LIB}_p.a
15817400Sjkh	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
1591844Swollman	${RANLIB} lib${LIB}_p.a
1603859Sbde.endif
1611638Srgrimes
1621844Swollman.if defined(DESTDIR)
16325468SjdpLDDESTDIRENV?=	LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib
1641844Swollman.endif
1651844Swollman
1663859Sbde.if !defined(NOPIC)
1671844SwollmanSOBJS+= ${OBJS:.o=.so}
16828945Speter
16928945Speter.if ${BINFORMAT} == aout
1701844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
1712353Sbde	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
1721844Swollman	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
17326073Sdfr	@${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \
1741844Swollman	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
17517400Sjkh	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
17628945Speter.else
17728945Speterlib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS}
17828945Speter	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\)
17928945Speter	@rm -f lib${LIB}.so.${SHLIB_MAJOR}
18028945Speter	@${LDDESTDIRENV} ${CC} -shared -Wl,-x \
18129141Speter	    -o lib${LIB}.so.${SHLIB_MAJOR} -Wl,-soname,${SONAME} \
18228945Speter	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
18328945Speter.endif
1841844Swollman
1851844Swollmanlib${LIB}_pic.a:: ${SOBJS}
1862353Sbde	@${ECHO} building special pic ${LIB} library
1871844Swollman	@rm -f lib${LIB}_pic.a
1885253Sache	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
1891844Swollman	${RANLIB} lib${LIB}_pic.a
1903859Sbde.endif
1911844Swollman
1921638Srgrimesllib-l${LIB}.ln: ${SRCS}
1931638Srgrimes	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
1941638Srgrimes
1951638Srgrimes.if !target(clean)
19616663Sjkhclean:	_SUBDIR
1971844Swollman	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
1981844Swollman	rm -f lib${LIB}.a llib-l${LIB}.ln
1991844Swollman	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
2001844Swollman	rm -f ${SOBJS} shared/*.o
2011844Swollman	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
20216826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS)
20316437Sphk	rm -rf ${CLEANDIRS}
2041638Srgrimes.endif
20516437Sphk.endif
2061638Srgrimes
2071844Swollman.if defined(SRCS)
20824750Sbde_EXTRADEPEND::
20924750Sbde	@TMP=_depend$$$$; \
21024750Sbde	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \
21124750Sbde	    > $$TMP; \
21224750Sbde	mv $$TMP ${DEPENDFILE}
2131638Srgrimes.endif
21427910Sasami.if !defined(NOEXTRADEPEND)
21524750Sbde_EXTRADEPEND::
21628945Speter.if ${BINFORMAT} == aout
21724750Sbde	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
21825468Sjdp	    `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \
21925468Sjdp	    >> ${DEPENDFILE}
22028945Speter.else
22128945Speter.if defined(DPADD) && ${DPADD} != ""
22228945Speter	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
22328945Speter	    ${DPADD} >> ${DEPENDFILE}
22427910Sasami.endif
22528945Speter.endif
22628945Speter.endif
2271638Srgrimes
2281638Srgrimes.if !target(install)
2291638Srgrimes.if !target(beforeinstall)
2301638Srgrimesbeforeinstall:
2311638Srgrimes.endif
2321638Srgrimes
2332298Swollman.if defined(PRECIOUSLIB)
2342298SwollmanSHLINSTALLFLAGS+= -fschg
2352298Swollman.endif
2362298Swollman
2371638Srgrimesrealinstall: beforeinstall
2382298Swollman.if !defined(INTERNALLIB)
2391996Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2401996Swollman	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2411638Srgrimes.if !defined(NOPROFILE)
2421844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2431996Swollman	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2441638Srgrimes.endif
2452298Swollman.endif
2461844Swollman.if !defined(NOPIC)
24728945Speter.if ${BINFORMAT} == aout
2481844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2491844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2502298Swollman	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
2512298Swollman	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
2524450Sbde	    ${DESTDIR}${SHLIBDIR}
2531844Swollman.endif
25428945Speter.else
25528945Speter.if defined(SHLIB_MAJOR)
25628945Speter	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
25728945Speter	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
25828945Speter	    lib${LIB}.so.${SHLIB_MAJOR} \
25928945Speter	    ${DESTDIR}${SHLIBDIR}
26028945Speter	ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \
26128945Speter	    ${DESTDIR}${SHLIBDIR}/lib${LIB}.so
26228945Speter.endif
26328945Speter.endif
2641844Swollman.if defined(INSTALL_PIC_ARCHIVE)
2651844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2661996Swollman	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2671844Swollman.endif
2681844Swollman.endif
2691638Srgrimes.if defined(LINKS) && !empty(LINKS)
2701638Srgrimes	@set ${LINKS}; \
2711638Srgrimes	while test $$# -ge 2; do \
2721638Srgrimes		l=${DESTDIR}$$1; \
2731638Srgrimes		shift; \
2741638Srgrimes		t=${DESTDIR}$$1; \
2751638Srgrimes		shift; \
2762353Sbde		${ECHO} $$t -\> $$l; \
2771638Srgrimes		rm -f $$t; \
2786032Sjkh		ln ${LN_FLAGS} $$l $$t; \
2791638Srgrimes	done; true
2801638Srgrimes.endif
2811638Srgrimes
28216663Sjkhinstall: afterinstall _SUBDIR
2831844Swollman.if !defined(NOMAN)
2841844Swollmanafterinstall: realinstall maninstall
2851844Swollman.else
2861638Srgrimesafterinstall: realinstall
2871638Srgrimes.endif
2881638Srgrimes.endif
2891638Srgrimes
2905585SjkhDISTRIBUTION?=	bin
2914442Sphk.if !target(distribute)
29216663Sjkhdistribute:	_SUBDIR
29326760Sjkh.for dist in ${DISTRIBUTION}
29426760Sjkh	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
29526760Sjkh.endfor
2964442Sphk.endif
2974442Sphk
2981638Srgrimes.if !target(lint)
2991638Srgrimeslint:
3001638Srgrimes.endif
3011638Srgrimes
30224861Sjkh.if defined(NOTAGS)
30324861Sjkhtags:
30424861Sjkh.endif
30524861Sjkh
3061638Srgrimes.if !target(tags)
30716663Sjkhtags: ${SRCS} _SUBDIR
30824861Sjkh	@cd ${.CURDIR} && gtags ${GTAGSFLAGS}
30924861Sjkh.if defined(HTML)
31024861Sjkh	@cd ${.CURDIR} && htags ${HTAGSFLAGS}
3111638Srgrimes.endif
31224861Sjkh.endif
3131638Srgrimes
3141844Swollman.if !defined(NOMAN)
3151638Srgrimes.include <bsd.man.mk>
3161844Swollman.elif !target(maninstall)
3171844Swollmanmaninstall:
31811136Swollmanall-man:
3191844Swollman.endif
3201844Swollman
3211844Swollman.include <bsd.dep.mk>
32216663Sjkh.include <bsd.obj.mk>
323