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