bsd.lib.mk revision 96162
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 96162 2002-05-07 15:27:56Z ru $ 31844Swollman# 41638Srgrimes 594940Sru.include <bsd.init.mk> 61638Srgrimes 71844Swollman.if exists(${.CURDIR}/shlib_version) 81844SwollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 938655Sjb.if ${OBJFORMAT} == aout 101844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 111844Swollman.endif 1228945Speter.endif 131844Swollman 1442915Sjdp# Set up the variables controlling shared libraries. After this section, 1542915Sjdp# SHLIB_NAME will be defined only if we are to create a shared library. 1642915Sjdp# SHLIB_LINK will be defined only if we are to create a link to it. 1742915Sjdp# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 1842915Sjdp.if defined(NOPIC) 1942915Sjdp.undef SHLIB_NAME 2042915Sjdp.undef INSTALL_PIC_ARCHIVE 2142915Sjdp.else 2242915Sjdp.if ${OBJFORMAT} == elf 2342915Sjdp.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR) 2442915SjdpSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 2542915SjdpSHLIB_LINK?= lib${LIB}.so 2629141Speter.endif 2742915SjdpSONAME?= ${SHLIB_NAME} 2842915Sjdp.else 2942915Sjdp.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 3042915SjdpSHLIB_NAME?= lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 3142915Sjdp.endif 3242915Sjdp.endif 3342915Sjdp.endif 3429141Speter 352827Sjkh.if defined(DEBUG_FLAGS) 362827SjkhCFLAGS+= ${DEBUG_FLAGS} 372827Sjkh.endif 382827Sjkh 392827Sjkh.if !defined(DEBUG_FLAGS) 401638SrgrimesSTRIP?= -s 412827Sjkh.endif 421638Srgrimes 4343055Sjdp.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 4418529Sbde.include <bsd.libnames.mk> 4531809Sbde.endif 4618529Sbde 471638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 4842450Sjdp# .So used for PIC object files 491638Srgrimes.SUFFIXES: 5095064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 511638Srgrimes 5292491Smarkm.c.ln: 5392491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5492553Sru touch ${.TARGET} 5592491Smarkm 5692491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln: 5792553Sru ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5892553Sru touch ${.TARGET} 5992491Smarkm 601638Srgrimes.c.o: 611844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 6338186Speter @mv ${.TARGET}.tmp ${.TARGET} 641638Srgrimes 651638Srgrimes.c.po: 6624761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6738186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 6838186Speter @mv ${.TARGET}.tmp ${.TARGET} 691638Srgrimes 7042450Sjdp.c.So: 711844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7338186Speter @mv ${.TARGET}.tmp ${.TARGET} 741844Swollman 7536673Sdt.cc.o .C.o .cpp.o .cxx.o: 761844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7838186Speter @mv ${.TARGET}.tmp ${.TARGET} 791844Swollman 8036673Sdt.cc.po .C.po .cpp.po .cxx.po: 8124761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8238186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 8338186Speter @mv ${.TARGET}.tmp ${.TARGET} 841844Swollman 8542450Sjdp.cc.So .C.So .cpp.So .cxx.So: 861844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8838186Speter @mv ${.TARGET}.tmp ${.TARGET} 891844Swollman 901844Swollman.f.o: 911844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 9338186Speter @mv ${.TARGET}.tmp ${.TARGET} 941844Swollman 951844Swollman.f.po: 9624761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9738186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 9838186Speter @mv ${.TARGET}.tmp ${.TARGET} 991844Swollman 10042450Sjdp.f.So: 1011844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1041844Swollman 10536054Sbde.m.o: 10636054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10838186Speter @mv ${.TARGET}.tmp ${.TARGET} 10936054Sbde 11036054Sbde.m.po: 11136054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 11238186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 11338186Speter @mv ${.TARGET}.tmp ${.TARGET} 11436054Sbde 11542450Sjdp.m.So: 11636054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 11838186Speter @mv ${.TARGET}.tmp ${.TARGET} 11936054Sbde 12095251Sru.s.o .asm.o: 12126715Sasami ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 12217510Speter ${.IMPSRC} -o ${.TARGET} 12338186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 12438186Speter @mv ${.TARGET}.tmp ${.TARGET} 1251638Srgrimes 12695251Sru.s.po .asm.po: 12726715Sasami ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 12817510Speter ${.IMPSRC} -o ${.TARGET} 12938186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 13038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1311638Srgrimes 13295251Sru.s.So .asm.So: 13395216Smarkm ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} \ 13495216Smarkm ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13538186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13638186Speter @mv ${.TARGET}.tmp ${.TARGET} 1371638Srgrimes 1381844Swollman.S.o: 13926715Sasami ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14038186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1421844Swollman 1431844Swollman.S.po: 14426715Sasami ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14538186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 14638186Speter @mv ${.TARGET}.tmp ${.TARGET} 1471844Swollman 14842450Sjdp.S.So: 14995216Smarkm ${CC} ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} \ 15095216Smarkm -o ${.TARGET} 15138186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 15238186Speter @mv ${.TARGET}.tmp ${.TARGET} 1531844Swollman 1542870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 1552868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB) 1561638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a 1571638Srgrimes.else 1581638Srgrimes_LIBS=lib${LIB}.a 1591638Srgrimes.endif 1602870Swollman.endif 1611638Srgrimes 16242915Sjdp.if defined(SHLIB_NAME) 16342915Sjdp_LIBS+=${SHLIB_NAME} 1641638Srgrimes.endif 1651844Swollman.if defined(INSTALL_PIC_ARCHIVE) 1661844Swollman_LIBS+=lib${LIB}_pic.a 1671844Swollman.endif 1681638Srgrimes 1691844Swollman.if !defined(PICFLAG) 17092128Sobrien.if ${MACHINE_ARCH} == "sparc64" 17192128SobrienPICFLAG=-fPIC 17292128Sobrien.else 1731844SwollmanPICFLAG=-fpic 1741844Swollman.endif 17592128Sobrien.endif 1761638Srgrimes 17795114SobrienLINTOBJS+= ${SRCS:M*.c:C/\..+$/.ln/} 17895114Sobrien 17995114Sobrien.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS) 18095114SobrienLINTLIB=llib-l${LIB}.ln 18195114Sobrien_LIBS+=${LINTLIB} 18295114Sobrien.endif 18395114Sobrien 18495306Sruall: objwarn ${_LIBS} 18595306Sru 18674805Sru.if !defined(NOMAN) 18795306Sruall: all-man 18874805Sru.endif 1891844Swollman 1901844SwollmanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 1911844Swollman 19242915Sjdplib${LIB}.a:: ${OBJS} ${STATICOBJS} 19366534Speter @${ECHO} building static ${LIB} library 1941638Srgrimes @rm -f lib${LIB}.a 19542915Sjdp @${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 1961844Swollman ${RANLIB} lib${LIB}.a 1971638Srgrimes 19842915SjdpPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 1993859Sbde.if !defined(NOPROFILE) 2001638Srgrimeslib${LIB}_p.a:: ${POBJS} 2012353Sbde @${ECHO} building profiled ${LIB} library 2021638Srgrimes @rm -f lib${LIB}_p.a 20317400Sjkh @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 2041844Swollman ${RANLIB} lib${LIB}_p.a 2053859Sbde.endif 2061638Srgrimes 20742450SjdpSOBJS+= ${OBJS:.o=.So} 20828945Speter 20942915Sjdp.if defined(SHLIB_NAME) 21042915Sjdp${SHLIB_NAME}: ${SOBJS} 21142915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 21242915Sjdp @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 21342915Sjdp.if defined(SHLIB_LINK) 21442915Sjdp @ln -sf ${SHLIB_NAME} ${SHLIB_LINK} 21542915Sjdp.endif 21638655Sjb.if ${OBJFORMAT} == aout 21791011Sru @${CC} -shared -Wl,-x,-assert,pure-text \ 21842915Sjdp -o ${SHLIB_NAME} \ 21991011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 22028945Speter.else 22191011Sru @${CC} -shared -Wl,-x \ 22242915Sjdp -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \ 22391011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 22428945Speter.endif 22542915Sjdp.endif 2261844Swollman 22742915Sjdp.if defined(INSTALL_PIC_ARCHIVE) 2281844Swollmanlib${LIB}_pic.a:: ${SOBJS} 2292353Sbde @${ECHO} building special pic ${LIB} library 2301844Swollman @rm -f lib${LIB}_pic.a 2315253Sache @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 2321844Swollman ${RANLIB} lib${LIB}_pic.a 2333859Sbde.endif 2341844Swollman 23592553Sru.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS) 23692491Smarkm${LINTLIB}: ${LINTOBJS} 23792553Sru @${ECHO} building lint library ${LINTLIB} 23892491Smarkm @rm -f ${LINTLIB} 23992491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 24092491Smarkm.endif 2411638Srgrimes 2421638Srgrimes.if !target(clean) 24395306Sruclean: 24442915Sjdp rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES} 24592553Sru rm -f lib${LIB}.a 24638187Speter rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a 24742450Sjdp rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \ 24842915Sjdp ${SHLIB_NAME} ${SHLIB_LINK} \ 24942450Sjdp lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a 25092491Smarkm rm -f ${LINTOBJS} ${LINTLIB} 25116826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS) 25216437Sphk rm -rf ${CLEANDIRS} 2531638Srgrimes.endif 25416437Sphk.endif 2551638Srgrimes 25634179Sbde_EXTRADEPEND: 25724750Sbde @TMP=_depend$$$$; \ 25842450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 25924750Sbde > $$TMP; \ 26024750Sbde mv $$TMP ${DEPENDFILE} 26142915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 26238655Sjb.if ${OBJFORMAT} == aout 26342915Sjdp echo ${SHLIB_NAME}: \ 26491011Sru `${CC} -shared -Wl,-f ${LDADD}` \ 26525468Sjdp >> ${DEPENDFILE} 26628945Speter.else 26731809Sbde.if defined(DPADD) && !empty(DPADD) 26842915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 26927910Sasami.endif 27028945Speter.endif 27128945Speter.endif 2721638Srgrimes 2731638Srgrimes.if !target(install) 2741638Srgrimes.if !target(beforeinstall) 27555954Srgrimesbeforeinstall: _includeinstall 2761638Srgrimes.endif 2771638Srgrimes 27855954Srgrimes_includeinstall: 27955954Srgrimes.if defined(INCS) 28055954Srgrimes.for header in ${INCS} 28155954Srgrimes cd ${.CURDIR} && \ 28255954Srgrimes ${INSTALL} -C -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} \ 28395216Smarkm ${header} ${DESTDIR}${INCDIR} 28455954Srgrimes.endfor 28555954Srgrimes.endif 28655954Srgrimes 28748204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2882298SwollmanSHLINSTALLFLAGS+= -fschg 2892298Swollman.endif 2902298Swollman 29149328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 29249328Shoek.for ie in ${INSTALLFLAGS_EDIT} 29349328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 29449328Shoek.endfor 29556971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 29649328Shoek.for ie in ${INSTALLFLAGS_EDIT} 29749328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 29849328Shoek.endfor 29949328Shoek 3001638Srgrimesrealinstall: beforeinstall 30195306Srurealinstall: _libinstall 30295306Sru_libinstall: 3032298Swollman.if !defined(INTERNALLIB) 30492980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 30549328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 3061638Srgrimes.if !defined(NOPROFILE) 30792980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 30849328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 3091638Srgrimes.endif 3102298Swollman.endif 31142915Sjdp.if defined(SHLIB_NAME) 31248204Sjmg ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31349328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 31442915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 31542915Sjdp.if defined(SHLIB_LINK) 31644946Sbde ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 3171844Swollman.endif 31828945Speter.endif 3191844Swollman.if defined(INSTALL_PIC_ARCHIVE) 3201844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 32149328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 3221844Swollman.endif 3231638Srgrimes.if defined(LINKS) && !empty(LINKS) 3241638Srgrimes @set ${LINKS}; \ 3251638Srgrimes while test $$# -ge 2; do \ 3261638Srgrimes l=${DESTDIR}$$1; \ 3271638Srgrimes shift; \ 3281638Srgrimes t=${DESTDIR}$$1; \ 3291638Srgrimes shift; \ 3302353Sbde ${ECHO} $$t -\> $$l; \ 33144946Sbde ln -f $$l $$t; \ 3321638Srgrimes done; true 3331638Srgrimes.endif 33444946Sbde.if defined(SYMLINKS) && !empty(SYMLINKS) 33544946Sbde @set ${SYMLINKS}; \ 33644946Sbde while test $$# -ge 2; do \ 33744946Sbde l=$$1; \ 33844946Sbde shift; \ 33944946Sbde t=${DESTDIR}$$1; \ 34044946Sbde shift; \ 34144946Sbde ${ECHO} $$t -\> $$l; \ 34244946Sbde ln -fs $$l $$t; \ 34344946Sbde done; true 34444946Sbde.endif 34592553Sru.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS) 34692491Smarkm ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 34792491Smarkm ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 34892491Smarkm.endif 3491638Srgrimes 35096162Sru.if !defined(NOMAN) 35196162Srurealinstall: maninstall 35296162Sru.endif 35396162Sru 35495306Sruinstall: afterinstall 35595306Sruafterinstall: realinstall 3561638Srgrimes.endif 3571638Srgrimes 3581638Srgrimes.if !target(lint) 35995306Srulint: ${SRCS:M*.c} 36092553Sru ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 3611638Srgrimes.endif 3621638Srgrimes 3631844Swollman.if !defined(NOMAN) 3641638Srgrimes.include <bsd.man.mk> 36574842Sru.endif 3661844Swollman 3671844Swollman.include <bsd.dep.mk> 36834092Sbde 36994113Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 37042915Sjdp${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 37134092Sbde.endif 37234092Sbde 37316663Sjkh.include <bsd.obj.mk> 37476861Skris 37576861Skris.include <bsd.sys.mk> 376