Makefile revision 45305
164469Sitojun# 264469Sitojun# $Id: Makefile,v 1.15 1999/04/04 16:36:34 obrien Exp $ 355163Sshin# 455163Sshin 555163Sshin# 655163Sshin# This could probably be merged with ../cc_int/Makefile, but bsd.lib.mk 755163Sshin# is such a !@#!*#% nightmare because of how it reprograms the dependencies, 855163Sshin# suffix rules, SRCS, etc. It's easiest to cheat by using bsd.prog.mk and 955163Sshin# SRCS to get dependencies. 1055163Sshin# 1155163Sshin 1255163Sshin# ../Makefile.inc will put an absolute path to our objdir in CFLAGS. 1355163Sshin# Prevent mkdep from using it, so that we don't have to give rules for 1455163Sshin# aliases of generated headers. 1555163Sshin# 1655163SshinCFLAGS+= -I${GCCDIR}/objc 1755163Sshin 1855163Sshin.include "../Makefile.inc" 1955163Sshin 2055163Sshin.PATH: ${GCCDIR} ${GCCDIR}/cp 2155163Sshin 2255163Sshin#----------------------------------------------------------------------- 2355163Sshin# insn-* gunk 2455163Sshin 2555163Sshin.for i in attr codes config flags 2655163Sshininsn-$i.h: gen$i ${MD_FILE} 2755163Sshin ./gen$i ${MD_FILE} > insn-$i.h 2855163SshinGENSRCS+= insn-$i.h 2955163Sshin.endfor 3055163Sshin 31108037Sru.for i in attrtab emit extract opinit output peep recog 3255163Sshininsn-$i.c: gen$i ${MD_FILE} 33133218Sroam ./gen$i ${MD_FILE} > insn-$i.c 3455163SshinGENSRCS+= insn-$i.c 3564469Sitojun.endfor 3655163Sshin 3755163Sshin.for i in attr codes config emit extract flags opinit output peep recog 3855163Sshinbuild-tools: gen$i 3955163Sshin 4055163Sshingen$i: gen$i.o rtl.o obstack.o bitmap.o 4155163Sshin ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 4255163Sshin 4359460SphantomGENSRCS+= gen$i.c 4459460SphantomCLEANFILES+= gen$i 4555163Sshin.endfor 4684306Sru 4784306Sru.for i in check genrtl 4884306Srubuild-tools: gen$i 4955163Sshin 5055163Sshingen$i: gen$i.o 5155163Sshin ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 5255163Sshin 5355163SshinGENSRCS+= gen$i.c 5455163SshinCLEANFILES+= gen$i 5555163Sshin.endfor 5655163Sshin 57108037Srugenrtl.h genrtl.c: gengenrtl 5855163Sshin ./gengenrtl genrtl.h genrtl.c 5955163Sshin 6055163Sshin#GENSRCS+= genrtl.c genrtl.h 6155163SshinCLEANFILES+= genrtl.c genrtl.h 6255163Sshin 6355163Sshin.for i in attrtab 6455163Sshinbuild-tools: gen$i 6555163Sshin 6655163Sshingen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o bitmap.o 6755163Sshin ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 6855163Sshin 69108040SruGENSRCS+= gen$i.c 7055163SshinCLEANFILES+= gen$i 71108040Sru.endfor 7255163Sshin 7355163SshinSRCS+= bitmap.c print-rtl.c rtl.c rtlanal.c obstack.c 7455163Sshin#----------------------------------------------------------------------- 7581251Sru# C hash codes 7655163Sshinc-gperf.h: c-parse.gperf 7755163Sshin gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \ 7881251Sru ${GCCDIR}/c-parse.gperf > ${.TARGET} 7955163SshinGENSRCS+= c-gperf.h 80108040Sru 8155163Sshin#----------------------------------------------------------------------- 8255163Sshin# C++ hash codes 8355163Sshinhash.h: gxx.gperf 8455163Sshin gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \ 8555163Sshin ${GCCDIR}/cp/gxx.gperf >hash.h 8655163SshinGENSRCS+= hash.h 8755163Sshin 8855163Sshin#----------------------------------------------------------------------- 8955163Sshin# common parser stuff 9055163Sshin 9155163Sshin.for i in c objc 92108040Sru$i-parse.c: tree-check.h 9364469Sitojun.endfor 9455163Sshin 9581251Srutree-check.h: gencheck 9655163Sshin ./gencheck > ${.TARGET} 97108040Sru 9855163Sshin##GENSRCS+= tree-check.h 9955163SshinCLEANFILES+= tree-check.h 10055163Sshin 10155163Sshin#----------------------------------------------------------------------- 10255163Sshin# C parser 103108040Sru.ORDER: c-parse.c c-parse.h 10455163Sshinc-parse.c c-parse.h: c-parse.in 10555163Sshin sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ 10655163Sshin -e "/^ifc$$/d" -e "/^end ifc$$/d" \ 10755163Sshin ${GCCDIR}/c-parse.in > c-parse.y 10881251Sru ${BISON} -d c-parse.y -o c-parse.c 10955163Sshin rm -f c-parse.y 11055163Sshin 11155163SshinGENSRCS+= c-parse.c c-parse.h 11255163SshinCLEANFILES+= c-parse.y # insurance 11355163Sshin 11455163Sshin#----------------------------------------------------------------------- 11555163Sshin# objc parser 11655163Sshin.ORDER: objc-parse.c objc-parse.h 11755163Sshinobjc-parse.c objc-parse.h: c-parse.in 11855163Sshin sed -e "/^ifc$$/,/^end ifc$$/d" \ 11955163Sshin -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \ 12055163Sshin ${GCCDIR}/c-parse.in > objc-parse.y 12155163Sshin ${BISON} -d objc-parse.y -o objc-parse.c 122108040Sru rm -f objc-parse.y 12355163Sshin 12455163SshinGENSRCS+= objc-parse.c objc-parse.h 12555163SshinCLEANFILES+= objc-parse.y # insurance 126108040Sru 12755163Sshin#----------------------------------------------------------------------- 12855163Sshin# C++ parser done in its own makefile 12955163Sshin#----------------------------------------------------------------------- 130108040Sru# CPP parser done in its own makefile 13155163Sshin#----------------------------------------------------------------------- 13255163Sshin# the host/target compiler config. 13355163Sshin 13455163SshinCOMMONHDRS= config.h hconfig.h options.h specs.h tconfig.h tm.h multilib.h 135108040SruGENSRCS+= ${COMMONHDRS} 13655163Sshin 137108040Sruconfig.h hconfig.h: 13855163Sshin echo '#include "auto-host.h"' > ${.TARGET} 13955163Sshin echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' >> ${.TARGET} 14055163Sshin 14155163Sshintconfig.h: 14255163Sshin echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' > ${.TARGET} 14355163Sshin 14455163Sshinoptions.h: 14555163Sshin echo '#include "cp/lang-options.h"' > ${.TARGET} 14655163Sshin #echo '#include "f/lang-options.h"' >> ${.TARGET} 14755163Sshin 14855163Sshinspecs.h: 14955163Sshin echo '#include "cp/lang-specs.h"' > ${.TARGET} 15055163Sshin #echo '#include "f/lang-specs.h"' >> ${.TARGET} 15155163Sshin 15255163Sshintm.h: 153108040Sru echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET} 15455163Sshin echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET} 155108040Sru echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET} 15655163Sshin.if ${MACHINE_ARCH} == "i386" 15755163Sshin echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET} 15855163Sshin.elif ${MACHINE_ARCH} == "alpha" 15955163Sshin echo '#include "${MACHINE_ARCH}/freebsd-elf.h"' >> ${.TARGET} 16055163Sshin.endif 16155163Sshin 16255163Sshinmultilib.h: genmultilib 16355163Sshin echo 'static char *multilib_raw[] = {"aout maout;elf !maout;", NULL};' > multilib.h 16455163Sshin echo 'static char *orig_port_multilib_raw[] = {".;", NULL};' >> multilib.h 16555163Sshin echo 'static char *multilib_matches_raw[] = {NULL};' >> multilib.h 16655163Sshin echo 'static char **multilib_extra = "";' >> multilib.h 16755163Sshin 16855163Sshin#----------------------------------------------------------------------- 16955163Sshin# General things. 17055163Sshin 17155163SshinSRCS+= ${GENSRCS} 172108040SruCLEANFILES+= ${GENSRCS} 17355163Sshin 17455163Sshinall: ${SRCS} 17555163Sshin 17655163Sshin.include <bsd.prog.mk> 17755163Sshin 17855163Sshin#----------------------------------------------------------------------- 179108040Sru# Fixups. 18055163Sshin 18155163Sshin# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 18255163Sshin# define PROG because we have multiple programs. 18355163Sshin# 18455163SshinOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 18555163Sshin 18655163Sshin.if !exists(${DEPENDFILE}) 18755163Sshin# Fudge pre-dependfile dependencies of objects the same as bsd.prog.mk 18881251Sru# would do if we defined PROG, except for leaving out dependencies on 18981251Sru# insn-*.h because these dependencies would be circular. 19055163Sshin# 19155163Sshin${OBJS}: ${SRCS:M*.h:Ninsn-*.h} 19255163Sshin 193108040Sru# Give all dependencies on insn-*.h explicitly 19455163Sshin# This suffices for `make -j<any> depend', and after that all 19555163Sshin# the dependencies will be in .depend since all .c source files are in 19655163Sshin# SRCS. 19755163Sshin# 19855163Sshingenattrtab.o genextract.o: insn-config.h 19955163Sshininsn-attrtab.o: insn-attr.h insn-config.h 20055163Sshininsn-emit.o: insn-codes.h insn-config.h insn-flags.h 20155163Sshininsn-opinit.o: insn-codes.h insn-config.h insn-flags.h 20255163Sshininsn-output.o: insn-attr.h insn-codes.h insn-config.h insn-flags.h 20355163Sshininsn-recog.o: insn-config.h 20455163Sshin 20555163Sshingenattr.o gencodes.o genconfig.o genemit.o genextract.o genflags.o genopinit.o genoutput.o genpeep.o genrecog.o: genrtl.h 20655163Sshin.endif 20755163Sshin