Return to bsd.prog.mk CVS log | Up to [cvs.NetBSD.org] / src / share / mk |
File: [cvs.NetBSD.org] / src / share / mk / bsd.prog.mk (download)
Revision 1.38, Sun May 22 23:03:58 1994 UTC (29 years, 10 months ago) by jtc
Single source file programs are now compiled into object files before they are linked. This change halves the time it takes to rebuild all of the NetBSD sources when only the C library is "touched"; but only takes about one percent more disk space. |
# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 # $Id: bsd.prog.mk,v 1.38 1994/05/22 23:03:58 jtc Exp $ .if exists(${.CURDIR}/../Makefile.inc) .include "${.CURDIR}/../Makefile.inc" .endif .SUFFIXES: .out .o .c .cc .C .y .l .s .8 .7 .6 .5 .4 .3 .2 .1 .0 CFLAGS+= ${COPTS} LIBCRT0?= /usr/lib/crt0.o LIBC?= /usr/lib/libc.a LIBCOMPAT?= /usr/lib/libcompat.a LIBCRYPT?= /usr/lib/libcrypt.a LIBCURSES?= /usr/lib/libcurses.a LIBDBM?= /usr/lib/libdbm.a LIBDES?= /usr/lib/libdes.a LIBL?= /usr/lib/libl.a LIBKDB?= /usr/lib/libkdb.a LIBKRB?= /usr/lib/libkrb.a LIBKVM?= /usr/lib/libkvm.a LIBM?= /usr/lib/libm.a LIBMP?= /usr/lib/libmp.a LIBPC?= /usr/lib/libpc.a LIBPLOT?= /usr/lib/libplot.a LIBRESOLV?= /usr/lib/libresolv.a LIBRPCSVC?= /usr/lib/librpcsvc.a LIBTERMCAP?= /usr/lib/libtermcap.a LIBUTIL?= /usr/lib/libutil.a .if defined(SHAREDSTRINGS) CLEANFILES+=strings .c.o: ${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c - @${CC} ${CFLAGS} -c x.c -o ${.TARGET} @rm -f x.c .cc.o: ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c - @mv -f x.c x.cc @${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET} @rm -f x.cc .C.o: ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c - @mv -f x.c x.C @${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET} @rm -f x.C .endif .if defined(PROG) .if defined(SRCS) OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .else OBJS+= ${PROG}.o .endif .if defined(LDONLY) ${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD} ${LD} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDADD} .else defined(LDONLY) ${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD} ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} .endif .if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ !defined(MAN7) && !defined(MAN8) MAN1= ${PROG}.0 .endif .endif .MAIN: all all: ${PROG} .if !target(clean) clean: rm -f a.out [Ee]rrs mklog core *.core ${PROG} ${OBJS} ${CLEANFILES} .endif cleandir: clean .if !target(install) .if !target(beforeinstall) beforeinstall: .endif .if !target(afterinstall) afterinstall: .endif .if !target(realinstall) realinstall: .if defined(PROG) install ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${PROG} ${DESTDIR}${BINDIR} .endif .if defined(HIDEGAME) (cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \ chown games.bin ${PROG}) .endif .endif install: maninstall _SUBDIRUSE .if defined(LINKS) && !empty(LINKS) @set ${LINKS}; \ while test $$# -ge 2; do \ l=${DESTDIR}$$1; \ shift; \ t=${DESTDIR}$$1; \ shift; \ echo $$t -\> $$l; \ rm -f $$t; \ ln $$l $$t; \ done; true .endif maninstall: afterinstall afterinstall: realinstall realinstall: beforeinstall .endif .if !target(lint) lint: ${SRCS} .if defined(PROG) @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 .endif .endif .if !defined(NOMAN) .include <bsd.man.mk> .endif .include <bsd.obj.mk> .include <bsd.dep.mk> .include <bsd.subdir.mk>