summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1998-04-23 16:30:51 +0000
committerbde <bde@FreeBSD.org>1998-04-23 16:30:51 +0000
commit6adf1d592649ad55584a0b61bdfa6ef21460ff86 (patch)
tree0d1de68bd8075f395525bb0e5688e9ba1d16d4ef /gnu
parent2297a9666d59394f5c7b5ce52e853caa14ddd86c (diff)
downloadFreeBSD-src-6adf1d592649ad55584a0b61bdfa6ef21460ff86.zip
FreeBSD-src-6adf1d592649ad55584a0b61bdfa6ef21460ff86.tar.gz
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.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile113
1 files changed, 67 insertions, 46 deletions
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile b/gnu/usr.bin/cc/cc_tools/Makefile
index e7cb497..fd50ecf 100644
--- a/gnu/usr.bin/cc/cc_tools/Makefile
+++ b/gnu/usr.bin/cc/cc_tools/Makefile
@@ -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
OpenPOWER on IntegriCloud