bsd.lib.mk revision 116144
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 116144 2003-06-10 04:47:49Z obrien $ 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 242827Sjkh.if defined(DEBUG_FLAGS) 252827SjkhCFLAGS+= ${DEBUG_FLAGS} 262827Sjkh.endif 272827Sjkh 282827Sjkh.if !defined(DEBUG_FLAGS) 291638SrgrimesSTRIP?= -s 302827Sjkh.endif 311638Srgrimes 3218529Sbde.include <bsd.libnames.mk> 3318529Sbde 341638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 3542450Sjdp# .So used for PIC object files 361638Srgrimes.SUFFIXES: 3795064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 381638Srgrimes 3996512Sru.if !defined(PICFLAG) 4096512Sru.if ${MACHINE_ARCH} == "sparc64" 4196512SruPICFLAG=-fPIC 4296512Sru.else 4396512SruPICFLAG=-fpic 4496512Sru.endif 4596512Sru.endif 4696512Sru 4792491Smarkm.c.ln: 4892491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 4992553Sru touch ${.TARGET} 5092491Smarkm 5192491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln: 5292553Sru ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5392553Sru touch ${.TARGET} 5492491Smarkm 551638Srgrimes.c.o: 561844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 5738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 5838186Speter @mv ${.TARGET}.tmp ${.TARGET} 591638Srgrimes 601638Srgrimes.c.po: 6124761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6238186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 6338186Speter @mv ${.TARGET}.tmp ${.TARGET} 641638Srgrimes 6542450Sjdp.c.So: 661844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6796258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 6838186Speter @mv ${.TARGET}.tmp ${.TARGET} 691844Swollman 7036673Sdt.cc.o .C.o .cpp.o .cxx.o: 711844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7338186Speter @mv ${.TARGET}.tmp ${.TARGET} 741844Swollman 7536673Sdt.cc.po .C.po .cpp.po .cxx.po: 7624761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7738186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 7838186Speter @mv ${.TARGET}.tmp ${.TARGET} 791844Swollman 8042450Sjdp.cc.So .C.So .cpp.So .cxx.So: 811844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8296258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 8338186Speter @mv ${.TARGET}.tmp ${.TARGET} 841844Swollman 851844Swollman.f.o: 861844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 8738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8838186Speter @mv ${.TARGET}.tmp ${.TARGET} 891844Swollman 901844Swollman.f.po: 9124761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9238186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 9338186Speter @mv ${.TARGET}.tmp ${.TARGET} 941844Swollman 9542450Sjdp.f.So: 961844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9796258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 9838186Speter @mv ${.TARGET}.tmp ${.TARGET} 991844Swollman 10036054Sbde.m.o: 10136054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10338186Speter @mv ${.TARGET}.tmp ${.TARGET} 10436054Sbde 10536054Sbde.m.po: 10636054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 10738186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 10838186Speter @mv ${.TARGET}.tmp ${.TARGET} 10936054Sbde 11042450Sjdp.m.So: 11136054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11296258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11338186Speter @mv ${.TARGET}.tmp ${.TARGET} 11436054Sbde 11595251Sru.s.o .asm.o: 11697101Sru ${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \ 11717510Speter ${.IMPSRC} -o ${.TARGET} 11896258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11938186Speter @mv ${.TARGET}.tmp ${.TARGET} 1201638Srgrimes 12195251Sru.s.po .asm.po: 12297101Sru ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \ 12317510Speter ${.IMPSRC} -o ${.TARGET} 12496258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 12538186Speter @mv ${.TARGET}.tmp ${.TARGET} 1261638Srgrimes 12795251Sru.s.So .asm.So: 12897101Sru ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 12995216Smarkm ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13038186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1321638Srgrimes 1331844Swollman.S.o: 13497101Sru ${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13596258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 13638186Speter @mv ${.TARGET}.tmp ${.TARGET} 1371844Swollman 1381844Swollman.S.po: 13997101Sru ${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14096258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 14138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1421844Swollman 14342450Sjdp.S.So: 14497101Sru ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \ 14595216Smarkm -o ${.TARGET} 14638186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1481844Swollman 14996512Sruall: objwarn 1501638Srgrimes 15199362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 15299362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 15399362Sru.endif 15499362Sru 15596512Sru.if defined(LIB) && !empty(LIB) 15696512Sru_LIBS= lib${LIB}.a 1571638Srgrimes 15896512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 15996512Sru @${ECHO} building static ${LIB} library 16096512Sru @rm -f ${.TARGET} 16196512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 16296512Sru ${RANLIB} ${.TARGET} 16399362Sru.endif 1641638Srgrimes 16596512Sru.if !defined(INTERNALLIB) 16695114Sobrien 16799362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 16896512Sru_LIBS+= lib${LIB}_p.a 16996512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 17095306Sru 17196512Srulib${LIB}_p.a: ${POBJS} 17296512Sru @${ECHO} building profiled ${LIB} library 17396512Sru @rm -f ${.TARGET} 17496512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 17596512Sru ${RANLIB} ${.TARGET} 17674805Sru.endif 1771844Swollman 17899362Sru.if defined(SHLIB_NAME) || \ 17999362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 18096512SruSOBJS+= ${OBJS:.o=.So} 18199362Sru.endif 1821844Swollman 18396512Sru.if defined(SHLIB_NAME) 18496512Sru_LIBS+= ${SHLIB_NAME} 1851638Srgrimes 18642915Sjdp${SHLIB_NAME}: ${SOBJS} 18742915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 18896512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 18942915Sjdp.if defined(SHLIB_LINK) 19096512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 19142915Sjdp.endif 19296343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 19396512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 19491011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 19528945Speter.endif 1961844Swollman 19799362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 19896512Sru_LIBS+= lib${LIB}_pic.a 19996512Sru 20096512Srulib${LIB}_pic.a: ${SOBJS} 2012353Sbde @${ECHO} building special pic ${LIB} library 20296512Sru @rm -f ${.TARGET} 20396512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 20496512Sru ${RANLIB} ${.TARGET} 2053859Sbde.endif 2061844Swollman 207103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 20896512SruLINTLIB= llib-l${LIB}.ln 20996512Sru_LIBS+= ${LINTLIB} 21096512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 21196512Sru 21292491Smarkm${LINTLIB}: ${LINTOBJS} 21396512Sru @${ECHO} building lint library ${.TARGET} 21496512Sru @rm -f ${.TARGET} 21592491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 21692491Smarkm.endif 2171638Srgrimes 21896512Sru.endif !defined(INTERNALLIB) 21996512Sru 22096512Sruall: ${_LIBS} 22196512Sru 22296512Sru.if !defined(NOMAN) 22396512Sruall: _manpages 2241638Srgrimes.endif 2251638Srgrimes 22634179Sbde_EXTRADEPEND: 22724750Sbde @TMP=_depend$$$$; \ 22842450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 22924750Sbde > $$TMP; \ 23024750Sbde mv $$TMP ${DEPENDFILE} 23142915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 23231809Sbde.if defined(DPADD) && !empty(DPADD) 23342915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 23427910Sasami.endif 23528945Speter.endif 2361638Srgrimes 2371638Srgrimes.if !target(install) 2381638Srgrimes 23948204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2402298SwollmanSHLINSTALLFLAGS+= -fschg 2412298Swollman.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: 25699362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB) 25792980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 25849328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 25996512Sru.endif 26099362Sru.if !defined(NOPROFILE) && 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) 26996512Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 2701844Swollman.endif 27128945Speter.endif 27299362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 273100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 27449328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2751844Swollman.endif 276103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 277100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 27896462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 27996462Sru.endif 28099362Sru.endif !defined(INTERNALLIB) 28196462Sru 28297769Sru.include <bsd.files.mk> 28396668Sru.include <bsd.incs.mk> 28499256Sru.include <bsd.links.mk> 28596462Sru 28696162Sru.if !defined(NOMAN) 28796164Srurealinstall: _maninstall 28899343Sru.ORDER: beforeinstall _maninstall 28996162Sru.endif 29096162Sru 2911638Srgrimes.endif 2921638Srgrimes 2931638Srgrimes.if !target(lint) 29495306Srulint: ${SRCS:M*.c} 295103713Smarkm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 2961638Srgrimes.endif 2971638Srgrimes 2981844Swollman.if !defined(NOMAN) 2991638Srgrimes.include <bsd.man.mk> 30074842Sru.endif 3011844Swollman 3021844Swollman.include <bsd.dep.mk> 30334092Sbde 30499362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 30596512Sru.if defined(LIB) && !empty(LIB) 30699362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 30734092Sbde.endif 30899362Sru.if defined(SHLIB_NAME) || \ 30999362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 31099362Sru${SOBJS}: ${SRCS:M*.h} 31196512Sru.endif 31299362Sru.endif 31334092Sbde 314100457Sru.if !target(clean) 315100457Sruclean: 316100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES) 317100457Sru rm -f ${CLEANFILES} 318100457Sru.endif 319100457Sru.if defined(LIB) && !empty(LIB) 320100457Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 321100457Sru.endif 322100457Sru.if !defined(INTERNALLIB) 323100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 324100457Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 325100457Sru.endif 326100457Sru.if defined(SHLIB_NAME) || \ 327100457Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 328100457Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 329100457Sru.endif 330100457Sru.if defined(SHLIB_NAME) 331100457Sru.if defined(SHLIB_LINK) 332100457Sru rm -f ${SHLIB_LINK} 333100457Sru.endif 334100457Sru.if defined(LIB) && !empty(LIB) 335100457Sru rm -f lib${LIB}.so.* lib${LIB}.so 336100457Sru.endif 337100457Sru.endif 338100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 339100457Sru rm -f ${LINTOBJS} 340100457Sru.endif 341100457Sru.endif !defined(INTERNALLIB) 342100457Sru.if defined(_LIBS) && !empty(_LIBS) 343100457Sru rm -f ${_LIBS} 344100457Sru.endif 345100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 346100457Sru rm -rf ${CLEANDIRS} 347100457Sru.endif 348100457Sru.endif 349100457Sru 35016663Sjkh.include <bsd.obj.mk> 35176861Skris 35276861Skris.include <bsd.sys.mk> 353