bsd.lib.mk revision 228137
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 228137 2011-11-29 16:34:44Z fjoe $ 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. 11139106Sru.if defined(NO_PIC) 1242915Sjdp.undef SHLIB_NAME 1342915Sjdp.undef INSTALL_PIC_ARCHIVE 1442915Sjdp.else 15129024Sdes.if !defined(SHLIB) && defined(LIB) 16129024SdesSHLIB= ${LIB} 1729141Speter.endif 18129024Sdes.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR) 19129024SdesSHLIB_NAME= lib${SHLIB}.so.${SHLIB_MAJOR} 20129024Sdes.endif 21125119Sru.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*) 22100332SruSHLIB_LINK?= ${SHLIB_NAME:R} 23100332Sru.endif 2442915SjdpSONAME?= ${SHLIB_NAME} 2542915Sjdp.endif 2629141Speter 27119607Sru.if defined(CRUNCH_CFLAGS) 28117034SgordonCFLAGS+= ${CRUNCH_CFLAGS} 29119607Sru.endif 30117034Sgordon 31162210Simp.if ${MK_ASSERT_DEBUG} == "no" 32162210SimpCFLAGS+= -DNDEBUG 33162293SobrienNO_WERROR= 34162210Simp.endif 35162210Simp 362827Sjkh.if defined(DEBUG_FLAGS) 372827SjkhCFLAGS+= ${DEBUG_FLAGS} 38179184Sjb 39228137Sfjoe.if defined(WITH_CTF) && (${DEBUG_FLAGS:M-g} != "") 40179184SjbCTFFLAGS+= -g 412827Sjkh.endif 42179184Sjb.endif 432827Sjkh 442827Sjkh.if !defined(DEBUG_FLAGS) 451638SrgrimesSTRIP?= -s 462827Sjkh.endif 471638Srgrimes 4818529Sbde.include <bsd.libnames.mk> 4918529Sbde 501638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 5142450Sjdp# .So used for PIC object files 521638Srgrimes.SUFFIXES: 53220755Sdim.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln 541638Srgrimes 5596512Sru.if !defined(PICFLAG) 56211725Simp.if ${MACHINE_CPUARCH} == "sparc64" 5796512SruPICFLAG=-fPIC 5896512Sru.else 5996512SruPICFLAG=-fpic 6096512Sru.endif 6196512Sru.endif 6296512Sru 63126890StrhodesPO_FLAG=-pg 64126890Strhodes 65227797Sdes.c.o: 66227797Sdes ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 67228137Sfjoe ${CTFCONVERT_CMD} 68227797Sdes 691638Srgrimes.c.po: 70227797Sdes ${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 71228137Sfjoe ${CTFCONVERT_CMD} 721638Srgrimes 7342450Sjdp.c.So: 74227797Sdes ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 75228137Sfjoe ${CTFCONVERT_CMD} 761844Swollman 77227797Sdes.cc.o: 78227797Sdes ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 79227797Sdes 8036673Sdt.cc.po .C.po .cpp.po .cxx.po: 81227797Sdes ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 821844Swollman 8342450Sjdp.cc.So .C.So .cpp.So .cxx.So: 84227797Sdes ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 851844Swollman 861844Swollman.f.po: 87127027Strhodes ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 88228137Sfjoe ${CTFCONVERT_CMD} 891844Swollman 9042450Sjdp.f.So: 911844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 92228137Sfjoe ${CTFCONVERT_CMD} 931844Swollman 94117173Sru.s.po .s.So: 95117159Sru ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 96228137Sfjoe ${CTFCONVERT_CMD} 971638Srgrimes 98117173Sru.asm.po: 99217100Skib ${CC} -x assembler-with-cpp -DPROF ${PO_CFLAGS} ${ACFLAGS} \ 100217100Skib -c ${.IMPSRC} -o ${.TARGET} 101228137Sfjoe ${CTFCONVERT_CMD} 102117173Sru 103117173Sru.asm.So: 104217100Skib ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \ 105117173Sru -c ${.IMPSRC} -o ${.TARGET} 106228137Sfjoe ${CTFCONVERT_CMD} 107117173Sru 1081844Swollman.S.po: 109217100Skib ${CC} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 110228137Sfjoe ${CTFCONVERT_CMD} 1111844Swollman 11242450Sjdp.S.So: 113217100Skib ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 114228137Sfjoe ${CTFCONVERT_CMD} 1151844Swollman 11696512Sruall: objwarn 1171638Srgrimes 118168317Skan.include <bsd.symver.mk> 119156772Sdeischen 120178047Skan# Allow libraries to specify their own version map or have it 121168317Skan# automatically generated (see bsd.symver.mk above). 122169822Sru.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP) 123156772Sdeischen${SHLIB_NAME}: ${VERSION_MAP} 124156772SdeischenLDFLAGS+= -Wl,--version-script=${VERSION_MAP} 125156772Sdeischen.endif 126156772Sdeischen 12799362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 12899362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 12999362Sru.endif 13099362Sru 13196512Sru.if defined(LIB) && !empty(LIB) 13296512Sru_LIBS= lib${LIB}.a 1331638Srgrimes 13496512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 13596512Sru @${ECHO} building static ${LIB} library 13696512Sru @rm -f ${.TARGET} 137163683Sru.if !defined(NM) 138163683Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 139163683Sru.else 140163683Sru @${AR} cq ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 141163683Sru.endif 14296512Sru ${RANLIB} ${.TARGET} 14399362Sru.endif 1441638Srgrimes 14596512Sru.if !defined(INTERNALLIB) 14695114Sobrien 147156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 14896512Sru_LIBS+= lib${LIB}_p.a 14996512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 15095306Sru 15196512Srulib${LIB}_p.a: ${POBJS} 15296512Sru @${ECHO} building profiled ${LIB} library 15396512Sru @rm -f ${.TARGET} 154163683Sru.if !defined(NM) 155163683Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 156163683Sru.else 157163683Sru @${AR} cq ${.TARGET} `NM='${NM}' lorder ${POBJS} | tsort -q` ${ARADD} 158163683Sru.endif 15996512Sru ${RANLIB} ${.TARGET} 16074805Sru.endif 1611844Swollman 16299362Sru.if defined(SHLIB_NAME) || \ 16399362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 16496512SruSOBJS+= ${OBJS:.o=.So} 16599362Sru.endif 1661844Swollman 16796512Sru.if defined(SHLIB_NAME) 16896512Sru_LIBS+= ${SHLIB_NAME} 1691638Srgrimes 170212423Srpaulo.if target(beforelinking) 171212423Srpaulo${SHLIB_NAME}: ${SOBJS} beforelinking 172212423Srpaulo.else 17342915Sjdp${SHLIB_NAME}: ${SOBJS} 174212423Srpaulo.endif 17542915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 17696512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 17742915Sjdp.if defined(SHLIB_LINK) 17896512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 17942915Sjdp.endif 180163683Sru.if !defined(NM) 181195697Skan @${CC} ${LDFLAGS} ${SSP_CFLAGS} -shared -Wl,-x \ 18296512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 183163683Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 184163683Sru.else 185195697Skan @${CC} ${LDFLAGS} ${SSP_CFLAGS} -shared -Wl,-x \ 186163683Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 187163683Sru `NM='${NM}' lorder ${SOBJS} | tsort -q` ${LDADD} 18828945Speter.endif 189228137Sfjoe.if defined(WITH_CTF) 190228124Sfjoe ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS} 191163683Sru.endif 192228124Sfjoe.endif 1931844Swollman 194156813Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" 19596512Sru_LIBS+= lib${LIB}_pic.a 19696512Sru 19796512Srulib${LIB}_pic.a: ${SOBJS} 1982353Sbde @${ECHO} building special pic ${LIB} library 19996512Sru @rm -f ${.TARGET} 20096512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 20196512Sru ${RANLIB} ${.TARGET} 2023859Sbde.endif 2031844Swollman 204139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 20596512SruLINTLIB= llib-l${LIB}.ln 20696512Sru_LIBS+= ${LINTLIB} 20796512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 20896512Sru 20992491Smarkm${LINTLIB}: ${LINTOBJS} 21096512Sru @${ECHO} building lint library ${.TARGET} 21196512Sru @rm -f ${.TARGET} 21292491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 21392491Smarkm.endif 2141638Srgrimes 215144893Sharti.endif # !defined(INTERNALLIB) 21696512Sru 21796512Sruall: ${_LIBS} 21896512Sru 219156813Sru.if ${MK_MAN} != "no" 22096512Sruall: _manpages 2211638Srgrimes.endif 2221638Srgrimes 22334179Sbde_EXTRADEPEND: 22424750Sbde @TMP=_depend$$$$; \ 22542450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 22624750Sbde > $$TMP; \ 22724750Sbde mv $$TMP ${DEPENDFILE} 228139107Sru.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) 22931809Sbde.if defined(DPADD) && !empty(DPADD) 23042915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 23127910Sasami.endif 23228945Speter.endif 2331638Srgrimes 2341638Srgrimes.if !target(install) 2351638Srgrimes 236136019Sru.if defined(PRECIOUSLIB) 237139111Sru.if !defined(NO_FSCHG) 2382298SwollmanSHLINSTALLFLAGS+= -fschg 2392298Swollman.endif 240136019SruSHLINSTALLFLAGS+= -S 241136019Sru.endif 2422298Swollman 24349328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 24449328Shoek.for ie in ${INSTALLFLAGS_EDIT} 24549328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 24649328Shoek.endfor 24756971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 24849328Shoek.for ie in ${INSTALLFLAGS_EDIT} 24949328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 25049328Shoek.endfor 25149328Shoek 25299362Sru.if !defined(INTERNALLIB) 25395306Srurealinstall: _libinstall 25499343Sru.ORDER: beforeinstall _libinstall 25595306Sru_libinstall: 256172832Sru.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" 25792980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 25849328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 25996512Sru.endif 260156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 26192980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26249328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2631638Srgrimes.endif 264116144Sobrien.if defined(SHLIB_NAME) 265100872Sru ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26649328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 26742915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 26842915Sjdp.if defined(SHLIB_LINK) 269119846Sru.if ${SHLIBDIR} == ${LIBDIR} 270119846Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 271119846Sru.else 272119846Sru ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \ 273119730Speter ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 274119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME}) 275119846Sru -chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 276119846Sru rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 2771844Swollman.endif 27828945Speter.endif 279119730Speter.endif 280119846Sru.endif 281156813Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" 282100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28349328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2841844Swollman.endif 285139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 286100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28796462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 28896462Sru.endif 289144893Sharti.endif # !defined(INTERNALLIB) 29096462Sru 291141503Sphantom.include <bsd.nls.mk> 29297769Sru.include <bsd.files.mk> 29396668Sru.include <bsd.incs.mk> 29499256Sru.include <bsd.links.mk> 29596462Sru 296156813Sru.if ${MK_MAN} != "no" 29796164Srurealinstall: _maninstall 29899343Sru.ORDER: beforeinstall _maninstall 29996162Sru.endif 30096162Sru 3011638Srgrimes.endif 3021638Srgrimes 3031638Srgrimes.if !target(lint) 30495306Srulint: ${SRCS:M*.c} 305103713Smarkm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 3061638Srgrimes.endif 3071638Srgrimes 308156813Sru.if ${MK_MAN} != "no" 3091638Srgrimes.include <bsd.man.mk> 31074842Sru.endif 3111844Swollman 3121844Swollman.include <bsd.dep.mk> 31334092Sbde 31499362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 31596512Sru.if defined(LIB) && !empty(LIB) 31699362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 317124637Sru.for _S in ${SRCS:N*.[hly]} 318124637Sru${_S:R}.po: ${_S} 319124637Sru.endfor 32034092Sbde.endif 32199362Sru.if defined(SHLIB_NAME) || \ 32299362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 32399362Sru${SOBJS}: ${SRCS:M*.h} 324124637Sru.for _S in ${SRCS:N*.[hly]} 325124637Sru${_S:R}.So: ${_S} 326124637Sru.endfor 32796512Sru.endif 32899362Sru.endif 32934092Sbde 330100457Sru.if !target(clean) 331100457Sruclean: 332100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES) 333100457Sru rm -f ${CLEANFILES} 334100457Sru.endif 335100457Sru.if defined(LIB) && !empty(LIB) 336100457Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 337100457Sru.endif 338100457Sru.if !defined(INTERNALLIB) 339156854Sru.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 340100457Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 341100457Sru.endif 342100457Sru.if defined(SHLIB_NAME) || \ 343100457Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 344100457Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 345100457Sru.endif 346100457Sru.if defined(SHLIB_NAME) 347100457Sru.if defined(SHLIB_LINK) 348100457Sru rm -f ${SHLIB_LINK} 349100457Sru.endif 350100457Sru.if defined(LIB) && !empty(LIB) 351100457Sru rm -f lib${LIB}.so.* lib${LIB}.so 352100457Sru.endif 353100457Sru.endif 354100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 355100457Sru rm -f ${LINTOBJS} 356100457Sru.endif 357144893Sharti.endif # !defined(INTERNALLIB) 358100457Sru.if defined(_LIBS) && !empty(_LIBS) 359100457Sru rm -f ${_LIBS} 360100457Sru.endif 361100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 362100457Sru rm -rf ${CLEANDIRS} 363100457Sru.endif 364157054Sdes.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS) 365157054Sdes rm -f ${VERSION_MAP} 366100457Sru.endif 367157054Sdes.endif 368100457Sru 36916663Sjkh.include <bsd.obj.mk> 37076861Skris 37176861Skris.include <bsd.sys.mk> 372