Makefile revision 169828
138494Sobrien# $FreeBSD: head/gnu/usr.bin/cc/cc_tools/Makefile 169828 2007-05-21 12:04:16Z ru $
238494Sobrien
338494Sobrien.include <bsd.own.mk>
438494Sobrien
538494SobrienCFLAGS+=	-I.
638494Sobrien
738494Sobrien.include "../Makefile.inc"
838494Sobrien
9310490ScyCFLAGS+=	-g
1038494SobrienCFLAGS+=	-DGENERATOR_FILE -DHAVE_CONFIG_H
1138494Sobrien
1238494Sobrien# Override LIBIBERTY set by Makefile.inc, We use our own for
1338494Sobrien# build tools.
1438494SobrienLIBIBERTY=	libiberty.a
15310490Scy
16174294Sobrien.PATH:	${GCCDIR} ${GCCLIB}/libiberty
17174294Sobrien
18174294Sobrien#-----------------------------------------------------------------------
19174294Sobrien# Determine content of variables used by the target/host config files
20310490Scy
2138494Sobrien#
2238494Sobrien# The list of headers to go into tm.h
2338494Sobrien#
24310490ScyTARGET_INC+=	options.h
2538494Sobrien.if ${TARGET_ARCH} == "amd64"
2638494SobrienTARGET_INC+=	i386/biarch64.h
2738494Sobrien.endif
2838494Sobrien.if ${TARGET_ARCH} != "arm"
2938494SobrienTARGET_INC+=	${GCC_CPU}/${GCC_CPU}.h
3038494Sobrien.endif
3138494Sobrien.if ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "amd64"
3241142SobrienTARGET_INC+=	${GCC_CPU}/unix.h
3341142SobrienTARGET_INC+=	${GCC_CPU}/att.h
3451292Sobrien.endif
3551292SobrienTARGET_INC+=	dbxelf.h
3651292SobrienTARGET_INC+=	elfos.h
3751292SobrienTARGET_INC+=	freebsd-native.h
38310490ScyTARGET_INC+=	freebsd-spec.h
3938494SobrienTARGET_INC+=	freebsd.h
4038494Sobrien.if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64"
4138494Sobrien.if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h)
4238494SobrienTARGET_INC+=	${GCC_CPU}/sysv4.h
43310490Scy.endif
4438494Sobrien.endif
4538494Sobrien.if ${TARGET_ARCH} == "amd64"
4638494SobrienTARGET_INC+=	${GCC_CPU}/x86-64.h
4738494SobrienTARGET_INC+=	${GCC_CPU}/freebsd.h
4838494SobrienTARGET_INC+=	${GCC_CPU}/freebsd64.h
4938494SobrienTARGET_INC+=	freebsd64-fix.h
5038494Sobrien.elif ${TARGET_ARCH} == "arm"
5138494SobrienTARGET_INC+=	${GCC_CPU}/elf.h
5238494SobrienTARGET_INC+=	${GCC_CPU}/aout.h
5338494SobrienTARGET_INC+=	${GCC_CPU}/freebsd.h
5438494SobrienTARGET_INC+=	${GCC_CPU}/arm.h
55310490Scy.else
5638494SobrienTARGET_INC+=	${GCC_CPU}/freebsd.h
5738494Sobrien.endif
5838494SobrienTARGET_INC+=	defaults.h
5938494Sobrien
6038494Sobrien.for H in ${TARGET_INC}
6138494Sobrien.for D in ${GCCDIR}/config ${GCCDIR} ${.CURDIR}
6238494Sobrien.if exists($D/$H)
6338494SobrienTARGET_INC_FILES+=     $D/$H
6438494Sobrien.endif
6538494Sobrien.endfor
6638494Sobrien.endfor
6738494Sobrien
6838494Sobrien#
6938494Sobrien# gtyp includes.
7038494Sobrien#
71310490Scysrcdir=		${GCCDIR}
7238494SobrienCPPLIB_H=	${GCCLIB}/libcpp/include/line-map.h \
7338494Sobrien		${GCCLIB}/libcpp/include/cpplib.h
7438494SobrienSYMTAB_H=	${GCCLIB}/libcpp/include/symtab.h
75310490ScyCPP_ID_DATA_H=	${CPPLIB_H} ${GCCLIB}/libcpp/include/cpp-id-data.h
7638494SobrienHASHTAB_H=	${GCCLIB}/include/hashtab.h
7738494SobrienSPLAY_TREE_H=	${GCCLIB}/include/splay-tree.h
7838494Sobrienout_file=	${srcdir}/config/${GCC_CPU}/${GCC_CPU}.c
7938494Sobrientm_file_list=	${TARGET_INC_FILES}
8038494Sobrienhost_xm_file_list= ${.CURDIR}/auto-host.h ${GCCLIB}/include/ansidecl.h
8138494SobrienGTFILES_SRCDIR=	${srcdir}
8238494Sobrien
8338494Sobrien# Copied unchanged from gcc/Makefile.in
8438494SobrienGTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \
8538494Sobrien  $(CPP_ID_DATA_H) $(host_xm_file_list) \
8638494Sobrien  $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
8782794Sobrien  $(srcdir)/coverage.c $(srcdir)/rtl.h \
8882794Sobrien  $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/function.h $(srcdir)/libfuncs.h $(SYMTAB_H) \
89310490Scy  $(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
9038494Sobrien  $(srcdir)/ipa-reference.h $(srcdir)/output.h \
9138494Sobrien  $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/cgraph.h \
9238494Sobrien  $(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \
9338494Sobrien  $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
9438494Sobrien  $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-inline.c \
9538494Sobrien  $(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
9638494Sobrien  $(srcdir)/dojump.c $(srcdir)/tree-profile.c \
9738494Sobrien  $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
9838494Sobrien  $(srcdir)/function.c $(srcdir)/except.h \
9941142Sobrien  $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
10041142Sobrien  $(srcdir)/profile.c $(srcdir)/regclass.c \
10141142Sobrien  $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \
102310490Scy  $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
10338494Sobrien  $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
10438494Sobrien  $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
10538494Sobrien  $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parser.c \
10638494Sobrien  $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
107310490Scy  $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \
108310490Scy  $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-propagate.c \
10938494Sobrien  $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \
110310490Scy  $(srcdir)/tree-chrec.h $(srcdir)/tree-vect-generic.c \
11138494Sobrien  $(srcdir)/tree-ssa-operands.h $(srcdir)/tree-ssa-operands.c \
11238494Sobrien  $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
11338494Sobrien  $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \
11438494Sobrien  $(srcdir)/tree-ssa-structalias.c \
11538494Sobrien  $(srcdir)/c-pragma.h $(srcdir)/omp-low.c \
11638494Sobrien  $(srcdir)/targhooks.c $(srcdir)/cgraphunit.c $(out_file) \
11738494Sobrien
11838494Sobrien# The list of frontend directories to look into
11938494SobrienGTFILES_LANG_DIR_NAMES=
12051292Sobrien
12151292Sobrien.if ${MK_CXX} != "no"
12251292SobrienGTFILES_LANG_DIR_NAMES+=	cp
12351292Sobrien.endif
12451292Sobrien
12551292Sobrien.if ${MK_OBJC} != "no"
12651292SobrienGTFILES_LANG_DIR_NAMES+=	objc
12751292Sobrien.endif
12851292Sobrien
12982794Sobrien# The list of language specific files for gengtype
13082794Sobrien.for L in ${GTFILES_LANG_DIR_NAMES} c
13182794Sobrien.if exists(${GCCDIR}/$L-config-lang.in)
13282794Sobrien# Source the language config file
13382794SobrienL_GTFILES!=	sh -c '. ${GCCDIR}/$L-config-lang.in; echo $$gtfiles'
13482794Sobrien.else
135310490ScyL_GTFILES!=	sh -c '. ${GCCDIR}/$L/config-lang.in; echo $$gtfiles'
13638494Sobrien.endif
13738494Sobrien.for F in ${L_GTFILES}
13838494SobrienGTFILES_FILES+=	$F
139310490ScyGTFILES_LANGS+= $L
14038494Sobrien.endfor
141310490Scy.endfor
14238494SobrienGTFILES+=	${GTFILES_FILES}
14338494Sobrien
14438494Sobrien#
14538494Sobrien# Tree definition files.
14638494Sobrien#
147310490ScyTREE_DEF_FILES=
14838494Sobrien
14938494Sobrien.if ${MK_CXX} != "no"
15038494SobrienTREE_DEF_FILES+=	cp/cp-tree.def
15138494Sobrien.endif
152310490Scy
15338494Sobrien.if ${MK_OBJC} != "no"
15438494SobrienTREE_DEF_FILES+=	objc/objc-tree.def
15538494Sobrien.endif
15638494Sobrien
157310490Scy#
15838494Sobrien# Option files.
15938494Sobrien#
16038494SobrienOPT_FILES=	c.opt common.opt
16138494Sobrien
162310490Scy.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt)
16338494SobrienOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt
16438494Sobrien.endif
16538494Sobrien
16638494Sobrien.if exists(${.CURDIR}/${GCC_CPU}-freebsd.opt)
16738494SobrienOPT_FILES+=	${.CURDIR}/${GCC_CPU}-freebsd.opt
16838494Sobrien.endif
16938494Sobrien
17038494Sobrien.if ${TARGET_ARCH} == "powerpc"
171174294SobrienOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/sysv4.opt
172174294Sobrien.endif
173174294Sobrien
174119679Smbr.if ${TARGET_ARCH} == "sparc64"
175119679SmbrOPT_FILES+=	${GCCDIR}/config/${GCC_CPU}/long-double-switch.opt
176119679Smbr.endif
177174294Sobrien
178174294Sobrien.if exists(${.CURDIR}/freebsd.opt)
179174294SobrienOPT_FILES+=	${.CURDIR}/freebsd.opt
180174294Sobrien.endif
181174294Sobrien
182174294Sobrien#-----------------------------------------------------------------------
183174294Sobrien# Build rules for header files and generator tools
184310490Scy
18538494Sobrien# Host config
18638494Sobrienconfig.h:
18738494Sobrien	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
18838494Sobrien	HEADERS="auto-host.h ansidecl.h" \
18938494Sobrien	DEFINES="" \
19051292Sobrien	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
19151292Sobrien
192310490ScyGENSRCS+=	config.h
19338494SobrienCLEANFILES+=	cs-config.h
19438494Sobrien
19538494Sobrien# Build config
196310490Scybconfig.h:
19738494Sobrien	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
19838494Sobrien	HEADERS="auto-host.h ansidecl.h" \
19938494Sobrien	DEFINES="" \
200310490Scy	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
20138494Sobrien.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
20238494Sobrien	echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET}
20338494Sobrien.endif
20438494Sobrien
205310490ScyGENSRCS+=	bconfig.h
20638494SobrienCLEANFILES+=	cs-bconfig.h
20738494Sobrien
20838494Sobrien# tconfig.h
209174294Sobrientconfig.h:
210174294Sobrien	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
211310490Scy	HEADERS="auto-host.h ansidecl.h" \
21238494Sobrien	DEFINES="USED_FOR_TARGET" \
21338494Sobrien	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
21438494Sobrien
21538494SobrienGENSRCS+=	tconfig.h
21641142SobrienCLEANFILES+=	cs-tconfig.h
21741142Sobrien# Options
21841142Sobrienoptionlist: ${OPT_FILES}
219310490Scy	awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET}
22038494Sobrien
22138494Sobrienoptions.h:	optionlist
22238494Sobrien	awk -f ${GCCDIR}/opt-functions.awk \
223310490Scy	    -f ${GCCDIR}/opth-gen.awk \
22438494Sobrien		< ${.ALLSRC} > ${.TARGET}
22538494Sobrien
22638494Sobrienoptions.c:	optionlist
22738494Sobrien	awk -f ${GCCDIR}/opt-functions.awk \
22838494Sobrien	    -f ${GCCDIR}/optc-gen.awk \
22938494Sobrien		-v header_name="config.h system.h coretypes.h tm.h" \
23038494Sobrien		< ${.ALLSRC} > ${.TARGET}
23138494SobrienGENONLY+=	optionlist options.h options.c
23238494Sobrien
233310490Scy# Target machine config
23441142Sobrientm.h:
23538494Sobrien	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
23638494Sobrien	HEADERS="${TARGET_INC}" \
237310490Scy	DEFINES="" \
23841142Sobrien	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
23941142Sobrien.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
24041142Sobrien	echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET}
24141142Sobrien.endif
24251591Sobrien
24351591SobrienGENSRCS+=	tm.h
244310490ScyCLEANFILES+=	cs-tm.h
24541142Sobrien
24642629Sobrien# Target machine protos/preds.
24742629Sobrientm_p.h:
248310490Scy	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
24942629Sobrien	HEADERS="${GCC_CPU}/${GCC_CPU}-protos.h tm-preds.h" \
25042629Sobrien	DEFINES="" \
25142629Sobrien	/bin/sh ${GCCDIR}/mkconfig.sh tm_p.h
25242629Sobrien
25342629SobrienGENSRCS+=	tm_p.h
254310490ScyCLEANFILES+=	cs-tm_p.h
25542629Sobrien
25642629Sobrien# gencheck
25751292Sobriengencheck.h:
258310490Scy.for F in ${TREE_DEF_FILES}
25951292Sobrien	echo "#include \"$F\""					>> ${.TARGET}
26051292Sobrien.endfor
26151292Sobrien
262310490ScyGENSRCS+=	gencheck.h
26351292Sobrien
26451292Sobrien
26551292Sobrien# Source header for gtyp generator.
26651292Sobriengtyp-gen.h:	${GTFILES}
26751292Sobrien	echo "/* This file is machine generated.  Do not edit.  */" > ${.TARGET}
26851292Sobrien	echo "static const char * const srcdir = "		>> ${.TARGET}
26951292Sobrien	echo "\"$(GTFILES_SRCDIR)\";"				>> ${.TARGET}
27051292Sobrien	echo "static const char * const lang_files[] = {"	>> ${.TARGET}
27151292Sobrien.for F in ${GTFILES_FILES}
27251591Sobrien	echo "\"$F\", "						>> ${.TARGET}
27351591Sobrien.endfor
274310490Scy	echo "NULL};"						>> ${.TARGET}
27551292Sobrien	echo "static const char * const langs_for_lang_files[] = {">> ${.TARGET}
27651292Sobrien.for F in ${GTFILES_LANGS}
277310490Scy	echo "\"$F\", "						>> ${.TARGET}
27851292Sobrien.endfor
27951292Sobrien	echo "NULL};"						>> ${.TARGET}
28052894Sobrien	echo "static const char * const all_files[] = {"	>> ${.TARGET}
28152894Sobrien.for F in ${GTFILES}
28252894Sobrien	echo "\"$F\", "						>> ${.TARGET}
283310490Scy.endfor
28451292Sobrien	echo "NULL};"						>> ${.TARGET}
28551292Sobrien	echo "static const char * const lang_dir_names[] = {"	>> ${.TARGET}
286119679Smbr.for F in c ${GTFILES_LANG_DIR_NAMES}
28751292Sobrien	echo "\"$F\", "						>> ${.TARGET}
288310490Scy.endfor
28951292Sobrien	echo "NULL};"						>> ${.TARGET}
29051292Sobrien
291310490ScyGENSRCS+=	gtyp-gen.h
29251292Sobrien
29351292Sobrien# Version header for gcov
294310490Scygcov-iov.h:
29551292Sobrien	echo "#define GCOV_VERSION ((gcov_unsigned_t)0x34303270)" >> ${.TARGET}
29652894Sobrien
297310490ScyGENSRCS+=	gcov-iov.h
29852894Sobrien
29952894Sobrien# Multilib config file
30082794Sobrienmultilib.h:
30182794Sobrien	echo 'static const char *const multilib_raw[] = { \
30282794Sobrien	    ". ;", NULL };'					> ${.TARGET}
30382794Sobrien	echo 'static const char *const multilib_matches_raw[] = { \
30482794Sobrien	    NULL };'						>> ${.TARGET}
30582794Sobrien	echo 'static const char *multilib_extra = "";'		>> ${.TARGET}
30682794Sobrien	echo 'static const char *multilib_options = "";'	>> ${.TARGET}
30782794Sobrien	echo 'static const char *const multilib_exclusions_raw[] = { \
30882794Sobrien	    NULL };'						>> ${.TARGET}
309310490Scy
31082794SobrienGENSRCS+=	multilib.h
31182794Sobrien
31282794Sobrienconfigargs.h:
313310490Scy	echo 'static const char configuration_arguments[] ='	> ${.TARGET}
31482794Sobrien	echo '	"FreeBSD/${TARGET_ARCH} system compiler";'	>> ${.TARGET}
31582794Sobrien	echo 'static const char thread_model[] = "posix";'	>> ${.TARGET}
316310490Scy	echo 'static const struct {'				>> ${.TARGET}
31782794Sobrien	echo '	const char *name, *value;'			>> ${.TARGET}
31882794Sobrien	echo '} configure_default_options[] = {'		>> ${.TARGET}
319310490Scy	echo '	{ "NULL", "NULL" } };'				>> ${.TARGET}
32082794Sobrien
32182794SobrienGENSRCS+=	configargs.h
322310490Scy
32382794Sobrien# Language spec files
32482794Sobrienspecs.h:
325174294Sobrien	echo '#include "cp/lang-specs.h"'			> ${.TARGET}
326174294Sobrien	echo '#include "objc/lang-specs.h"'			>> ${.TARGET}
327174294Sobrien
328174294SobrienGENSRCS+=	specs.h
329310490Scy
33082794Sobriengstdint.h:
33182794Sobrien	echo '#include "sys/types.h"'				> ${.TARGET}
332310490Scy	echo '#include "sys/stdint.h"'				>> ${.TARGET}
33382794Sobrien
334119679SmbrGENSRCS+=	gstdint.h
335310490Scy
336119679Smbr# Linked headers
337119679Smbrgthr-default.h: ${GCCDIR}/gthr-posix.h
338119679Smbr	ln -sf ${.ALLSRC} ${.TARGET}
339119679Smbr
340310490ScyGENSRCS+=	gthr-default.h
341119679Smbr
342174294Sobrienunwind.h: ${GCCDIR}/unwind-generic.h
343174294Sobrien	ln -sf ${.ALLSRC} ${.TARGET}
344119679Smbr
345119679SmbrGENSRCS+=	unwind.h
346119679Smbr
347119679Smbr#
348174294Sobrien# gtype gunk
349174294Sobrien#
350119679Smbrgengtype-lex.c:	gengtype-lex.l
351310490Scy	flex -ogengtype-lex.c ${.ALLSRC}
352119679Smbr
353119679Smbrgengtype-yacc.h: gengtype-yacc.y
354119679Smbr	yacc -d -o gengtype-yacc.c ${.ALLSRC}
355310490Scy
356174294Sobriengengtype-yacc.c: gengtype-yacc.h
357174294Sobrien
358174294Sobriengengtype-yacc+%DIKED.c: gengtype-yacc.c
359174294Sobrien	cat    ${.ALLSRC} > ${.TARGET}
360310490Scy	sed -e "s/xmalloc/malloc/g" \
361174294Sobrien	    -e "s/xrealloc/realloc/g" \
362310490Scy	    -e "s/malloc/xmalloc/g" \
363174294Sobrien	    -e "s/realloc/xrealloc/g" \
364174294Sobrien	    ${.ALLSRC} > ${.TARGET}
365310490Scy
366174294SobrienGENSRCS+= gengtype-lex.c gengtype-yacc.h gengtype-yacc+%DIKED.c
367174294SobrienCLEANFILES+= gengtype-yacc.c
368310490Scy
369119679Smbrgengtype: gengtype.o gengtype-yacc+%DIKED.o gengtype-lex.o errors.o \
370119679Smbr	  ${LIBIBERTY}
371119679Smbr	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
372310490Scy
373119679Smbrgtype-desc.h:	gengtype
374174294Sobrien	./gengtype
375310490Scy	touch ${.TARGET}
376174294Sobrien
377174294Sobriengtype-desc.c:	gtype-desc.h
378174294Sobrien
379310490ScyGENONLY+=	gtype-desc.c gtype-desc.h
380174294SobrienCLEANFILES+=	gt-*.h gtype-*.h
381174294Sobrien
382310490Scy#
383174294Sobrien# Generator tools.
384174294Sobrien#
385310490Scy.for F in check checksum genrtl modes
386174294Sobriengen$F:	gen$F.o errors.o ${LIBIBERTY}
387174294Sobrien	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
388310490Scy.endfor
389174294Sobrien
390174294Sobrien.for F in attr attrtab automata codes conditions config constants emit \
391310490Scy	extract flags  opinit output peep preds recog
392174294Sobriengen$F:	gen$F.o rtl.o read-rtl.o ggc-none.o vec.o min-insn-modes.o \
393174294Sobrien	gensupport.o print-rtl.o errors.o ${LIBIBERTY}
394174294Sobrien	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} -lm
395310490Scy.endfor
396174294Sobrien
397174294Sobriengencondmd:	gencondmd.o
398174294Sobrien	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
399174294Sobrien
400174294Sobrien#
401174294Sobrien# Generated .md files.
402310490Scy#
403174294Sobrieninsn-conditions.md:	gencondmd
404174294Sobrien	./gencondmd > ${.TARGET}
405174294SobrienGENSRCS+=	insn-conditions.md
406310490Scy
407174294Sobrien#
408174294Sobrien# Generated header files.
409310490Scy#
410174294Sobrien
411174294Sobrien.for F in constants
412174294Sobrieninsn-$F.h:	gen$F ${MD_FILE}
413174294Sobrien	./gen$F ${MD_FILE} > ${.TARGET}
414174294SobrienGENSRCS+=	insn-$F.h
415174294Sobrien.endfor
416174294Sobrien
417174294Sobrien.for F in attr codes config flags
418310490Scyinsn-$F.h:	gen$F ${MD_FILE} insn-conditions.md
419174294Sobrien	./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
420174294SobrienGENSRCS+=	insn-$F.h
421174294Sobrien.endfor
422174294Sobrien
423174294Sobrien# Header files with irregular names.
424174294Sobriengenrtl.h:	gengenrtl
425310490Scy	./gengenrtl -h > ${.TARGET}
426174294SobrienGENSRCS+=	genrtl.h
427174294Sobrien
428tm-preds.h:	genpreds
429	./genpreds -h ${MD_FILE} > ${.TARGET}
430GENSRCS+=	tm-preds.h
431
432tm-constrs.h:	genpreds
433	./genpreds -c ${MD_FILE} > ${.TARGET}
434GENSRCS+=	tm-constrs.h
435
436tree-check.h:	gencheck
437	./gencheck > ${.TARGET}
438GENSRCS+=	tree-check.h
439
440insn-modes.h:	genmodes
441	./genmodes -h > ${.TARGET}
442GENSRCS+=	insn-modes.h
443
444#
445# Generated source files.
446#
447.for F in attrtab automata emit extract opinit output peep preds recog
448insn-$F.c:	gen$F ${MD_FILE} insn-conditions.md
449	./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
450GENONLY+=	insn-$F.c
451.endfor
452
453.for F in conditions
454insn-$F.c:	gen$F ${MD_FILE}
455	./gen$F ${MD_FILE} > ${.TARGET}
456GENSRCS+=	insn-$F.c
457.endfor
458
459# Source files with irregular names.
460insn-modes.c:	genmodes
461	./genmodes > ${.TARGET}
462GENONLY+=	insn-modes.c
463
464min-insn-modes.c:	genmodes
465	./genmodes -m > ${.TARGET}
466GENSRCS+=	min-insn-modes.c
467
468genrtl.c:	gengenrtl
469	./gengenrtl > ${.TARGET}
470GENONLY+=	genrtl.c
471
472gencondmd.c:	genconditions ${MD_FILE}
473	./genconditions ${MD_FILE} > ${.TARGET}
474GENSRCS+=	gencondmd.c
475
476#-----------------------------------------------------------------------
477# Build tools.
478
479GNTOOLS+=	genattr genattrtab genautomata gencodes gencheck genchecksum \
480		genconditions gencondmd genconfig genconstants genemit \
481		genextract genflags gengenrtl gengtype genmodes genopinit \
482		genoutput genpeep genpreds genrecog
483
484all: ${GNTOOLS} ${GENSRCS} ${GENONLY}
485beforedepend: ${GENONLY}
486
487#
488#-----------------------------------------------------------------------
489# Build 'pocket' libiberty exclusively for build tools use.
490
491LIBIBERTY_SRCS=	choose-temp.c concat.c cp-demangle.c cp-demint.c cplus-dem.c \
492	dyn-string.c fibheap.c fopen_unlocked.c getpwd.c getruntime.c \
493	hashtab.c hex.c lbasename.c make-temp-file.c md5.c obstack.c \
494	partition.c pex-unix.c physmem.c safe-ctype.c splay-tree.c xexit.c \
495	xmalloc.c xmemdup.c xstrdup.c xstrerror.c
496LIBIBERTY_OBJS=	${LIBIBERTY_SRCS:R:S/$/.o/g}
497
498.for _src in ${LIBIBERTY_SRCS}
499${_src:R:S/$/.o/}: ${_src}
500	${CC} -c -I ${.CURDIR}/../libiberty ${CFLAGS} -o ${.TARGET} ${.IMPSRC}
501.endfor
502
503${LIBIBERTY}: ${LIBIBERTY_OBJS}
504	@rm -f ${.TARGET}
505	@${AR} cq ${.TARGET} `lorder ${LIBIBERTY_OBJS} | tsort -q`
506	${RANLIB} ${.TARGET}
507CLEANFILES+=	${LIBIBERTY} ${LIBIBERTY_OBJS}
508
509
510#-----------------------------------------------------------------------
511# Fixups.
512
513# Set OBJS the same as bsd.prog.mk would do if we defined PROG.  We can't
514# define PROG because we have multiple programs.
515#
516SRCS=		errors.c genattr.c genattrtab.c \
517		genautomata.c gencheck.c genchecksum.c gencodes.c \
518		genconditions.c genconfig.c genconstants.c genemit.c \
519		genextract.c genflags.c gengenrtl.c gengtype.c genmodes.c \
520		genopinit.c genoutput.c genpeep.c genpreds.c genrecog.c \
521		gensupport.c ggc-none.c print-rtl.c read-rtl.c rtl.c \
522		vec.c
523
524SRCS+=		${GENSRCS}
525OBJS+=		${SRCS:N*.h:R:S/$/.o/g}
526GENOBJS+=	${GENSRCS:N*.h:R:S/$/.o/g}
527CLEANFILES+=	${GENSRCS} ${GENONLY} ${GENOBJS} ${GNTOOLS}
528
529#-----------------------------------------------------------------------
530# Manual dependencies.
531.if !exists(${DEPENDFILE})
532.include  "Makefile.dep"
533.endif
534
535.include <bsd.prog.mk>
536# DO NOT DELETE
537