bsd.lib.mk revision 117034
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 117034 2003-06-29 18:16:26Z gordon $ 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 24117034SgordonCFLAGS+= ${CRUNCH_CFLAGS} 25117034Sgordon 262827Sjkh.if defined(DEBUG_FLAGS) 272827SjkhCFLAGS+= ${DEBUG_FLAGS} 282827Sjkh.endif 292827Sjkh 302827Sjkh.if !defined(DEBUG_FLAGS) 311638SrgrimesSTRIP?= -s 322827Sjkh.endif 331638Srgrimes 3418529Sbde.include <bsd.libnames.mk> 3518529Sbde 361638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 3742450Sjdp# .So used for PIC object files 381638Srgrimes.SUFFIXES: 3995064Sobrien.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 401638Srgrimes 4196512Sru.if !defined(PICFLAG) 4296512Sru.if ${MACHINE_ARCH} == "sparc64" 4396512SruPICFLAG=-fPIC 4496512Sru.else 4596512SruPICFLAG=-fpic 4696512Sru.endif 4796512Sru.endif 4896512Sru 4992491Smarkm.c.ln: 5092491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5192553Sru touch ${.TARGET} 5292491Smarkm 5392491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln: 5492553Sru ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5592553Sru touch ${.TARGET} 5692491Smarkm 571638Srgrimes.c.o: 581844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 59116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 6038186Speter @mv ${.TARGET}.tmp ${.TARGET} 611638Srgrimes 621638Srgrimes.c.po: 6324761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 64116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 6538186Speter @mv ${.TARGET}.tmp ${.TARGET} 661638Srgrimes 6742450Sjdp.c.So: 681844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6996258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 7038186Speter @mv ${.TARGET}.tmp ${.TARGET} 711844Swollman 7236673Sdt.cc.o .C.o .cpp.o .cxx.o: 731844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 74116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 7538186Speter @mv ${.TARGET}.tmp ${.TARGET} 761844Swollman 7736673Sdt.cc.po .C.po .cpp.po .cxx.po: 7824761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 79116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 8038186Speter @mv ${.TARGET}.tmp ${.TARGET} 811844Swollman 8242450Sjdp.cc.So .C.So .cpp.So .cxx.So: 831844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8496258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 8538186Speter @mv ${.TARGET}.tmp ${.TARGET} 861844Swollman 871844Swollman.f.o: 881844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 89116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 9038186Speter @mv ${.TARGET}.tmp ${.TARGET} 911844Swollman 921844Swollman.f.po: 9324761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 94116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 9538186Speter @mv ${.TARGET}.tmp ${.TARGET} 961844Swollman 9742450Sjdp.f.So: 981844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9996258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 10038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1011844Swollman 10236054Sbde.m.o: 10336054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 104116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 10538186Speter @mv ${.TARGET}.tmp ${.TARGET} 10636054Sbde 10736054Sbde.m.po: 10836054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 109116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 11038186Speter @mv ${.TARGET}.tmp ${.TARGET} 11136054Sbde 11242450Sjdp.m.So: 11336054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11496258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11538186Speter @mv ${.TARGET}.tmp ${.TARGET} 11636054Sbde 11795251Sru.s.o .asm.o: 11897101Sru ${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \ 11917510Speter ${.IMPSRC} -o ${.TARGET} 12096258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 12138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1221638Srgrimes 12395251Sru.s.po .asm.po: 12497101Sru ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \ 12517510Speter ${.IMPSRC} -o ${.TARGET} 12696258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 12738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1281638Srgrimes 12995251Sru.s.So .asm.So: 13097101Sru ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 13195216Smarkm ${AINC} -c ${.IMPSRC} -o ${.TARGET} 132116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 13338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1341638Srgrimes 1351844Swollman.S.o: 13697101Sru ${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13796258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 13838186Speter @mv ${.TARGET}.tmp ${.TARGET} 1391844Swollman 1401844Swollman.S.po: 14197101Sru ${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14296258Sobrien @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 14338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1441844Swollman 14542450Sjdp.S.So: 14697101Sru ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \ 14795216Smarkm -o ${.TARGET} 148116855Speter @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 14938186Speter @mv ${.TARGET}.tmp ${.TARGET} 1501844Swollman 15196512Sruall: objwarn 1521638Srgrimes 15399362Sru.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 15499362SruOBJS+= ${SRCS:N*.h:R:S/$/.o/} 15599362Sru.endif 15699362Sru 15796512Sru.if defined(LIB) && !empty(LIB) 15896512Sru_LIBS= lib${LIB}.a 1591638Srgrimes 16096512Srulib${LIB}.a: ${OBJS} ${STATICOBJS} 16196512Sru @${ECHO} building static ${LIB} library 16296512Sru @rm -f ${.TARGET} 16396512Sru @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 16496512Sru ${RANLIB} ${.TARGET} 16599362Sru.endif 1661638Srgrimes 16796512Sru.if !defined(INTERNALLIB) 16895114Sobrien 16999362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 17096512Sru_LIBS+= lib${LIB}_p.a 17196512SruPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 17295306Sru 17396512Srulib${LIB}_p.a: ${POBJS} 17496512Sru @${ECHO} building profiled ${LIB} library 17596512Sru @rm -f ${.TARGET} 17696512Sru @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 17796512Sru ${RANLIB} ${.TARGET} 17874805Sru.endif 1791844Swollman 18099362Sru.if defined(SHLIB_NAME) || \ 18199362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 18296512SruSOBJS+= ${OBJS:.o=.So} 18399362Sru.endif 1841844Swollman 18596512Sru.if defined(SHLIB_NAME) 18696512Sru_LIBS+= ${SHLIB_NAME} 1871638Srgrimes 18842915Sjdp${SHLIB_NAME}: ${SOBJS} 18942915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 19096512Sru @rm -f ${.TARGET} ${SHLIB_LINK} 19142915Sjdp.if defined(SHLIB_LINK) 19296512Sru @ln -fs ${.TARGET} ${SHLIB_LINK} 19342915Sjdp.endif 19496343Sobrien @${CC} ${LDFLAGS} -shared -Wl,-x \ 19596512Sru -o ${.TARGET} -Wl,-soname,${SONAME} \ 19691011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 19728945Speter.endif 1981844Swollman 19999362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 20096512Sru_LIBS+= lib${LIB}_pic.a 20196512Sru 20296512Srulib${LIB}_pic.a: ${SOBJS} 2032353Sbde @${ECHO} building special pic ${LIB} library 20496512Sru @rm -f ${.TARGET} 20596512Sru @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 20696512Sru ${RANLIB} ${.TARGET} 2073859Sbde.endif 2081844Swollman 209103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 21096512SruLINTLIB= llib-l${LIB}.ln 21196512Sru_LIBS+= ${LINTLIB} 21296512SruLINTOBJS+= ${SRCS:M*.c:.c=.ln} 21396512Sru 21492491Smarkm${LINTLIB}: ${LINTOBJS} 21596512Sru @${ECHO} building lint library ${.TARGET} 21696512Sru @rm -f ${.TARGET} 21792491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 21892491Smarkm.endif 2191638Srgrimes 22096512Sru.endif !defined(INTERNALLIB) 22196512Sru 22296512Sruall: ${_LIBS} 22396512Sru 22496512Sru.if !defined(NOMAN) 22596512Sruall: _manpages 2261638Srgrimes.endif 2271638Srgrimes 22834179Sbde_EXTRADEPEND: 22924750Sbde @TMP=_depend$$$$; \ 23042450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 23124750Sbde > $$TMP; \ 23224750Sbde mv $$TMP ${DEPENDFILE} 23342915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 23431809Sbde.if defined(DPADD) && !empty(DPADD) 23542915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 23627910Sasami.endif 23728945Speter.endif 2381638Srgrimes 2391638Srgrimes.if !target(install) 2401638Srgrimes 24148204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2422298SwollmanSHLINSTALLFLAGS+= -fschg 2432298Swollman.endif 2442298Swollman 24549328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 24649328Shoek.for ie in ${INSTALLFLAGS_EDIT} 24749328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 24849328Shoek.endfor 24956971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 25049328Shoek.for ie in ${INSTALLFLAGS_EDIT} 25149328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 25249328Shoek.endfor 25349328Shoek 25499362Sru.if !defined(INTERNALLIB) 25595306Srurealinstall: _libinstall 25699343Sru.ORDER: beforeinstall _libinstall 25795306Sru_libinstall: 25899362Sru.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB) 25992980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26049328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 26196512Sru.endif 26299362Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 26392980Sdes ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26449328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2651638Srgrimes.endif 266116144Sobrien.if defined(SHLIB_NAME) 267100872Sru ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26849328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 26942915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 27042915Sjdp.if defined(SHLIB_LINK) 27196512Sru ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 2721844Swollman.endif 27328945Speter.endif 27499362Sru.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 275100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 27649328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2771844Swollman.endif 278103713Smarkm.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 279100872Sru ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 28096462Sru ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 28196462Sru.endif 28299362Sru.endif !defined(INTERNALLIB) 28396462Sru 28497769Sru.include <bsd.files.mk> 28596668Sru.include <bsd.incs.mk> 28699256Sru.include <bsd.links.mk> 28796462Sru 28896162Sru.if !defined(NOMAN) 28996164Srurealinstall: _maninstall 29099343Sru.ORDER: beforeinstall _maninstall 29196162Sru.endif 29296162Sru 2931638Srgrimes.endif 2941638Srgrimes 2951638Srgrimes.if !target(lint) 29695306Srulint: ${SRCS:M*.c} 297103713Smarkm ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 2981638Srgrimes.endif 2991638Srgrimes 3001844Swollman.if !defined(NOMAN) 3011638Srgrimes.include <bsd.man.mk> 30274842Sru.endif 3031844Swollman 3041844Swollman.include <bsd.dep.mk> 30534092Sbde 30699362Sru.if !exists(${.OBJDIR}/${DEPENDFILE}) 30796512Sru.if defined(LIB) && !empty(LIB) 30899362Sru${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 30934092Sbde.endif 31099362Sru.if defined(SHLIB_NAME) || \ 31199362Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 31299362Sru${SOBJS}: ${SRCS:M*.h} 31396512Sru.endif 31499362Sru.endif 31534092Sbde 316100457Sru.if !target(clean) 317100457Sruclean: 318100457Sru.if defined(CLEANFILES) && !empty(CLEANFILES) 319100457Sru rm -f ${CLEANFILES} 320100457Sru.endif 321100457Sru.if defined(LIB) && !empty(LIB) 322100457Sru rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 323100457Sru.endif 324100457Sru.if !defined(INTERNALLIB) 325100457Sru.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 326100457Sru rm -f ${POBJS} ${POBJS:S/$/.tmp/} 327100457Sru.endif 328100457Sru.if defined(SHLIB_NAME) || \ 329100457Sru defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 330100457Sru rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 331100457Sru.endif 332100457Sru.if defined(SHLIB_NAME) 333100457Sru.if defined(SHLIB_LINK) 334100457Sru rm -f ${SHLIB_LINK} 335100457Sru.endif 336100457Sru.if defined(LIB) && !empty(LIB) 337100457Sru rm -f lib${LIB}.so.* lib${LIB}.so 338100457Sru.endif 339100457Sru.endif 340100457Sru.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 341100457Sru rm -f ${LINTOBJS} 342100457Sru.endif 343100457Sru.endif !defined(INTERNALLIB) 344100457Sru.if defined(_LIBS) && !empty(_LIBS) 345100457Sru rm -f ${_LIBS} 346100457Sru.endif 347100457Sru.if defined(CLEANDIRS) && !empty(CLEANDIRS) 348100457Sru rm -rf ${CLEANDIRS} 349100457Sru.endif 350100457Sru.endif 351100457Sru 35216663Sjkh.include <bsd.obj.mk> 35376861Skris 35476861Skris.include <bsd.sys.mk> 355