bsd.lib.mk revision 124637
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 124637 2004-01-17 18:51:55Z 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 1599362Sru.if !defined(SHLIB_NAME) && defined(LIB) && defined(SHLIB_MAJOR) 1642915SjdpSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 1729141Speter.endif 18100375Sru.if defined(SHLIB_NAME) && ${SHLIB_NAME:M*.so.*} 19100332SruSHLIB_LINK?= ${SHLIB_NAME:R} 20100332Sru.endif 2142915SjdpSONAME?= ${SHLIB_NAME} 2242915Sjdp.endif 2329141Speter 24119607Sru.if defined(CRUNCH_CFLAGS) 25117034SgordonCFLAGS+= ${CRUNCH_CFLAGS} 26119607Sru.endif 27117034Sgordon 282827Sjkh.if defined(DEBUG_FLAGS) 292827SjkhCFLAGS+= ${DEBUG_FLAGS} 302827Sjkh.endif 312827Sjkh 322827Sjkh.if !defined(DEBUG_FLAGS) 331638SrgrimesSTRIP?= -s 342827Sjkh.endif 351638Srgrimes 3618529Sbde.include <bsd.libnames.mk> 3718529Sbde 381638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 3942450Sjdp# .So used for PIC object files 401638Srgrimes.SUFFIXES: 41117173Sru.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln 421638Srgrimes 4396512Sru.if !defined(PICFLAG) 4496512Sru.if ${MACHINE_ARCH} == "sparc64" 4596512SruPICFLAG=-fPIC 4696512Sru.else 4796512SruPICFLAG=-fpic 4896512Sru.endif 4996512Sru.endif 5096512Sru 511638Srgrimes.c.po: 5224761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 531638Srgrimes 5442450Sjdp.c.So: 551844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 561844Swollman 5736673Sdt.cc.po .C.po .cpp.po .cxx.po: 5824761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 591844Swollman 6042450Sjdp.cc.So .C.So .cpp.So .cxx.So: 611844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 621844Swollman 631844Swollman.f.po: 6424761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 651844Swollman 6642450Sjdp.f.So: 671844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 681844Swollman 6936054Sbde.m.po: 7036054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 7136054Sbde 7242450Sjdp.m.So: 7336054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7436054Sbde 75117173Sru.s.po .s.So: 76117159Sru ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 771638Srgrimes 78117173Sru.asm.po: 79117173Sru ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 80117173Sru 81117173Sru.asm.So: 82117173Sru ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 83117173Sru -c ${.IMPSRC} -o ${.TARGET} 84117173Sru 851844Swollman.S.po: 86117122Sru ${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 871844Swollman 8842450Sjdp.S.So: 89117122Sru ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 901844Swollman 9196512Sruall: objwarn 921638Srgrimes 9399362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 9499362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 9599362Sru.endif 9699362Sru 9796512Sru.if defined(LIB) && !empty(LIB) 9896512Sru_LIBS= lib${LIB}.a 991638Srgrimes 10096512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 10196512Sru @${ECHO} building static ${LIB} library 10296512Sru @rm -f ${.TARGET} 10396512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 10496512Sru ${RANLIB} ${.TARGET} 10599362Sru.endif 1061638Srgrimes 10796512Sru.if !defined(INTERNALLIB) 10895114Sobrien 10999362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 11096512Sru_LIBS+= lib${LIB}_p.a 11196512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 11295306Sru 11396512Srulib${LIB}_p.a: ${POBJS} 11496512Sru @${ECHO} building profiled ${LIB} library 11596512Sru @rm -f ${.TARGET} 11696512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 11796512Sru ${RANLIB} ${.TARGET} 11874805Sru.endif 1191844Swollman 12099362Sru.if defined(SHLIB_NAME) || \ 12199362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 12296512SruSOBJS+= ${OBJS:.o=.So} 12399362Sru.endif 1241844Swollman 12596512Sru.if defined(SHLIB_NAME) 12696512Sru_LIBS+= ${SHLIB_NAME} 1271638Srgrimes 12842915Sjdp${SHLIB_NAME}: ${SOBJS} 12942915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 13096512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 13142915Sjdp.if defined(SHLIB_LINK) 13296512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 13342915Sjdp.endif 13496343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 13596512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 13691011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 13728945Speter.endif 1381844Swollman 13999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 14096512Sru_LIBS+= lib${LIB}_pic.a 14196512Sru 14296512Srulib${LIB}_pic.a: ${SOBJS} 1432353Sbde @${ECHO} building special pic ${LIB} library 14496512Sru @rm -f ${.TARGET} 14596512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 14696512Sru ${RANLIB} ${.TARGET} 1473859Sbde.endif 1481844Swollman 149103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 15096512SruLINTLIB= llib-l${LIB}.ln 15196512Sru_LIBS+= ${LINTLIB} 15296512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 15396512Sru 15492491Smarkm${LINTLIB}: ${LINTOBJS} 15596512Sru @${ECHO} building lint library ${.TARGET} 15696512Sru @rm -f ${.TARGET} 15792491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 15892491Smarkm.endif 1591638Srgrimes 16096512Sru.endif !defined(INTERNALLIB) 16196512Sru 16296512Sruall: ${_LIBS} 16396512Sru 16496512Sru.if !defined(NOMAN) 16596512Sruall: _manpages 1661638Srgrimes.endif 1671638Srgrimes 16834179Sbde_EXTRADEPEND: 16924750Sbde @TMP=_depend$$$$; \ 17042450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 17124750Sbde > $$TMP; \ 17224750Sbde mv $$TMP ${DEPENDFILE} 17342915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 17431809Sbde.if defined(DPADD) && !empty(DPADD) 17542915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 17627910Sasami.endif 17728945Speter.endif 1781638Srgrimes 1791638Srgrimes.if !target(install) 1801638Srgrimes 18148204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 1822298SwollmanSHLINSTALLFLAGS+= -fschg 1832298Swollman.endif 1842298Swollman 18549328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 18649328Shoek.for ie in ${INSTALLFLAGS_EDIT} 18749328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 18849328Shoek.endfor 18956971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 19049328Shoek.for ie in ${INSTALLFLAGS_EDIT} 19149328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 19249328Shoek.endfor 19349328Shoek 19499362Sru.if !defined(INTERNALLIB) 19595306Srurealinstall: _libinstall 19699343Sru.ORDER: beforeinstall _libinstall 19795306Sru_libinstall: 19899362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB) 19992980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 20049328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 20196512Sru.endif 20299362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 20392980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 20449328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2051638Srgrimes.endif 206116144Sobrien.if defined(SHLIB_NAME) 207100872Sru ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 20849328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 20942915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 21042915Sjdp.if defined(SHLIB_LINK) 211119846Sru.if ${SHLIBDIR} == ${LIBDIR} 212119846Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 213119846Sru.else 214119846Sru ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \ 215119730Speter ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 216119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME}) 217119846Sru -chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 218119846Sru rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 2191844Swollman.endif 22028945Speter.endif 221119730Speter.endif 222119846Sru.endif 22399362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 224100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 22549328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2261844Swollman.endif 227103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 228100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 22996462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 23096462Sru.endif 23199362Sru.endif !defined(INTERNALLIB) 23296462Sru 23397769Sru.include <bsd.files.mk> 23496668Sru.include <bsd.incs.mk> 23599256Sru.include <bsd.links.mk> 23696462Sru 23796162Sru.if !defined(NOMAN) 23896164Srurealinstall: _maninstall 23999343Sru.ORDER: beforeinstall _maninstall 24096162Sru.endif 24196162Sru 2421638Srgrimes.endif 2431638Srgrimes 2441638Srgrimes.if !target(lint) 24595306Srulint: ${SRCS:M*.c} 246103713Smarkm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 2471638Srgrimes.endif 2481638Srgrimes 2491844Swollman.if !defined(NOMAN) 2501638Srgrimes.include <bsd.man.mk> 25174842Sru.endif 2521844Swollman 2531844Swollman.include <bsd.dep.mk> 25434092Sbde 25599362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 25696512Sru.if defined(LIB) && !empty(LIB) 25799362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 258124637Sru.for _S in ${SRCS:N*.[hly]} 259124637Sru${_S:R}.po: ${_S} 260124637Sru.endfor 26134092Sbde.endif 26299362Sru.if defined(SHLIB_NAME) || \ 26399362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 26499362Sru${SOBJS}: ${SRCS:M*.h} 265124637Sru.for _S in ${SRCS:N*.[hly]} 266124637Sru${_S:R}.So: ${_S} 267124637Sru.endfor 26896512Sru.endif 26999362Sru.endif 27034092Sbde 271100457Sru.if !target(clean) 272100457Sruclean: 273100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES) 274100457Sru rm -f ${CLEANFILES} 275100457Sru.endif 276100457Sru.if defined(LIB) && !empty(LIB) 277100457Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 278100457Sru.endif 279100457Sru.if !defined(INTERNALLIB) 280100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 281100457Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 282100457Sru.endif 283100457Sru.if defined(SHLIB_NAME) || \ 284100457Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 285100457Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 286100457Sru.endif 287100457Sru.if defined(SHLIB_NAME) 288100457Sru.if defined(SHLIB_LINK) 289100457Sru rm -f ${SHLIB_LINK} 290100457Sru.endif 291100457Sru.if defined(LIB) && !empty(LIB) 292100457Sru rm -f lib${LIB}.so.* lib${LIB}.so 293100457Sru.endif 294100457Sru.endif 295100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 296100457Sru rm -f ${LINTOBJS} 297100457Sru.endif 298100457Sru.endif !defined(INTERNALLIB) 299100457Sru.if defined(_LIBS) && !empty(_LIBS) 300100457Sru rm -f ${_LIBS} 301100457Sru.endif 302100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 303100457Sru rm -rf ${CLEANDIRS} 304100457Sru.endif 305100457Sru.endif 306100457Sru 30716663Sjkh.include <bsd.obj.mk> 30876861Skris 30976861Skris.include <bsd.sys.mk> 310