bsd.lib.mk revision 2298
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 22298Swollman# $Id: bsd.lib.mk,v 1.4 1994/08/10 02:48:07 wollman 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 181844SwollmanINSTALL?= install 191638SrgrimesLIBDIR?= /usr/lib 201638SrgrimesLINTLIBDIR?= /usr/libdata/lint 211638SrgrimesLIBGRP?= bin 221638SrgrimesLIBOWN?= bin 231638SrgrimesLIBMODE?= 444 241638Srgrimes 251638SrgrimesSTRIP?= -s 261638Srgrimes 271638SrgrimesBINGRP?= bin 281638SrgrimesBINOWN?= bin 291638SrgrimesBINMODE?= 555 301638Srgrimes 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} 401638Srgrimes @${LD} -x -r ${.TARGET} 411638Srgrimes @mv a.out ${.TARGET} 421638Srgrimes 431638Srgrimes.c.po: 441638Srgrimes ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 451638Srgrimes @${LD} -X -r ${.TARGET} 461638Srgrimes @mv a.out ${.TARGET} 471638Srgrimes 481844Swollman.c.so: 491844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 501844Swollman 511844Swollman.cc.o .cxx.o .C.o: 521844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 531844Swollman @${LD} -x -r ${.TARGET} 541844Swollman @mv a.out ${.TARGET} 551844Swollman 561844Swollman.cc.po .C.po .cxx.o: 571844Swollman ${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 581844Swollman @${LD} -X -r ${.TARGET} 591844Swollman @mv a.out ${.TARGET} 601844Swollman 611844Swollman.cc.so .C.so: 621844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 631844Swollman 641844Swollman.f.o: 651844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 661844Swollman @${LD} -x -r ${.TARGET} 671844Swollman @mv a.out ${.TARGET} 681844Swollman 691844Swollman.f.po: 701844Swollman ${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 711844Swollman @${LD} -X -r ${.TARGET} 721844Swollman @mv a.out ${.TARGET} 731844Swollman 741844Swollman.f.so: 751844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 761844Swollman 771638Srgrimes.s.o: 781638Srgrimes ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 791638Srgrimes ${AS} -o ${.TARGET} 801638Srgrimes @${LD} -x -r ${.TARGET} 811638Srgrimes @mv a.out ${.TARGET} 821638Srgrimes 831638Srgrimes.s.po: 841638Srgrimes ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 851638Srgrimes ${AS} -o ${.TARGET} 861638Srgrimes @${LD} -X -r ${.TARGET} 871638Srgrimes @mv a.out ${.TARGET} 881638Srgrimes 891844Swollman.s.so: 901844Swollman ${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 911844Swollman ${AS} -k -o ${.TARGET} 921638Srgrimes 931844Swollman.S.o: 941844Swollman ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 951844Swollman ${AS} -o ${.TARGET} 961844Swollman 971844Swollman.S.po: 981844Swollman ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 991844Swollman ${AS} -o ${.TARGET} 1001844Swollman 1011844Swollman.S.so: 1021844Swollman ${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 1031844Swollman ${AS} -k -o ${.TARGET} 1041844Swollman 1051844Swollman.m.po: 1061844Swollman ${CC} ${CFLAGS} -p -c ${.IMPSRC} -o ${.TARGET} 1071844Swollman @${LD} -X -r ${.TARGET} 1081844Swollman @mv a.out ${.TARGET} 1091844Swollman 1101844Swollman.m.o: 1111844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1121844Swollman @${LD} -X -r ${.TARGET} 1131844Swollman @mv a.out ${.TARGET} 1141844Swollman 1152298Swollman.if !defined(INTERNALLIB) 1161638Srgrimes.if !defined(NOPROFILE) 1171638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a 1181638Srgrimes.else 1191638Srgrimes_LIBS=lib${LIB}.a 1201638Srgrimes.endif 1212298Swollman.endif 1221638Srgrimes 1231844Swollman.if !defined(NOPIC) 1241844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 1251844Swollman_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 1261638Srgrimes.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 1361844Swollmanall: ${_LIBS} # llib-l${LIB}.ln 1371844Swollman 1381844SwollmanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 1391844Swollman 1401638Srgrimeslib${LIB}.a:: ${OBJS} 1411638Srgrimes @echo building standard ${LIB} library 1421638Srgrimes @rm -f lib${LIB}.a 1431953Swollman @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD} 1441844Swollman ${RANLIB} lib${LIB}.a 1451638Srgrimes 1461638SrgrimesPOBJS+= ${OBJS:.o=.po} 1471638Srgrimeslib${LIB}_p.a:: ${POBJS} 1481638Srgrimes @echo building profiled ${LIB} library 1491638Srgrimes @rm -f lib${LIB}_p.a 1501953Swollman @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD} 1511844Swollman ${RANLIB} lib${LIB}_p.a 1521638Srgrimes 1531844Swollman.if defined(DESTDIR) 1541844SwollmanLDDESTDIR?= -L${DESTDIR}/usr/lib 1551844Swollman.endif 1561844Swollman 1571844Swollman.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir) 1581844SwollmanSOBJS+= ${DESTDIR}/usr/lib/c++rt0.o 1591844Swollman.endif 1601844Swollman 1611844SwollmanSOBJS+= ${OBJS:.o=.so} 1621844Swollmanlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} 1631844Swollman @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 1641844Swollman @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 1651844Swollman @$(LD) -Bshareable \ 1661844Swollman -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 1671953Swollman ${SOBJS} ${LDDESTDIR} ${LDADD} 1681844Swollman 1691844Swollmanlib${LIB}_pic.a:: ${SOBJS} 1701844Swollman @echo building special pic ${LIB} library 1711844Swollman @rm -f lib${LIB}_pic.a 1721953Swollman @${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD} 1731844Swollman ${RANLIB} lib${LIB}_pic.a 1741844Swollman 1751638Srgrimesllib-l${LIB}.ln: ${SRCS} 1761638Srgrimes ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 1771638Srgrimes 1781638Srgrimes.if !target(clean) 1791638Srgrimesclean: 1801844Swollman rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 1811844Swollman rm -f lib${LIB}.a llib-l${LIB}.ln 1821844Swollman rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 1831844Swollman rm -f ${SOBJS} shared/*.o 1841844Swollman rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 1851638Srgrimes.endif 1861638Srgrimes 1871638Srgrimes.if !target(cleandir) 1881638Srgrimescleandir: 1891844Swollman rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS} 1901844Swollman rm -f lib${LIB}.a llib-l${LIB}.ln 1911844Swollman rm -f ${.CURDIR}/tags .depend 1921844Swollman rm -f ${POBJS} profiled/*.o lib${LIB}_p.a 1931844Swollman rm -f ${SOBJS} shared/*.o 1941844Swollman rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 1951844Swollman cd ${.CURDIR}; rm -rf obj; 1961638Srgrimes.endif 1971638Srgrimes 1981844Swollman.if defined(SRCS) 1991844Swollmanafterdepend: 2001638Srgrimes @(TMP=/tmp/_depend$$$$; \ 2011844Swollman sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \ 2021844Swollman mv $$TMP .depend) 2031638Srgrimes.endif 2041638Srgrimes 2051638Srgrimes.if !target(install) 2061638Srgrimes.if !target(beforeinstall) 2071638Srgrimesbeforeinstall: 2081638Srgrimes.endif 2091638Srgrimes 2102298Swollman.if defined(PRECIOUSLIB) 2112298SwollmanSHLINSTALLFLAGS+= -fschg 2122298Swollman.endif 2132298Swollman 2141638Srgrimesrealinstall: beforeinstall 2152298Swollman.if !defined(INTERNALLIB) 2161996Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2171996Swollman ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 2181638Srgrimes ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 2191638Srgrimes.if !defined(NOPROFILE) 2201844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2211996Swollman ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2221638Srgrimes ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 2231638Srgrimes.endif 2242298Swollman.endif 2251844Swollman.if !defined(NOPIC) 2261844Swollman.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 2271844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2282298Swollman ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 2292298Swollman lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 2301996Swollman ${DESTDIR}${LIBDIR} 2311844Swollman.endif 2321844Swollman.if defined(INSTALL_PIC_ARCHIVE) 2331844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2341996Swollman ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2351844Swollman ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a 2361844Swollman.endif 2371844Swollman.endif 2381638Srgrimes.if defined(LINKS) && !empty(LINKS) 2391638Srgrimes @set ${LINKS}; \ 2401638Srgrimes while test $$# -ge 2; do \ 2411638Srgrimes l=${DESTDIR}$$1; \ 2421638Srgrimes shift; \ 2431638Srgrimes t=${DESTDIR}$$1; \ 2441638Srgrimes shift; \ 2451638Srgrimes echo $$t -\> $$l; \ 2461638Srgrimes rm -f $$t; \ 2471638Srgrimes ln $$l $$t; \ 2481638Srgrimes done; true 2491638Srgrimes.endif 2501638Srgrimes 2511638Srgrimesinstall: afterinstall 2521844Swollman.if !defined(NOMAN) 2531844Swollmanafterinstall: realinstall maninstall 2541844Swollman.else 2551638Srgrimesafterinstall: realinstall 2561638Srgrimes.endif 2571638Srgrimes.endif 2581638Srgrimes 2591638Srgrimes.if !target(lint) 2601638Srgrimeslint: 2611638Srgrimes.endif 2621638Srgrimes 2631638Srgrimes.if !target(tags) 2641638Srgrimestags: ${SRCS} 2651844Swollman -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ 2661844Swollman sed "s;\${.CURDIR}/;;" > tags 2671638Srgrimes.endif 2681638Srgrimes 2691844Swollman.if !defined(NOMAN) 2701638Srgrimes.include <bsd.man.mk> 2711844Swollman.elif !target(maninstall) 2721844Swollmanmaninstall: 2731844Swollman.endif 2741844Swollman 2751638Srgrimes.if !target(obj) 2761638Srgrimes.if defined(NOOBJ) 2771638Srgrimesobj: 2781638Srgrimes.else 2791638Srgrimesobj: 2801638Srgrimes @cd ${.CURDIR}; rm -rf obj; \ 2811844Swollman here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \ 2821638Srgrimes echo "$$here -> $$dest"; ln -s $$dest obj; \ 2831638Srgrimes if test -d /usr/obj -a ! -d $$dest; then \ 2841638Srgrimes mkdir -p $$dest; \ 2851638Srgrimes else \ 2861638Srgrimes true; \ 2871638Srgrimes fi; 2881638Srgrimes.endif 2891638Srgrimes.endif 2901844Swollman 2911844Swollman.include <bsd.dep.mk> 292