Home | History | Annotate | Line # | Download | only in mk
bsd.lib.mk revision 1.23
      1  1.23  mycroft #	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
      2  1.23  mycroft #	$Id: bsd.lib.mk,v 1.23 1993/08/15 19:37:06 mycroft Exp $
      3   1.1      cgd 
      4   1.1      cgd .if exists(${.CURDIR}/../Makefile.inc)
      5   1.1      cgd .include "${.CURDIR}/../Makefile.inc"
      6   1.1      cgd .endif
      7   1.1      cgd 
      8   1.1      cgd LIBDIR?=	/usr/lib
      9   1.1      cgd LINTLIBDIR?=	/usr/libdata/lint
     10   1.1      cgd LIBGRP?=	bin
     11   1.1      cgd LIBOWN?=	bin
     12   1.1      cgd LIBMODE?=	444
     13   1.1      cgd 
     14  1.23  mycroft STRIP?=		-s
     15   1.1      cgd 
     16   1.1      cgd BINGRP?=	bin
     17   1.1      cgd BINOWN?=	bin
     18   1.1      cgd BINMODE?=	555
     19   1.1      cgd 
     20   1.1      cgd .MAIN: all
     21   1.1      cgd 
     22   1.1      cgd # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
     23   1.1      cgd .SUFFIXES:
     24  1.17  mycroft .SUFFIXES: .out .o .po .s .c .cc .C .f .y .l .8 .7 .6 .5 .4 .3 .2 .1 .0
     25   1.1      cgd 
     26   1.1      cgd .8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0:
     27   1.1      cgd 	nroff -mandoc ${.IMPSRC} > ${.TARGET}
     28   1.1      cgd 
     29   1.1      cgd .c.o:
     30   1.1      cgd 	${CC} ${CFLAGS} -c ${.IMPSRC} 
     31   1.1      cgd 	@${LD} -x -r ${.TARGET}
     32   1.1      cgd 	@mv a.out ${.TARGET}
     33   1.1      cgd 
     34   1.1      cgd .c.po:
     35   1.1      cgd 	${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
     36  1.17  mycroft 	@${LD} -X -r ${.TARGET}
     37  1.17  mycroft 	@mv a.out ${.TARGET}
     38  1.17  mycroft 
     39  1.18  mycroft .cc.o .C.o:
     40  1.17  mycroft 	${CXX} ${CXXFLAGS} -c ${.IMPSRC} 
     41  1.17  mycroft 	@${LD} -x -r ${.TARGET}
     42  1.17  mycroft 	@mv a.out ${.TARGET}
     43  1.17  mycroft 
     44  1.18  mycroft .cc.po .C.po:
     45  1.17  mycroft 	${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
     46   1.1      cgd 	@${LD} -X -r ${.TARGET}
     47   1.1      cgd 	@mv a.out ${.TARGET}
     48   1.1      cgd 
     49   1.1      cgd .s.o:
     50   1.1      cgd 	${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
     51   1.1      cgd 	    ${AS} -o ${.TARGET}
     52   1.1      cgd 	@${LD} -x -r ${.TARGET}
     53   1.1      cgd 	@mv a.out ${.TARGET}
     54   1.1      cgd 
     55   1.1      cgd .s.po:
     56   1.1      cgd 	${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
     57   1.1      cgd 	    ${AS} -o ${.TARGET}
     58   1.1      cgd 	@${LD} -X -r ${.TARGET}
     59   1.1      cgd 	@mv a.out ${.TARGET}
     60   1.1      cgd 
     61  1.10  mycroft .if !defined(NOMAN)
     62   1.1      cgd MANALL=	${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8}
     63  1.10  mycroft .endif
     64   1.1      cgd 
     65   1.1      cgd .if !defined(NOPROFILE)
     66   1.1      cgd _LIBS=lib${LIB}.a lib${LIB}_p.a
     67   1.1      cgd .else
     68   1.1      cgd _LIBS=lib${LIB}.a
     69   1.1      cgd .endif
     70   1.1      cgd 
     71   1.1      cgd all: ${_LIBS} ${MANALL}# llib-l${LIB}.ln
     72   1.1      cgd 
     73  1.21  mycroft OBJS+=	${SRCS:N*.h:R:S/$/.o/g}
     74   1.1      cgd 
     75   1.1      cgd lib${LIB}.a:: ${OBJS}
     76   1.1      cgd 	@echo building standard ${LIB} library
     77   1.1      cgd 	@rm -f lib${LIB}.a
     78  1.16  mycroft 	@${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD}
     79  1.13      cgd 	${RANLIB} lib${LIB}.a
     80   1.1      cgd 
     81   1.1      cgd POBJS+=	${OBJS:.o=.po}
     82   1.1      cgd lib${LIB}_p.a:: ${POBJS}
     83   1.1      cgd 	@echo building profiled ${LIB} library
     84   1.1      cgd 	@rm -f lib${LIB}_p.a
     85  1.16  mycroft 	@${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD}
     86  1.13      cgd 	${RANLIB} lib${LIB}_p.a
     87   1.1      cgd 
     88   1.1      cgd llib-l${LIB}.ln: ${SRCS}
     89   1.1      cgd 	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
     90   1.1      cgd 
     91   1.1      cgd .if !target(clean)
     92   1.1      cgd clean:
     93   1.9      cgd 	rm -f a.out Errs errs mklog core ${CLEANFILES}
     94   1.9      cgd 	rm -f ${OBJS}
     95   1.9      cgd 	rm -f ${POBJS} profiled/*.o
     96   1.9      cgd 	rm -f lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln
     97   1.1      cgd .endif
     98   1.1      cgd 
     99   1.1      cgd .if !target(cleandir)
    100  1.23  mycroft cleandir: clean
    101   1.1      cgd 	rm -f ${MANALL} ${.CURDIR}/tags .depend
    102   1.1      cgd .endif
    103   1.1      cgd 
    104  1.23  mycroft .include <bsd.dep.mk>
    105  1.23  mycroft afterdepend:
    106   1.1      cgd 	@(TMP=/tmp/_depend$$$$; \
    107  1.14      cgd 	    sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po:/' < .depend > $$TMP; \
    108   1.1      cgd 	    mv $$TMP .depend)
    109   1.1      cgd 
    110   1.1      cgd .if !target(install)
    111   1.1      cgd .if !target(beforeinstall)
    112   1.1      cgd beforeinstall:
    113  1.22  mycroft 	@install -d -o root -g wheel -m 755 ${DESTDIR}${LIBDIR}
    114   1.1      cgd .endif
    115   1.1      cgd 
    116  1.11  mycroft realinstall:
    117  1.13      cgd #	ranlib lib${LIB}.a
    118   1.8      cgd 	install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
    119   1.1      cgd 	    ${DESTDIR}${LIBDIR}
    120   1.1      cgd 	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
    121  1.12      cgd .if !defined(NOPROFILE)
    122  1.13      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.12      cgd .endif
    127   1.8      cgd #	install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
    128   1.1      cgd #	    llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
    129   1.1      cgd .if defined(LINKS) && !empty(LINKS)
    130   1.1      cgd 	@set ${LINKS}; \
    131   1.1      cgd 	while test $$# -ge 2; do \
    132   1.1      cgd 		l=${DESTDIR}$$1; \
    133   1.1      cgd 		shift; \
    134   1.1      cgd 		t=${DESTDIR}$$1; \
    135   1.1      cgd 		shift; \
    136   1.1      cgd 		echo $$t -\> $$l; \
    137   1.1      cgd 		rm -f $$t; \
    138   1.1      cgd 		ln $$l $$t; \
    139   1.1      cgd 	done; true
    140   1.1      cgd .endif
    141   1.1      cgd 
    142  1.11  mycroft install: maninstall
    143  1.11  mycroft maninstall: afterinstall
    144  1.11  mycroft afterinstall: realinstall
    145  1.11  mycroft realinstall: beforeinstall
    146   1.1      cgd .endif
    147   1.1      cgd 
    148   1.1      cgd .if !target(lint)
    149   1.1      cgd lint:
    150   1.1      cgd .endif
    151   1.1      cgd 
    152   1.1      cgd .if !target(tags)
    153   1.1      cgd tags: ${SRCS}
    154   1.1      cgd 	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
    155   1.1      cgd 	    sed "s;\${.CURDIR}/;;" > tags
    156   1.1      cgd .endif
    157   1.1      cgd 
    158  1.10  mycroft .if !defined(NOMAN)
    159   1.1      cgd .include <bsd.man.mk>
    160  1.10  mycroft .endif
    161  1.10  mycroft 
    162  1.22  mycroft .include <bsd.obj.mk>
    163