1 1.23 mycroft # from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 2 1.23 mycroft # $Id: bsd.lib.mk,v 1.23 1993/08/15 19:37:06 mycroft Exp $ 3 1.1 cgd 4 1.1 cgd .if exists(${.CURDIR}/../Makefile.inc) 5 1.1 cgd .include "${.CURDIR}/../Makefile.inc" 6 1.1 cgd .endif 7 1.1 cgd 8 1.1 cgd LIBDIR?= /usr/lib 9 1.1 cgd LINTLIBDIR?= /usr/libdata/lint 10 1.1 cgd LIBGRP?= bin 11 1.1 cgd LIBOWN?= bin 12 1.1 cgd LIBMODE?= 444 13 1.1 cgd 14 1.23 mycroft STRIP?= -s 15 1.1 cgd 16 1.1 cgd BINGRP?= bin 17 1.1 cgd BINOWN?= bin 18 1.1 cgd BINMODE?= 555 19 1.1 cgd 20 1.1 cgd .MAIN: all 21 1.1 cgd 22 1.1 cgd # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 23 1.1 cgd .SUFFIXES: 24 1.17 mycroft .SUFFIXES: .out .o .po .s .c .cc .C .f .y .l .8 .7 .6 .5 .4 .3 .2 .1 .0 25 1.1 cgd 26 1.1 cgd .8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0: 27 1.1 cgd nroff -mandoc ${.IMPSRC} > ${.TARGET} 28 1.1 cgd 29 1.1 cgd .c.o: 30 1.1 cgd ${CC} ${CFLAGS} -c ${.IMPSRC} 31 1.1 cgd @${LD} -x -r ${.TARGET} 32 1.1 cgd @mv a.out ${.TARGET} 33 1.1 cgd 34 1.1 cgd .c.po: 35 1.1 cgd ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 36 1.17 mycroft @${LD} -X -r ${.TARGET} 37 1.17 mycroft @mv a.out ${.TARGET} 38 1.17 mycroft 39 1.18 mycroft .cc.o .C.o: 40 1.17 mycroft ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 41 1.17 mycroft @${LD} -x -r ${.TARGET} 42 1.17 mycroft @mv a.out ${.TARGET} 43 1.17 mycroft 44 1.18 mycroft .cc.po .C.po: 45 1.17 mycroft ${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 46 1.1 cgd @${LD} -X -r ${.TARGET} 47 1.1 cgd @mv a.out ${.TARGET} 48 1.1 cgd 49 1.1 cgd .s.o: 50 1.1 cgd ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 51 1.1 cgd ${AS} -o ${.TARGET} 52 1.1 cgd @${LD} -x -r ${.TARGET} 53 1.1 cgd @mv a.out ${.TARGET} 54 1.1 cgd 55 1.1 cgd .s.po: 56 1.1 cgd ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 57 1.1 cgd ${AS} -o ${.TARGET} 58 1.1 cgd @${LD} -X -r ${.TARGET} 59 1.1 cgd @mv a.out ${.TARGET} 60 1.1 cgd 61 1.10 mycroft .if !defined(NOMAN) 62 1.1 cgd MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8} 63 1.10 mycroft .endif 64 1.1 cgd 65 1.1 cgd .if !defined(NOPROFILE) 66 1.1 cgd _LIBS=lib${LIB}.a lib${LIB}_p.a 67 1.1 cgd .else 68 1.1 cgd _LIBS=lib${LIB}.a 69 1.1 cgd .endif 70 1.1 cgd 71 1.1 cgd all: ${_LIBS} ${MANALL}# llib-l${LIB}.ln 72 1.1 cgd 73 1.21 mycroft OBJS+= ${SRCS:N*.h:R:S/$/.o/g} 74 1.1 cgd 75 1.1 cgd lib${LIB}.a:: ${OBJS} 76 1.1 cgd @echo building standard ${LIB} library 77 1.1 cgd @rm -f lib${LIB}.a 78 1.16 mycroft @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD} 79 1.13 cgd ${RANLIB} lib${LIB}.a 80 1.1 cgd 81 1.1 cgd POBJS+= ${OBJS:.o=.po} 82 1.1 cgd lib${LIB}_p.a:: ${POBJS} 83 1.1 cgd @echo building profiled ${LIB} library 84 1.1 cgd @rm -f lib${LIB}_p.a 85 1.16 mycroft @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD} 86 1.13 cgd ${RANLIB} lib${LIB}_p.a 87 1.1 cgd 88 1.1 cgd llib-l${LIB}.ln: ${SRCS} 89 1.1 cgd ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 90 1.1 cgd 91 1.1 cgd .if !target(clean) 92 1.1 cgd clean: 93 1.9 cgd rm -f a.out Errs errs mklog core ${CLEANFILES} 94 1.9 cgd rm -f ${OBJS} 95 1.9 cgd rm -f ${POBJS} profiled/*.o 96 1.9 cgd rm -f lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln 97 1.1 cgd .endif 98 1.1 cgd 99 1.1 cgd .if !target(cleandir) 100 1.23 mycroft cleandir: clean 101 1.1 cgd rm -f ${MANALL} ${.CURDIR}/tags .depend 102 1.1 cgd .endif 103 1.1 cgd 104 1.23 mycroft .include <bsd.dep.mk> 105 1.23 mycroft afterdepend: 106 1.1 cgd @(TMP=/tmp/_depend$$$$; \ 107 1.14 cgd sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po:/' < .depend > $$TMP; \ 108 1.1 cgd mv $$TMP .depend) 109 1.1 cgd 110 1.1 cgd .if !target(install) 111 1.1 cgd .if !target(beforeinstall) 112 1.1 cgd beforeinstall: 113 1.22 mycroft @install -d -o root -g wheel -m 755 ${DESTDIR}${LIBDIR} 114 1.1 cgd .endif 115 1.1 cgd 116 1.11 mycroft realinstall: 117 1.13 cgd # ranlib lib${LIB}.a 118 1.8 cgd install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \ 119 1.1 cgd ${DESTDIR}${LIBDIR} 120 1.1 cgd ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 121 1.12 cgd .if !defined(NOPROFILE) 122 1.13 cgd # ranlib lib${LIB}_p.a 123 1.8 cgd install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 124 1.1 cgd lib${LIB}_p.a ${DESTDIR}${LIBDIR} 125 1.1 cgd ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 126 1.12 cgd .endif 127 1.8 cgd # install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 128 1.1 cgd # llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR} 129 1.1 cgd .if defined(LINKS) && !empty(LINKS) 130 1.1 cgd @set ${LINKS}; \ 131 1.1 cgd while test $$# -ge 2; do \ 132 1.1 cgd l=${DESTDIR}$$1; \ 133 1.1 cgd shift; \ 134 1.1 cgd t=${DESTDIR}$$1; \ 135 1.1 cgd shift; \ 136 1.1 cgd echo $$t -\> $$l; \ 137 1.1 cgd rm -f $$t; \ 138 1.1 cgd ln $$l $$t; \ 139 1.1 cgd done; true 140 1.1 cgd .endif 141 1.1 cgd 142 1.11 mycroft install: maninstall 143 1.11 mycroft maninstall: afterinstall 144 1.11 mycroft afterinstall: realinstall 145 1.11 mycroft realinstall: beforeinstall 146 1.1 cgd .endif 147 1.1 cgd 148 1.1 cgd .if !target(lint) 149 1.1 cgd lint: 150 1.1 cgd .endif 151 1.1 cgd 152 1.1 cgd .if !target(tags) 153 1.1 cgd tags: ${SRCS} 154 1.1 cgd -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ 155 1.1 cgd sed "s;\${.CURDIR}/;;" > tags 156 1.1 cgd .endif 157 1.1 cgd 158 1.10 mycroft .if !defined(NOMAN) 159 1.1 cgd .include <bsd.man.mk> 160 1.10 mycroft .endif 161 1.10 mycroft 162 1.22 mycroft .include <bsd.obj.mk> 163