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