aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin/cc
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1998-04-23 16:30:51 +0000
committerBruce Evans <bde@FreeBSD.org>1998-04-23 16:30:51 +0000
commit93dce16147cbbc78235b8f02b0de3ca14b206134 (patch)
tree45c92693722ac35926df64020ae680205230dd15 /gnu/usr.bin/cc
parent01404206b9c50d3b30f70344fbc3ca09d3e1244e (diff)
downloadsrc-93dce16147cbbc78235b8f02b0de3ca14b206134.tar.gz
src-93dce16147cbbc78235b8f02b0de3ca14b206134.zip
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.
Notes
Notes: svn path=/head/; revision=35402
Diffstat (limited to 'gnu/usr.bin/cc')
-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 e7cb497cd780..fd50ecf9e91d 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