bsd.lib.mk revision 99362
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 99362 2002-07-03 16:22:43Z ru $ 31844Swollman# 41638Srgrimes 594940Sru.include <bsd.init.mk> 61638Srgrimes 742915Sjdp# Set up the variables controlling shared libraries. After this section, 842915Sjdp# SHLIB_NAME will be defined only if we are to create a shared library. 942915Sjdp# SHLIB_LINK will be defined only if we are to create a link to it. 1042915Sjdp# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 1142915Sjdp.if defined(NOPIC) 1242915Sjdp.undef SHLIB_NAME 1342915Sjdp.undef INSTALL_PIC_ARCHIVE 1442915Sjdp.else 1542915Sjdp.if ${OBJFORMAT} == elf 1699362Sru.if !defined(SHLIB_NAME) && defined(LIB) && defined(SHLIB_MAJOR) 1742915SjdpSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 1842915SjdpSHLIB_LINK?= lib${LIB}.so 1929141Speter.endif 2042915SjdpSONAME?= ${SHLIB_NAME} 2142915Sjdp.else 2242915Sjdp.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 2342915SjdpSHLIB_NAME?= lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 2442915Sjdp.endif 2542915Sjdp.endif 2642915Sjdp.endif 2729141Speter 282827Sjkh.if defined(DEBUG_FLAGS) 292827SjkhCFLAGS+= ${DEBUG_FLAGS} 302827Sjkh.endif 312827Sjkh 322827Sjkh.if !defined(DEBUG_FLAGS) 331638SrgrimesSTRIP?= -s 342827Sjkh.endif 351638Srgrimes 3643055Sjdp.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 3718529Sbde.include <bsd.libnames.mk> 3831809Sbde.endif 3918529Sbde 401638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 4142450Sjdp# .So used for PIC object files 421638Srgrimes.SUFFIXES: 4395064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 441638Srgrimes 4596512Sru.if !defined(PICFLAG) 4696512Sru.if ${MACHINE_ARCH} == "sparc64" 4796512SruPICFLAG=-fPIC 4896512Sru.else 4996512SruPICFLAG=-fpic 5096512Sru.endif 5196512Sru.endif 5296512Sru 5392491Smarkm.c.ln: 5492491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5592553Sru touch ${.TARGET} 5692491Smarkm 5792491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln: 5892553Sru ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5992553Sru touch ${.TARGET} 6092491Smarkm 611638Srgrimes.c.o: 621844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6338186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 6438186Speter @mv ${.TARGET}.tmp ${.TARGET} 651638Srgrimes 661638Srgrimes.c.po: 6724761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6838186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 6938186Speter @mv ${.TARGET}.tmp ${.TARGET} 701638Srgrimes 7142450Sjdp.c.So: 721844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7396258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 7438186Speter @mv ${.TARGET}.tmp ${.TARGET} 751844Swollman 7636673Sdt.cc.o .C.o .cpp.o .cxx.o: 771844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7838186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7938186Speter @mv ${.TARGET}.tmp ${.TARGET} 801844Swollman 8136673Sdt.cc.po .C.po .cpp.po .cxx.po: 8224761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8338186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 8438186Speter @mv ${.TARGET}.tmp ${.TARGET} 851844Swollman 8642450Sjdp.cc.So .C.So .cpp.So .cxx.So: 871844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8896258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 8938186Speter @mv ${.TARGET}.tmp ${.TARGET} 901844Swollman 911844Swollman.f.o: 921844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9338186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 9438186Speter @mv ${.TARGET}.tmp ${.TARGET} 951844Swollman 961844Swollman.f.po: 9724761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9838186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 9938186Speter @mv ${.TARGET}.tmp ${.TARGET} 1001844Swollman 10142450Sjdp.f.So: 1021844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10396258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 10438186Speter @mv ${.TARGET}.tmp ${.TARGET} 1051844Swollman 10636054Sbde.m.o: 10736054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10838186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10938186Speter @mv ${.TARGET}.tmp ${.TARGET} 11036054Sbde 11136054Sbde.m.po: 11236054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 11338186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 11438186Speter @mv ${.TARGET}.tmp ${.TARGET} 11536054Sbde 11642450Sjdp.m.So: 11736054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11896258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11938186Speter @mv ${.TARGET}.tmp ${.TARGET} 12036054Sbde 12195251Sru.s.o .asm.o: 12297101Sru ${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \ 12317510Speter ${.IMPSRC} -o ${.TARGET} 12496258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 12538186Speter @mv ${.TARGET}.tmp ${.TARGET} 1261638Srgrimes 12795251Sru.s.po .asm.po: 12897101Sru ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \ 12917510Speter ${.IMPSRC} -o ${.TARGET} 13096258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 13138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1321638Srgrimes 13395251Sru.s.So .asm.So: 13497101Sru ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 13595216Smarkm ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1381638Srgrimes 1391844Swollman.S.o: 14097101Sru ${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14196258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 14238186Speter @mv ${.TARGET}.tmp ${.TARGET} 1431844Swollman 1441844Swollman.S.po: 14597101Sru ${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14696258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 14738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1481844Swollman 14942450Sjdp.S.So: 15097101Sru ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \ 15195216Smarkm -o ${.TARGET} 15238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 15338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1541844Swollman 15596512Sruall: objwarn 1561638Srgrimes 15799362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 15899362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 15999362Sru.endif 16099362Sru 16196512Sru.if defined(LIB) && !empty(LIB) 16296512Sru_LIBS= lib${LIB}.a 1631638Srgrimes 16496512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 16596512Sru @${ECHO} building static ${LIB} library 16696512Sru @rm -f ${.TARGET} 16796512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 16896512Sru ${RANLIB} ${.TARGET} 16999362Sru.endif 1701638Srgrimes 17196512Sru.if !defined(INTERNALLIB) 17295114Sobrien 17399362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 17496512Sru_LIBS+= lib${LIB}_p.a 17596512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 17695306Sru 17796512Srulib${LIB}_p.a: ${POBJS} 17896512Sru @${ECHO} building profiled ${LIB} library 17996512Sru @rm -f ${.TARGET} 18096512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 18196512Sru ${RANLIB} ${.TARGET} 18274805Sru.endif 1831844Swollman 18499362Sru.if defined(SHLIB_NAME) || \ 18599362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 18696512SruSOBJS+= ${OBJS:.o=.So} 18799362Sru.endif 1881844Swollman 18996512Sru.if defined(SHLIB_NAME) 19096512Sru_LIBS+= ${SHLIB_NAME} 1911638Srgrimes 19242915Sjdp${SHLIB_NAME}: ${SOBJS} 19342915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 19496512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 19542915Sjdp.if defined(SHLIB_LINK) 19696512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 19742915Sjdp.endif 19838655Sjb.if ${OBJFORMAT} == aout 19991011Sru @${CC} -shared -Wl,-x,-assert,pure-text \ 20096512Sru -o ${.TARGET} \ 20191011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 20228945Speter.else 20396343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 20496512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 20591011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 20628945Speter.endif 20742915Sjdp.endif 2081844Swollman 20999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 21096512Sru_LIBS+= lib${LIB}_pic.a 21196512Sru 21296512Srulib${LIB}_pic.a: ${SOBJS} 2132353Sbde @${ECHO} building special pic ${LIB} library 21496512Sru @rm -f ${.TARGET} 21596512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 21696512Sru ${RANLIB} ${.TARGET} 2173859Sbde.endif 2181844Swollman 21999362Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 22096512SruLINTLIB= llib-l${LIB}.ln 22196512Sru_LIBS+= ${LINTLIB} 22296512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 22396512Sru 22492491Smarkm${LINTLIB}: ${LINTOBJS} 22596512Sru @${ECHO} building lint library ${.TARGET} 22696512Sru @rm -f ${.TARGET} 22792491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 22892491Smarkm.endif 2291638Srgrimes 23096512Sru.endif !defined(INTERNALLIB) 23196512Sru 23296512Sruall: ${_LIBS} 23396512Sru 23496512Sru.if !defined(NOMAN) 23596512Sruall: _manpages 2361638Srgrimes.endif 2371638Srgrimes 23896529Sru.if !target(clean) 23996529Sruclean: 24098870Sjmallett.if defined(CLEANFILES) && !empty(CLEANFILES) 24196529Sru rm -f ${CLEANFILES} 24298870Sjmallett.endif 24396529Sru.if defined(LIB) && !empty(LIB) 24496529Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 24599362Sru.endif 24696529Sru.if !defined(INTERNALLIB) 24799362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 24896529Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 24996529Sru.endif 25099362Sru.if defined(SHLIB_NAME) || \ 25199362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 25296529Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 25399362Sru.endif 25496529Sru.if defined(SHLIB_NAME) 25599362Sru.if defined(SHLIB_LINK) 25699362Sru rm -f ${SHLIB_LINK} 25796529Sru.endif 25899362Sru.if defined(LIB) && !empty(LIB) 25999362Sru rm -f lib${LIB}.so.* lib${LIB}.so 26099362Sru.endif 26199362Sru.endif 26299362Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 26396529Sru rm -f ${LINTOBJS} 26496529Sru.endif 26596529Sru.endif !defined(INTERNALLIB) 26699362Sru.if defined(_LIBS) && !empty(_LIBS) 26796529Sru rm -f ${_LIBS} 26899362Sru.endif 26996529Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 27096529Sru rm -rf ${CLEANDIRS} 27196529Sru.endif 27296529Sru.endif 27396529Sru 27434179Sbde_EXTRADEPEND: 27524750Sbde @TMP=_depend$$$$; \ 27642450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 27724750Sbde > $$TMP; \ 27824750Sbde mv $$TMP ${DEPENDFILE} 27942915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 28038655Sjb.if ${OBJFORMAT} == aout 28142915Sjdp echo ${SHLIB_NAME}: \ 28291011Sru `${CC} -shared -Wl,-f ${LDADD}` \ 28325468Sjdp >> ${DEPENDFILE} 28428945Speter.else 28531809Sbde.if defined(DPADD) && !empty(DPADD) 28642915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 28727910Sasami.endif 28828945Speter.endif 28928945Speter.endif 2901638Srgrimes 2911638Srgrimes.if !target(install) 2921638Srgrimes 29348204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2942298SwollmanSHLINSTALLFLAGS+= -fschg 2952298Swollman.endif 2962298Swollman 29749328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 29849328Shoek.for ie in ${INSTALLFLAGS_EDIT} 29949328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 30049328Shoek.endfor 30156971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 30249328Shoek.for ie in ${INSTALLFLAGS_EDIT} 30349328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 30449328Shoek.endfor 30549328Shoek 30699362Sru.if !defined(INTERNALLIB) 30795306Srurealinstall: _libinstall 30899343Sru.ORDER: beforeinstall _libinstall 30995306Sru_libinstall: 31099362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB) 31192980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31249328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 31396512Sru.endif 31499362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 31592980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31649328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 3171638Srgrimes.endif 31842915Sjdp.if defined(SHLIB_NAME) 31948204Sjmg ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 32049328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 32142915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 32242915Sjdp.if defined(SHLIB_LINK) 32396512Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 3241844Swollman.endif 32528945Speter.endif 32699362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 3271844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 32849328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 3291844Swollman.endif 33099362Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 33196462Sru ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 33296462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 33396462Sru.endif 33499362Sru.endif !defined(INTERNALLIB) 33596462Sru 33697769Sru.include <bsd.files.mk> 33796668Sru.include <bsd.incs.mk> 33899256Sru.include <bsd.links.mk> 33996462Sru 34096162Sru.if !defined(NOMAN) 34196164Srurealinstall: _maninstall 34299343Sru.ORDER: beforeinstall _maninstall 34396162Sru.endif 34496162Sru 3451638Srgrimes.endif 3461638Srgrimes 3471638Srgrimes.if !target(lint) 34895306Srulint: ${SRCS:M*.c} 34992553Sru ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 3501638Srgrimes.endif 3511638Srgrimes 3521844Swollman.if !defined(NOMAN) 3531638Srgrimes.include <bsd.man.mk> 35474842Sru.endif 3551844Swollman 3561844Swollman.include <bsd.dep.mk> 35734092Sbde 35899362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 35996512Sru.if defined(LIB) && !empty(LIB) 36099362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 36134092Sbde.endif 36299362Sru.if defined(SHLIB_NAME) || \ 36399362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 36499362Sru${SOBJS}: ${SRCS:M*.h} 36596512Sru.endif 36699362Sru.endif 36734092Sbde 36816663Sjkh.include <bsd.obj.mk> 36976861Skris 37076861Skris.include <bsd.sys.mk> 371