bsd.lib.mk revision 96512
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 96512 2002-05-13 10:53:24Z 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 1642915Sjdp.if !defined(SHLIB_NAME) && 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: 12226715Sasami ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${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: 12826715Sasami ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${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: 13495216Smarkm ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} \ 13595216Smarkm ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1381638Srgrimes 1391844Swollman.S.o: 14026715Sasami ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14196258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 14238186Speter @mv ${.TARGET}.tmp ${.TARGET} 1431844Swollman 1441844Swollman.S.po: 14526715Sasami ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14696258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 14738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1481844Swollman 14942450Sjdp.S.So: 15095216Smarkm ${CC} ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} \ 15195216Smarkm -o ${.TARGET} 15238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 15338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1541844Swollman 15596512Sruall: objwarn 1561638Srgrimes 15796512Sru.if defined(LIB) && !empty(LIB) 15896512Sru_LIBS= lib${LIB}.a 15996512SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 1601638Srgrimes 16196512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 16296512Sru @${ECHO} building static ${LIB} library 16396512Sru @rm -f ${.TARGET} 16496512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 16596512Sru ${RANLIB} ${.TARGET} 1661638Srgrimes 16796512SruCLEANFILES+= a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 16895114Sobrien 16996512Sru.if !defined(INTERNALLIB) 17095114Sobrien 17196512Sru.if !defined(NOPROFILE) 17296512Sru_LIBS+= lib${LIB}_p.a 17396512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 17495306Sru 17596512Srulib${LIB}_p.a: ${POBJS} 17696512Sru @${ECHO} building profiled ${LIB} library 17796512Sru @rm -f ${.TARGET} 17896512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 17996512Sru ${RANLIB} ${.TARGET} 18096512Sru 18196512SruCLEANFILES+= ${POBJS} ${POBJS:S/$/.tmp/} 18274805Sru.endif 1831844Swollman 18496512SruSOBJS+= ${OBJS:.o=.So} 1851844Swollman 18696512SruCLEANFILES+= ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 1871638Srgrimes 18896512Sru.if defined(SHLIB_NAME) 18996512Sru_LIBS+= ${SHLIB_NAME} 1901638Srgrimes 19142915Sjdp${SHLIB_NAME}: ${SOBJS} 19242915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 19396512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 19442915Sjdp.if defined(SHLIB_LINK) 19596512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 19642915Sjdp.endif 19738655Sjb.if ${OBJFORMAT} == aout 19891011Sru @${CC} -shared -Wl,-x,-assert,pure-text \ 19996512Sru -o ${.TARGET} \ 20091011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 20128945Speter.else 20296343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 20396512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 20491011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 20528945Speter.endif 20696512Sru 20796512SruCLEANFILES+= ${SHLIB_LINK} lib${LIB}.so.* lib${LIB}.so 20842915Sjdp.endif 2091844Swollman 21042915Sjdp.if defined(INSTALL_PIC_ARCHIVE) 21196512Sru_LIBS+= lib${LIB}_pic.a 21296512Sru 21396512Srulib${LIB}_pic.a: ${SOBJS} 2142353Sbde @${ECHO} building special pic ${LIB} library 21596512Sru @rm -f ${.TARGET} 21696512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 21796512Sru ${RANLIB} ${.TARGET} 2183859Sbde.endif 2191844Swollman 22096512Sru.if defined(WANT_LINT) 22196512SruLINTLIB= llib-l${LIB}.ln 22296512Sru_LIBS+= ${LINTLIB} 22396512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 22496512Sru 22592491Smarkm${LINTLIB}: ${LINTOBJS} 22696512Sru @${ECHO} building lint library ${.TARGET} 22796512Sru @rm -f ${.TARGET} 22892491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 22996512Sru 23096512SruCLEANFILES+= ${LINTOBJS} 23192491Smarkm.endif 2321638Srgrimes 23396512Sru.endif !defined(INTERNALLIB) 23496512Sru 23596512Sruall: ${_LIBS} 23696512Sru 23796512SruCLEANFILES+= ${_LIBS} 23896512Sru.endif defined(LIB) && !empty(LIB) 23996512Sru 24096512Sru.if !defined(NOMAN) 24196512Sruall: _manpages 2421638Srgrimes.endif 2431638Srgrimes 24434179Sbde_EXTRADEPEND: 24524750Sbde @TMP=_depend$$$$; \ 24642450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 24724750Sbde > $$TMP; \ 24824750Sbde mv $$TMP ${DEPENDFILE} 24942915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 25038655Sjb.if ${OBJFORMAT} == aout 25142915Sjdp echo ${SHLIB_NAME}: \ 25291011Sru `${CC} -shared -Wl,-f ${LDADD}` \ 25325468Sjdp >> ${DEPENDFILE} 25428945Speter.else 25531809Sbde.if defined(DPADD) && !empty(DPADD) 25642915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 25727910Sasami.endif 25828945Speter.endif 25928945Speter.endif 2601638Srgrimes 2611638Srgrimes.if !target(install) 2621638Srgrimes 26348204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2642298SwollmanSHLINSTALLFLAGS+= -fschg 2652298Swollman.endif 2662298Swollman 26749328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 26849328Shoek.for ie in ${INSTALLFLAGS_EDIT} 26949328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 27049328Shoek.endfor 27156971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 27249328Shoek.for ie in ${INSTALLFLAGS_EDIT} 27349328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 27449328Shoek.endfor 27549328Shoek 27696512Sru.if defined(LIB) && !empty(LIB) && !defined(INTERNALLIB) 27795306Srurealinstall: _libinstall 27895306Sru_libinstall: 27996512Sru.if !defined(NOINSTALLLIB) 28092980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28149328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 28296512Sru.endif 2831638Srgrimes.if !defined(NOPROFILE) 28492980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28549328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2861638Srgrimes.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) 29296512Sru ln -fs ${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 29996512Sru.if defined(WANT_LINT) 30096462Sru ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 30196462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 30296462Sru.endif 30396512Sru.endif defined(LIB) && !empty(LIB) && !defined(INTERNALLIB) 30496462Sru 30596462Srurealinstall: 3061638Srgrimes.if defined(LINKS) && !empty(LINKS) 3071638Srgrimes @set ${LINKS}; \ 3081638Srgrimes while test $$# -ge 2; do \ 3091638Srgrimes l=${DESTDIR}$$1; \ 3101638Srgrimes shift; \ 3111638Srgrimes t=${DESTDIR}$$1; \ 3121638Srgrimes shift; \ 3132353Sbde ${ECHO} $$t -\> $$l; \ 31444946Sbde ln -f $$l $$t; \ 3151638Srgrimes done; true 3161638Srgrimes.endif 31744946Sbde.if defined(SYMLINKS) && !empty(SYMLINKS) 31844946Sbde @set ${SYMLINKS}; \ 31944946Sbde while test $$# -ge 2; do \ 32044946Sbde l=$$1; \ 32144946Sbde shift; \ 32244946Sbde t=${DESTDIR}$$1; \ 32344946Sbde shift; \ 32444946Sbde ${ECHO} $$t -\> $$l; \ 32544946Sbde ln -fs $$l $$t; \ 32644946Sbde done; true 32744946Sbde.endif 3281638Srgrimes 32996462Srurealinstall: _incsinstall 33096462Sru 33196162Sru.if !defined(NOMAN) 33296164Srurealinstall: _maninstall 33396162Sru.endif 33496162Sru 3351638Srgrimes.endif 3361638Srgrimes 3371638Srgrimes.if !target(lint) 33895306Srulint: ${SRCS:M*.c} 33992553Sru ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 3401638Srgrimes.endif 3411638Srgrimes 34296462Sru.include <bsd.incs.mk> 34396462Sru 3441844Swollman.if !defined(NOMAN) 3451638Srgrimes.include <bsd.man.mk> 34674842Sru.endif 3471844Swollman 3481844Swollman.include <bsd.dep.mk> 34934092Sbde 35096512Sru.if defined(LIB) && !empty(LIB) 35194113Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 35242915Sjdp${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 35334092Sbde.endif 35496512Sru.endif 35534092Sbde 35616663Sjkh.include <bsd.obj.mk> 35776861Skris 35876861Skris.include <bsd.sys.mk> 359