Home | History | Annotate | Line # | Download | only in mk
bsd.lib.mk revision 1.22
      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.22  mycroft 	@install -d -o root -g wheel -m 755 ${DESTDIR}${LIBDIR}
    128   1.1      cgd .endif
    129   1.1      cgd 
    130  1.11  mycroft realinstall:
    131  1.13      cgd #	ranlib lib${LIB}.a
    132   1.8      cgd 	install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
    133   1.1      cgd 	    ${DESTDIR}${LIBDIR}
    134   1.1      cgd 	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
    135  1.12      cgd .if !defined(NOPROFILE)
    136  1.13      cgd #	ranlib lib${LIB}_p.a
    137   1.8      cgd 	install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
    138   1.1      cgd 	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
    139   1.1      cgd 	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
    140  1.12      cgd .endif
    141   1.8      cgd #	install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
    142   1.1      cgd #	    llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
    143   1.1      cgd .if defined(LINKS) && !empty(LINKS)
    144   1.1      cgd 	@set ${LINKS}; \
    145   1.1      cgd 	while test $$# -ge 2; do \
    146   1.1      cgd 		l=${DESTDIR}$$1; \
    147   1.1      cgd 		shift; \
    148   1.1      cgd 		t=${DESTDIR}$$1; \
    149   1.1      cgd 		shift; \
    150   1.1      cgd 		echo $$t -\> $$l; \
    151   1.1      cgd 		rm -f $$t; \
    152   1.1      cgd 		ln $$l $$t; \
    153   1.1      cgd 	done; true
    154   1.1      cgd .endif
    155   1.1      cgd 
    156  1.11  mycroft install: maninstall
    157  1.11  mycroft maninstall: afterinstall
    158  1.11  mycroft afterinstall: realinstall
    159  1.11  mycroft realinstall: beforeinstall
    160   1.1      cgd .endif
    161   1.1      cgd 
    162   1.1      cgd .if !target(lint)
    163   1.1      cgd lint:
    164   1.1      cgd .endif
    165   1.1      cgd 
    166   1.1      cgd .if !target(tags)
    167   1.1      cgd tags: ${SRCS}
    168   1.1      cgd 	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
    169   1.1      cgd 	    sed "s;\${.CURDIR}/;;" > tags
    170   1.1      cgd .endif
    171   1.1      cgd 
    172  1.10  mycroft .if !defined(NOMAN)
    173   1.1      cgd .include <bsd.man.mk>
    174  1.10  mycroft .endif
    175  1.10  mycroft 
    176  1.22  mycroft .include <bsd.obj.mk>
    177