bsd.lib.mk revision 103713
1139743Simp# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 243412Snewton# $FreeBSD: head/share/mk/bsd.lib.mk 103713 2002-09-20 19:32:51Z markm $ 343412Snewton# 443412Snewton 543412Snewton.include <bsd.init.mk> 643412Snewton 743412Snewton# Set up the variables controlling shared libraries. After this section, 843412Snewton# SHLIB_NAME will be defined only if we are to create a shared library. 943412Snewton# SHLIB_LINK will be defined only if we are to create a link to it. 1043412Snewton# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 1143412Snewton.if defined(NOPIC) 1243412Snewton.undef SHLIB_NAME 1343412Snewton.undef INSTALL_PIC_ARCHIVE 1443412Snewton.else 1543412Snewton.if !defined(SHLIB_NAME) && defined(LIB) && defined(SHLIB_MAJOR) 1643412SnewtonSHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR} 1743412Snewton.endif 1843412Snewton.if defined(SHLIB_NAME) && ${SHLIB_NAME:M*.so.*} 1943412SnewtonSHLIB_LINK?= ${SHLIB_NAME:R} 2043412Snewton.endif 2143412SnewtonSONAME?= ${SHLIB_NAME} 2243412Snewton.endif 2343412Snewton 2443412Snewton.if defined(DEBUG_FLAGS) 2543412SnewtonCFLAGS+= ${DEBUG_FLAGS} 2643412Snewton.endif 2743412Snewton 2843412Snewton.if !defined(DEBUG_FLAGS) 2943412SnewtonSTRIP?= -s 3043412Snewton.endif 31101709Srwatson 32116174Sobrien.include <bsd.libnames.mk> 33116174Sobrien 34116174Sobrien# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 3543412Snewton# .So used for PIC object files 36224778Srwatson.SUFFIXES: 3743412Snewton.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln 3843412Snewton 3943412Snewton.if !defined(PICFLAG) 4043412Snewton.if ${MACHINE_ARCH} == "sparc64" 4176166SmarkmPICFLAG=-fPIC 42141486Sjhb.else 4343412SnewtonPICFLAG=-fpic 4476166Smarkm.endif 4576166Smarkm.endif 46164033Srwatson 4776166Smarkm.c.ln: 4876166Smarkm ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 49134266Sjhb touch ${.TARGET} 5076166Smarkm 5143412Snewton.cc.ln .C.ln .cpp.ln .cxx.ln: 5243412Snewton ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 5343412Snewton touch ${.TARGET} 5443412Snewton 5565302Sobrien.c.o: 5665302Sobrien ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 5765302Sobrien @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 5865302Sobrien @mv ${.TARGET}.tmp ${.TARGET} 5965302Sobrien 6065302Sobrien.c.po: 6143412Snewton ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 62163606Srwatson @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 63163606Srwatson @mv ${.TARGET}.tmp ${.TARGET} 6492761Salfred 6592761Salfred.c.So: 6692761Salfred ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6792761Salfred @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 6892761Salfred @mv ${.TARGET}.tmp ${.TARGET} 6992761Salfred 7092761Salfred.cc.o .C.o .cpp.o .cxx.o: 7192761Salfred ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7292761Salfred @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 7343412Snewton @mv ${.TARGET}.tmp ${.TARGET} 7443412Snewton 7543412Snewton.cc.po .C.po .cpp.po .cxx.po: 7643412Snewton ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7743412Snewton @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 7843412Snewton @mv ${.TARGET}.tmp ${.TARGET} 7943412Snewton 8043412Snewton.cc.So .C.So .cpp.So .cxx.So: 81177314Santoine ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 82177314Santoine @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 8343412Snewton @mv ${.TARGET}.tmp ${.TARGET} 8443412Snewton 8543412Snewton.f.o: 8643412Snewton ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 8743412Snewton @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 8843412Snewton @mv ${.TARGET}.tmp ${.TARGET} 8943412Snewton 9043412Snewton.f.po: 9143412Snewton ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9243412Snewton @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 9343412Snewton @mv ${.TARGET}.tmp ${.TARGET} 9443412Snewton 9543412Snewton.f.So: 9643412Snewton ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 9743412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 9843412Snewton @mv ${.TARGET}.tmp ${.TARGET} 9943412Snewton 10043412Snewton.m.o: 10143412Snewton ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10243412Snewton @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 10343412Snewton @mv ${.TARGET}.tmp ${.TARGET} 10443412Snewton 10543412Snewton.m.po: 10643412Snewton ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 10743412Snewton @${LD} -o ${.TARGET}.tmp -X -r ${.TARGET} 10843412Snewton @mv ${.TARGET}.tmp ${.TARGET} 10943412Snewton 11043412Snewton.m.So: 11143412Snewton ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 11243412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11343412Snewton @mv ${.TARGET}.tmp ${.TARGET} 11443412Snewton 11543412Snewton.s.o .asm.o: 11643412Snewton ${CC} -x assembler-with-cpp ${CFLAGS} ${AINC} -c \ 11743412Snewton ${.IMPSRC} -o ${.TARGET} 11843412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 11943412Snewton @mv ${.TARGET}.tmp ${.TARGET} 12043412Snewton 12143412Snewton.s.po .asm.po: 12243412Snewton ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} ${AINC} -c \ 12343412Snewton ${.IMPSRC} -o ${.TARGET} 12443412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 12543412Snewton @mv ${.TARGET}.tmp ${.TARGET} 12643412Snewton 12743412Snewton.s.So .asm.So: 12843412Snewton ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \ 12943412Snewton ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13043412Snewton @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 13143412Snewton @mv ${.TARGET}.tmp ${.TARGET} 13243412Snewton 13343412Snewton.S.o: 13443412Snewton ${CC} ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 13543412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -x -r ${.TARGET} 13643412Snewton @mv ${.TARGET}.tmp ${.TARGET} 13743412Snewton 13843412Snewton.S.po: 13943412Snewton ${CC} -DPROF ${CFLAGS} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 14043412Snewton @${LD} ${LDFLAGS} -o ${.TARGET}.tmp -X -r ${.TARGET} 14143412Snewton @mv ${.TARGET}.tmp ${.TARGET} 14243412Snewton 14343412Snewton.S.So: 14443412Snewton ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${AINC} -c ${.IMPSRC} \ 14543412Snewton -o ${.TARGET} 14643412Snewton @${LD} -o ${.TARGET}.tmp -x -r ${.TARGET} 14743412Snewton @mv ${.TARGET}.tmp ${.TARGET} 14843412Snewton 14943412Snewtonall: objwarn 15043412Snewton 15143412Snewton.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 15243412SnewtonOBJS+= ${SRCS:N*.h:R:S/$/.o/} 15343412Snewton.endif 15443412Snewton 15543412Snewton.if defined(LIB) && !empty(LIB) 15643412Snewton_LIBS= lib${LIB}.a 15743412Snewton 15843412Snewtonlib${LIB}.a: ${OBJS} ${STATICOBJS} 15943412Snewton @${ECHO} building static ${LIB} library 16043412Snewton @rm -f ${.TARGET} 16143412Snewton @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 16243412Snewton ${RANLIB} ${.TARGET} 16343412Snewton.endif 16443412Snewton 16543412Snewton.if !defined(INTERNALLIB) 16643412Snewton 16743412Snewton.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 16843412Snewton_LIBS+= lib${LIB}_p.a 16943412SnewtonPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 17043412Snewton 17143412Snewtonlib${LIB}_p.a: ${POBJS} 17243412Snewton @${ECHO} building profiled ${LIB} library 17343412Snewton @rm -f ${.TARGET} 17443412Snewton @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD} 17543412Snewton ${RANLIB} ${.TARGET} 17643412Snewton.endif 17743412Snewton 17843412Snewton.if defined(SHLIB_NAME) || \ 17943412Snewton defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 18043412SnewtonSOBJS+= ${OBJS:.o=.So} 18143412Snewton.endif 18243412Snewton 18343412Snewton.if defined(SHLIB_NAME) 18443412Snewton_LIBS+= ${SHLIB_NAME} 18543412Snewton 18643412Snewton${SHLIB_NAME}: ${SOBJS} 18743412Snewton @${ECHO} building shared library ${SHLIB_NAME} 18843412Snewton @rm -f ${.TARGET} ${SHLIB_LINK} 18943412Snewton.if defined(SHLIB_LINK) 19043412Snewton @ln -fs ${.TARGET} ${SHLIB_LINK} 19143412Snewton.endif 19243412Snewton @${CC} ${LDFLAGS} -shared -Wl,-x \ 19343412Snewton -o ${.TARGET} -Wl,-soname,${SONAME} \ 19443412Snewton `lorder ${SOBJS} | tsort -q` ${LDADD} 195177633Sdfr.endif 19643412Snewton 19743412Snewton.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 19843412Snewton_LIBS+= lib${LIB}_pic.a 19943412Snewton 20043412Snewtonlib${LIB}_pic.a: ${SOBJS} 20143412Snewton @${ECHO} building special pic ${LIB} library 20243412Snewton @rm -f ${.TARGET} 20343412Snewton @${AR} cq ${.TARGET} ${SOBJS} ${ARADD} 20443412Snewton ${RANLIB} ${.TARGET} 20543412Snewton.endif 20643412Snewton 20743412Snewton.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 20843412SnewtonLINTLIB= llib-l${LIB}.ln 20943412Snewton_LIBS+= ${LINTLIB} 21043412SnewtonLINTOBJS+= ${SRCS:M*.c:.c=.ln} 21143412Snewton 21243412Snewton${LINTLIB}: ${LINTOBJS} 21343412Snewton @${ECHO} building lint library ${.TARGET} 21443412Snewton @rm -f ${.TARGET} 21543412Snewton ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 21643412Snewton.endif 21743412Snewton 21843412Snewton.endif !defined(INTERNALLIB) 21943412Snewton 22043412Snewtonall: ${_LIBS} 221177633Sdfr 22243412Snewton.if !defined(NOMAN) 22343412Snewtonall: _manpages 22443412Snewton.endif 22543412Snewton 22643412Snewton_EXTRADEPEND: 22743412Snewton @TMP=_depend$$$$; \ 22843412Snewton sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 22943412Snewton > $$TMP; \ 23043412Snewton mv $$TMP ${DEPENDFILE} 23143412Snewton.if !defined(NOEXTRADEPEND) && defined(SHLIB_NAME) 23243412Snewton.if defined(DPADD) && !empty(DPADD) 23343412Snewton echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} 23443412Snewton.endif 23543412Snewton.endif 23643412Snewton 23743412Snewton.if !target(install) 23843412Snewton 23943412Snewton.if defined(PRECIOUSLIB) && !defined(NOFSCHG) 24043412SnewtonSHLINSTALLFLAGS+= -fschg 24143412Snewton.endif 24243412Snewton 24343412Snewton_INSTALLFLAGS:= ${INSTALLFLAGS} 24443412Snewton.for ie in ${INSTALLFLAGS_EDIT} 24543412Snewton_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 24643412Snewton.endfor 24743412Snewton_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 24843412Snewton.for ie in ${INSTALLFLAGS_EDIT} 24943412Snewton_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 25043412Snewton.endfor 25143412Snewton 25243412Snewton.if !defined(INTERNALLIB) 25343412Snewtonrealinstall: _libinstall 25443412Snewton.ORDER: beforeinstall _libinstall 25583366Sjulian_libinstall: 25683366Sjulian.if defined(LIB) && !empty(LIB) && !defined(NOINSTALLLIB) 25743412Snewton ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 25843412Snewton ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 25943412Snewton.endif 26062976Smckusick.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 26143412Snewton ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 262255219Spjd ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 26343412Snewton.endif 26443412Snewton.if defined(SHLIB_NAME) 26583366Sjulian ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 266224778Srwatson ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 267224778Srwatson ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} 268224778Srwatson.if defined(SHLIB_LINK) 269247602Spjd ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} 270224778Srwatson.endif 271255219Spjd.endif 272224778Srwatson.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 273224778Srwatson ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 274224778Srwatson ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 275224778Srwatson.endif 276255219Spjd.if defined(WANT_LINT) && !defined(NOLINT) && defined(LIB) && !empty(LIB) 277255219Spjd ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 27889319Salfred ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 27943412Snewton.endif 28043412Snewton.endif !defined(INTERNALLIB) 28143412Snewton 28243412Snewton.include <bsd.files.mk> 28343412Snewton.include <bsd.incs.mk> 28443412Snewton.include <bsd.links.mk> 285101709Srwatson 286175202Sattilio.if !defined(NOMAN) 287172930Srwatsonrealinstall: _maninstall 288175294Sattilio.ORDER: beforeinstall _maninstall 289101709Srwatson.endif 290101709Srwatson 291101709Srwatson.endif 292101709Srwatson 293182371Sattilio.if !target(lint) 29443412Snewtonlint: ${SRCS:M*.c} 29543412Snewton ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 29691406Sjhb.endif 297170587Srwatson 29843412Snewton.if !defined(NOMAN) 29943412Snewton.include <bsd.man.mk> 30062976Smckusick.endif 30162976Smckusick 30250405Sphk.include <bsd.dep.mk> 30343412Snewton 30462976Smckusick.if !exists(${.OBJDIR}/${DEPENDFILE}) 30543412Snewton.if defined(LIB) && !empty(LIB) 30643412Snewton${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 30743412Snewton.endif 30843412Snewton.if defined(SHLIB_NAME) || \ 30943412Snewton defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 31043412Snewton${SOBJS}: ${SRCS:M*.h} 31143412Snewton.endif 31283366Sjulian.endif 31383366Sjulian 31443412Snewton.if !target(clean) 31543412Snewtonclean: 31643412Snewton.if defined(CLEANFILES) && !empty(CLEANFILES) 31743412Snewton rm -f ${CLEANFILES} 31889534Salfred.endif 31943412Snewton.if defined(LIB) && !empty(LIB) 32043412Snewton rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 32143412Snewton.endif 32243412Snewton.if !defined(INTERNALLIB) 323255219Spjd.if !defined(NOPROFILE) && defined(LIB) && !empty(LIB) 32443412Snewton rm -f ${POBJS} ${POBJS:S/$/.tmp/} 32583366Sjulian.endif 32643412Snewton.if defined(SHLIB_NAME) || \ 32743412Snewton defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 32843412Snewton rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 32943412Snewton.endif 330255219Spjd.if defined(SHLIB_NAME) 331255219Spjd.if defined(SHLIB_LINK) 33289319Salfred rm -f ${SHLIB_LINK} 33343412Snewton.endif 334116678Sphk.if defined(LIB) && !empty(LIB) 33589534Salfred rm -f lib${LIB}.so.* lib${LIB}.so 33689534Salfred.endif 33789534Salfred.endif 33843412Snewton.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 33989306Salfred rm -f ${LINTOBJS} 34043412Snewton.endif 341182371Sattilio.endif !defined(INTERNALLIB) 34289534Salfred.if defined(_LIBS) && !empty(_LIBS) 34343412Snewton rm -f ${_LIBS} 34489306Salfred.endif 34543412Snewton.if defined(CLEANDIRS) && !empty(CLEANDIRS) 34643412Snewton rm -rf ${CLEANDIRS} 34743412Snewton.endif 34843412Snewton.endif 34943412Snewton 35043412Snewton.include <bsd.obj.mk> 35143412Snewton 35243412Snewton.include <bsd.sys.mk> 35343412Snewton