bsd.lib.mk revision 34092
118334Speter# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 290075Sobrien# $Id: bsd.lib.mk,v 1.67 1998/02/20 15:58:59 bde Exp $ 3132718Skan# 418334Speter 590075Sobrien.if exists(${.CURDIR}/../Makefile.inc) 618334Speter.include "${.CURDIR}/../Makefile.inc" 790075Sobrien.endif 890075Sobrien 990075Sobrien# Default executable format 1090075Sobrien.if ${MACHINE} == "alpha" 1118334SpeterBINFORMAT?= elf 1290075Sobrien.else 1390075SobrienBINFORMAT?= aout 1490075Sobrien.endif 1590075Sobrien 1618334Speter.if exists(${.CURDIR}/shlib_version) 1718334SpeterSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 1890075Sobrien.if ${BINFORMAT} == aout 1990075SobrienSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 2090075Sobrien.endif 2118334Speter.endif 2218334Speter 2350397Sobrien.if !defined(NOPIC) && ${BINFORMAT} == elf 2450397SobrienSONAME?= lib${LIB}.so.${SHLIB_MAJOR} 25132718Skan.endif 26132718Skan 2718334Speter.if defined(DESTDIR) 2818334SpeterCFLAGS+= -I${DESTDIR}/usr/include 2990075SobrienCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 3018334Speter.endif 3118334Speter 3290075Sobrien.if defined(DEBUG_FLAGS) 3318334SpeterCFLAGS+= ${DEBUG_FLAGS} 3418334Speter.endif 3518334Speter 3618334Speter.if !defined(DEBUG_FLAGS) 3790075SobrienSTRIP?= -s 3850397Sobrien.endif 3950397Sobrien 4050397Sobrien.if ${BINFORMAT} != aout || make(checkdpadd) 4190075Sobrien.include <bsd.libnames.mk> 42117395Skan.endif 43132718Skan 44132718Skan.MAIN: all 45132718Skan 4618334Speter# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 4718334Speter# .so used for PIC object files 4818334Speter.SUFFIXES: 4918334Speter.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l 5018334Speter 5118334Speter.c.o: 5218334Speter ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 5356385Sobrien @${LD} -O ${.TARGET} -x -r ${.TARGET} 5456385Sobrien 5556385Sobrien.c.po: 5656385Sobrien ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 5718334Speter @${LD} -O ${.TARGET} -X -r ${.TARGET} 5856385Sobrien 5956385Sobrien.c.so: 6056385Sobrien ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6156385Sobrien @${LD} -O ${.TARGET} -x -r ${.TARGET} 6218334Speter 6390075Sobrien.cc.o .C.o .cxx.o: 6490075Sobrien ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6518334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 6618334Speter 6718334Speter.cc.po .C.po .cxx.po: 6818334Speter ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 6918334Speter @${LD} -O ${.TARGET} -X -r ${.TARGET} 7018334Speter 7118334Speter.cc.so .C.so .cxx.so: 7218334Speter ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 7318334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 7418334Speter 7518334Speter.f.o: 7690075Sobrien ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 7718334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 7818334Speter 7918334Speter.f.po: 8018334Speter ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 8118334Speter @${LD} -O ${.TARGET} -X -r ${.TARGET} 8218334Speter 8318334Speter.f.so: 8418334Speter ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 8518334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 8618334Speter 8718334Speter.s.o: 8818334Speter ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 8990075Sobrien ${.IMPSRC} -o ${.TARGET} 9090075Sobrien @${LD} -O ${.TARGET} -x -r ${.TARGET} 9118334Speter 9218334Speter.s.po: 9390075Sobrien ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 9490075Sobrien ${.IMPSRC} -o ${.TARGET} 9518334Speter @${LD} -O ${.TARGET} -X -r ${.TARGET} 9618334Speter 9718334Speter.s.so: 9818334Speter ${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ 9918334Speter ${.IMPSRC} -o ${.TARGET} 10018334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 10190075Sobrien 10218334Speter.S.o: 10318334Speter ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 10418334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 10518334Speter 10618334Speter.S.po: 10718334Speter ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 10890075Sobrien @${LD} -O ${.TARGET} -X -r ${.TARGET} 10918334Speter 11018334Speter.S.so: 11118334Speter ${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 11290075Sobrien @${LD} -O ${.TARGET} -x -r ${.TARGET} 11318334Speter 11418334Speter.m.o: 11518334Speter ${CC} ${CFLAGS} -fgnu-runtime -c ${.IMPSRC} -o ${.TARGET} 11618334Speter @${LD} -O ${.TARGET} -x -r ${.TARGET} 11718334Speter 11818334Speter.m.po: 11918334Speter ${CC} ${CFLAGS} -fgnu-runtime -pg -c ${.IMPSRC} -o ${.TARGET} 12090075Sobrien @${LD} -O ${.TARGET} -X -r ${.TARGET} 12190075Sobrien 12218334Speter.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 12318334Speter.if !defined(NOPROFILE) && !defined(INTERNALLIB) 12418334Speter_LIBS=lib${LIB}.a lib${LIB}_p.a 12518334Speter.else 12618334Speter_LIBS=lib${LIB}.a 12718334Speter.endif 12818334Speter.endif 12918334Speter 13018334Speter.if !defined(NOPIC) 13118334Speter.if ${BINFORMAT} == aout 13218334Speter.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 13318334Speter_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 13418334Speter.endif 13518334Speter.else 13618334Speter.if defined(SHLIB_MAJOR) 13718334Speter_LIBS+=lib${LIB}.so.${SHLIB_MAJOR} 13818334Speter.endif 13918334Speter.endif 14018334Speter.if defined(INSTALL_PIC_ARCHIVE) 14190075Sobrien_LIBS+=lib${LIB}_pic.a 14218334Speter.endif 14318334Speter.endif 14418334Speter 14518334Speter.if !defined(PICFLAG) 14618334SpeterPICFLAG=-fpic 14718334Speter.endif 14818334Speter 14918334Speterall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln 15018334Speter 15118334SpeterOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 15218334Speter 15318334Speterlib${LIB}.a:: ${OBJS} 15418334Speter @${ECHO} building standard ${LIB} library 15518334Speter @rm -f lib${LIB}.a 15618334Speter @${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD} 15718334Speter ${RANLIB} lib${LIB}.a 15818334Speter 15918334Speter.if !defined(NOPROFILE) 16018334SpeterPOBJS+= ${OBJS:.o=.po} 16118334Speterlib${LIB}_p.a:: ${POBJS} 16218334Speter @${ECHO} building profiled ${LIB} library 16318334Speter @rm -f lib${LIB}_p.a 16418334Speter @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 16518334Speter ${RANLIB} lib${LIB}_p.a 16618334Speter.endif 16718334Speter 16818334Speter.if defined(DESTDIR) 16918334SpeterLDDESTDIRENV?= LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib 17018334Speter.endif 17118334Speter 17218334Speter.if !defined(NOPIC) 17318334SpeterSOBJS+= ${OBJS:.o=.so} 17418334Speter 17518334Speter.if ${BINFORMAT} == aout 17618334Speterlib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} 17718334Speter @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 17818334Speter @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 17918334Speter @${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \ 18018334Speter -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 18118334Speter `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 18218334Speter.else 18318334Speterlib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS} 18418334Speter @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\) 18518334Speter @rm -f lib${LIB}.so.${SHLIB_MAJOR} 18618334Speter @${LDDESTDIRENV} ${CC} -shared -Wl,-x \ 18718334Speter -o lib${LIB}.so.${SHLIB_MAJOR} -Wl,-soname,${SONAME} \ 18818334Speter `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 18918334Speter.endif 19018334Speter 19118334Speterlib${LIB}_pic.a:: ${SOBJS} 19218334Speter @${ECHO} building special pic ${LIB} library 19318334Speter @rm -f lib${LIB}_pic.a 19418334Speter @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 19518334Speter ${RANLIB} lib${LIB}_pic.a 19618334Speter.endif 19718334Speter 19818334Speterllib-l${LIB}.ln: ${SRCS} 19918334Speter ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 20018334Speter 20118334Speter.if !target(clean) 20218334Speterclean: _SUBDIR 20390075Sobrien rm -f a.out ${OBJS} ${CLEANFILES} 20418334Speter rm -f lib${LIB}.a # llib-l${LIB}.ln 20518334Speter rm -f ${POBJS} lib${LIB}_p.a 20618334Speter.if defined(SOBJS) && !empty(SOBJS) 20718334Speter rm -f ${SOBJS} 20850397Sobrien.endif 20950397Sobrien rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 21050397Sobrien.if defined(CLEANDIRS) && !empty(CLEANDIRS) 21150397Sobrien rm -rf ${CLEANDIRS} 21250397Sobrien.endif 21390075Sobrien.endif 21490075Sobrien 21518334Speter.if defined(SRCS) 21618334Speter_EXTRADEPEND:: 21718334Speter @TMP=_depend$$$$; \ 21818334Speter sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \ 21918334Speter > $$TMP; \ 22018334Speter mv $$TMP ${DEPENDFILE} 22118334Speter.endif 22218334Speter.if !defined(NOEXTRADEPEND) 22390075Sobrien_EXTRADEPEND:: 22418334Speter.if ${BINFORMAT} == aout 22590075Sobrien echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \ 22690075Sobrien `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \ 22718334Speter >> ${DEPENDFILE} 22890075Sobrien.else 22918334Speter.if defined(DPADD) && !empty(DPADD) 23090075Sobrien echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \ 23190075Sobrien ${DPADD} >> ${DEPENDFILE} 23290075Sobrien.endif 23390075Sobrien.endif 23490075Sobrien.endif 23518334Speter 23690075Sobrien.if !target(install) 23790075Sobrien.if !target(beforeinstall) 23890075Sobrienbeforeinstall: 23990075Sobrien.endif 24090075Sobrien 24190075Sobrien.if defined(PRECIOUSLIB) 24290075SobrienSHLINSTALLFLAGS+= -fschg 24390075Sobrien.endif 24490075Sobrien 24590075Sobrienrealinstall: beforeinstall 24690075Sobrien.if !defined(INTERNALLIB) 24718334Speter ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 24890075Sobrien ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 24990075Sobrien.if !defined(NOPROFILE) 25090075Sobrien ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 25190075Sobrien ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 25290075Sobrien.endif 25390075Sobrien.endif 25490075Sobrien.if !defined(NOPIC) 255132718Skan.if ${BINFORMAT} == aout 256132718Skan.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 257132718Skan ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 258132718Skan ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 25990075Sobrien lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 26018334Speter ${DESTDIR}${SHLIBDIR} 26190075Sobrien.endif 26290075Sobrien.else 26318334Speter.if defined(SHLIB_MAJOR) 26418334Speter ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 26518334Speter ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 26618334Speter lib${LIB}.so.${SHLIB_MAJOR} \ 26718334Speter ${DESTDIR}${SHLIBDIR} 26818334Speter ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \ 26918334Speter ${DESTDIR}${SHLIBDIR}/lib${LIB}.so 27018334Speter.endif 27118334Speter.endif 27218334Speter.if defined(INSTALL_PIC_ARCHIVE) 27318334Speter ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 27418334Speter ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 27518334Speter.endif 27618334Speter.endif 27718334Speter.if defined(LINKS) && !empty(LINKS) 27818334Speter @set ${LINKS}; \ 27918334Speter while test $$# -ge 2; do \ 280132718Skan l=${DESTDIR}$$1; \ 28118334Speter shift; \ 28218334Speter t=${DESTDIR}$$1; \ 28318334Speter shift; \ 28418334Speter ${ECHO} $$t -\> $$l; \ 28518334Speter rm -f $$t; \ 28650397Sobrien ln ${LN_FLAGS} $$l $$t; \ 28750397Sobrien done; true 28818334Speter.endif 28918334Speter 29018334Speterinstall: afterinstall _SUBDIR 29118334Speter.if !defined(NOMAN) 29290075Sobrienafterinstall: realinstall maninstall 29318334Speter.else 29490075Sobrienafterinstall: realinstall 29590075Sobrien.endif 29690075Sobrien.endif 29790075Sobrien 29890075SobrienDISTRIBUTION?= bin 29918334Speter.if !target(distribute) 30090075Sobriendistribute: _SUBDIR 30190075Sobrien.for dist in ${DISTRIBUTION} 30218334Speter cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 30390075Sobrien.endfor 30490075Sobrien.endif 30590075Sobrien 30690075Sobrien.if !target(lint) 30790075Sobrienlint: 30890075Sobrien.endif 30990075Sobrien 31090075Sobrien.if !defined(NOMAN) 31190075Sobrien.include <bsd.man.mk> 31290075Sobrien.elif !target(maninstall) 31390075Sobrienmaninstall: 31490075Sobrienall-man: 31590075Sobrien.endif 31690075Sobrien 31790075Sobrien.include <bsd.dep.mk> 31890075Sobrien 31990075Sobrien.if !exists(${DEPENDFILE}) 32090075Sobrien${OBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 32152284Sobrien.endif 32252284Sobrien 32352284Sobrien.include <bsd.obj.mk> 32452284Sobrien