xref: /freebsd-12.1/gnu/usr.bin/cc/cc_tools/Makefile (revision 96a0acc4)
19b7a44a6SPeter Wemm# $FreeBSD$
2a1b588fdSPeter Wemm
3c6063d0dSWarner Losh.include <src.opts.mk>
4e1fe3dbaSRuslan Ermilov
5c561816bSBruce EvansCFLAGS+=	-I.
693dce161SBruce Evans
7a1b588fdSPeter Wemm.include "../Makefile.inc"
809fb6bffSBryan Drewery# Some of the logic needed in here is defined in Makefile.hdrs as it is shared
909fb6bffSBryan Drewery# with gnu/lib.
1009fb6bffSBryan Drewery.include "Makefile.hdrs"
11a1b588fdSPeter Wemm
12afb57df6SAlexander KabaevCFLAGS+=	-g
13afb57df6SAlexander KabaevCFLAGS+=	-DGENERATOR_FILE -DHAVE_CONFIG_H
14a1b588fdSPeter Wemm
15afb57df6SAlexander Kabaev# Override LIBIBERTY set by Makefile.inc, We use our own for
16afb57df6SAlexander Kabaev# build tools.
1781efba8cSAlexander KabaevLIBIBERTY=	libiberty.a
1881efba8cSAlexander Kabaev
19afb57df6SAlexander Kabaev.PATH:	${GCCDIR} ${GCCLIB}/libiberty
2081efba8cSAlexander Kabaev
21e67810e6SAlexander Kabaev#-----------------------------------------------------------------------
22e67810e6SAlexander Kabaev# Determine content of variables used by the target/host config files
23e67810e6SAlexander Kabaev
24e67810e6SAlexander Kabaev#
2581efba8cSAlexander Kabaev# The list of headers to go into tm.h
26e67810e6SAlexander Kabaev#
27e67810e6SAlexander Kabaev.for H in ${TARGET_INC}
28e67810e6SAlexander Kabaev.for D in ${GCCDIR}/config ${GCCDIR} ${.CURDIR}
29e67810e6SAlexander Kabaev.if exists($D/$H)
30afb57df6SAlexander KabaevTARGET_INC_FILES+=     $D/$H
31e67810e6SAlexander Kabaev.endif
32e67810e6SAlexander Kabaev.endfor
33e67810e6SAlexander Kabaev.endfor
34e67810e6SAlexander Kabaev
35e67810e6SAlexander Kabaev#
36afb57df6SAlexander Kabaev# gtyp includes.
37e67810e6SAlexander Kabaev#
38e67810e6SAlexander Kabaevsrcdir=		${GCCDIR}
39afb57df6SAlexander KabaevCPPLIB_H=	${GCCLIB}/libcpp/include/line-map.h \
40afb57df6SAlexander Kabaev		${GCCLIB}/libcpp/include/cpplib.h
41afb57df6SAlexander KabaevSYMTAB_H=	${GCCLIB}/libcpp/include/symtab.h
42afb57df6SAlexander KabaevCPP_ID_DATA_H=	${CPPLIB_H} ${GCCLIB}/libcpp/include/cpp-id-data.h
43afb57df6SAlexander KabaevHASHTAB_H=	${GCCLIB}/include/hashtab.h
44afb57df6SAlexander KabaevSPLAY_TREE_H=	${GCCLIB}/include/splay-tree.h
45afb57df6SAlexander Kabaevout_file=	${srcdir}/config/${GCC_CPU}/${GCC_CPU}.c
46afb57df6SAlexander Kabaevtm_file_list=	${TARGET_INC_FILES}
47afb57df6SAlexander Kabaevhost_xm_file_list= ${.CURDIR}/auto-host.h ${GCCLIB}/include/ansidecl.h
48afb57df6SAlexander KabaevGTFILES_SRCDIR=	${srcdir}
49e67810e6SAlexander Kabaev
50e67810e6SAlexander Kabaev# Copied unchanged from gcc/Makefile.in
51afb57df6SAlexander KabaevGTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \
52afb57df6SAlexander Kabaev  $(CPP_ID_DATA_H) $(host_xm_file_list) \
53afb57df6SAlexander Kabaev  $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
54afb57df6SAlexander Kabaev  $(srcdir)/coverage.c $(srcdir)/rtl.h \
55afb57df6SAlexander Kabaev  $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/function.h $(srcdir)/libfuncs.h $(SYMTAB_H) \
56afb57df6SAlexander Kabaev  $(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
57afb57df6SAlexander Kabaev  $(srcdir)/ipa-reference.h $(srcdir)/output.h \
5881efba8cSAlexander Kabaev  $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/cgraph.h \
59afb57df6SAlexander Kabaev  $(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \
6081efba8cSAlexander Kabaev  $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
61afb57df6SAlexander Kabaev  $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-inline.c \
6281efba8cSAlexander Kabaev  $(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
63afb57df6SAlexander Kabaev  $(srcdir)/dojump.c $(srcdir)/tree-profile.c \
6481efba8cSAlexander Kabaev  $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
65afb57df6SAlexander Kabaev  $(srcdir)/function.c $(srcdir)/except.h \
66e67810e6SAlexander Kabaev  $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
67afb57df6SAlexander Kabaev  $(srcdir)/profile.c $(srcdir)/regclass.c \
68afb57df6SAlexander Kabaev  $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \
69afb57df6SAlexander Kabaev  $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
705f6d8805SAlexander Kabaev  $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
71afb57df6SAlexander Kabaev  $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
72afb57df6SAlexander Kabaev  $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parser.c \
73afb57df6SAlexander Kabaev  $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
74afb57df6SAlexander Kabaev  $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \
75afb57df6SAlexander Kabaev  $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-propagate.c \
76afb57df6SAlexander Kabaev  $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \
77afb57df6SAlexander Kabaev  $(srcdir)/tree-chrec.h $(srcdir)/tree-vect-generic.c \
78afb57df6SAlexander Kabaev  $(srcdir)/tree-ssa-operands.h $(srcdir)/tree-ssa-operands.c \
79afb57df6SAlexander Kabaev  $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
80afb57df6SAlexander Kabaev  $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \
81afb57df6SAlexander Kabaev  $(srcdir)/tree-ssa-structalias.c \
82afb57df6SAlexander Kabaev  $(srcdir)/c-pragma.h $(srcdir)/omp-low.c \
83afb57df6SAlexander Kabaev  $(srcdir)/targhooks.c $(srcdir)/cgraphunit.c $(out_file) \
84e67810e6SAlexander Kabaev
85afb57df6SAlexander Kabaev# The list of frontend directories to look into
86e67810e6SAlexander KabaevGTFILES_LANG_DIR_NAMES=
87e67810e6SAlexander Kabaev
88e1fe3dbaSRuslan Ermilov.if ${MK_CXX} != "no"
89e67810e6SAlexander KabaevGTFILES_LANG_DIR_NAMES+=	cp
90e67810e6SAlexander Kabaev.endif
91e67810e6SAlexander Kabaev
92afb57df6SAlexander Kabaev# The list of language specific files for gengtype
93e67810e6SAlexander Kabaev.for L in ${GTFILES_LANG_DIR_NAMES} c
94e67810e6SAlexander Kabaev.if exists(${GCCDIR}/$L-config-lang.in)
95e67810e6SAlexander Kabaev# Source the language config file
961d381836SAlexander KabaevL_GTFILES!=	sh -c '. ${GCCDIR}/$L-config-lang.in; echo $$gtfiles'
97e67810e6SAlexander Kabaev.else
981d381836SAlexander KabaevL_GTFILES!=	sh -c '. ${GCCDIR}/$L/config-lang.in; echo $$gtfiles'
99e67810e6SAlexander Kabaev.endif
1001d381836SAlexander Kabaev.for F in ${L_GTFILES}
101e67810e6SAlexander KabaevGTFILES_FILES+=	$F
102e67810e6SAlexander KabaevGTFILES_LANGS+= $L
103e67810e6SAlexander Kabaev.endfor
104e67810e6SAlexander Kabaev.endfor
1051d381836SAlexander KabaevGTFILES+=	${GTFILES_FILES}
106e67810e6SAlexander Kabaev
107afb57df6SAlexander Kabaev#
108afb57df6SAlexander Kabaev# Tree definition files.
109afb57df6SAlexander Kabaev#
110afb57df6SAlexander KabaevTREE_DEF_FILES=
111afb57df6SAlexander Kabaev
112afb57df6SAlexander Kabaev.if ${MK_CXX} != "no"
113afb57df6SAlexander KabaevTREE_DEF_FILES+=	cp/cp-tree.def
114afb57df6SAlexander Kabaev.endif
115afb57df6SAlexander Kabaev
116e67810e6SAlexander Kabaev#-----------------------------------------------------------------------
117afb57df6SAlexander Kabaev# Build rules for header files and generator tools
118a1b588fdSPeter Wemm
119afb57df6SAlexander Kabaev# Host config
120afb57df6SAlexander Kabaevconfig.h:
121afb57df6SAlexander Kabaev	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
122afb57df6SAlexander Kabaev	HEADERS="auto-host.h ansidecl.h" \
123afb57df6SAlexander Kabaev	DEFINES="" \
124afb57df6SAlexander Kabaev	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
1256acbf225SBruce Evans
126afb57df6SAlexander KabaevGENSRCS+=	config.h
127afb57df6SAlexander KabaevCLEANFILES+=	cs-config.h
128afb57df6SAlexander Kabaev
129afb57df6SAlexander Kabaev# Build config
130afb57df6SAlexander Kabaevbconfig.h:
131afb57df6SAlexander Kabaev	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
132afb57df6SAlexander Kabaev	HEADERS="auto-host.h ansidecl.h" \
133afb57df6SAlexander Kabaev	DEFINES="" \
134afb57df6SAlexander Kabaev	/bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
135afb57df6SAlexander Kabaev.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
136afb57df6SAlexander Kabaev	echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET}
137afb57df6SAlexander Kabaev.endif
138afb57df6SAlexander Kabaev
139afb57df6SAlexander KabaevGENSRCS+=	bconfig.h
140afb57df6SAlexander KabaevCLEANFILES+=	cs-bconfig.h
141afb57df6SAlexander Kabaev
142afb57df6SAlexander Kabaev# tconfig.h
143afb57df6SAlexander KabaevGENSRCS+=	tconfig.h
144afb57df6SAlexander KabaevCLEANFILES+=	cs-tconfig.h
145bd831db6SSimon J. Gerraty
146afb57df6SAlexander Kabaev# Options
147afb57df6SAlexander KabaevGENONLY+=	optionlist options.h options.c
148afb57df6SAlexander Kabaev
149afb57df6SAlexander Kabaev# Target machine config
150afb57df6SAlexander KabaevGENSRCS+=	tm.h
151afb57df6SAlexander KabaevCLEANFILES+=	cs-tm.h
152afb57df6SAlexander Kabaev
153afb57df6SAlexander Kabaev# Target machine protos/preds.
154afb57df6SAlexander Kabaevtm_p.h:
155afb57df6SAlexander Kabaev	TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
156afb57df6SAlexander Kabaev	HEADERS="${GCC_CPU}/${GCC_CPU}-protos.h tm-preds.h" \
157afb57df6SAlexander Kabaev	DEFINES="" \
158afb57df6SAlexander Kabaev	/bin/sh ${GCCDIR}/mkconfig.sh tm_p.h
159afb57df6SAlexander Kabaev
160afb57df6SAlexander KabaevGENSRCS+=	tm_p.h
161afb57df6SAlexander KabaevCLEANFILES+=	cs-tm_p.h
162afb57df6SAlexander Kabaev
163afb57df6SAlexander Kabaev# gencheck
164ba25c97bSAlexander Kabaevgencheck.h: ${TREE_DEF_FILES}
165afb57df6SAlexander Kabaev.for F in ${TREE_DEF_FILES}
166afb57df6SAlexander Kabaev	echo "#include \"$F\""					>> ${.TARGET}
167afb57df6SAlexander Kabaev.endfor
168ba25c97bSAlexander Kabaev	touch ${.TARGET}
169afb57df6SAlexander Kabaev
170afb57df6SAlexander KabaevGENSRCS+=	gencheck.h
171afb57df6SAlexander Kabaev
172afb57df6SAlexander Kabaev
173afb57df6SAlexander Kabaev# Source header for gtyp generator.
174afb57df6SAlexander Kabaevgtyp-gen.h:	${GTFILES}
175afb57df6SAlexander Kabaev	echo "/* This file is machine generated.  Do not edit.  */" > ${.TARGET}
176afb57df6SAlexander Kabaev	echo "static const char * const srcdir = "		>> ${.TARGET}
177afb57df6SAlexander Kabaev	echo "\"$(GTFILES_SRCDIR)\";"				>> ${.TARGET}
178afb57df6SAlexander Kabaev	echo "static const char * const lang_files[] = {"	>> ${.TARGET}
179afb57df6SAlexander Kabaev.for F in ${GTFILES_FILES}
180afb57df6SAlexander Kabaev	echo "\"$F\", "						>> ${.TARGET}
181afb57df6SAlexander Kabaev.endfor
182afb57df6SAlexander Kabaev	echo "NULL};"						>> ${.TARGET}
183afb57df6SAlexander Kabaev	echo "static const char * const langs_for_lang_files[] = {">> ${.TARGET}
184afb57df6SAlexander Kabaev.for F in ${GTFILES_LANGS}
185afb57df6SAlexander Kabaev	echo "\"$F\", "						>> ${.TARGET}
186afb57df6SAlexander Kabaev.endfor
187afb57df6SAlexander Kabaev	echo "NULL};"						>> ${.TARGET}
188afb57df6SAlexander Kabaev	echo "static const char * const all_files[] = {"	>> ${.TARGET}
189afb57df6SAlexander Kabaev.for F in ${GTFILES}
190afb57df6SAlexander Kabaev	echo "\"$F\", "						>> ${.TARGET}
191afb57df6SAlexander Kabaev.endfor
192afb57df6SAlexander Kabaev	echo "NULL};"						>> ${.TARGET}
193afb57df6SAlexander Kabaev	echo "static const char * const lang_dir_names[] = {"	>> ${.TARGET}
194afb57df6SAlexander Kabaev.for F in c ${GTFILES_LANG_DIR_NAMES}
195afb57df6SAlexander Kabaev	echo "\"$F\", "						>> ${.TARGET}
196afb57df6SAlexander Kabaev.endfor
197afb57df6SAlexander Kabaev	echo "NULL};"						>> ${.TARGET}
198afb57df6SAlexander Kabaev
199afb57df6SAlexander KabaevGENSRCS+=	gtyp-gen.h
200afb57df6SAlexander Kabaev
201afb57df6SAlexander Kabaev# Version header for gcov
202afb57df6SAlexander KabaevGENSRCS+=	gcov-iov.h
203afb57df6SAlexander Kabaev
204afb57df6SAlexander Kabaev# Multilib config file
205afb57df6SAlexander Kabaevmultilib.h:
206cac88fd5STijl Coosemans.if ${TARGET_ARCH} == "powerpc64" || ${TARGET_ARCH} == "amd64"
2072cf64c80SNathan Whitehorn	echo 'static const char *const multilib_raw[] = { \
2082cf64c80SNathan Whitehorn	    ". !m64 !m32;", \
2092cf64c80SNathan Whitehorn	    "64:../lib m64 !m32;", \
2102cf64c80SNathan Whitehorn	    "32:../lib32 !m64 m32;", NULL };'			> ${.TARGET}
2112cf64c80SNathan Whitehorn	echo 'static const char *multilib_options = "m64/m32";'	>> ${.TARGET}
2122cf64c80SNathan Whitehorn	echo 'static const char *const multilib_matches_raw[] = { \
2132cf64c80SNathan Whitehorn	    "m64 m64;", "m32 m32;", NULL };'			>> ${.TARGET}
2142cf64c80SNathan Whitehorn.else
215afb57df6SAlexander Kabaev	echo 'static const char *const multilib_raw[] = { \
216afb57df6SAlexander Kabaev	    ". ;", NULL };'					> ${.TARGET}
2172cf64c80SNathan Whitehorn	echo 'static const char *multilib_options = "";'	>> ${.TARGET}
218afb57df6SAlexander Kabaev	echo 'static const char *const multilib_matches_raw[] = { \
219afb57df6SAlexander Kabaev	    NULL };'						>> ${.TARGET}
2202cf64c80SNathan Whitehorn.endif
221afb57df6SAlexander Kabaev	echo 'static const char *multilib_extra = "";'		>> ${.TARGET}
222afb57df6SAlexander Kabaev	echo 'static const char *const multilib_exclusions_raw[] = { \
223afb57df6SAlexander Kabaev	    NULL };'						>> ${.TARGET}
224afb57df6SAlexander Kabaev
225afb57df6SAlexander KabaevGENSRCS+=	multilib.h
2268561d112SDavid E. O'Brien
2278561d112SDavid E. O'Brienconfigargs.h:
2288561d112SDavid E. O'Brien	echo 'static const char configuration_arguments[] ='	> ${.TARGET}
229fda035bbSDavid E. O'Brien	echo '	"FreeBSD/${TARGET_ARCH} system compiler";'	>> ${.TARGET}
2308561d112SDavid E. O'Brien	echo 'static const char thread_model[] = "posix";'	>> ${.TARGET}
23181efba8cSAlexander Kabaev	echo 'static const struct {'				>> ${.TARGET}
23281efba8cSAlexander Kabaev	echo '	const char *name, *value;'			>> ${.TARGET}
23381efba8cSAlexander Kabaev	echo '} configure_default_options[] = {'		>> ${.TARGET}
23481efba8cSAlexander Kabaev	echo '	{ "NULL", "NULL" } };'				>> ${.TARGET}
2358561d112SDavid E. O'Brien
236afb57df6SAlexander KabaevGENSRCS+=	configargs.h
23781efba8cSAlexander Kabaev
238afb57df6SAlexander Kabaev# Language spec files
23919e595a5SBruce Evansspecs.h:
24019e595a5SBruce Evans	echo '#include "cp/lang-specs.h"'			> ${.TARGET}
24118ff6ae9SDavid E. O'Brien
242afb57df6SAlexander KabaevGENSRCS+=	specs.h
243192e833dSBruce Evans
244afb57df6SAlexander Kabaevgstdint.h:
245afb57df6SAlexander Kabaev	echo '#include "sys/types.h"'				> ${.TARGET}
246afb57df6SAlexander Kabaev	echo '#include "sys/stdint.h"'				>> ${.TARGET}
247afb57df6SAlexander Kabaev
248afb57df6SAlexander KabaevGENSRCS+=	gstdint.h
249afb57df6SAlexander Kabaev
250afb57df6SAlexander Kabaev# Linked headers
251afb57df6SAlexander KabaevGENSRCS+=	gthr-default.h
252afb57df6SAlexander Kabaev
253afb57df6SAlexander KabaevGENSRCS+=	unwind.h
254afb57df6SAlexander Kabaev
255afb57df6SAlexander Kabaev#
256afb57df6SAlexander Kabaev# gtype gunk
257afb57df6SAlexander Kabaev#
258afb57df6SAlexander Kabaevgengtype-lex.c:	gengtype-lex.l
259afb57df6SAlexander Kabaev	flex -ogengtype-lex.c ${.ALLSRC}
260afb57df6SAlexander Kabaev
261afb57df6SAlexander Kabaevgengtype-yacc.h: gengtype-yacc.y
262afb57df6SAlexander Kabaev	yacc -d -o gengtype-yacc.c ${.ALLSRC}
263afb57df6SAlexander Kabaev
2642a6d574eSBryan Drewerygengtype-yacc.c: gengtype-yacc.h .NOMETA
265afb57df6SAlexander Kabaev
266afb57df6SAlexander Kabaevgengtype-yacc+%DIKED.c: gengtype-yacc.c
267afb57df6SAlexander Kabaev	cat    ${.ALLSRC} > ${.TARGET}
268afb57df6SAlexander Kabaev	sed -e "s/xmalloc/malloc/g" \
269afb57df6SAlexander Kabaev	    -e "s/xrealloc/realloc/g" \
270afb57df6SAlexander Kabaev	    -e "s/malloc/xmalloc/g" \
271afb57df6SAlexander Kabaev	    -e "s/realloc/xrealloc/g" \
272afb57df6SAlexander Kabaev	    ${.ALLSRC} > ${.TARGET}
273afb57df6SAlexander Kabaev
274afb57df6SAlexander KabaevGENSRCS+= gengtype-lex.c gengtype-yacc.h gengtype-yacc+%DIKED.c
275afb57df6SAlexander KabaevCLEANFILES+= gengtype-yacc.c
276afb57df6SAlexander Kabaev
277afb57df6SAlexander Kabaevgengtype: gengtype.o gengtype-yacc+%DIKED.o gengtype-lex.o errors.o \
278afb57df6SAlexander Kabaev	  ${LIBIBERTY}
279*96a0acc4SBryan Drewery	${CC:N${CCACHE_BIN}} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
280afb57df6SAlexander Kabaev
281afb57df6SAlexander Kabaevgtype-desc.h:	gengtype
282ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gengtype
283afb57df6SAlexander Kabaev	touch ${.TARGET}
284afb57df6SAlexander Kabaev
285afb57df6SAlexander Kabaevgtype-desc.c:	gtype-desc.h
286afb57df6SAlexander Kabaev
287afb57df6SAlexander KabaevGENONLY+=	gtype-desc.c gtype-desc.h
288afb57df6SAlexander KabaevCLEANFILES+=	gt-*.h gtype-*.h
289afb57df6SAlexander Kabaev
290afb57df6SAlexander Kabaev#
291afb57df6SAlexander Kabaev# Generator tools.
292afb57df6SAlexander Kabaev#
293afb57df6SAlexander Kabaev.for F in check checksum genrtl modes
294afb57df6SAlexander Kabaevgen$F:	gen$F.o errors.o ${LIBIBERTY}
295*96a0acc4SBryan Drewery	${CC:N${CCACHE_BIN}} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
296e67810e6SAlexander Kabaev.endfor
2978561d112SDavid E. O'Brien
298afb57df6SAlexander Kabaev.for F in attr attrtab automata codes conditions config constants emit \
299afb57df6SAlexander Kabaev	extract flags  opinit output peep preds recog
300afb57df6SAlexander Kabaevgen$F:	gen$F.o rtl.o read-rtl.o ggc-none.o vec.o min-insn-modes.o \
301afb57df6SAlexander Kabaev	gensupport.o print-rtl.o errors.o ${LIBIBERTY}
302*96a0acc4SBryan Drewery	${CC:N${CCACHE_BIN}} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} -lm
3039e3b0010SDavid E. O'Brien.endfor
30418ff6ae9SDavid E. O'Brien
305afb57df6SAlexander Kabaevgencondmd:	gencondmd.o
306*96a0acc4SBryan Drewery	${CC:N${CCACHE_BIN}} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
307afb57df6SAlexander Kabaev
308afb57df6SAlexander Kabaev#
309afb57df6SAlexander Kabaev# Generated .md files.
310afb57df6SAlexander Kabaev#
311afb57df6SAlexander Kabaevinsn-conditions.md:	gencondmd
312ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gencondmd > ${.TARGET}
313afb57df6SAlexander KabaevGENSRCS+=	insn-conditions.md
314afb57df6SAlexander Kabaev
315afb57df6SAlexander Kabaev#
316afb57df6SAlexander Kabaev# Generated header files.
317afb57df6SAlexander Kabaev#
318afb57df6SAlexander Kabaev
319afb57df6SAlexander Kabaev.for F in constants
320afb57df6SAlexander Kabaevinsn-$F.h:	gen$F ${MD_FILE}
321ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gen$F ${MD_FILE} > ${.TARGET}
322afb57df6SAlexander KabaevGENSRCS+=	insn-$F.h
323e67810e6SAlexander Kabaev.endfor
324afb57df6SAlexander Kabaev
325afb57df6SAlexander Kabaev.for F in attr codes config flags
326afb57df6SAlexander Kabaevinsn-$F.h:	gen$F ${MD_FILE} insn-conditions.md
327ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
328afb57df6SAlexander KabaevGENSRCS+=	insn-$F.h
329e67810e6SAlexander Kabaev.endfor
330afb57df6SAlexander Kabaev
331afb57df6SAlexander Kabaev# Header files with irregular names.
332afb57df6SAlexander Kabaevgenrtl.h:	gengenrtl
333ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gengenrtl -h > ${.TARGET}
334afb57df6SAlexander KabaevGENSRCS+=	genrtl.h
335afb57df6SAlexander Kabaev
336afb57df6SAlexander Kabaevtm-preds.h:	genpreds
337ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genpreds -h ${MD_FILE} > ${.TARGET}
338afb57df6SAlexander KabaevGENSRCS+=	tm-preds.h
339afb57df6SAlexander Kabaev
340afb57df6SAlexander Kabaevtm-constrs.h:	genpreds
341ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genpreds -c ${MD_FILE} > ${.TARGET}
342afb57df6SAlexander KabaevGENSRCS+=	tm-constrs.h
343afb57df6SAlexander Kabaev
344afb57df6SAlexander Kabaevtree-check.h:	gencheck
345ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gencheck > ${.TARGET}
346afb57df6SAlexander KabaevGENSRCS+=	tree-check.h
347afb57df6SAlexander Kabaev
348afb57df6SAlexander Kabaevinsn-modes.h:	genmodes
349ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genmodes -h > ${.TARGET}
350afb57df6SAlexander KabaevGENSRCS+=	insn-modes.h
351afb57df6SAlexander Kabaev
352afb57df6SAlexander Kabaev#
353afb57df6SAlexander Kabaev# Generated source files.
354afb57df6SAlexander Kabaev#
355afb57df6SAlexander Kabaev.for F in attrtab automata emit extract opinit output peep preds recog
356afb57df6SAlexander Kabaevinsn-$F.c:	gen$F ${MD_FILE} insn-conditions.md
357ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gen$F ${MD_FILE} insn-conditions.md > ${.TARGET}
358afb57df6SAlexander KabaevGENONLY+=	insn-$F.c
359e67810e6SAlexander Kabaev.endfor
360afb57df6SAlexander Kabaev
361afb57df6SAlexander Kabaev.for F in conditions
362afb57df6SAlexander Kabaevinsn-$F.c:	gen$F ${MD_FILE}
363ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gen$F ${MD_FILE} > ${.TARGET}
364afb57df6SAlexander KabaevGENSRCS+=	insn-$F.c
365e67810e6SAlexander Kabaev.endfor
366e67810e6SAlexander Kabaev
367afb57df6SAlexander Kabaev# Source files with irregular names.
368afb57df6SAlexander Kabaevinsn-modes.c:	genmodes
369ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genmodes > ${.TARGET}
370afb57df6SAlexander KabaevGENONLY+=	insn-modes.c
371e67810e6SAlexander Kabaev
372afb57df6SAlexander Kabaevmin-insn-modes.c:	genmodes
373ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genmodes -m > ${.TARGET}
374afb57df6SAlexander KabaevGENSRCS+=	min-insn-modes.c
375a817992dSWarner Losh
376afb57df6SAlexander Kabaevgenrtl.c:	gengenrtl
377ba7734deSBryan Drewery	${BTOOLSPATH:U.}/gengenrtl > ${.TARGET}
378afb57df6SAlexander KabaevGENONLY+=	genrtl.c
379a817992dSWarner Losh
380afb57df6SAlexander Kabaevgencondmd.c:	genconditions ${MD_FILE}
381ba7734deSBryan Drewery	${BTOOLSPATH:U.}/genconditions ${MD_FILE} > ${.TARGET}
382afb57df6SAlexander KabaevGENSRCS+=	gencondmd.c
383afb57df6SAlexander Kabaev
3849cb13c23SPeter Wemm#-----------------------------------------------------------------------
385afb57df6SAlexander Kabaev# Build tools.
3869cb13c23SPeter Wemm
387afb57df6SAlexander KabaevGNTOOLS+=	genattr genattrtab genautomata gencodes gencheck genchecksum \
388afb57df6SAlexander Kabaev		genconditions gencondmd genconfig genconstants genemit \
389afb57df6SAlexander Kabaev		genextract genflags gengenrtl gengtype genmodes genopinit \
390afb57df6SAlexander Kabaev		genoutput genpeep genpreds genrecog
39193dce161SBruce Evans
392ba7734deSBryan Drewery${GNTOOLS:C,$,.o,} ${GNTOOLS}: ${BUILD_TOOLS_META}
393afb57df6SAlexander Kabaevall: ${GNTOOLS} ${GENSRCS} ${GENONLY}
3947cd84b56SBryan Drewerybuild-tools: all
395afb57df6SAlexander Kabaevbeforedepend: ${GENONLY}
3969cb13c23SPeter Wemm
397afb57df6SAlexander Kabaev#
398afb57df6SAlexander Kabaev#-----------------------------------------------------------------------
399afb57df6SAlexander Kabaev# Build 'pocket' libiberty exclusively for build tools use.
400afb57df6SAlexander Kabaev
401afb57df6SAlexander KabaevLIBIBERTY_SRCS=	choose-temp.c concat.c cp-demangle.c cp-demint.c cplus-dem.c \
402afb57df6SAlexander Kabaev	dyn-string.c fibheap.c fopen_unlocked.c getpwd.c getruntime.c \
403afb57df6SAlexander Kabaev	hashtab.c hex.c lbasename.c make-temp-file.c md5.c obstack.c \
404afb57df6SAlexander Kabaev	partition.c pex-unix.c physmem.c safe-ctype.c splay-tree.c xexit.c \
405afb57df6SAlexander Kabaev	xmalloc.c xmemdup.c xstrdup.c xstrerror.c
406afb57df6SAlexander KabaevLIBIBERTY_OBJS=	${LIBIBERTY_SRCS:R:S/$/.o/g}
407afb57df6SAlexander Kabaev
408afb57df6SAlexander Kabaev.for _src in ${LIBIBERTY_SRCS}
409ba7734deSBryan Drewery${_src:R:S/$/.o/}: ${_src} ${BUILD_TOOLS_META}
410afb57df6SAlexander Kabaev	${CC} -c -I ${.CURDIR}/../libiberty ${CFLAGS} -o ${.TARGET} ${.IMPSRC}
411afb57df6SAlexander Kabaev.endfor
412afb57df6SAlexander Kabaev
413ba7734deSBryan Drewery${LIBIBERTY}: ${LIBIBERTY_OBJS} ${BUILD_TOOLS_META}
414afb57df6SAlexander Kabaev	@rm -f ${.TARGET}
41537a60314SEitan Adler	@${AR} ${ARFLAGS} ${.TARGET} `lorder ${LIBIBERTY_OBJS} | tsort -q`
416afb57df6SAlexander Kabaev	${RANLIB} ${.TARGET}
417afb57df6SAlexander KabaevCLEANFILES+=	${LIBIBERTY} ${LIBIBERTY_OBJS}
418afb57df6SAlexander Kabaev
41993dce161SBruce Evans
42093dce161SBruce Evans#-----------------------------------------------------------------------
42193dce161SBruce Evans# Fixups.
42293dce161SBruce Evans
42393dce161SBruce Evans# Set OBJS the same as bsd.prog.mk would do if we defined PROG.  We can't
42493dce161SBruce Evans# define PROG because we have multiple programs.
42593dce161SBruce Evans#
426afb57df6SAlexander KabaevSRCS=		errors.c genattr.c genattrtab.c \
427afb57df6SAlexander Kabaev		genautomata.c gencheck.c genchecksum.c gencodes.c \
428afb57df6SAlexander Kabaev		genconditions.c genconfig.c genconstants.c genemit.c \
429afb57df6SAlexander Kabaev		genextract.c genflags.c gengenrtl.c gengtype.c genmodes.c \
430afb57df6SAlexander Kabaev		genopinit.c genoutput.c genpeep.c genpreds.c genrecog.c \
431afb57df6SAlexander Kabaev		gensupport.c ggc-none.c print-rtl.c read-rtl.c rtl.c \
432afb57df6SAlexander Kabaev		vec.c
433afb57df6SAlexander Kabaev
434afb57df6SAlexander KabaevSRCS+=		${GENSRCS}
43593dce161SBruce EvansOBJS+=		${SRCS:N*.h:R:S/$/.o/g}
436afb57df6SAlexander KabaevGENOBJS+=	${GENSRCS:N*.h:R:S/$/.o/g}
437ba7734deSBryan Drewery${OBJS} ${GENOBJS}: ${BUILD_TOOLS_META}
438afb57df6SAlexander KabaevCLEANFILES+=	${GENSRCS} ${GENONLY} ${GENOBJS} ${GNTOOLS}
43993dce161SBruce Evans
440afb57df6SAlexander Kabaev#-----------------------------------------------------------------------
441afb57df6SAlexander Kabaev# Manual dependencies.
442afb57df6SAlexander Kabaev.include  "Makefile.dep"
443afb57df6SAlexander Kabaev
444afb57df6SAlexander Kabaev.include <bsd.prog.mk>
445afb57df6SAlexander Kabaev# DO NOT DELETE
446