Fixed missing dependencies. The critical missing one was of bi-lexer.o

on bi-parser.h.  Not having it sometimes (only with `make -j') triggered
a bug suite that led to ordinary cpp output being put in .depend files.
Various bugs (the main one only with `make -j') prevented timely detection
of failure to build and install gnu/usr.bin/cc.  Eventually the missing
${WORLDTMP}/usr/libexec/cpp caused ${WORLDTMP}/usr/bin/cpp to be invoked
by cc, and this version of cpp is not suitable for such invocation.
Ordinary cpp output was put in .depend files when cpp terminated options
processing before seeing the -M flag.

Cleaned up.
This commit is contained in:
Bruce Evans 1998-04-23 16:30:51 +00:00
parent 01404206b9
commit 93dce16147

View file

@ -1,5 +1,5 @@
#
# $Id: Makefile,v 1.9 1998/03/12 12:52:24 bde Exp $
# $Id: Makefile,v 1.10 1998/03/23 11:50:38 bde Exp $
#
#
@ -9,81 +9,81 @@
# SRCS to get dependencies.
#
# ../Makefile.inc will put an absolute path to our objdir in CFLAGS.
# Prevent mkdep from using it, so that we don't have to give rules for
# aliases of generated headers.
#
CFLAGS+= -I.
.include "../Makefile.inc"
#-----------------------------------------------------------------------
# Bytecode components
.for i in arity opcode opname
bc-$i.h: bi-$i bytecode.def
bc-$i.h: bi-$i bytecode.def
./bi-$i < ${GCCDIR}/bytecode.def > bc-$i.h
bi-$i: bi-$i.o bi-parser.o bi-lexer.o bi-reverse.o
bi-$i: bi-$i.o bi-parser.o bi-lexer.o bi-reverse.o
${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
SRCS+= bc-$i.h
LOCOBJS+= bi-$i.o
CLEANFILES+= bi-$i bi-$i.o
GENSRCS+= bc-$i.h bi-$i.c
CLEANFILES+= bi-$i
.endfor
.ORDER: bi-parser.c bi-parser.h
bi-parser.c bi-parser.h: bi-parser.y
bi-parser.c bi-parser.h: bi-parser.y
${BISON} ${BISONFLAGS} -d ${.ALLSRC} -o bi-parser.c
SRCS+= bi-parser.c bi-parser.h
LOCOBJS+= bi-lexer.o bi-parser.o bi-reverse.o
CLEANFILES+= bi-lexer.o bi-parser.o bi-reverse.o
SRCS+= bi-lexer.c bi-reverse.c
GENSRCS+= bi-parser.c bi-parser.h
#-----------------------------------------------------------------------
# insn-* gunk
.for i in config flags codes attr
insn-$i.h: gen$i ${MD_FILE}
.for i in attr codes config flags
insn-$i.h: gen$i ${MD_FILE}
./gen$i ${MD_FILE} > insn-$i.h
SRCS+= insn-$i.h
GENSRCS+= insn-$i.h
.endfor
.for i in emit recog opinit extract peep attrtab output
insn-$i.c: gen$i ${MD_FILE}
.for i in attrtab emit extract opinit output peep recog
insn-$i.c: gen$i ${MD_FILE}
./gen$i ${MD_FILE} > insn-$i.c
SRCS+= insn-$i.c
GENSRCS+= insn-$i.c
.endfor
.for i in config flags codes emit opinit recog extract peep attr output
gen$i: gen$i.o rtl.o obstack.o
.for i in attr codes config emit extract flags opinit output peep recog
gen$i: gen$i.o rtl.o obstack.o
${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
gen$i.o: gen$i.c ${RTL_H}
LOCOBJS+= gen$i.o
CLEANFILES+= gen$i gen$i.o
GENSRCS+= gen$i.c
CLEANFILES+= gen$i
.endfor
.for i in attrtab
gen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o
gen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o
${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
gen$i.o: gen$i.c ${RTL_H}
LOCOBJS+= gen$i.o
CLEANFILES+= gen$i gen$i.o
GENSRCS+= gen$i.c
CLEANFILES+= gen$i
.endfor
LOCOBJS+= print-rtl.o rtl.o rtlanal.o obstack.o
CLEANFILES+= print-rtl.o rtl.o rtlanal.o obstack.o
SRCS+= print-rtl.c rtl.c rtlanal.c obstack.c
#-----------------------------------------------------------------------
# C hash codes
c-gperf.h: c-parse.gperf
gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \
${GCCDIR}/c-parse.gperf > ${.TARGET}
SRCS+= c-gperf.h
GENSRCS+= c-gperf.h
#-----------------------------------------------------------------------
# C++ hash codes
hash.h: gxx.gperf
gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \
${GCCDIR}/cp/gxx.gperf >hash.h
SRCS+= hash.h
GENSRCS+= hash.h
#-----------------------------------------------------------------------
# C parser
@ -95,8 +95,8 @@ c-parse.c c-parse.h: c-parse.in
${BISON} -d c-parse.y -o c-parse.c
rm -f c-parse.y
SRCS+= c-parse.c c-parse.h
CLEANFILES+= c-parse.y # insurance
GENSRCS+= c-parse.c c-parse.h
CLEANFILES+= c-parse.y # insurance
#-----------------------------------------------------------------------
# objc parser
@ -108,8 +108,8 @@ objc-parse.c objc-parse.h: c-parse.in
${BISON} -d objc-parse.y -o objc-parse.c
rm -f objc-parse.y
SRCS+= objc-parse.c objc-parse.h
CLEANFILES+= objc-parse.y # insurance
GENSRCS+= objc-parse.c objc-parse.h
CLEANFILES+= objc-parse.y # insurance
#-----------------------------------------------------------------------
# C++ parser done in its own makefile
@ -129,21 +129,42 @@ ${COMMONHDRS}:
echo '#include "cp/lang-specs.h"' > specs.h
echo '#include "f2c-specs.h"' >> specs.h
SRCS+= ${COMMONHDRS}
GENSRCS+= ${COMMONHDRS}
#-----------------------------------------------------------------------
# Everything in ${SRCS} is generated
CLEANFILES+= ${SRCS}
# General things.
#-----------------------------------------------------------------------
all: ${SRCS}
SRCS+= ${GENSRCS}
CLEANFILES+= ${GENSRCS}
#-----------------------------------------------------------------------
# We kept ${LOCOBJS} separate from ${OBJS} because adding all the
# objects to ${OBJS} would give too many (cyclic) dependencies.
# Add just enough dependencies for `make -j 1000' to work.
${LOCOBJS}: ${COMMONHDRS}
genattrtab.o: insn-config.h
genextract.o: insn-config.h
all: ${SRCS}
.include <bsd.prog.mk>
#-----------------------------------------------------------------------
# Fixups.
# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't
# define PROG because we have multiple programs.
#
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.if !exists(${DEPENDFILE})
# Fudge pre-dependfile dependencies of objects the same as bsd.prog.mk
# would do if we defined PROG, except for leaving out dependencies on
# bc-*.h and insn-*.h because these dependencies would be circular.
#
${OBJS}: ${SRCS:M*.h:Nbc-*.h:Ninsn-*.h}
# Give all dependencies on bc-*.h and insn-*.h explicitly (none here for
# bc-*.h). This suffices for `make -j<any> depend', and after that all
# the dependencies will be in .depend since all .c source files are in
# SRCS.
#
genattrtab.o genextract.o: insn-config.h
insn-attrtab.o: insn-attr.h insn-config.h
insn-emit.o: insn-codes.h insn-config.h insn-flags.h
insn-opinit.o: insn-codes.h insn-config.h insn-flags.h
insn-output.o: insn-attr.h insn-codes.h insn-config.h insn-flags.h
insn-recog.o: insn-config.h
.endif