1139823Simp# $FreeBSD$
2200838Sluigi
398943Sluigi.include <bsd.own.mk>
498943Sluigi
598943SluigiCFLAGS+=	-I.
698943Sluigi
798943Sluigi.include "../Makefile.inc"
898943Sluigi
9116763SluigiCFLAGS+=	-g
1098943SluigiCFLAGS+=	-DGENERATOR_FILE -DHAVE_CONFIG_H
1198943Sluigi
12105775Smaxim# Override LIBIBERTY set by Makefile.inc, We use our own for
1398943Sluigi# build tools.
1498943SluigiLIBIBERTY=	libiberty.a
1598943Sluigi
1698943Sluigi.PATH:	${GCCDIR} ${GCCLIB}/libiberty
1798943Sluigi
1898943Sluigi#-----------------------------------------------------------------------
1998943Sluigi# Determine content of variables used by the target/host config files
2098943Sluigi
2198943Sluigi#
2298943Sluigi# The list of headers to go into tm.h
2398943Sluigi#
2498943SluigiTARGET_INC+=	options.h
2598943Sluigi.if ${TARGET_CPUARCH} == "amd64"
26172467SsilbyTARGET_INC+=	i386/biarch64.h
27172467Ssilby.endif
28172467Ssilby.if ${TARGET_CPUARCH} != "arm"
2998943SluigiTARGET_INC+=	${GCC_CPU}/${GCC_CPU}.h
30200601Sluigi.endif
3198943Sluigi.if ${TARGET_CPUARCH} == "i386" || ${TARGET_CPUARCH} == "amd64"
3298943SluigiTARGET_INC+=	${GCC_CPU}/unix.h
33225518SjhbTARGET_INC+=	${GCC_CPU}/att.h
34166479Salc.endif
3598943SluigiTARGET_INC+=	dbxelf.h
3698943SluigiTARGET_INC+=	elfos-undef.h
3798943SluigiTARGET_INC+=	elfos.h
3898943SluigiTARGET_INC+=	freebsd-native.h
39152928SumeTARGET_INC+=	freebsd-spec.h
40152928SumeTARGET_INC+=	freebsd.h
4198943Sluigi.if ${TARGET_CPUARCH} != "i386" && ${TARGET_CPUARCH} != "amd64"
4298943Sluigi. if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h)
4398943SluigiTARGET_INC+=	${GCC_CPU}/sysv4.h
44138642Scsjp. endif
45165648Spiso.endif
4698943Sluigi.if ${TARGET_CPUARCH} == "amd64"
4798943SluigiTARGET_INC+=	${GCC_CPU}/x86-64.h
4898943Sluigi.endif
49155201Scsjp.if ${TARGET_CPUARCH} == "arm" || ${TARGET_CPUARCH} == "mips"
50133600ScsjpTARGET_INC+=	${GCC_CPU}/elf.h
51129876Sphk.endif
52164033Srwatson.if ${TARGET_CPUARCH} == "arm"
5398943SluigiTARGET_INC+=	${GCC_CPU}/aout.h
54155201Scsjp.if ${MK_ARM_EABI} != "no"
5598943SluigiTARGET_INC+=	${GCC_CPU}/bpabi.h
5698943Sluigi.endif
5798943Sluigi.endif
5898943Sluigi.if ${TARGET_ARCH} == "powerpc64"
5998943SluigiTARGET_INC+=	${GCC_CPU}/biarch64.h
60188676SluigiTARGET_INC+=    ${GCC_CPU}/default64.h
6198943Sluigi.endif
6298943SluigiTARGET_INC+=	${GCC_CPU}/freebsd.h
63171173Smlaier.if ${TARGET_CPUARCH} == "amd64"
64243586SaeTARGET_INC+=	${GCC_CPU}/freebsd64.h
65185571Sbz.endif
66175659Srwatson.if ${TARGET_CPUARCH} == "arm"
6798943SluigiTARGET_INC+=	${GCC_CPU}/arm.h
6898943Sluigi.endif
6998943SluigiTARGET_INC+=	defaults.h
7098943Sluigi
7198943Sluigi.for H in ${TARGET_INC}
7298943Sluigi.for D in ${GCCDIR}/config ${GCCDIR} ${.CURDIR}
7398943Sluigi.if exists($D/$H)
74163069SbzTARGET_INC_FILES+=     $D/$H
75161767Sjhay.endif
7698943Sluigi.endfor
7798943Sluigi.endfor
7898943Sluigi
79164258Sbz#
80185571Sbz# gtyp includes.
81145246Sbrooks#
82145246Sbrookssrcdir=		${GCCDIR}
83148414SumeCPPLIB_H=	${GCCLIB}/libcpp/include/line-map.h \
84223073Sae		${GCCLIB}/libcpp/include/cpplib.h
85148414SumeSYMTAB_H=	${GCCLIB}/libcpp/include/symtab.h
86200027SumeCPP_ID_DATA_H=	${CPPLIB_H} ${GCCLIB}/libcpp/include/cpp-id-data.h
87148414SumeHASHTAB_H=	${GCCLIB}/include/hashtab.h
88145246SbrooksSPLAY_TREE_H=	${GCCLIB}/include/splay-tree.h
89243401Sglebiusout_file=	${srcdir}/config/${GCC_CPU}/${GCC_CPU}.c
90243401Sglebiustm_file_list=	${TARGET_INC_FILES}
9199475Sluigihost_xm_file_list= ${.CURDIR}/auto-host.h ${GCCLIB}/include/ansidecl.h
9299475SluigiGTFILES_SRCDIR=	${srcdir}
93188580Sluigi
94163606Srwatson# Copied unchanged from gcc/Makefile.in
95188580SluigiGTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \
96163606Srwatson  $(CPP_ID_DATA_H) $(host_xm_file_list) \
97101628Sluigi  $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
98200601Sluigi  $(srcdir)/coverage.c $(srcdir)/rtl.h \
99200601Sluigi  $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/function.h $(srcdir)/libfuncs.h $(SYMTAB_H) \
100101628Sluigi  $(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
10198943Sluigi  $(srcdir)/ipa-reference.h $(srcdir)/output.h \
102200601Sluigi  $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/cgraph.h \
103215701Sdim  $(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \
104200601Sluigi  $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
105195699Srwatson  $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-inline.c \
106215701Sdim  $(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
107200601Sluigi  $(srcdir)/dojump.c $(srcdir)/tree-profile.c \
108200601Sluigi  $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
109225030Sbz  $(srcdir)/function.c $(srcdir)/except.h \
110225030Sbz  $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
111225030Sbz  $(srcdir)/profile.c $(srcdir)/regclass.c \
112191932Sjhb  $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \
113191932Sjhb  $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
114191932Sjhb  $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
115191932Sjhb  $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
116191932Sjhb  $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parser.c \
11798943Sluigi  $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
118200601Sluigi  $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \
119220878Sbz  $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-propagate.c \
120193859Soleg  $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \
121234597Smelifaro  $(srcdir)/tree-chrec.h $(srcdir)/tree-vect-generic.c \
122234597Smelifaro  $(srcdir)/tree-ssa-operands.h $(srcdir)/tree-ssa-operands.c \
123234597Smelifaro  $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
124234597Smelifaro  $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \
125130363Scsjp  $(srcdir)/tree-ssa-structalias.c \
126200601Sluigi  $(srcdir)/c-pragma.h $(srcdir)/omp-low.c \
127200601Sluigi  $(srcdir)/targhooks.c $(srcdir)/cgraphunit.c $(out_file) \
128200601Sluigi
129200601Sluigi# The list of frontend directories to look into
130200601SluigiGTFILES_LANG_DIR_NAMES=
131200601Sluigi
132200601Sluigi.if ${MK_CXX} != "no"
13398943SluigiGTFILES_LANG_DIR_NAMES+=	cp
134200601Sluigi.endif
135200601Sluigi
136200601Sluigi# The list of language specific files for gengtype
137200601Sluigi.for L in ${GTFILES_LANG_DIR_NAMES} c
138200601Sluigi.if exists(${GCCDIR}/$L-config-lang.in)
139200601Sluigi# Source the language config file
140200601SluigiL_GTFILES!=	sh -c '. ${GCCDIR}/$L-config-lang.in; echo $$gtfiles'
141200601Sluigi.else
142200601SluigiL_GTFILES!=	sh -c '. ${GCCDIR}/$L/config-lang.in; echo $$gtfiles'
143195699Srwatson.endif
14498943Sluigi.for F in ${L_GTFILES}
145255395StrocinyGTFILES_FILES+=	$F
146255395StrocinyGTFILES_LANGS+= $L
147176669Spiso.endfor
148200580Sluigi.endfor
149176669SpisoGTFILES+=	${GTFILES_FILES}
150176669Spiso
151176669Spiso#
152176669Spiso# Tree definition files.
15398943Sluigi#
15498943SluigiTREE_DEF_FILES=
155204591Sluigi
156234597Smelifaro.if ${MK_CXX} != "no"
157204591SluigiTREE_DEF_FILES+=	cp/cp-tree.def
158204591Sluigi.endif
159204591Sluigi
16098943Sluigi#
161200601Sluigi# Option files.
162200601Sluigi#
163200601SluigiOPT_FILES=	c.opt common.opt
164195699Srwatson
165195862Sjulian.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt)
166195862SjulianOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt
167195699Srwatson.endif
168195862Sjulian
169195862Sjulian.if exists(${.CURDIR}/${GCC_CPU}-freebsd.opt)
170195699SrwatsonOPT_FILES+=	${.CURDIR}/${GCC_CPU}-freebsd.opt
171195699Srwatson.endif
172186048Sbz
173182818Srik.if ${TARGET_CPUARCH} == "powerpc"
174204591SluigiOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/sysv4.opt
175195862Sjulian.endif
176234597Smelifaro
177234597Smelifaro.if ${TARGET_CPUARCH} == "sparc64"
178234597SmelifaroOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/long-double-switch.opt
179191932Sjhb.endif
180195862Sjulian
181195862Sjulian.if exists(${.CURDIR}/freebsd.opt)
182191932SjhbOPT_FILES+=	${.CURDIR}/freebsd.opt
183234597Smelifaro.endif
184200838Sluigi
185200838Sluigi#-----------------------------------------------------------------------
186200838Sluigi# Build rules for header files and generator tools
187200040Sluigi
188195862Sjulian# Host config
189195862Sjulianconfig.h:
190195862Sjulian	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
191195862Sjulian	HEADERS="auto-host.h ansidecl.h" \
192195862Sjulian	DEFINES="" \
193195862Sjulian	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
194225030Sbz
195225030SbzGENSRCS+=	config.h
196225030SbzCLEANFILES+=	cs-config.h
197200040Sluigi
19898943Sluigi# Build config
199204591Sluigibconfig.h:
200204591Sluigi	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
201187821Sluigi	HEADERS="auto-host.h ansidecl.h" \
20298943Sluigi	DEFINES="" \
203200580Sluigi	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
204149020Sbz.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
205200601Sluigi	echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET}
206145093Sbrooks.endif
207145093Sbrooks
20898943SluigiGENSRCS+=	bconfig.h
209145093SbrooksCLEANFILES+=	cs-bconfig.h
210145093Sbrooks
211164258Sbz# tconfig.h
212145093Sbrookstconfig.h:
213145565Sbrooks	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
214145246Sbrooks	HEADERS="auto-host.h ansidecl.h" \
21598943Sluigi	DEFINES="USED_FOR_TARGET" \
21699622Sluigi	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
217145565Sbrooks
21898943SluigiGENSRCS+=	tconfig.h
219145093SbrooksCLEANFILES+=	cs-tconfig.h
22098943Sluigi# Options
22198943Sluigioptionlist: ${OPT_FILES}
22298943Sluigi	LC_ALL=C awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET}
22398943Sluigi
22498943Sluigioptions.h:	optionlist
22598943Sluigi	LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
22698943Sluigi	    -f ${GCCDIR}/opth-gen.awk \
22798943Sluigi		< ${.ALLSRC} > ${.TARGET}
228145565Sbrooks
22998943Sluigioptions.c:	optionlist
230145093Sbrooks	LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
231145093Sbrooks	    -f ${GCCDIR}/optc-gen.awk \
23298943Sluigi		-v header_name="config.h system.h coretypes.h tm.h" \
23398943Sluigi		< ${.ALLSRC} > ${.TARGET}
23498943SluigiGENONLY+=	optionlist options.h options.c
23598943Sluigi
23698943Sluigi# Target machine config
23798943Sluigitm.h:
23898943Sluigi	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
23998943Sluigi	HEADERS="${TARGET_INC}" \
24098943Sluigi	DEFINES="" \
24198943Sluigi	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
24298943Sluigi.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
24398943Sluigi	echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET}
24498943Sluigi.endif
24598943Sluigi
24698943SluigiGENSRCS+=	tm.h
24798943SluigiCLEANFILES+=	cs-tm.h
24898943Sluigi
24998943Sluigi# Target machine protos/preds.
25098943Sluigitm_p.h:
25198943Sluigi	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
25298943Sluigi	HEADERS="${GCC_CPU}/${GCC_CPU}-protos.h tm-preds.h" \
25398943Sluigi	DEFINES="" \
25498943Sluigi	/bin/sh ${GCCDIR}/mkconfig.sh tm_p.h
25598943Sluigi
25698943SluigiGENSRCS+=	tm_p.h
25798943SluigiCLEANFILES+=	cs-tm_p.h
25898943Sluigi
25998943Sluigi# gencheck
26098943Sluigigencheck.h: ${TREE_DEF_FILES}
26198943Sluigi.for F in ${TREE_DEF_FILES}
26298943Sluigi	echo "#include \"$F\""					>> ${.TARGET}
26398943Sluigi.endfor
26498943Sluigi	touch ${.TARGET}
26598943Sluigi
26698943SluigiGENSRCS+=	gencheck.h
26798943Sluigi
26898943Sluigi
26998943Sluigi# Source header for gtyp generator.
27098943Sluigigtyp-gen.h:	${GTFILES}
27198943Sluigi	echo "/* This file is machine generated.  Do not edit.  */" > ${.TARGET}
27298943Sluigi	echo "static const char * const srcdir = "		>> ${.TARGET}
27398943Sluigi	echo "\"$(GTFILES_SRCDIR)\";"				>> ${.TARGET}
27498943Sluigi	echo "static const char * const lang_files[] = {"	>> ${.TARGET}
27598943Sluigi.for F in ${GTFILES_FILES}
27698943Sluigi	echo "\"$F\", "						>> ${.TARGET}
27798943Sluigi.endfor
27898943Sluigi	echo "NULL};"						>> ${.TARGET}
27998943Sluigi	echo "static const char * const langs_for_lang_files[] = {">> ${.TARGET}
28098943Sluigi.for F in ${GTFILES_LANGS}
28198943Sluigi	echo "\"$F\", "						>> ${.TARGET}
28298943Sluigi.endfor
28398943Sluigi	echo "NULL};"						>> ${.TARGET}
28498943Sluigi	echo "static const char * const all_files[] = {"	>> ${.TARGET}
28598943Sluigi.for F in ${GTFILES}
28698943Sluigi	echo "\"$F\", "						>> ${.TARGET}
28798943Sluigi.endfor
28898943Sluigi	echo "NULL};"						>> ${.TARGET}
28998943Sluigi	echo "static const char * const lang_dir_names[] = {"	>> ${.TARGET}
29098943Sluigi.for F in c ${GTFILES_LANG_DIR_NAMES}
29198943Sluigi	echo "\"$F\", "						>> ${.TARGET}
29298943Sluigi.endfor
29398943Sluigi	echo "NULL};"						>> ${.TARGET}
29498943Sluigi
29598943SluigiGENSRCS+=	gtyp-gen.h
29698943Sluigi
29798943Sluigi# Version header for gcov
29898943Sluigigcov-iov.h:
29998943Sluigi	echo "#define GCOV_VERSION ((gcov_unsigned_t)0x34303270)" >> ${.TARGET}
30098943Sluigi
30198943SluigiGENSRCS+=	gcov-iov.h
30298943Sluigi
30398943Sluigi# Multilib config file
30498943Sluigimultilib.h:
30598943Sluigi.if ${TARGET_ARCH} == "powerpc64" || ${TARGET_ARCH} == "amd64"
30698943Sluigi	echo 'static const char *const multilib_raw[] = { \
307145093Sbrooks	    ". !m64 !m32;", \
30898943Sluigi	    "64:../lib m64 !m32;", \
30998943Sluigi	    "32:../lib32 !m64 m32;", NULL };'			> ${.TARGET}
31098943Sluigi	echo 'static const char *multilib_options = "m64/m32";'	>> ${.TARGET}
31198943Sluigi	echo 'static const char *const multilib_matches_raw[] = { \
31298943Sluigi	    "m64 m64;", "m32 m32;", NULL };'			>> ${.TARGET}
31398943Sluigi.else
31498943Sluigi	echo 'static const char *const multilib_raw[] = { \
31598943Sluigi	    ". ;", NULL };'					> ${.TARGET}
31698943Sluigi	echo 'static const char *multilib_options = "";'	>> ${.TARGET}
31798943Sluigi	echo 'static const char *const multilib_matches_raw[] = { \
31898943Sluigi	    NULL };'						>> ${.TARGET}
31998943Sluigi.endif
32098943Sluigi	echo 'static const char *multilib_extra = "";'		>> ${.TARGET}
32198943Sluigi	echo 'static const char *const multilib_exclusions_raw[] = { \
32298943Sluigi	    NULL };'						>> ${.TARGET}
32398943Sluigi
32498943SluigiGENSRCS+=	multilib.h
32598943Sluigi
32698943Sluigiconfigargs.h:
32798943Sluigi	echo 'static const char configuration_arguments[] ='	> ${.TARGET}
32898943Sluigi	echo '	"FreeBSD/${TARGET_ARCH} system compiler";'	>> ${.TARGET}
32998943Sluigi	echo 'static const char thread_model[] = "posix";'	>> ${.TARGET}
33098943Sluigi	echo 'static const struct {'				>> ${.TARGET}
33198943Sluigi	echo '	const char *name, *value;'			>> ${.TARGET}
33298943Sluigi	echo '} configure_default_options[] = {'		>> ${.TARGET}
33398943Sluigi	echo '	{ "NULL", "NULL" } };'				>> ${.TARGET}
33498943Sluigi
33598943SluigiGENSRCS+=	configargs.h
33698943Sluigi
33798943Sluigi# Language spec files
33898943Sluigispecs.h:
33998943Sluigi	echo '#include "cp/lang-specs.h"'			> ${.TARGET}
34098943Sluigi
34198943SluigiGENSRCS+=	specs.h
34298943Sluigi
34398943Sluigigstdint.h:
34498943Sluigi	echo '#include "sys/types.h"'				> ${.TARGET}
34598943Sluigi	echo '#include "sys/stdint.h"'				>> ${.TARGET}
34698943Sluigi
34798943SluigiGENSRCS+=	gstdint.h
34898943Sluigi
34998943Sluigi# Linked headers
35098943Sluigigthr-default.h: ${GCCDIR}/gthr-posix.h
35198943Sluigi	ln -sf ${.ALLSRC} ${.TARGET}
35298943Sluigi
353234597SmelifaroGENSRCS+=	gthr-default.h
35498943Sluigi
35598943Sluigi.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
35698943Sluigiunwind.h: ${GCCDIR}/config/arm/unwind-arm.h
35798943Sluigi.else
35899475Sluigiunwind.h: ${GCCDIR}/unwind-generic.h
359234597Smelifaro.endif
360234597Smelifaro
361234597Smelifarounwind.h:
36298943Sluigi	ln -sf ${.ALLSRC} ${.TARGET}
363121816Sbrooks
364121816SbrooksGENSRCS+=	unwind.h
365121816Sbrooks
366121816Sbrooks#
367121816Sbrooks# gtype gunk
368121816Sbrooks#
369121816Sbrooksgengtype-lex.c:	gengtype-lex.l
37098943Sluigi	flex -ogengtype-lex.c ${.ALLSRC}
371210120Sluigi
37298943Sluigigengtype-yacc.h: gengtype-yacc.y
37398943Sluigi	yacc -d -o gengtype-yacc.c ${.ALLSRC}
374195023Srwatson
37598943Sluigigengtype-yacc.c: gengtype-yacc.h
37698943Sluigi
37798943Sluigigengtype-yacc+%DIKED.c: gengtype-yacc.c
37898943Sluigi	cat    ${.ALLSRC} > ${.TARGET}
379191288Srwatson	sed -e "s/xmalloc/malloc/g" \
380195023Srwatson	    -e "s/xrealloc/realloc/g" \
38198943Sluigi	    -e "s/malloc/xmalloc/g" \
382191288Srwatson	    -e "s/realloc/xrealloc/g" \
38398943Sluigi	    ${.ALLSRC} > ${.TARGET}
384195023Srwatson
385204591SluigiGENSRCS+= gengtype-lex.c gengtype-yacc.h gengtype-yacc+%DIKED.c
38698943SluigiCLEANFILES+= gengtype-yacc.c
38798943Sluigi
38898943Sluigigengtype: gengtype.o gengtype-yacc+%DIKED.o gengtype-lex.o errors.o \
38998943Sluigi	  ${LIBIBERTY}
390112250Scjc	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
391128575Sandre
392128575Sandregtype-desc.h:	gengtype
393128575Sandre	./gengtype
394112250Scjc	touch ${.TARGET}
395116763Sluigi
396200601Sluigigtype-desc.c:	gtype-desc.h
397200601Sluigi
398200601SluigiGENONLY+=	gtype-desc.c gtype-desc.h
399200601SluigiCLEANFILES+=	gt-*.h gtype-*.h
400200601Sluigi
401200601Sluigi#
402128575Sandre# Generator tools.
403112250Scjc#
404112250Scjc.for F in check checksum genrtl modes
405128575Sandregen$F:	gen$F.o errors.o ${LIBIBERTY}
406112250Scjc	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
407200601Sluigi.endfor
408200601Sluigi
409200601Sluigi.for F in attr attrtab automata codes conditions config constants emit \
410112250Scjc	extract flags  opinit output peep preds recog
411112250Scjcgen$F:	gen$F.o rtl.o read-rtl.o ggc-none.o vec.o min-insn-modes.o \
412178888Sjulian	gensupport.o print-rtl.o errors.o ${LIBIBERTY}
413112250Scjc	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} -lm
414204591Sluigi.endfor
415204591Sluigi
416204591Sluigigencondmd:	gencondmd.o
417123000Sandre	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
418112250Scjc
419112250Scjc#
420123000Sandre# Generated .md files.
421123000Sandre#
422112250Scjcinsn-conditions.md:	gencondmd
423123000Sandre	./gencondmd > ${.TARGET}
424123000SandreGENSRCS+=	insn-conditions.md
425123000Sandre
426186119Sqingli#
427112250Scjc# Generated header files.
428122922Sandre#
429112250Scjc
430128575Sandre.for F in constants
431154769Soleginsn-$F.h:	gen$F ${MD_FILE}
432154769Soleg	./gen$F ${MD_FILE} > ${.TARGET}
433154769SolegGENSRCS+=	insn-$F.h
434154769Soleg.endfor
435154769Soleg
436154769Soleg.for F in attr codes config flags
437154769Soleginsn-$F.h:	gen$F ${MD_FILE} insn-conditions.md
438154769Soleg	./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
439122922SandreGENSRCS+=	insn-$F.h
440122922Sandre.endfor
441122922Sandre
442128575Sandre# Header files with irregular names.
443128575Sandregenrtl.h:	gengenrtl
444128575Sandre	./gengenrtl -h > ${.TARGET}
445128575SandreGENSRCS+=	genrtl.h
446128575Sandre
447128575Sandretm-preds.h:	genpreds
448128575Sandre	./genpreds -h ${MD_FILE} > ${.TARGET}
449128575SandreGENSRCS+=	tm-preds.h
450132510Sandre
451132510Sandretm-constrs.h:	genpreds
452132510Sandre	./genpreds -c ${MD_FILE} > ${.TARGET}
453132510SandreGENSRCS+=	tm-constrs.h
454132510Sandre
455132510Sandretree-check.h:	gencheck
456128575Sandre	./gencheck > ${.TARGET}
457122922SandreGENSRCS+=	tree-check.h
458116981Sluigi
459204591Sluigiinsn-modes.h:	genmodes
460112250Scjc	./genmodes -h > ${.TARGET}
461112250ScjcGENSRCS+=	insn-modes.h
462145266Sphk
463145246Sbrooks#
464145246Sbrooks# Generated source files.
465145246Sbrooks#
466145246Sbrooks.for F in attrtab automata emit extract opinit output peep preds recog
467145246Sbrooksinsn-$F.c:	gen$F ${MD_FILE} insn-conditions.md
468145246Sbrooks	./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
469147415SmlaierGENONLY+=	insn-$F.c
470145246Sbrooks.endfor
471112250Scjc
472145246Sbrooks.for F in conditions
473145246Sbrooksinsn-$F.c:	gen$F ${MD_FILE}
474145246Sbrooks	./gen$F ${MD_FILE} > ${.TARGET}
475147415SmlaierGENSRCS+=	insn-$F.c
476147415Smlaier.endfor
477147415Smlaier
478147415Smlaier# Source files with irregular names.
479147415Smlaierinsn-modes.c:	genmodes
480145246Sbrooks	./genmodes > ${.TARGET}
481145246SbrooksGENONLY+=	insn-modes.c
482145246Sbrooks
483145246Sbrooksmin-insn-modes.c:	genmodes
484145246Sbrooks	./genmodes -m > ${.TARGET}
485145246SbrooksGENSRCS+=	min-insn-modes.c
486147415Smlaier
487147415Smlaiergenrtl.c:	gengenrtl
488147415Smlaier	./gengenrtl > ${.TARGET}
489147415SmlaierGENONLY+=	genrtl.c
490145246Sbrooks
491191288Srwatsongencondmd.c:	genconditions ${MD_FILE}
492195023Srwatson	./genconditions ${MD_FILE} > ${.TARGET}
493191338SrwatsonGENSRCS+=	gencondmd.c
494147415Smlaier
495147415Smlaier#-----------------------------------------------------------------------
496147415Smlaier# Build tools.
497147415Smlaier
498147415SmlaierGNTOOLS+=	genattr genattrtab genautomata gencodes gencheck genchecksum \
499191288Srwatson		genconditions gencondmd genconfig genconstants genemit \
500195023Srwatson		genextract genflags gengenrtl gengtype genmodes genopinit \
501147415Smlaier		genoutput genpeep genpreds genrecog
502191288Srwatson
503147415Smlaierall: ${GNTOOLS} ${GENSRCS} ${GENONLY}
504147415Smlaierbeforedepend: ${GENONLY}
505195023Srwatson
506191288Srwatson#
507147415Smlaier#-----------------------------------------------------------------------
508145246Sbrooks# Build 'pocket' libiberty exclusively for build tools use.
509145246Sbrooks
510145246SbrooksLIBIBERTY_SRCS=	choose-temp.c concat.c cp-demangle.c cp-demint.c cplus-dem.c \
511232292Sbz	dyn-string.c fibheap.c fopen_unlocked.c getpwd.c getruntime.c \
512145246Sbrooks	hashtab.c hex.c lbasename.c make-temp-file.c md5.c obstack.c \
513147418Smlaier	partition.c pex-unix.c physmem.c safe-ctype.c splay-tree.c xexit.c \
514147415Smlaier	xmalloc.c xmemdup.c xstrdup.c xstrerror.c
515145246SbrooksLIBIBERTY_OBJS=	${LIBIBERTY_SRCS:R:S/$/.o/g}
516147418Smlaier
517147418Smlaier.for _src in ${LIBIBERTY_SRCS}
518147415Smlaier${_src:R:S/$/.o/}: ${_src}
519147418Smlaier	${CC} -c -I ${.CURDIR}/../libiberty ${CFLAGS} -o ${.TARGET} ${.IMPSRC}
520147418Smlaier.endfor
521147418Smlaier
522145246Sbrooks${LIBIBERTY}: ${LIBIBERTY_OBJS}
523232292Sbz	@rm -f ${.TARGET}
524147418Smlaier	@${AR} ${ARFLAGS} ${.TARGET} `lorder ${LIBIBERTY_OBJS} | tsort -q`
525147418Smlaier	${RANLIB} ${.TARGET}
526147418SmlaierCLEANFILES+=	${LIBIBERTY} ${LIBIBERTY_OBJS}
527152288Ssuz
528152288Ssuz
529152288Ssuz#-----------------------------------------------------------------------
530152288Ssuz# Fixups.
531152288Ssuz
532152288Ssuz# Set OBJS the same as bsd.prog.mk would do if we defined PROG.  We can't
533152288Ssuz# define PROG because we have multiple programs.
534152288Ssuz#
535147418SmlaierSRCS=		errors.c genattr.c genattrtab.c \
536147418Smlaier		genautomata.c gencheck.c genchecksum.c gencodes.c \
537147415Smlaier		genconditions.c genconfig.c genconstants.c genemit.c \
538147418Smlaier		genextract.c genflags.c gengenrtl.c gengtype.c genmodes.c \
539147418Smlaier		genopinit.c genoutput.c genpeep.c genpreds.c genrecog.c \
540147418Smlaier		gensupport.c ggc-none.c print-rtl.c read-rtl.c rtl.c \
541147418Smlaier		vec.c
542147418Smlaier
543147415SmlaierSRCS+=		${GENSRCS}
544147418SmlaierOBJS+=		${SRCS:N*.h:R:S/$/.o/g}
545147418SmlaierGENOBJS+=	${GENSRCS:N*.h:R:S/$/.o/g}
546147418SmlaierCLEANFILES+=	${GENSRCS} ${GENONLY} ${GENOBJS} ${GNTOOLS}
547147418Smlaier
548147418Smlaier#-----------------------------------------------------------------------
549147418Smlaier# Manual dependencies.
550147418Smlaier.if !exists(${DEPENDFILE})
551147418Smlaier.include  "Makefile.dep"
552147418Smlaier.endif
553147418Smlaier
554147415Smlaier.include <bsd.prog.mk>
555147418Smlaier# DO NOT DELETE
556145246Sbrooks