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.1 cgd .SUFFIXES: .out .o .po .s .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.1 cgd @${LD} -X -r ${.TARGET} 36 1.1 cgd @mv a.out ${.TARGET} 37 1.1 cgd 38 1.1 cgd .s.o: 39 1.1 cgd ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 40 1.1 cgd ${AS} -o ${.TARGET} 41 1.1 cgd @${LD} -x -r ${.TARGET} 42 1.1 cgd @mv a.out ${.TARGET} 43 1.1 cgd 44 1.1 cgd .s.po: 45 1.1 cgd ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ 46 1.1 cgd ${AS} -o ${.TARGET} 47 1.1 cgd @${LD} -X -r ${.TARGET} 48 1.1 cgd @mv a.out ${.TARGET} 49 1.1 cgd 50 1.10 mycroft .if !defined(NOMAN) 51 1.1 cgd MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8} 52 1.10 mycroft .endif 53 1.1 cgd 54 1.1 cgd .if !defined(NOPROFILE) 55 1.1 cgd _LIBS=lib${LIB}.a lib${LIB}_p.a 56 1.1 cgd .else 57 1.1 cgd _LIBS=lib${LIB}.a 58 1.1 cgd .endif 59 1.1 cgd 60 1.1 cgd all: ${_LIBS} ${MANALL}# llib-l${LIB}.ln 61 1.1 cgd 62 1.1 cgd OBJS+= ${SRCS:R:S/$/.o/g} 63 1.1 cgd 64 1.1 cgd lib${LIB}.a:: ${OBJS} 65 1.1 cgd @echo building standard ${LIB} library 66 1.1 cgd @rm -f lib${LIB}.a 67 1.16 mycroft @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD} 68 1.13 cgd ${RANLIB} lib${LIB}.a 69 1.1 cgd 70 1.1 cgd POBJS+= ${OBJS:.o=.po} 71 1.1 cgd lib${LIB}_p.a:: ${POBJS} 72 1.1 cgd @echo building profiled ${LIB} library 73 1.1 cgd @rm -f lib${LIB}_p.a 74 1.16 mycroft @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD} 75 1.13 cgd ${RANLIB} lib${LIB}_p.a 76 1.1 cgd 77 1.1 cgd llib-l${LIB}.ln: ${SRCS} 78 1.1 cgd ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 79 1.1 cgd 80 1.1 cgd .if !target(clean) 81 1.1 cgd clean: 82 1.9 cgd rm -f a.out Errs errs mklog core ${CLEANFILES} 83 1.9 cgd rm -f ${OBJS} 84 1.9 cgd rm -f ${POBJS} profiled/*.o 85 1.9 cgd rm -f lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln 86 1.1 cgd .endif 87 1.1 cgd 88 1.1 cgd .if !target(cleandir) 89 1.1 cgd cleandir: 90 1.9 cgd rm -f a.out Errs errs mklog core ${CLEANFILES} 91 1.9 cgd rm -f ${OBJS} 92 1.9 cgd rm -f ${POBJS} profiled/*.o 93 1.9 cgd rm -f lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln 94 1.1 cgd rm -f ${MANALL} ${.CURDIR}/tags .depend 95 1.1 cgd .endif 96 1.1 cgd 97 1.1 cgd .if !target(depend) 98 1.1 cgd depend: .depend 99 1.1 cgd .depend: ${SRCS} 100 1.8 cgd mkdep ${CFLAGS:M-[ID+]*} ${AINC} ${.ALLSRC} 101 1.1 cgd @(TMP=/tmp/_depend$$$$; \ 102 1.14 cgd sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po:/' < .depend > $$TMP; \ 103 1.1 cgd mv $$TMP .depend) 104 1.1 cgd .endif 105 1.1 cgd 106 1.1 cgd .if !target(install) 107 1.1 cgd .if !target(beforeinstall) 108 1.1 cgd beforeinstall: 109 1.7 cgd @if [ ! -d "${DESTDIR}${LIBDIR}" ]; then \ 110 1.6 cgd /bin/rm -f ${DESTDIR}${LIBDIR} ; \ 111 1.5 cgd mkdir -p ${DESTDIR}${LIBDIR} ; \ 112 1.5 cgd chown root.wheel ${DESTDIR}${LIBDIR} ; \ 113 1.5 cgd chmod 755 ${DESTDIR}${LIBDIR} ; \ 114 1.5 cgd else \ 115 1.5 cgd true ; \ 116 1.5 cgd fi 117 1.1 cgd .endif 118 1.1 cgd 119 1.11 mycroft realinstall: 120 1.13 cgd # ranlib lib${LIB}.a 121 1.8 cgd install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \ 122 1.1 cgd ${DESTDIR}${LIBDIR} 123 1.1 cgd ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a 124 1.12 cgd .if !defined(NOPROFILE) 125 1.13 cgd # ranlib lib${LIB}_p.a 126 1.8 cgd install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 127 1.1 cgd lib${LIB}_p.a ${DESTDIR}${LIBDIR} 128 1.1 cgd ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a 129 1.12 cgd .endif 130 1.8 cgd # install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 131 1.1 cgd # llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR} 132 1.1 cgd .if defined(LINKS) && !empty(LINKS) 133 1.1 cgd @set ${LINKS}; \ 134 1.1 cgd while test $$# -ge 2; do \ 135 1.1 cgd l=${DESTDIR}$$1; \ 136 1.1 cgd shift; \ 137 1.1 cgd t=${DESTDIR}$$1; \ 138 1.1 cgd shift; \ 139 1.1 cgd echo $$t -\> $$l; \ 140 1.1 cgd rm -f $$t; \ 141 1.1 cgd ln $$l $$t; \ 142 1.1 cgd done; true 143 1.1 cgd .endif 144 1.1 cgd 145 1.11 mycroft install: maninstall 146 1.11 mycroft maninstall: afterinstall 147 1.11 mycroft afterinstall: realinstall 148 1.11 mycroft realinstall: beforeinstall 149 1.1 cgd .endif 150 1.1 cgd 151 1.1 cgd .if !target(lint) 152 1.1 cgd lint: 153 1.1 cgd .endif 154 1.1 cgd 155 1.1 cgd .if !target(tags) 156 1.1 cgd tags: ${SRCS} 157 1.1 cgd -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ 158 1.1 cgd sed "s;\${.CURDIR}/;;" > tags 159 1.1 cgd .endif 160 1.1 cgd 161 1.10 mycroft .if !defined(NOMAN) 162 1.1 cgd .include <bsd.man.mk> 163 1.10 mycroft .endif 164 1.10 mycroft 165 1.1 cgd .if !target(obj) 166 1.1 cgd .if defined(NOOBJ) 167 1.1 cgd obj: 168 1.1 cgd .else 169 1.1 cgd obj: 170 1.3 cgd @cd ${.CURDIR}; rm -f obj > /dev/null 2>&1 || true; \ 171 1.2 cgd here=`pwd`; subdir=`echo $$here | sed 's,^/usr/src/,,'`; \ 172 1.2 cgd if test $$here != $$subdir ; then \ 173 1.2 cgd dest=/usr/obj/$$subdir ; \ 174 1.2 cgd echo "$$here -> $$dest"; ln -s $$dest obj; \ 175 1.2 cgd if test -d /usr/obj -a ! -d $$dest; then \ 176 1.2 cgd mkdir -p $$dest; \ 177 1.2 cgd else \ 178 1.2 cgd true; \ 179 1.2 cgd fi; \ 180 1.1 cgd else \ 181 1.2 cgd true ; \ 182 1.2 cgd dest=$$here/obj ; \ 183 1.2 cgd echo "making $$here/obj" ; \ 184 1.2 cgd if test ! -d obj ; then \ 185 1.2 cgd mkdir $$here/obj; \ 186 1.2 cgd fi; \ 187 1.1 cgd fi; 188 1.1 cgd .endif 189 1.1 cgd .endif 190