bsd.lib.mk revision 141503
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 141503 2005-02-08 10:37:34Z phantom $ 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 312827Sjkh.if defined(DEBUG_FLAGS) 322827SjkhCFLAGS+= ${DEBUG_FLAGS} 332827Sjkh.endif 342827Sjkh 352827Sjkh.if !defined(DEBUG_FLAGS) 361638SrgrimesSTRIP?= -s 372827Sjkh.endif 381638Srgrimes 3918529Sbde.include <bsd.libnames.mk> 4018529Sbde 411638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 4242450Sjdp# .So used for PIC object files 431638Srgrimes.SUFFIXES: 44117173Sru.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln 451638Srgrimes 4696512Sru.if !defined(PICFLAG) 4796512Sru.if ${MACHINE_ARCH} == "sparc64" 4896512SruPICFLAG=-fPIC 4996512Sru.else 5096512SruPICFLAG=-fpic 5196512Sru.endif 5296512Sru.endif 5396512Sru 54126890Strhodes.if ${CC} == "icc" 55126890StrhodesPO_FLAG=-p 56126890Strhodes.else 57126890StrhodesPO_FLAG=-pg 58126890Strhodes.endif 59126890Strhodes 601638Srgrimes.c.po: 61126890Strhodes ${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 621638Srgrimes 6342450Sjdp.c.So: 641844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 651844Swollman 6636673Sdt.cc.po .C.po .cpp.po .cxx.po: 67126890Strhodes ${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 681844Swollman 6942450Sjdp.cc.So .C.So .cpp.So .cxx.So: 701844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 711844Swollman 721844Swollman.f.po: 73127027Strhodes ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 741844Swollman 7542450Sjdp.f.So: 761844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 771844Swollman 7836054Sbde.m.po: 7936054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 8036054Sbde 8142450Sjdp.m.So: 8236054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8336054Sbde 84117173Sru.s.po .s.So: 85117159Sru ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 861638Srgrimes 87117173Sru.asm.po: 88117173Sru ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 89117173Sru 90117173Sru.asm.So: 91117173Sru ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 92117173Sru -c ${.IMPSRC} -o ${.TARGET} 93117173Sru 941844Swollman.S.po: 95117122Sru ${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 961844Swollman 9742450Sjdp.S.So: 98117122Sru ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 991844Swollman 10096512Sruall: objwarn 1011638Srgrimes 10299362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 10399362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 10499362Sru.endif 10599362Sru 10696512Sru.if defined(LIB) && !empty(LIB) 10796512Sru_LIBS= lib${LIB}.a 1081638Srgrimes 10996512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 11096512Sru @${ECHO} building static ${LIB} library 11196512Sru @rm -f ${.TARGET} 11296512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 11396512Sru ${RANLIB} ${.TARGET} 11499362Sru.endif 1151638Srgrimes 11696512Sru.if !defined(INTERNALLIB) 11795114Sobrien 118139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB) 11996512Sru_LIBS+= lib${LIB}_p.a 12096512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 12195306Sru 12296512Srulib${LIB}_p.a: ${POBJS} 12396512Sru @${ECHO} building profiled ${LIB} library 12496512Sru @rm -f ${.TARGET} 12596512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 12696512Sru ${RANLIB} ${.TARGET} 12774805Sru.endif 1281844Swollman 12999362Sru.if defined(SHLIB_NAME) || \ 13099362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 13196512SruSOBJS+= ${OBJS:.o=.So} 13299362Sru.endif 1331844Swollman 13496512Sru.if defined(SHLIB_NAME) 13596512Sru_LIBS+= ${SHLIB_NAME} 1361638Srgrimes 13742915Sjdp${SHLIB_NAME}: ${SOBJS} 13842915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 13996512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 14042915Sjdp.if defined(SHLIB_LINK) 14196512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 14242915Sjdp.endif 14396343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 14496512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 14591011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 14628945Speter.endif 1471844Swollman 14899362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 14996512Sru_LIBS+= lib${LIB}_pic.a 15096512Sru 15196512Srulib${LIB}_pic.a: ${SOBJS} 1522353Sbde @${ECHO} building special pic ${LIB} library 15396512Sru @rm -f ${.TARGET} 15496512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 15596512Sru ${RANLIB} ${.TARGET} 1563859Sbde.endif 1571844Swollman 158139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 15996512SruLINTLIB= llib-l${LIB}.ln 16096512Sru_LIBS+= ${LINTLIB} 16196512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 16296512Sru 16392491Smarkm${LINTLIB}: ${LINTOBJS} 16496512Sru @${ECHO} building lint library ${.TARGET} 16596512Sru @rm -f ${.TARGET} 16692491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 16792491Smarkm.endif 1681638Srgrimes 169126938Strhodes.endif !defined(INTERNALLIB) 17096512Sru 17196512Sruall: ${_LIBS} 17296512Sru 173139103Sru.if !defined(NO_MAN) 17496512Sruall: _manpages 1751638Srgrimes.endif 1761638Srgrimes 17734179Sbde_EXTRADEPEND: 17824750Sbde @TMP=_depend$$$$; \ 17942450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 18024750Sbde > $$TMP; \ 18124750Sbde mv $$TMP ${DEPENDFILE} 182139107Sru.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) 18331809Sbde.if defined(DPADD) && !empty(DPADD) 18442915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 18527910Sasami.endif 18628945Speter.endif 1871638Srgrimes 1881638Srgrimes.if !target(install) 1891638Srgrimes 190136019Sru.if defined(PRECIOUSLIB) 191139111Sru.if !defined(NO_FSCHG) 1922298SwollmanSHLINSTALLFLAGS+= -fschg 1932298Swollman.endif 194136019SruSHLINSTALLFLAGS+= -S 195136019Sru.endif 1962298Swollman 19749328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 19849328Shoek.for ie in ${INSTALLFLAGS_EDIT} 19949328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 20049328Shoek.endfor 20156971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 20249328Shoek.for ie in ${INSTALLFLAGS_EDIT} 20349328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 20449328Shoek.endfor 20549328Shoek 20699362Sru.if !defined(INTERNALLIB) 20795306Srurealinstall: _libinstall 20899343Sru.ORDER: beforeinstall _libinstall 20995306Sru_libinstall: 210139110Sru.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB) 21192980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 21249328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 21396512Sru.endif 214139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB) 21592980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 21649328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2171638Srgrimes.endif 218116144Sobrien.if defined(SHLIB_NAME) 219100872Sru ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 22049328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 22142915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 22242915Sjdp.if defined(SHLIB_LINK) 223119846Sru.if ${SHLIBDIR} == ${LIBDIR} 224119846Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 225119846Sru.else 226119846Sru ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \ 227119730Speter ${DESTDIR}${LIBDIR}/${SHLIB_LINK} 228119846Sru.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME}) 229119846Sru -chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 230119846Sru rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME} 2311844Swollman.endif 23228945Speter.endif 233119730Speter.endif 234119846Sru.endif 23599362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 236100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 23749328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2381844Swollman.endif 239139106Sru.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 240100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 24196462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 24296462Sru.endif 24399362Sru.endif !defined(INTERNALLIB) 24496462Sru 245141503Sphantom.include <bsd.nls.mk> 24697769Sru.include <bsd.files.mk> 24796668Sru.include <bsd.incs.mk> 24899256Sru.include <bsd.links.mk> 24996462Sru 250139103Sru.if !defined(NO_MAN) 25196164Srurealinstall: _maninstall 25299343Sru.ORDER: beforeinstall _maninstall 25396162Sru.endif 25496162Sru 2551638Srgrimes.endif 2561638Srgrimes 2571638Srgrimes.if !target(lint) 25895306Srulint: ${SRCS:M*.c} 259103713Smarkm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 2601638Srgrimes.endif 2611638Srgrimes 262139103Sru.if !defined(NO_MAN) 2631638Srgrimes.include <bsd.man.mk> 26474842Sru.endif 2651844Swollman 2661844Swollman.include <bsd.dep.mk> 26734092Sbde 26899362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 26996512Sru.if defined(LIB) && !empty(LIB) 27099362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 271124637Sru.for _S in ${SRCS:N*.[hly]} 272124637Sru${_S:R}.po: ${_S} 273124637Sru.endfor 27434092Sbde.endif 27599362Sru.if defined(SHLIB_NAME) || \ 27699362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 27799362Sru${SOBJS}: ${SRCS:M*.h} 278124637Sru.for _S in ${SRCS:N*.[hly]} 279124637Sru${_S:R}.So: ${_S} 280124637Sru.endfor 28196512Sru.endif 28299362Sru.endif 28334092Sbde 284100457Sru.if !target(clean) 285100457Sruclean: 286100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES) 287100457Sru rm -f ${CLEANFILES} 288100457Sru.endif 289100457Sru.if defined(LIB) && !empty(LIB) 290100457Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 291100457Sru.endif 292100457Sru.if !defined(INTERNALLIB) 293139106Sru.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB) 294100457Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 295100457Sru.endif 296100457Sru.if defined(SHLIB_NAME) || \ 297100457Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 298100457Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 299100457Sru.endif 300100457Sru.if defined(SHLIB_NAME) 301100457Sru.if defined(SHLIB_LINK) 302100457Sru rm -f ${SHLIB_LINK} 303100457Sru.endif 304100457Sru.if defined(LIB) && !empty(LIB) 305100457Sru rm -f lib${LIB}.so.* lib${LIB}.so 306100457Sru.endif 307100457Sru.endif 308100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 309100457Sru rm -f ${LINTOBJS} 310100457Sru.endif 311100457Sru.endif !defined(INTERNALLIB) 312100457Sru.if defined(_LIBS) && !empty(_LIBS) 313100457Sru rm -f ${_LIBS} 314100457Sru.endif 315100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 316100457Sru rm -rf ${CLEANDIRS} 317100457Sru.endif 318100457Sru.endif 319100457Sru 32016663Sjkh.include <bsd.obj.mk> 32176861Skris 32276861Skris.include <bsd.sys.mk> 323