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