Home | History | Annotate | Line # | Download | only in mk
bsd.lib.mk revision 1.1.1.2
      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