1b450dd39SJohn Marino.include "../Makefile.inc"
2b450dd39SJohn Marino.include "../../Makefile.langs"
3b450dd39SJohn Marino
4b450dd39SJohn MarinoNXCFLAGS+=	-DGENERATOR_FILE -I${.OBJDIR}
5b450dd39SJohn MarinoNXLDLIBS+=	-lm
6b450dd39SJohn Marino
7b450dd39SJohn MarinoMIC= sh ${GCCDIR}/move-if-change
8b450dd39SJohn Marino
9b450dd39SJohn MarinoBUILD_LIBS=	../libiberty/libiberty.na
10b450dd39SJohn MarinoBUILD_RTL= 	rtl.no \
11b450dd39SJohn Marino		read-rtl.no \
12b450dd39SJohn Marino		ggc-none.no \
13b450dd39SJohn Marino		vec.no \
14b450dd39SJohn Marino		min-insn-modes.no \
15b450dd39SJohn Marino		gensupport.no \
16b450dd39SJohn Marino		print-rtl.no
17b450dd39SJohn MarinoBUILD_MD=	read-md.no
18b450dd39SJohn MarinoBUILD_ERRORS=	errors.no
19b450dd39SJohn Marino
20b450dd39SJohn Marino
21b450dd39SJohn Marino${BUILD_RTL}: tm.h insn-modes.h gtype-desc.h insn-constants.h
22b450dd39SJohn Marino
23b450dd39SJohn Marinogenprogrtl = attr attr-common attrtab automata codes conditions config emit \
24b450dd39SJohn Marino	     extract flags opinit output peep preds recog
25b450dd39SJohn Marinogenprogmd  = $(genprogrtl) mddeps constants enums
26b450dd39SJohn Marinogenprogerr = $(genprogmd) genrtl modes gtype hooks
27b450dd39SJohn Marino
28b450dd39SJohn Marino# All these programs use the RTL reader ($(BUILD_RTL)).
29b450dd39SJohn Marino${genprogrtl:S/^/gen/g:S/$/.no/g}: ${BUILD_RTL}
30b450dd39SJohn Marino# All these programs use the MD reader
31b450dd39SJohn Marino${genprogmd:S/^/gen/g:S/$/.no/g}: ${BUILD_MD}
32b450dd39SJohn Marino# All these programs need to report errors.
33b450dd39SJohn Marino${genprogerr:S/^/gen/g:S/$/.no/g}: ${BUILD_ERRORS}
34b450dd39SJohn Marino
35b450dd39SJohn Marino.for f in ${genprogrtl}
36b450dd39SJohn Marinogen${f}.nx: ${BUILD_RTL}
37b450dd39SJohn Marino.endfor
38b450dd39SJohn Marino
39b450dd39SJohn Marino.for f in ${genprogmd}
40b450dd39SJohn Marinogen${f}.nx: ${BUILD_MD}
41b450dd39SJohn Marino.endfor
42b450dd39SJohn Marino
43b450dd39SJohn Marino.for f in ${genprogerr}
44b450dd39SJohn Marinogen${f}.nx: ${BUILD_ERRORS}
45b450dd39SJohn MarinoGENTOOLS+= gen${f}.nx
46b450dd39SJohn Marino.endfor
47b450dd39SJohn Marino
48b450dd39SJohn Marinogengtype.nx: gengtype-lex.no gengtype-parse.no gengtype-state.no version.no
49b450dd39SJohn Marino
50b450dd39SJohn Marinogenattrtab.o ggc-none.no vec.no: gtype-desc.h
51b450dd39SJohn Marino
52b450dd39SJohn MarinoGENTOOLS+= gencheck.nx gencondmd.nx gcov-iov.nx genchecksum.nx
53b450dd39SJohn Marino
54b450dd39SJohn Marino.for f in ${GENTOOLS}
55b450dd39SJohn Marino$f: ${f:.nx=.no} ${BUILD_LIBS}
56b450dd39SJohn Marino	${NXCC} ${NXCFLAGS} ${NXLDFLAGS} ${.ALLSRC:M*.n[oa]} ${NXLDLIBS} -o ${.TARGET}
57b450dd39SJohn Marino.endfor
58b450dd39SJohn Marino
59b450dd39SJohn Marinogencheck.no: tm.h insn-constants.h
60b450dd39SJohn Marinogencondmd.no: tree-check.h insn-constants.h
61b450dd39SJohn Marino
62b450dd39SJohn MarinoCLEANFILES+=	${GENTOOLS} ${GENTOOLS:.nx=.no}
63b450dd39SJohn MarinoCLEANFILES+=	gengtype-lex.c gengtype-lex.no gengtype-parse.no
64b450dd39SJohn MarinoCLEANFILES+=	gengtype-state.no version.no
65b450dd39SJohn MarinoCLEANFILES+=	${BUILD_RTL} ${BUILD_MD} ${BUILD_ERRORS}
66b450dd39SJohn Marino
67b450dd39SJohn Marino
68b450dd39SJohn MarinoMD_DEPS=	${md_file}
69b450dd39SJohn Marino
70b450dd39SJohn Marino_MIC: .USE
71b450dd39SJohn Marino	${MIC} ${.TARGET}.tmp ${.TARGET}
7264ed7155SJohn Marino_PL: .USE
73b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} > ${.TARGET}.tmp
7464ed7155SJohn Marino	${MIC} ${.TARGET}.tmp ${.TARGET}
7564ed7155SJohn Marino_MD: .USE
76b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} ${md_file} > ${.TARGET}.tmp
7764ed7155SJohn Marino	${MIC} ${.TARGET}.tmp ${.TARGET}
78b450dd39SJohn Marino
79b450dd39SJohn Marinosimple_generated_h = insn-attr.h insn-codes.h insn-config.h insn-flags.h \
80b450dd39SJohn Marino		     insn-attr-common.h
81b450dd39SJohn Marino
82b450dd39SJohn Marinosimple_generated_c = insn-attrtab.c insn-automata.c insn-emit.c \
83b450dd39SJohn Marino		     insn-extract.c insn-opinit.c insn-output.c \
84b450dd39SJohn Marino		     insn-peep.c insn-recog.c
85b450dd39SJohn Marino
86b450dd39SJohn Marino.for f in ${simple_generated_h} ${simple_generated_c}
87b450dd39SJohn Marino.for p in gen${f:R:S/^insn-//}.nx
88b450dd39SJohn Marino$f: $p ${MD_DEPS} insn-conditions.md _MIC
89b450dd39SJohn Marino	${.OBJDIR}/$p ${md_file} insn-conditions.md > ${.TARGET}.tmp
90b450dd39SJohn Marino.endfor
91b450dd39SJohn Marino.endfor
92b450dd39SJohn Marino
93b450dd39SJohn Marinoinsn-constants.h: genconstants.nx ${MD_DEPS} _MD
94b450dd39SJohn Marinotree-check.h: gencheck.nx _PL
95b450dd39SJohn Marinogencondmd.c: genconditions.nx ${MD_DEPS} tm-preds.h tm-constrs.h _MD
96b450dd39SJohn Marinoinsn-conditions.md: gencondmd.nx _PL
97b450dd39SJohn Marinogenrtl.c: gengenrtl.nx _PL
98b450dd39SJohn Marinogenrtl.h: gengenrtl.nx _MIC
99b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -h > ${.TARGET}.tmp
100b450dd39SJohn Marinoinsn-modes.c: genmodes.nx _PL
101b450dd39SJohn Marinoinsn-modes.h: genmodes.nx _MIC
102b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -h > ${.TARGET}.tmp
103b450dd39SJohn Marinomin-insn-modes.c: genmodes.nx _MIC
104b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -m > ${.TARGET}.tmp
105b450dd39SJohn Marinoinsn-preds.c: genpreds.nx _MD
106b450dd39SJohn Marinoinsn-enums.c: genenums.nx _MD
107b450dd39SJohn Marinotm-preds.h: genpreds.nx _MIC
108b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -h ${md_file} > ${.TARGET}.tmp
109b450dd39SJohn Marinotm-constrs.h: genpreds.nx _MIC
110b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -c ${md_file} > ${.TARGET}.tmp
111b450dd39SJohn Marinogtype.state: gengtype.nx gtyp-input.list ${GTFILES:N[*]} _MIC
112b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -S ${GCCDIR}/gcc -I ${.ALLSRC:M*.list} \
113b450dd39SJohn Marino	  -w gtype.state.tmp
114b450dd39SJohn Marinogtype-desc.c gtype-desc.h: gengtype.nx gtype.state
115b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} -r gtype.state
116b450dd39SJohn Marinogcov-iov.h: gcov-iov.nx BASE-VER _MIC
117b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} "$$(cat ${.ALLSRC:M*BASE-VER})" "" > ${.TARGET}.tmp
118b450dd39SJohn Marinotarget-hooks-def.h: genhooks.nx _MIC
119b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} "Target Hook" > ${.TARGET}.tmp
120b450dd39SJohn Marinoc-family/c-target-hooks-def.h: genhooks.nx _MIC
121b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} "C Target Hook" > ${.TARGET}.tmp
122b450dd39SJohn Marinocommon/common-target-hooks-def.h: genhooks.nx _MIC
123b450dd39SJohn Marino	${.OBJDIR}/${.ALLSRC:M*.nx} "Common Target Hook" > ${.TARGET}.tmp
124b450dd39SJohn Marino
125b450dd39SJohn Marinogtyp-input.list: _MIC
126b450dd39SJohn Marino	rm -f ${.TARGET}.tmp
127b450dd39SJohn Marino	for f in ${GTFILES}; do \
128b450dd39SJohn Marino		echo "$$f" >> ${.TARGET}.tmp; \
129b450dd39SJohn Marino	done
130b450dd39SJohn Marino
131b450dd39SJohn MarinoGENFILES= \
132b450dd39SJohn Marino	${simple_generated_h} ${simple_generated_c} \
133b450dd39SJohn Marino	insn-constants.h tree-check.h gencondmd.c insn-conditions.md \
134b450dd39SJohn Marino	genrtl.c genrtl.h insn-modes.c insn-modes.h min-insn-modes.c \
135b450dd39SJohn Marino	insn-preds.c tm-preds.h tm-constrs.h gtype-desc.c gtype-desc.h \
136b450dd39SJohn Marino	gcov-iov.h insn-enums.c target-hooks-def.h \
137b450dd39SJohn Marino	c-family/c-target-hooks-def.h \
138b450dd39SJohn Marino	common/common-target-hooks-def.h
139b450dd39SJohn Marino
140b450dd39SJohn MarinoCLEANFILES+=	${GENFILES} gtyp-input.list gtype.state
141b450dd39SJohn MarinoCLEANFILES+=	gt-* gtype-*.h
142b450dd39SJohn MarinoCLEANDIRS+=	common c-family
143b450dd39SJohn Marino
144b450dd39SJohn Marinodossier:
145b450dd39SJohn Marino	mkdir -p common c-family
146b450dd39SJohn Marino
147*11900578Szrj.if defined(LIBGCC_ONLY)
148*11900578Szrjgenfiles: ${GENTOOLS:Mgcov-iov*} ${GENFILES:Mgcov-io*}
149*11900578Szrj.else
150b450dd39SJohn Marinogenfiles: ${GENTOOLS} ${GENFILES}
151*11900578Szrj.endif
152b450dd39SJohn Marinodepend all: dossier genfiles
153b450dd39SJohn Marino
154b450dd39SJohn Marino.include <bsd.obj.mk>
155b450dd39SJohn Marino.include <bsd.dep.mk>
1564d637376Szrj.include <bsd.sys.mk>
157