bsd.lib.mk revision 92491
11844Swollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 250476Speter# $FreeBSD: head/share/mk/bsd.lib.mk 92491 2002-03-17 10:05:57Z markm $ 31844Swollman# 41638Srgrimes 538183Speter.if !target(__initialized__) 638183Speter__initialized__: 71638Srgrimes.if exists(${.CURDIR}/../Makefile.inc) 81638Srgrimes.include "${.CURDIR}/../Makefile.inc" 91638Srgrimes.endif 1038183Speter.endif 111638Srgrimes 121844Swollman.if exists(${.CURDIR}/shlib_version) 131844SwollmanSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 1438655Sjb.if ${OBJFORMAT} == aout 151844SwollmanSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 161844Swollman.endif 1728945Speter.endif 181844Swollman 1942915Sjdp# Set up the variables controlling shared libraries. After this section, 2042915Sjdp# SHLIB_NAME will be defined only if we are to create a shared library. 2142915Sjdp# SHLIB_LINK will be defined only if we are to create a link to it. 2242915Sjdp# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 2342915Sjdp.if defined(NOPIC) 2442915Sjdp.undef SHLIB_NAME 2542915Sjdp.undef INSTALL_PIC_ARCHIVE 2642915Sjdp.else 2742915Sjdp.if ${OBJFORMAT} == elf 2842915Sjdp.if !defined(SHLIB_NAME) && defined(SHLIB_MAJOR) 2942915SjdpSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 3042915SjdpSHLIB_LINK?= lib${LIB}.so 3129141Speter.endif 3242915SjdpSONAME?= ${SHLIB_NAME} 3342915Sjdp.else 3442915Sjdp.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 3542915SjdpSHLIB_NAME?= lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 3642915Sjdp.endif 3742915Sjdp.endif 3842915Sjdp.endif 3929141Speter 402827Sjkh.if defined(DEBUG_FLAGS) 412827SjkhCFLAGS+= ${DEBUG_FLAGS} 422827Sjkh.endif 432827Sjkh 442827Sjkh.if !defined(DEBUG_FLAGS) 451638SrgrimesSTRIP?= -s 462827Sjkh.endif 471638Srgrimes 4843055Sjdp.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES) 4918529Sbde.include <bsd.libnames.mk> 5031809Sbde.endif 5118529Sbde 521638Srgrimes.MAIN: all 531638Srgrimes 541638Srgrimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 5542450Sjdp# .So used for PIC object files 561638Srgrimes.SUFFIXES: 5792491Smarkm.SUFFIXES: .out .o .po .So .S .s .c .cc .cpp .cxx .m .C .f .y .l .ln 581638Srgrimes 5992491Smarkm.c.ln: 6092491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 6192491Smarkm touch ${.TARGET} 6292491Smarkm 6392491Smarkm.cc.ln .C.ln .cpp.ln .cxx.ln: 6492491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 6592491Smarkm touch ${.TARGET} 6692491Smarkm 671638Srgrimes.c.o: 681844Swollman ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6938186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7038186Speter @mv ${.TARGET}.tmp ${.TARGET} 711638Srgrimes 721638Srgrimes.c.po: 7324761Sjdp ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7438186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 7538186Speter @mv ${.TARGET}.tmp ${.TARGET} 761638Srgrimes 7742450Sjdp.c.So: 781844Swollman ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7938186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8038186Speter @mv ${.TARGET}.tmp ${.TARGET} 811844Swollman 8236673Sdt.cc.o .C.o .cpp.o .cxx.o: 831844Swollman ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8538186Speter @mv ${.TARGET}.tmp ${.TARGET} 861844Swollman 8736673Sdt.cc.po .C.po .cpp.po .cxx.po: 8824761Sjdp ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 8938186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 9038186Speter @mv ${.TARGET}.tmp ${.TARGET} 911844Swollman 9242450Sjdp.cc.So .C.So .cpp.So .cxx.So: 931844Swollman ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 9538186Speter @mv ${.TARGET}.tmp ${.TARGET} 961844Swollman 971844Swollman.f.o: 981844Swollman ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9938186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1011844Swollman 1021844Swollman.f.po: 10324761Sjdp ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10438186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 10538186Speter @mv ${.TARGET}.tmp ${.TARGET} 1061844Swollman 10742450Sjdp.f.So: 1081844Swollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 10938186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 11038186Speter @mv ${.TARGET}.tmp ${.TARGET} 1111844Swollman 11236054Sbde.m.o: 11336054Sbde ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 11538186Speter @mv ${.TARGET}.tmp ${.TARGET} 11636054Sbde 11736054Sbde.m.po: 11836054Sbde ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 11938186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 12038186Speter @mv ${.TARGET}.tmp ${.TARGET} 12136054Sbde 12242450Sjdp.m.So: 12336054Sbde ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 12438186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 12538186Speter @mv ${.TARGET}.tmp ${.TARGET} 12636054Sbde 1271638Srgrimes.s.o: 12826715Sasami ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 12917510Speter ${.IMPSRC} -o ${.TARGET} 13038186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13138186Speter @mv ${.TARGET}.tmp ${.TARGET} 1321638Srgrimes 1331638Srgrimes.s.po: 13426715Sasami ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 13517510Speter ${.IMPSRC} -o ${.TARGET} 13638186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 13738186Speter @mv ${.TARGET}.tmp ${.TARGET} 1381638Srgrimes 13942450Sjdp.s.So: 14092129Sobrien ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ 14117510Speter ${.IMPSRC} -o ${.TARGET} 14238186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1441638Srgrimes 1451844Swollman.S.o: 14626715Sasami ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14838186Speter @mv ${.TARGET}.tmp ${.TARGET} 1491844Swollman 1501844Swollman.S.po: 15126715Sasami ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 15238186Speter @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 15338186Speter @mv ${.TARGET}.tmp ${.TARGET} 1541844Swollman 15542450Sjdp.S.So: 15692129Sobrien ${CC} ${PICFLAG} -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 15738186Speter @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 15838186Speter @mv ${.TARGET}.tmp ${.TARGET} 1591844Swollman 1602870Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 1612868Swollman.if !defined(NOPROFILE) && !defined(INTERNALLIB) 1621638Srgrimes_LIBS=lib${LIB}.a lib${LIB}_p.a 1631638Srgrimes.else 1641638Srgrimes_LIBS=lib${LIB}.a 1651638Srgrimes.endif 1662870Swollman.endif 1671638Srgrimes 16892491SmarkmLINTOBJS+= ${SRCS:M*.c:C/\..+$/.ln/} 16992491Smarkm 17092491Smarkm.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && (${LINTOBJS} != "") 17192491SmarkmLINTLIB=llib-l${LIB}.ln 17292491Smarkm.else 17392491SmarkmLINTLIB= 17492491Smarkm.endif 17592491Smarkm 17642915Sjdp.if defined(SHLIB_NAME) 17742915Sjdp_LIBS+=${SHLIB_NAME} 1781638Srgrimes.endif 1791844Swollman.if defined(INSTALL_PIC_ARCHIVE) 1801844Swollman_LIBS+=lib${LIB}_pic.a 1811844Swollman.endif 1821638Srgrimes 1831844Swollman.if !defined(PICFLAG) 18492128Sobrien.if ${MACHINE_ARCH} == "sparc64" 18592128SobrienPICFLAG=-fPIC 18692128Sobrien.else 1871844SwollmanPICFLAG=-fpic 1881844Swollman.endif 18992128Sobrien.endif 1901638Srgrimes 19174805Sru.if !defined(NOMAN) 19292491Smarkmall: objwarn ${_LIBS} all-man _SUBDIR ${LINTLIB} 19374805Sru.else 19492491Smarkmall: objwarn ${_LIBS} _SUBDIR ${LINTLIB} 19574805Sru.endif 1961844Swollman 1971844SwollmanOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 1981844Swollman 19942915Sjdplib${LIB}.a:: ${OBJS} ${STATICOBJS} 20066534Speter @${ECHO} building static ${LIB} library 2011638Srgrimes @rm -f lib${LIB}.a 20242915Sjdp @${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 2031844Swollman ${RANLIB} lib${LIB}.a 2041638Srgrimes 20542915SjdpPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 2063859Sbde.if !defined(NOPROFILE) 2071638Srgrimeslib${LIB}_p.a:: ${POBJS} 2082353Sbde @${ECHO} building profiled ${LIB} library 2091638Srgrimes @rm -f lib${LIB}_p.a 21017400Sjkh @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 2111844Swollman ${RANLIB} lib${LIB}_p.a 2123859Sbde.endif 2131638Srgrimes 21442450SjdpSOBJS+= ${OBJS:.o=.So} 21528945Speter 21642915Sjdp.if defined(SHLIB_NAME) 21742915Sjdp${SHLIB_NAME}: ${SOBJS} 21842915Sjdp @${ECHO} building shared library ${SHLIB_NAME} 21942915Sjdp @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 22042915Sjdp.if defined(SHLIB_LINK) 22142915Sjdp @ln -sf ${SHLIB_NAME} ${SHLIB_LINK} 22242915Sjdp.endif 22338655Sjb.if ${OBJFORMAT} == aout 22491011Sru @${CC} -shared -Wl,-x,-assert,pure-text \ 22542915Sjdp -o ${SHLIB_NAME} \ 22691011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 22728945Speter.else 22891011Sru @${CC} -shared -Wl,-x \ 22942915Sjdp -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \ 23091011Sru `lorder ${SOBJS} | tsort -q` ${LDADD} 23128945Speter.endif 23242915Sjdp.endif 2331844Swollman 23442915Sjdp.if defined(INSTALL_PIC_ARCHIVE) 2351844Swollmanlib${LIB}_pic.a:: ${SOBJS} 2362353Sbde @${ECHO} building special pic ${LIB} library 2371844Swollman @rm -f lib${LIB}_pic.a 2385253Sache @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 2391844Swollman ${RANLIB} lib${LIB}_pic.a 2403859Sbde.endif 2411844Swollman 24292491Smarkm.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && (${LINTOBJS} != "") 24392491Smarkm${LINTLIB}: ${LINTOBJS} 24492491Smarkm @${ECHO} building lint library ${SHLIB_NAME} 24592491Smarkm @rm -f ${LINTLIB} 24692491Smarkm ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 24792491Smarkm.endif 2481638Srgrimes 2491638Srgrimes.if !target(clean) 25016663Sjkhclean: _SUBDIR 25142915Sjdp rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES} 25292491Smarkm rm -f lib${LIB}.a ${LINTLIB} 25338187Speter rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a 25442450Sjdp rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \ 25542915Sjdp ${SHLIB_NAME} ${SHLIB_LINK} \ 25642450Sjdp lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a 25792491Smarkm rm -f ${LINTOBJS} ${LINTLIB} 25816826Sphk.if defined(CLEANDIRS) && !empty(CLEANDIRS) 25916437Sphk rm -rf ${CLEANDIRS} 2601638Srgrimes.endif 26116437Sphk.endif 2621638Srgrimes 26334179Sbde_EXTRADEPEND: 26424750Sbde @TMP=_depend$$$$; \ 26542450Sjdp sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 26624750Sbde > $$TMP; \ 26724750Sbde mv $$TMP ${DEPENDFILE} 26842915Sjdp.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 26938655Sjb.if ${OBJFORMAT} == aout 27042915Sjdp echo ${SHLIB_NAME}: \ 27191011Sru `${CC} -shared -Wl,-f ${LDADD}` \ 27225468Sjdp >> ${DEPENDFILE} 27328945Speter.else 27431809Sbde.if defined(DPADD) && !empty(DPADD) 27542915Sjdp echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 27627910Sasami.endif 27728945Speter.endif 27828945Speter.endif 2791638Srgrimes 2801638Srgrimes.if !target(install) 2811638Srgrimes.if !target(beforeinstall) 28255954Srgrimesbeforeinstall: _includeinstall 2831638Srgrimes.endif 2841638Srgrimes 28555954Srgrimes_includeinstall: 28655954Srgrimes.if defined(INCS) 28755954Srgrimes.for header in ${INCS} 28855954Srgrimes cd ${.CURDIR} && \ 28955954Srgrimes ${INSTALL} -C -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} \ 29055954Srgrimes ${header} ${DESTDIR}${INCDIR} 29155954Srgrimes 29255954Srgrimes.endfor 29355954Srgrimes.endif 29455954Srgrimes 29548204Sjmg.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 2962298SwollmanSHLINSTALLFLAGS+= -fschg 2972298Swollman.endif 2982298Swollman 29949328Shoek_INSTALLFLAGS:= ${INSTALLFLAGS} 30049328Shoek.for ie in ${INSTALLFLAGS_EDIT} 30149328Shoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 30249328Shoek.endfor 30356971Sru_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 30449328Shoek.for ie in ${INSTALLFLAGS_EDIT} 30549328Shoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 30649328Shoek.endfor 30749328Shoek 3081638Srgrimesrealinstall: beforeinstall 3092298Swollman.if !defined(INTERNALLIB) 3101996Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31149328Shoek ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 3121638Srgrimes.if !defined(NOPROFILE) 3131844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31449328Shoek ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 3151638Srgrimes.endif 3162298Swollman.endif 31742915Sjdp.if defined(SHLIB_NAME) 31848204Sjmg ${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 31949328Shoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 32042915Sjdp ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 32142915Sjdp.if defined(SHLIB_LINK) 32244946Sbde ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 3231844Swollman.endif 32428945Speter.endif 3251844Swollman.if defined(INSTALL_PIC_ARCHIVE) 3261844Swollman ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 32749328Shoek ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 3281844Swollman.endif 3291638Srgrimes.if defined(LINKS) && !empty(LINKS) 3301638Srgrimes @set ${LINKS}; \ 3311638Srgrimes while test $$# -ge 2; do \ 3321638Srgrimes l=${DESTDIR}$$1; \ 3331638Srgrimes shift; \ 3341638Srgrimes t=${DESTDIR}$$1; \ 3351638Srgrimes shift; \ 3362353Sbde ${ECHO} $$t -\> $$l; \ 33744946Sbde ln -f $$l $$t; \ 3381638Srgrimes done; true 3391638Srgrimes.endif 34044946Sbde.if defined(SYMLINKS) && !empty(SYMLINKS) 34144946Sbde @set ${SYMLINKS}; \ 34244946Sbde while test $$# -ge 2; do \ 34344946Sbde l=$$1; \ 34444946Sbde shift; \ 34544946Sbde t=${DESTDIR}$$1; \ 34644946Sbde shift; \ 34744946Sbde ${ECHO} $$t -\> $$l; \ 34844946Sbde ln -fs $$l $$t; \ 34944946Sbde done; true 35044946Sbde.endif 35192491Smarkm.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && (${LINTOBJS} != "") 35292491Smarkm ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 35392491Smarkm ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 35492491Smarkm.endif 3551638Srgrimes 35616663Sjkhinstall: afterinstall _SUBDIR 3571844Swollman.if !defined(NOMAN) 3581844Swollmanafterinstall: realinstall maninstall 3591844Swollman.else 3601638Srgrimesafterinstall: realinstall 3611638Srgrimes.endif 3621638Srgrimes.endif 3631638Srgrimes 36434528Seivind.if !target(regress) 36534528Seivindregress: 36634528Seivind.endif 36734528Seivind 3685585SjkhDISTRIBUTION?= bin 3694442Sphk.if !target(distribute) 37016663Sjkhdistribute: _SUBDIR 37126760Sjkh.for dist in ${DISTRIBUTION} 37226760Sjkh cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 37326760Sjkh.endfor 3744442Sphk.endif 3754442Sphk 3761638Srgrimes.if !target(lint) 37792491Smarkmlint: ${SRCS:M*.c} _SUBDIR 37892491Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} | more 2>&1 3791638Srgrimes.endif 3801638Srgrimes 38192491Smarkm 3821844Swollman.if !defined(NOMAN) 3831638Srgrimes.include <bsd.man.mk> 38474842Sru.else 38574842Sru.if !target(all-man) 38674842Sruall-man: 38774842Sru.endif 38874842Sru.if !target(maninstall) 3891844Swollmanmaninstall: 3901844Swollman.endif 39174842Sru.endif 3921844Swollman 3931844Swollman.include <bsd.dep.mk> 39434092Sbde 39534092Sbde.if !exists(${DEPENDFILE}) 39642915Sjdp${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 39734092Sbde.endif 39834092Sbde 39916663Sjkh.include <bsd.obj.mk> 40076861Skris 40176861Skris.include <bsd.sys.mk> 402