bsd.lib.mk revision 49328
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 249328Shoek# $Id: bsd.lib.mk,v 1.87 1999/06/24 22:50:19 jmg Exp $ 31844Swollman# 41638Srgrimes 538183Speter.if !target(__initialized__) 638183Speter__initialized__: 71638Srgrimes.if exists(${.CURDIR}/../Makefile.inc) 81638Srgrimes.include "${.CURDIR}/../Makefile.inc" 91638Srgrimes.endif 1038183Speter.endif 111638Srgrimes 121844Swollman.if exists(${.CURDIR}/shlib_version) 131844SwollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 1438655Sjb.if ${OBJFORMAT} == aout 151844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 161844Swollman.endif 1728945Speter.endif 181844Swollman 1942915Sjdp# Set up the variables controlling shared libraries. After this section, 2042915Sjdp# SHLIB_NAME will be defined only if we are to create a shared library. 2142915Sjdp# SHLIB_LINK will be defined only if we are to create a link to it. 2242915Sjdp# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 2342915Sjdp.if defined(NOPIC) 2442915Sjdp.undef SHLIB_NAME 2542915Sjdp.undef INSTALL_PIC_ARCHIVE 2642915Sjdp.else 2742915Sjdp.if ${OBJFORMAT} == elf 2842915Sjdp.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR) 2942915SjdpSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 3042915SjdpSHLIB_LINK?= lib${LIB}.so 3129141Speter.endif 3242915SjdpSONAME?= ${SHLIB_NAME} 3342915Sjdp.else 3442915Sjdp.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 3542915SjdpSHLIB_NAME?= lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 3642915Sjdp.endif 3742915Sjdp.endif 3842915Sjdp.endif 3929141Speter 401844Swollman.if defined(DESTDIR) 411844SwollmanCFLAGS+= -I${DESTDIR}/usr/include 4226051SasamiCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 431844Swollman.endif 442353Sbde 452827Sjkh.if defined(DEBUG_FLAGS) 462827SjkhCFLAGS+= ${DEBUG_FLAGS} 472827Sjkh.endif 482827Sjkh 492827Sjkh.if !defined(DEBUG_FLAGS) 501638SrgrimesSTRIP?= -s 512827Sjkh.endif 521638Srgrimes 5343055Sjdp.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 5418529Sbde.include <bsd.libnames.mk> 5531809Sbde.endif 5618529Sbde 571638Srgrimes.MAIN: all 581638Srgrimes 591638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 6042450Sjdp# .So used for PIC object files 611638Srgrimes.SUFFIXES: 6242450Sjdp.SUFFIXES: .out .o .po .So .s .S .c .cc .cpp .cxx .m .C .f .y .l 631638Srgrimes 641638Srgrimes.c.o: 651844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 6738186Speter @mv ${.TARGET}.tmp ${.TARGET} 681638Srgrimes 691638Srgrimes.c.po: 7024761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7138186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 7238186Speter @mv ${.TARGET}.tmp ${.TARGET} 731638Srgrimes 7442450Sjdp.c.So: 751844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7738186Speter @mv ${.TARGET}.tmp ${.TARGET} 781844Swollman 7936673Sdt.cc.o .C.o .cpp.o .cxx.o: 801844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8138186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8238186Speter @mv ${.TARGET}.tmp ${.TARGET} 831844Swollman 8436673Sdt.cc.po .C.po .cpp.po .cxx.po: 8524761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8638186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 8738186Speter @mv ${.TARGET}.tmp ${.TARGET} 881844Swollman 8942450Sjdp.cc.So .C.So .cpp.So .cxx.So: 901844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9138186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 9238186Speter @mv ${.TARGET}.tmp ${.TARGET} 931844Swollman 941844Swollman.f.o: 951844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 9738186Speter @mv ${.TARGET}.tmp ${.TARGET} 981844Swollman 991844Swollman.f.po: 10024761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10138186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 10238186Speter @mv ${.TARGET}.tmp ${.TARGET} 1031844Swollman 10442450Sjdp.f.So: 1051844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1081844Swollman 10936054Sbde.m.o: 11036054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11138186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 11238186Speter @mv ${.TARGET}.tmp ${.TARGET} 11336054Sbde 11436054Sbde.m.po: 11536054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 11638186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 11738186Speter @mv ${.TARGET}.tmp ${.TARGET} 11836054Sbde 11942450Sjdp.m.So: 12036054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 12138186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 12238186Speter @mv ${.TARGET}.tmp ${.TARGET} 12336054Sbde 1241638Srgrimes.s.o: 12526715Sasami ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 12617510Speter ${.IMPSRC} -o ${.TARGET} 12738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 12838186Speter @mv ${.TARGET}.tmp ${.TARGET} 1291638Srgrimes 1301638Srgrimes.s.po: 13126715Sasami ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 13217510Speter ${.IMPSRC} -o ${.TARGET} 13338186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 13438186Speter @mv ${.TARGET}.tmp ${.TARGET} 1351638Srgrimes 13642450Sjdp.s.So: 13726715Sasami ${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ 13817510Speter ${.IMPSRC} -o ${.TARGET} 13938186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1411638Srgrimes 1421844Swollman.S.o: 14326715Sasami ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14538186Speter @mv ${.TARGET}.tmp ${.TARGET} 1461844Swollman 1471844Swollman.S.po: 14826715Sasami ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14938186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 15038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1511844Swollman 15242450Sjdp.S.So: 15326715Sasami ${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 15438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 15538186Speter @mv ${.TARGET}.tmp ${.TARGET} 1561844Swollman 1572870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 1582868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB) 1591638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a 1601638Srgrimes.else 1611638Srgrimes_LIBS=lib${LIB}.a 1621638Srgrimes.endif 1632870Swollman.endif 1641638Srgrimes 16542915Sjdp.if defined(SHLIB_NAME) 16642915Sjdp_LIBS+=${SHLIB_NAME} 1671638Srgrimes.endif 1681844Swollman.if defined(INSTALL_PIC_ARCHIVE) 1691844Swollman_LIBS+=lib${LIB}_pic.a 1701844Swollman.endif 1711638Srgrimes 1721844Swollman.if !defined(PICFLAG) 1731844SwollmanPICFLAG=-fpic 1741844Swollman.endif 1751638Srgrimes 17618340Sswallaceall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln 1771844Swollman 1781844SwollmanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 1791844Swollman 18042915Sjdplib${LIB}.a:: ${OBJS} ${STATICOBJS} 1812353Sbde @${ECHO} building standard ${LIB} library 1821638Srgrimes @rm -f lib${LIB}.a 18342915Sjdp @${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 1841844Swollman ${RANLIB} lib${LIB}.a 1851638Srgrimes 18642915SjdpPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 1873859Sbde.if !defined(NOPROFILE) 1881638Srgrimeslib${LIB}_p.a:: ${POBJS} 1892353Sbde @${ECHO} building profiled ${LIB} library 1901638Srgrimes @rm -f lib${LIB}_p.a 19117400Sjkh @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 1921844Swollman ${RANLIB} lib${LIB}_p.a 1933859Sbde.endif 1941638Srgrimes 1951844Swollman.if defined(DESTDIR) 19636640SpeterLDDESTDIRENV?= LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}${LIBDIR} 1971844Swollman.endif 1981844Swollman 19942450SjdpSOBJS+= ${OBJS:.o=.So} 20028945Speter 20142915Sjdp.if defined(SHLIB_NAME) 20242915Sjdp${SHLIB_NAME}: ${SOBJS} 20342915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 20442915Sjdp @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 20542915Sjdp.if defined(SHLIB_LINK) 20642915Sjdp @ln -sf ${SHLIB_NAME} ${SHLIB_LINK} 20742915Sjdp.endif 20838655Sjb.if ${OBJFORMAT} == aout 20942915Sjdp @${LDDESTDIRENV} ${CC} -shared -Wl,-x,-assert,pure-text \ 21042915Sjdp -o ${SHLIB_NAME} \ 21117400Sjkh `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 21228945Speter.else 21328945Speter @${LDDESTDIRENV} ${CC} -shared -Wl,-x \ 21442915Sjdp -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \ 21528945Speter `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 21628945Speter.endif 21742915Sjdp.endif 2181844Swollman 21942915Sjdp.if defined(INSTALL_PIC_ARCHIVE) 2201844Swollmanlib${LIB}_pic.a:: ${SOBJS} 2212353Sbde @${ECHO} building special pic ${LIB} library 2221844Swollman @rm -f lib${LIB}_pic.a 2235253Sache @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 2241844Swollman ${RANLIB} lib${LIB}_pic.a 2253859Sbde.endif 2261844Swollman 2271638Srgrimesllib-l${LIB}.ln: ${SRCS} 2281638Srgrimes ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 2291638Srgrimes 2301638Srgrimes.if !target(clean) 23116663Sjkhclean: _SUBDIR 23242915Sjdp rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES} 23331809Sbde rm -f lib${LIB}.a # llib-l${LIB}.ln 23438187Speter rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a 23542450Sjdp rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \ 23642915Sjdp ${SHLIB_NAME} ${SHLIB_LINK} \ 23742450Sjdp lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a 23816826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS) 23916437Sphk rm -rf ${CLEANDIRS} 2401638Srgrimes.endif 24116437Sphk.endif 2421638Srgrimes 24334179Sbde_EXTRADEPEND: 24424750Sbde @TMP=_depend$$$$; \ 24542450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 24624750Sbde > $$TMP; \ 24724750Sbde mv $$TMP ${DEPENDFILE} 24842915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 24938655Sjb.if ${OBJFORMAT} == aout 25042915Sjdp echo ${SHLIB_NAME}: \ 25125468Sjdp `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \ 25225468Sjdp >> ${DEPENDFILE} 25328945Speter.else 25431809Sbde.if defined(DPADD) && !empty(DPADD) 25542915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 25627910Sasami.endif 25728945Speter.endif 25828945Speter.endif 2591638Srgrimes 2601638Srgrimes.if !target(install) 2611638Srgrimes.if !target(beforeinstall) 2621638Srgrimesbeforeinstall: 2631638Srgrimes.endif 2641638Srgrimes 26548204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2662298SwollmanSHLINSTALLFLAGS+= -fschg 2672298Swollman.endif 2682298Swollman 26949328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 27049328Shoek.for ie in ${INSTALLFLAGS_EDIT} 27149328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 27249328Shoek.endfor 27349328Shoek_SHLINSTALLFLAGS:= ${INSTALLFLAGS} 27449328Shoek.for ie in ${INSTALLFLAGS_EDIT} 27549328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 27649328Shoek.endfor 27749328Shoek 2781638Srgrimesrealinstall: beforeinstall 2792298Swollman.if !defined(INTERNALLIB) 2801996Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28149328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 2821638Srgrimes.if !defined(NOPROFILE) 2831844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28449328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2851638Srgrimes.endif 2862298Swollman.endif 28742915Sjdp.if defined(SHLIB_NAME) 28848204Sjmg ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28949328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 29042915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 29142915Sjdp.if defined(SHLIB_LINK) 29244946Sbde ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 2931844Swollman.endif 29428945Speter.endif 2951844Swollman.if defined(INSTALL_PIC_ARCHIVE) 2961844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 29749328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2981844Swollman.endif 2991638Srgrimes.if defined(LINKS) && !empty(LINKS) 3001638Srgrimes @set ${LINKS}; \ 3011638Srgrimes while test $$# -ge 2; do \ 3021638Srgrimes l=${DESTDIR}$$1; \ 3031638Srgrimes shift; \ 3041638Srgrimes t=${DESTDIR}$$1; \ 3051638Srgrimes shift; \ 3062353Sbde ${ECHO} $$t -\> $$l; \ 30744946Sbde ln -f $$l $$t; \ 3081638Srgrimes done; true 3091638Srgrimes.endif 31044946Sbde.if defined(SYMLINKS) && !empty(SYMLINKS) 31144946Sbde @set ${SYMLINKS}; \ 31244946Sbde while test $$# -ge 2; do \ 31344946Sbde l=$$1; \ 31444946Sbde shift; \ 31544946Sbde t=${DESTDIR}$$1; \ 31644946Sbde shift; \ 31744946Sbde ${ECHO} $$t -\> $$l; \ 31844946Sbde ln -fs $$l $$t; \ 31944946Sbde done; true 32044946Sbde.endif 3211638Srgrimes 32216663Sjkhinstall: afterinstall _SUBDIR 3231844Swollman.if !defined(NOMAN) 3241844Swollmanafterinstall: realinstall maninstall 3251844Swollman.else 3261638Srgrimesafterinstall: realinstall 3271638Srgrimes.endif 3281638Srgrimes.endif 3291638Srgrimes 33034528Seivind.if !target(regress) 33134528Seivindregress: 33234528Seivind.endif 33334528Seivind 3345585SjkhDISTRIBUTION?= bin 3354442Sphk.if !target(distribute) 33616663Sjkhdistribute: _SUBDIR 33726760Sjkh.for dist in ${DISTRIBUTION} 33826760Sjkh cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 33926760Sjkh.endfor 3404442Sphk.endif 3414442Sphk 3421638Srgrimes.if !target(lint) 3431638Srgrimeslint: 3441638Srgrimes.endif 3451638Srgrimes 3461844Swollman.if !defined(NOMAN) 3471638Srgrimes.include <bsd.man.mk> 3481844Swollman.elif !target(maninstall) 3491844Swollmanmaninstall: 35011136Swollmanall-man: 3511844Swollman.endif 3521844Swollman 3531844Swollman.include <bsd.dep.mk> 35434092Sbde 35534092Sbde.if !exists(${DEPENDFILE}) 35642915Sjdp${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 35734092Sbde.endif 35834092Sbde 35916663Sjkh.include <bsd.obj.mk> 360