Makefile revision 45519
118390Speter# 245519Sbde# $Id: Makefile,v 1.24 1999/04/08 23:37:46 obrien Exp $ 318390Speter# 418390Speter 518390Speter# 618390Speter# This could probably be merged with ../cc_int/Makefile, but bsd.lib.mk 734112Sbde# is such a !@#!*#% nightmare because of how it reprograms the dependencies, 818390Speter# suffix rules, SRCS, etc. It's easiest to cheat by using bsd.prog.mk and 918390Speter# SRCS to get dependencies. 1018390Speter# 1118390Speter 1235402Sbde# ../Makefile.inc will put an absolute path to our objdir in CFLAGS. 1335402Sbde# Prevent mkdep from using it, so that we don't have to give rules for 1435402Sbde# aliases of generated headers. 1535402Sbde# 1645299SobrienCFLAGS+= -I${GCCDIR}/objc 1735402Sbde 1818390Speter.include "../Makefile.inc" 1918390Speter 2045299Sobrien.PATH: ${GCCDIR} ${GCCDIR}/cp 2118390Speter 2218390Speter#----------------------------------------------------------------------- 2318390Speter# insn-* gunk 2418390Speter 2535402Sbde.for i in attr codes config flags 2635402Sbdeinsn-$i.h: gen$i ${MD_FILE} 2718390Speter ./gen$i ${MD_FILE} > insn-$i.h 2835402SbdeGENSRCS+= insn-$i.h 2918390Speter.endfor 3018390Speter 3135402Sbde.for i in attrtab emit extract opinit output peep recog 3235402Sbdeinsn-$i.c: gen$i ${MD_FILE} 3318390Speter ./gen$i ${MD_FILE} > insn-$i.c 3435402SbdeGENSRCS+= insn-$i.c 3518390Speter.endfor 3618390Speter 3735402Sbde.for i in attr codes config emit extract flags opinit output peep recog 3837460Sbdebuild-tools: gen$i 3937460Sbde 4045299Sobriengen$i: gen$i.o rtl.o obstack.o bitmap.o 4138462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 4218390Speter 4335402SbdeGENSRCS+= gen$i.c 4435402SbdeCLEANFILES+= gen$i 4518390Speter.endfor 4618390Speter 4745299Sobrien.for i in check genrtl 4845299Sobrienbuild-tools: gen$i 4945299Sobrien 5045299Sobriengen$i: gen$i.o 5145299Sobrien ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 5245299Sobrien 5345299SobrienGENSRCS+= gen$i.c 5445299SobrienCLEANFILES+= gen$i 5545299Sobrien.endfor 5645299Sobrien 5745519Sbde.ORDER: genrtl.c genrtl.h 5845299Sobriengenrtl.h genrtl.c: gengenrtl 5945299Sobrien ./gengenrtl genrtl.h genrtl.c 6045299Sobrien 6145466SobrienGENSRCS+= genrtl.c genrtl.h 6245299Sobrien 6318390Speter.for i in attrtab 6437460Sbdebuild-tools: gen$i 6537460Sbde 6645299Sobriengen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o bitmap.o 6738462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 6818390Speter 6935402SbdeGENSRCS+= gen$i.c 7035402SbdeCLEANFILES+= gen$i 7118390Speter.endfor 7218390Speter 7345299SobrienSRCS+= bitmap.c print-rtl.c rtl.c rtlanal.c obstack.c 7418390Speter#----------------------------------------------------------------------- 7518390Speter# C hash codes 7618390Speterc-gperf.h: c-parse.gperf 7718390Speter gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \ 7818390Speter ${GCCDIR}/c-parse.gperf > ${.TARGET} 7935402SbdeGENSRCS+= c-gperf.h 8018390Speter 8118390Speter#----------------------------------------------------------------------- 8218390Speter# C++ hash codes 8318390Speterhash.h: gxx.gperf 8418390Speter gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \ 8518390Speter ${GCCDIR}/cp/gxx.gperf >hash.h 8635402SbdeGENSRCS+= hash.h 8718390Speter 8818390Speter#----------------------------------------------------------------------- 8945299Sobrien# common parser stuff 9045299Sobrien 9145299Sobrientree-check.h: gencheck 9245299Sobrien ./gencheck > ${.TARGET} 9345519SbdeGENSRCS+= tree-check.h 9445299Sobrien 9545299Sobrien#----------------------------------------------------------------------- 9618390Speter# C parser 9745519Sbde.ORDER: c-parse.c c-parse.h 9818390Speterc-parse.c c-parse.h: c-parse.in 9918390Speter sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ 10018390Speter -e "/^ifc$$/d" -e "/^end ifc$$/d" \ 10118390Speter ${GCCDIR}/c-parse.in > c-parse.y 10218390Speter ${BISON} -d c-parse.y -o c-parse.c 10318390Speter rm -f c-parse.y 10418390Speter 10535402SbdeGENSRCS+= c-parse.c c-parse.h 10635402SbdeCLEANFILES+= c-parse.y # insurance 10718390Speter 10818390Speter#----------------------------------------------------------------------- 10918390Speter# objc parser 11045519Sbde.ORDER: objc-parse.c objc-parse.h 11118390Speterobjc-parse.c objc-parse.h: c-parse.in 11218390Speter sed -e "/^ifc$$/,/^end ifc$$/d" \ 11318390Speter -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \ 11418390Speter ${GCCDIR}/c-parse.in > objc-parse.y 11518390Speter ${BISON} -d objc-parse.y -o objc-parse.c 11618390Speter rm -f objc-parse.y 11718390Speter 11835402SbdeGENSRCS+= objc-parse.c objc-parse.h 11935402SbdeCLEANFILES+= objc-parse.y # insurance 12018390Speter 12118390Speter#----------------------------------------------------------------------- 12234112Sbde# C++ parser done in its own makefile 12318390Speter#----------------------------------------------------------------------- 12434112Sbde# CPP parser done in its own makefile 12518390Speter#----------------------------------------------------------------------- 12618390Speter# the host/target compiler config. 12718390Speter 12845299SobrienCOMMONHDRS= config.h hconfig.h options.h specs.h tconfig.h tm.h multilib.h 12940457SbdeGENSRCS+= ${COMMONHDRS} 13034112Sbde 13145299Sobrienconfig.h hconfig.h: 13245299Sobrien echo '#include "auto-host.h"' > ${.TARGET} 13345299Sobrien echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' >> ${.TARGET} 13445299Sobrien 13545299Sobrientconfig.h: 13645299Sobrien echo '#include "${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h"' > ${.TARGET} 13745299Sobrien 13840457Sbdeoptions.h: 13940457Sbde echo '#include "cp/lang-options.h"' > ${.TARGET} 14045299Sobrien #echo '#include "f/lang-options.h"' >> ${.TARGET} 14145299Sobrien 14240457Sbdespecs.h: 14345299Sobrien echo '#include "cp/lang-specs.h"' > ${.TARGET} 14445299Sobrien #echo '#include "f/lang-specs.h"' >> ${.TARGET} 14545299Sobrien 14640457Sbdetm.h: 14745299Sobrien echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET} 14845307Sobrien.if ${MACHINE_ARCH} == "i386" 14945299Sobrien echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET} 15045307Sobrien.endif 15145299Sobrien echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET} 15245305Sobrien.if ${MACHINE_ARCH} == "i386" 15345299Sobrien echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET} 15445305Sobrien.endif 15518390Speter 15645299Sobrienmultilib.h: genmultilib 15745480Speter echo 'static char *multilib_raw[] = {"aout maout;", "elf !maout;", NULL};' > multilib.h 15845480Speter echo 'static char *multilib_matches_raw[] = {"maout maout;", "melf melf;", NULL};' >> multilib.h 15945340Speter echo 'static char *multilib_extra = "";' >> multilib.h 16045299Sobrien 16134229Speter#----------------------------------------------------------------------- 16235402Sbde# General things. 16334229Speter 16435402SbdeSRCS+= ${GENSRCS} 16535402SbdeCLEANFILES+= ${GENSRCS} 16634229Speter 16735402Sbdeall: ${SRCS} 16835402Sbde 16935402Sbde.include <bsd.prog.mk> 17035402Sbde 17134229Speter#----------------------------------------------------------------------- 17235402Sbde# Fixups. 17334112Sbde 17435402Sbde# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 17535402Sbde# define PROG because we have multiple programs. 17635402Sbde# 17735402SbdeOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 17835402Sbde 17935402Sbde.if !exists(${DEPENDFILE}) 18045519Sbde# Fudge pre-dependfile dependencies of objects in much the same way as 18145519Sbde# bsd.prog.mk would do if we defined PROG. There are complications to 18245519Sbde# avoid circular dependencies. First, only make most objects depend on 18345519Sbde# all headers. Filter out the objects that would cause problems (i.e., 18445519Sbde# objects that will be used to create programs that will generate headers). 18535402Sbde# 18645519Sbde${OBJS:Nbitmap.o:Ngenattr.o:Ngencheck.o:Ngencodes.o:Ngenconfig.o:Ngenflags.o:Ngengenrtl.o:Nobstack.o:Nrtl.o}: ${SRCS:M*.h} 18735402Sbde 18845519Sbde# Next, make each of the problematic objects depend on only most headers. 18945519Sbde# Filter out the headers that would cause problems (and a few more when it 19045519Sbde# is inconvenient to filter precisely). 19135402Sbde# 19245519Sbdebitmap.o genattr.o gencodes.o genconfig.o genflags.o obstack.o rtl.o: \ 19345519Sbde ${SRCS:M*.h:Ninsn-*.h} 19445519Sbdegencheck.o: ${SRCS:M*.h:Ngenrtl.h:Ntree-check.h:Ninsn-*.h} 19545519Sbdegengenrtl.o: ${SRCS:M*.h:Ngenrtl.h:Ninsn-*.h} 19635402Sbde.endif 197