bsd.lib.mk revision 56971
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 56971 2000-02-03 09:36:17Z ru $ 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) 26255954Srgrimesbeforeinstall: _includeinstall 2631638Srgrimes.endif 2641638Srgrimes 26555954Srgrimes_includeinstall: 26655954Srgrimes.if defined(INCS) 26755954Srgrimes.for header in ${INCS} 26855954Srgrimes cd ${.CURDIR} && \ 26955954Srgrimes ${INSTALL} -C -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} \ 27055954Srgrimes ${header} ${DESTDIR}${INCDIR} 27155954Srgrimes 27255954Srgrimes.endfor 27355954Srgrimes.endif 27455954Srgrimes 27548204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2762298SwollmanSHLINSTALLFLAGS+= -fschg 2772298Swollman.endif 2782298Swollman 27949328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 28049328Shoek.for ie in ${INSTALLFLAGS_EDIT} 28149328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 28249328Shoek.endfor 28356971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 28449328Shoek.for ie in ${INSTALLFLAGS_EDIT} 28549328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 28649328Shoek.endfor 28749328Shoek 2881638Srgrimesrealinstall: beforeinstall 2892298Swollman.if !defined(INTERNALLIB) 2901996Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 29149328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 2921638Srgrimes.if !defined(NOPROFILE) 2931844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 29449328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2951638Srgrimes.endif 2962298Swollman.endif 29742915Sjdp.if defined(SHLIB_NAME) 29848204Sjmg ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 29949328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 30042915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 30142915Sjdp.if defined(SHLIB_LINK) 30244946Sbde ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 3031844Swollman.endif 30428945Speter.endif 3051844Swollman.if defined(INSTALL_PIC_ARCHIVE) 3061844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 30749328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 3081844Swollman.endif 3091638Srgrimes.if defined(LINKS) && !empty(LINKS) 3101638Srgrimes @set ${LINKS}; \ 3111638Srgrimes while test $$# -ge 2; do \ 3121638Srgrimes l=${DESTDIR}$$1; \ 3131638Srgrimes shift; \ 3141638Srgrimes t=${DESTDIR}$$1; \ 3151638Srgrimes shift; \ 3162353Sbde ${ECHO} $$t -\> $$l; \ 31744946Sbde ln -f $$l $$t; \ 3181638Srgrimes done; true 3191638Srgrimes.endif 32044946Sbde.if defined(SYMLINKS) && !empty(SYMLINKS) 32144946Sbde @set ${SYMLINKS}; \ 32244946Sbde while test $$# -ge 2; do \ 32344946Sbde l=$$1; \ 32444946Sbde shift; \ 32544946Sbde t=${DESTDIR}$$1; \ 32644946Sbde shift; \ 32744946Sbde ${ECHO} $$t -\> $$l; \ 32844946Sbde ln -fs $$l $$t; \ 32944946Sbde done; true 33044946Sbde.endif 3311638Srgrimes 33216663Sjkhinstall: afterinstall _SUBDIR 3331844Swollman.if !defined(NOMAN) 3341844Swollmanafterinstall: realinstall maninstall 3351844Swollman.else 3361638Srgrimesafterinstall: realinstall 3371638Srgrimes.endif 3381638Srgrimes.endif 3391638Srgrimes 34034528Seivind.if !target(regress) 34134528Seivindregress: 34234528Seivind.endif 34334528Seivind 3445585SjkhDISTRIBUTION?= bin 3454442Sphk.if !target(distribute) 34616663Sjkhdistribute: _SUBDIR 34726760Sjkh.for dist in ${DISTRIBUTION} 34826760Sjkh cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 34926760Sjkh.endfor 3504442Sphk.endif 3514442Sphk 3521638Srgrimes.if !target(lint) 3531638Srgrimeslint: 3541638Srgrimes.endif 3551638Srgrimes 3561844Swollman.if !defined(NOMAN) 3571638Srgrimes.include <bsd.man.mk> 3581844Swollman.elif !target(maninstall) 3591844Swollmanmaninstall: 36011136Swollmanall-man: 3611844Swollman.endif 3621844Swollman 3631844Swollman.include <bsd.dep.mk> 36434092Sbde 36534092Sbde.if !exists(${DEPENDFILE}) 36642915Sjdp${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 36734092Sbde.endif 36834092Sbde 36916663Sjkh.include <bsd.obj.mk> 370