Makefile revision 45307
1204076Spjd# 2204076Spjd# $Id: Makefile,v 1.16 1999/04/04 20:40:45 obrien Exp $ 3204076Spjd# 4204076Spjd 5204076Spjd# 6204076Spjd# This could probably be merged with ../cc_int/Makefile, but bsd.lib.mk 7204076Spjd# is such a !@#!*#% nightmare because of how it reprograms the dependencies, 8204076Spjd# suffix rules, SRCS, etc. It's easiest to cheat by using bsd.prog.mk and 9204076Spjd# SRCS to get dependencies. 10204076Spjd# 11204076Spjd 12204076Spjd# ../Makefile.inc will put an absolute path to our objdir in CFLAGS. 13204076Spjd# Prevent mkdep from using it, so that we don't have to give rules for 14204076Spjd# aliases of generated headers. 15204076Spjd# 16204076SpjdCFLAGS+= -I${GCCDIR}/objc 17204076Spjd 18204076Spjd.include "../Makefile.inc" 19204076Spjd 20204076Spjd.PATH: ${GCCDIR} ${GCCDIR}/cp 21204076Spjd 22204076Spjd#----------------------------------------------------------------------- 23204076Spjd# insn-* gunk 24204076Spjd 25204076Spjd.for i in attr codes config flags 26204076Spjdinsn-$i.h: gen$i ${MD_FILE} 27204076Spjd ./gen$i ${MD_FILE} > insn-$i.h 28204076SpjdGENSRCS+= insn-$i.h 29204076Spjd.endfor 30204076Spjd 31204076Spjd.for i in attrtab emit extract opinit output peep recog 32204076Spjdinsn-$i.c: gen$i ${MD_FILE} 33204076Spjd ./gen$i ${MD_FILE} > insn-$i.c 34204076SpjdGENSRCS+= insn-$i.c 35204076Spjd.endfor 36219620Strociny 37204076Spjd.for i in attr codes config emit extract flags opinit output peep recog 38204076Spjdbuild-tools: gen$i 39204076Spjd 40204076Spjdgen$i: gen$i.o rtl.o obstack.o bitmap.o 41204076Spjd ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 42204076Spjd 43204076SpjdGENSRCS+= gen$i.c 44204076SpjdCLEANFILES+= gen$i 45204076Spjd.endfor 46204076Spjd 47204076Spjd.for i in check genrtl 48204076Spjdbuild-tools: gen$i 49204076Spjd 50204076Spjdgen$i: gen$i.o 51204076Spjd ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 52204076Spjd 53204076SpjdGENSRCS+= gen$i.c 54204076SpjdCLEANFILES+= gen$i 55204076Spjd.endfor 56204076Spjd 57204076Spjdgenrtl.h genrtl.c: gengenrtl 58204076Spjd ./gengenrtl genrtl.h genrtl.c 59204076Spjd 60204076Spjd#GENSRCS+= genrtl.c genrtl.h 61204076SpjdCLEANFILES+= genrtl.c genrtl.h 62204076Spjd 63248291Smarck.for i in attrtab 64248291Smarckbuild-tools: gen$i 65204076Spjd 66204076Spjdgen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o bitmap.o 67204076Spjd ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 68204076Spjd 69204076SpjdGENSRCS+= gen$i.c 70204076SpjdCLEANFILES+= gen$i 71204076Spjd.endfor 72204076Spjd 73204076SpjdSRCS+= bitmap.c print-rtl.c rtl.c rtlanal.c obstack.c 74204076Spjd#----------------------------------------------------------------------- 75204076Spjd# C hash codes 76204076Spjdc-gperf.h: c-parse.gperf 77204076Spjd gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \ 78204076Spjd ${GCCDIR}/c-parse.gperf > ${.TARGET} 79248291SmarckGENSRCS+= c-gperf.h 80248291Smarck 81248291Smarck#----------------------------------------------------------------------- 82204076Spjd# C++ hash codes 83204076Spjdhash.h: gxx.gperf 84204076Spjd gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \ 85204076Spjd ${GCCDIR}/cp/gxx.gperf >hash.h 86204076SpjdGENSRCS+= hash.h 87204076Spjd 88204076Spjd#----------------------------------------------------------------------- 89204076Spjd# common parser stuff 90204076Spjd 91204076Spjd.for i in c objc 92204076Spjd$i-parse.c: tree-check.h 93204076Spjd.endfor 94204076Spjd 95204076Spjdtree-check.h: gencheck 96204076Spjd ./gencheck > ${.TARGET} 97204076Spjd 98204076Spjd##GENSRCS+= tree-check.h 99204076SpjdCLEANFILES+= tree-check.h 100204076Spjd 101229945Spjd#----------------------------------------------------------------------- 102204076Spjd# C parser 103204076Spjd.ORDER: c-parse.c c-parse.h 104204076Spjdc-parse.c c-parse.h: c-parse.in 105204076Spjd sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ 106204076Spjd -e "/^ifc$$/d" -e "/^end ifc$$/d" \ 107204076Spjd ${GCCDIR}/c-parse.in > c-parse.y 108204076Spjd ${BISON} -d c-parse.y -o c-parse.c 109204076Spjd rm -f c-parse.y 110204076Spjd 111204076SpjdGENSRCS+= c-parse.c c-parse.h 112204076SpjdCLEANFILES+= c-parse.y # insurance 113204076Spjd 114204076Spjd#----------------------------------------------------------------------- 115204076Spjd# objc parser 116204076Spjd.ORDER: objc-parse.c objc-parse.h 117204076Spjdobjc-parse.c objc-parse.h: c-parse.in 118204076Spjd sed -e "/^ifc$$/,/^end ifc$$/d" \ 119204076Spjd -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \ 120204076Spjd ${GCCDIR}/c-parse.in > objc-parse.y 121204076Spjd ${BISON} -d objc-parse.y -o objc-parse.c 122204076Spjd rm -f objc-parse.y 123204076Spjd 124204076SpjdGENSRCS+= objc-parse.c objc-parse.h 125204076SpjdCLEANFILES+= objc-parse.y # insurance 126204076Spjd 127204076Spjd#----------------------------------------------------------------------- 128204076Spjd# C++ parser done in its own makefile 129204076Spjd#----------------------------------------------------------------------- 130204076Spjd# CPP parser done in its own makefile 131204076Spjd#----------------------------------------------------------------------- 132204076Spjd# the host/target compiler config. 133204076Spjd 134204076SpjdCOMMONHDRS= config.h hconfig.h options.h specs.h tconfig.h tm.h multilib.h 135204076SpjdGENSRCS+= ${COMMONHDRS} 136204076Spjd 137204076Spjdconfig.h hconfig.h: 138204076Spjd echo '#include "auto-host.h"' > ${.TARGET} 139204076Spjd echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' >> ${.TARGET} 140204076Spjd 141204076Spjdtconfig.h: 142204076Spjd echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' > ${.TARGET} 143229945Spjd 144204076Spjdoptions.h: 145204076Spjd echo '#include "cp/lang-options.h"' > ${.TARGET} 146204076Spjd #echo '#include "f/lang-options.h"' >> ${.TARGET} 147204076Spjd 148204076Spjdspecs.h: 149204076Spjd echo '#include "cp/lang-specs.h"' > ${.TARGET} 150204076Spjd #echo '#include "f/lang-specs.h"' >> ${.TARGET} 151204076Spjd 152204076Spjdtm.h: 153204076Spjd echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET} 154204076Spjd.if ${MACHINE_ARCH} == "i386" 155204076Spjd echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET} 156204076Spjd.endif 157204076Spjd echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET} 158204076Spjd.if ${MACHINE_ARCH} == "i386" 159204076Spjd echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET} 160204076Spjd.elif ${MACHINE_ARCH} == "alpha" 161204076Spjd echo '#include "${MACHINE_ARCH}/freebsd-elf.h"' >> ${.TARGET} 162204076Spjd.endif 163204076Spjd 164204076Spjdmultilib.h: genmultilib 165204076Spjd echo 'static char *multilib_raw[] = {"aout maout;elf !maout;", NULL};' > multilib.h 166204076Spjd echo 'static char *orig_port_multilib_raw[] = {".;", NULL};' >> multilib.h 167204076Spjd echo 'static char *multilib_matches_raw[] = {NULL};' >> multilib.h 168204076Spjd echo 'static char **multilib_extra = "";' >> multilib.h 169204076Spjd 170204076Spjd#----------------------------------------------------------------------- 171204076Spjd# General things. 172204076Spjd 173204076SpjdSRCS+= ${GENSRCS} 174204076SpjdCLEANFILES+= ${GENSRCS} 175204076Spjd 176204076Spjdall: ${SRCS} 177204076Spjd 178204076Spjd.include <bsd.prog.mk> 179204076Spjd 180204076Spjd#----------------------------------------------------------------------- 181204076Spjd# Fixups. 182204076Spjd 183204076Spjd# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 184204076Spjd# define PROG because we have multiple programs. 185204076Spjd# 186204076SpjdOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 187204076Spjd 188204076Spjd.if !exists(${DEPENDFILE}) 189204076Spjd# Fudge pre-dependfile dependencies of objects the same as bsd.prog.mk 190204076Spjd# would do if we defined PROG, except for leaving out dependencies on 191204076Spjd# insn-*.h because these dependencies would be circular. 192204076Spjd# 193204076Spjd${OBJS}: ${SRCS:M*.h:Ninsn-*.h} 194204076Spjd 195204076Spjd# Give all dependencies on insn-*.h explicitly 196204076Spjd# This suffices for `make -j<any> depend', and after that all 197204076Spjd# the dependencies will be in .depend since all .c source files are in 198204076Spjd# SRCS. 199204076Spjd# 200204076Spjdgenattrtab.o genextract.o: insn-config.h 201204076Spjdinsn-attrtab.o: insn-attr.h insn-config.h 202204076Spjdinsn-emit.o: insn-codes.h insn-config.h insn-flags.h 203204076Spjdinsn-opinit.o: insn-codes.h insn-config.h insn-flags.h 204204076Spjdinsn-output.o: insn-attr.h insn-codes.h insn-config.h insn-flags.h 205204076Spjdinsn-recog.o: insn-config.h 206204076Spjd 207204076Spjdgenattr.o gencodes.o genconfig.o genemit.o genextract.o genflags.o genopinit.o genoutput.o genpeep.o genrecog.o: genrtl.h 208204076Spjd.endif 209219373Spjd