bsd.lib.mk revision 31809
11844Swollman#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
231809Sbde#	$Id: bsd.lib.mk,v 1.63 1997/09/05 11:45:12 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
3631809Sbde.if ${BINFORMAT} != aout || make(checkdpadd)
3718529Sbde.include <bsd.libnames.mk>
3831809Sbde.endif
3918529Sbde
401638Srgrimes.MAIN: all
411638Srgrimes
421638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
431844Swollman# .so used for PIC object files
441638Srgrimes.SUFFIXES:
451844Swollman.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
461638Srgrimes
471638Srgrimes.c.o:
481844Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
4915959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
501638Srgrimes
511638Srgrimes.c.po:
5224761Sjdp	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5315959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
541638Srgrimes
551844Swollman.c.so:
561844Swollman	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5715959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
581844Swollman
5916097Sjfieber.cc.o .C.o .cxx.o:
601844Swollman	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6115959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
621844Swollman
6316097Sjfieber.cc.po .C.po .cxx.po:
6424761Sjdp	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6515959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
661844Swollman
6716097Sjfieber.cc.so .C.so .cxx.so:
681844Swollman	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6915959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
701844Swollman
711844Swollman.f.o:
721844Swollman	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
7315959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
741844Swollman
751844Swollman.f.po:
7624761Sjdp	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
7715959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
781844Swollman
791844Swollman.f.so:
801844Swollman	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
8115959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
821844Swollman
831638Srgrimes.s.o:
8426715Sasami	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
8517510Speter	    ${.IMPSRC} -o ${.TARGET}
8615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
871638Srgrimes
881638Srgrimes.s.po:
8926715Sasami	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
9017510Speter	    ${.IMPSRC} -o ${.TARGET}
9115959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
921638Srgrimes
931844Swollman.s.so:
9426715Sasami	${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \
9517510Speter	    ${.IMPSRC} -o ${.TARGET}
9615959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
971638Srgrimes
981844Swollman.S.o:
9926715Sasami	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
10025104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
1011844Swollman
1021844Swollman.S.po:
10326715Sasami	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
10425104Sbde	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1051844Swollman
1061844Swollman.S.so:
10726715Sasami	${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
10815959Sphk	@${LD} -O ${.TARGET} -x -r ${.TARGET}
1091844Swollman
11025104Sbde.m.o:
11125104Sbde	${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET}
11225104Sbde	@${LD} -O ${.TARGET} -x -r ${.TARGET}
11325104Sbde
1141844Swollman.m.po:
11524761Sjdp	${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET}
11615959Sphk	@${LD} -O ${.TARGET} -X -r ${.TARGET}
1171844Swollman
1182870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
1192868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB)
1201638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a
1211638Srgrimes.else
1221638Srgrimes_LIBS=lib${LIB}.a
1231638Srgrimes.endif
1242870Swollman.endif
1251638Srgrimes
1261844Swollman.if !defined(NOPIC)
12728945Speter.if ${BINFORMAT} == aout
1281844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
1291844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
1301638Srgrimes.endif
13128945Speter.else
13228945Speter.if defined(SHLIB_MAJOR)
13328945Speter_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}
13428945Speter.endif
13528945Speter.endif
1361844Swollman.if defined(INSTALL_PIC_ARCHIVE)
1371844Swollman_LIBS+=lib${LIB}_pic.a
1381844Swollman.endif
1391844Swollman.endif
1401638Srgrimes
1411844Swollman.if !defined(PICFLAG)
1421844SwollmanPICFLAG=-fpic
1431844Swollman.endif
1441638Srgrimes
14518340Sswallaceall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
1461844Swollman
1471844SwollmanOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
1481844Swollman
1491638Srgrimeslib${LIB}.a:: ${OBJS}
1502353Sbde	@${ECHO} building standard ${LIB} library
1511638Srgrimes	@rm -f lib${LIB}.a
15217400Sjkh	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD}
1531844Swollman	${RANLIB} lib${LIB}.a
1541638Srgrimes
1553859Sbde.if !defined(NOPROFILE)
1561638SrgrimesPOBJS+=	${OBJS:.o=.po}
1571638Srgrimeslib${LIB}_p.a:: ${POBJS}
1582353Sbde	@${ECHO} building profiled ${LIB} library
1591638Srgrimes	@rm -f lib${LIB}_p.a
16017400Sjkh	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
1611844Swollman	${RANLIB} lib${LIB}_p.a
1623859Sbde.endif
1631638Srgrimes
1641844Swollman.if defined(DESTDIR)
16525468SjdpLDDESTDIRENV?=	LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib
1661844Swollman.endif
1671844Swollman
1683859Sbde.if !defined(NOPIC)
1691844SwollmanSOBJS+= ${OBJS:.o=.so}
17028945Speter
17128945Speter.if ${BINFORMAT} == aout
1721844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
1732353Sbde	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
1741844Swollman	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
17526073Sdfr	@${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \
1761844Swollman	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
17717400Sjkh	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
17828945Speter.else
17928945Speterlib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS}
18028945Speter	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\)
18128945Speter	@rm -f lib${LIB}.so.${SHLIB_MAJOR}
18228945Speter	@${LDDESTDIRENV} ${CC} -shared -Wl,-x \
18329141Speter	    -o lib${LIB}.so.${SHLIB_MAJOR} -Wl,-soname,${SONAME} \
18428945Speter	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
18528945Speter.endif
1861844Swollman
1871844Swollmanlib${LIB}_pic.a:: ${SOBJS}
1882353Sbde	@${ECHO} building special pic ${LIB} library
1891844Swollman	@rm -f lib${LIB}_pic.a
1905253Sache	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
1911844Swollman	${RANLIB} lib${LIB}_pic.a
1923859Sbde.endif
1931844Swollman
1941638Srgrimesllib-l${LIB}.ln: ${SRCS}
1951638Srgrimes	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
1961638Srgrimes
1971638Srgrimes.if !target(clean)
19816663Sjkhclean:	_SUBDIR
19931809Sbde	rm -f a.out ${OBJS} ${CLEANFILES}
20031809Sbde	rm -f lib${LIB}.a # llib-l${LIB}.ln
20131809Sbde	rm -f ${POBJS} lib${LIB}_p.a
20231809Sbde	rm -f ${SOBJS}
2031844Swollman	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
20416826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS)
20516437Sphk	rm -rf ${CLEANDIRS}
2061638Srgrimes.endif
20716437Sphk.endif
2081638Srgrimes
2091844Swollman.if defined(SRCS)
21024750Sbde_EXTRADEPEND::
21124750Sbde	@TMP=_depend$$$$; \
21224750Sbde	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \
21324750Sbde	    > $$TMP; \
21424750Sbde	mv $$TMP ${DEPENDFILE}
2151638Srgrimes.endif
21627910Sasami.if !defined(NOEXTRADEPEND)
21724750Sbde_EXTRADEPEND::
21828945Speter.if ${BINFORMAT} == aout
21924750Sbde	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
22025468Sjdp	    `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \
22125468Sjdp	    >> ${DEPENDFILE}
22228945Speter.else
22331809Sbde.if defined(DPADD) && !empty(DPADD)
22428945Speter	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
22528945Speter	    ${DPADD} >> ${DEPENDFILE}
22627910Sasami.endif
22728945Speter.endif
22828945Speter.endif
2291638Srgrimes
2301638Srgrimes.if !target(install)
2311638Srgrimes.if !target(beforeinstall)
2321638Srgrimesbeforeinstall:
2331638Srgrimes.endif
2341638Srgrimes
2352298Swollman.if defined(PRECIOUSLIB)
2362298SwollmanSHLINSTALLFLAGS+= -fschg
2372298Swollman.endif
2382298Swollman
2391638Srgrimesrealinstall: beforeinstall
2402298Swollman.if !defined(INTERNALLIB)
2411996Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2421996Swollman	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
2431638Srgrimes.if !defined(NOPROFILE)
2441844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2451996Swollman	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
2461638Srgrimes.endif
2472298Swollman.endif
2481844Swollman.if !defined(NOPIC)
24928945Speter.if ${BINFORMAT} == aout
2501844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2511844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2522298Swollman	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
2532298Swollman	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
2544450Sbde	    ${DESTDIR}${SHLIBDIR}
2551844Swollman.endif
25628945Speter.else
25728945Speter.if defined(SHLIB_MAJOR)
25828945Speter	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
25928945Speter	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
26028945Speter	    lib${LIB}.so.${SHLIB_MAJOR} \
26128945Speter	    ${DESTDIR}${SHLIBDIR}
26228945Speter	ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \
26328945Speter	    ${DESTDIR}${SHLIBDIR}/lib${LIB}.so
26428945Speter.endif
26528945Speter.endif
2661844Swollman.if defined(INSTALL_PIC_ARCHIVE)
2671844Swollman	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
2681996Swollman	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
2691844Swollman.endif
2701844Swollman.endif
2711638Srgrimes.if defined(LINKS) && !empty(LINKS)
2721638Srgrimes	@set ${LINKS}; \
2731638Srgrimes	while test $$# -ge 2; do \
2741638Srgrimes		l=${DESTDIR}$$1; \
2751638Srgrimes		shift; \
2761638Srgrimes		t=${DESTDIR}$$1; \
2771638Srgrimes		shift; \
2782353Sbde		${ECHO} $$t -\> $$l; \
2791638Srgrimes		rm -f $$t; \
2806032Sjkh		ln ${LN_FLAGS} $$l $$t; \
2811638Srgrimes	done; true
2821638Srgrimes.endif
2831638Srgrimes
28416663Sjkhinstall: afterinstall _SUBDIR
2851844Swollman.if !defined(NOMAN)
2861844Swollmanafterinstall: realinstall maninstall
2871844Swollman.else
2881638Srgrimesafterinstall: realinstall
2891638Srgrimes.endif
2901638Srgrimes.endif
2911638Srgrimes
2925585SjkhDISTRIBUTION?=	bin
2934442Sphk.if !target(distribute)
29416663Sjkhdistribute:	_SUBDIR
29526760Sjkh.for dist in ${DISTRIBUTION}
29626760Sjkh	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
29726760Sjkh.endfor
2984442Sphk.endif
2994442Sphk
3001638Srgrimes.if !target(lint)
3011638Srgrimeslint:
3021638Srgrimes.endif
3031638Srgrimes
30424861Sjkh.if defined(NOTAGS)
30524861Sjkhtags:
30624861Sjkh.endif
30724861Sjkh
3081638Srgrimes.if !target(tags)
30916663Sjkhtags: ${SRCS} _SUBDIR
31024861Sjkh	@cd ${.CURDIR} && gtags ${GTAGSFLAGS}
31124861Sjkh.if defined(HTML)
31224861Sjkh	@cd ${.CURDIR} && htags ${HTAGSFLAGS}
3131638Srgrimes.endif
31424861Sjkh.endif
3151638Srgrimes
3161844Swollman.if !defined(NOMAN)
3171638Srgrimes.include <bsd.man.mk>
3181844Swollman.elif !target(maninstall)
3191844Swollmanmaninstall:
32011136Swollmanall-man:
3211844Swollman.endif
3221844Swollman
3231844Swollman.include <bsd.dep.mk>
32416663Sjkh.include <bsd.obj.mk>
325