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