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