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