Makefile revision 49810
118390Speter# 249810Sobrien# $Id: Makefile,v 1.34 1999/07/28 07:22:06 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# 1645582SbdeCFLAGS+= -I. 1735402Sbde 1818390Speter.include "../Makefile.inc" 1918390Speter 2045583Sbde.PATH: ${GCCDIR} ${GCCDIR}/cp 2145583Sbde 2245582SbdeCFLAGS+= -I${GCCDIR}/objc 2345582Sbde 2418390Speter#----------------------------------------------------------------------- 2518390Speter# insn-* gunk 2618390Speter 2735402Sbde.for i in attr codes config flags 2835402Sbdeinsn-$i.h: gen$i ${MD_FILE} 2918390Speter ./gen$i ${MD_FILE} > insn-$i.h 3035402SbdeGENSRCS+= insn-$i.h 3118390Speter.endfor 3218390Speter 3335402Sbde.for i in attrtab emit extract opinit output peep recog 3435402Sbdeinsn-$i.c: gen$i ${MD_FILE} 3518390Speter ./gen$i ${MD_FILE} > insn-$i.c 3635402SbdeGENSRCS+= insn-$i.c 3718390Speter.endfor 3818390Speter 3935402Sbde.for i in attr codes config emit extract flags opinit output peep recog 4037460Sbdebuild-tools: gen$i 4137460Sbde 4245299Sobriengen$i: gen$i.o rtl.o obstack.o bitmap.o 4338462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 4418390Speter 4535402SbdeGENSRCS+= gen$i.c 4635402SbdeCLEANFILES+= gen$i 4718390Speter.endfor 4818390Speter 4945583Sbde.for i in attrtab 5045299Sobrienbuild-tools: gen$i 5145299Sobrien 5245583Sbdegen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o bitmap.o 5345299Sobrien ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 5445299Sobrien 5545299SobrienGENSRCS+= gen$i.c 5645299SobrienCLEANFILES+= gen$i 5745299Sobrien.endfor 5845299Sobrien 5945583SbdeSRCS+= bitmap.c obstack.c print-rtl.c rtl.c rtlanal.c 6045299Sobrien 6145583Sbde.for i in check genrtl 6237460Sbdebuild-tools: gen$i 6337460Sbde 6445583Sbdegen$i: gen$i.o 6538462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 6618390Speter 6735402SbdeGENSRCS+= gen$i.c 6835402SbdeCLEANFILES+= gen$i 6918390Speter.endfor 7018390Speter 7145583Sbde.ORDER: genrtl.c genrtl.h 7245583Sbdegenrtl.c genrtl.h: gengenrtl 7345583Sbde ./gengenrtl genrtl.h genrtl.c 7445583Sbde 7545583SbdeGENSRCS+= genrtl.c genrtl.h 7645583Sbde 7718390Speter#----------------------------------------------------------------------- 7818390Speter# C hash codes 7918390Speterc-gperf.h: c-parse.gperf 8018390Speter gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \ 8118390Speter ${GCCDIR}/c-parse.gperf > ${.TARGET} 8235402SbdeGENSRCS+= c-gperf.h 8318390Speter 8418390Speter#----------------------------------------------------------------------- 8518390Speter# C++ hash codes 8618390Speterhash.h: gxx.gperf 8718390Speter gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \ 8818390Speter ${GCCDIR}/cp/gxx.gperf >hash.h 8935402SbdeGENSRCS+= hash.h 9018390Speter 9118390Speter#----------------------------------------------------------------------- 9245583Sbde# Common parser stuff. 9345299Sobrien 9445299Sobrientree-check.h: gencheck 9545299Sobrien ./gencheck > ${.TARGET} 9645519SbdeGENSRCS+= tree-check.h 9745299Sobrien 9845299Sobrien#----------------------------------------------------------------------- 9918390Speter# C parser 10045519Sbde.ORDER: c-parse.c c-parse.h 10118390Speterc-parse.c c-parse.h: c-parse.in 10218390Speter sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ 10318390Speter -e "/^ifc$$/d" -e "/^end ifc$$/d" \ 10418390Speter ${GCCDIR}/c-parse.in > c-parse.y 10549152Sobrien ${YACC} -d -o c-parse.c c-parse.y 10649810Sobrien mv c-parse.y c-parse.y.out 10718390Speter 10835402SbdeGENSRCS+= c-parse.c c-parse.h 10949810SobrienCLEANFILES+= c-parse.y c-parse.y.out # insurance 11018390Speter 11118390Speter#----------------------------------------------------------------------- 11218390Speter# objc parser 11345519Sbde.ORDER: objc-parse.c objc-parse.h 11418390Speterobjc-parse.c objc-parse.h: c-parse.in 11518390Speter sed -e "/^ifc$$/,/^end ifc$$/d" \ 11618390Speter -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \ 11718390Speter ${GCCDIR}/c-parse.in > objc-parse.y 11849152Sobrien ${YACC} -d -o objc-parse.c objc-parse.y 11949810Sobrien mv objc-parse.y objc-parse.y.out 12018390Speter 12135402SbdeGENSRCS+= objc-parse.c objc-parse.h 12249810SobrienCLEANFILES+= objc-parse.y objc-parse.y.out # insurance 12318390Speter 12418390Speter#----------------------------------------------------------------------- 12534112Sbde# C++ parser done in its own makefile 12618390Speter#----------------------------------------------------------------------- 12734112Sbde# CPP parser done in its own makefile 12818390Speter#----------------------------------------------------------------------- 12918390Speter# the host/target compiler config. 13018390Speter 13145583SbdeCOMMONHDRS= config.h hconfig.h multilib.h options.h specs.h tconfig.h tm.h 13240457SbdeGENSRCS+= ${COMMONHDRS} 13334112Sbde 13445299Sobrienconfig.h hconfig.h: 13545299Sobrien echo '#include "auto-host.h"' > ${.TARGET} 13645943Sobrien echo '#include "${GCC_ARCH}/xm-${GCC_ARCH}.h"' >> ${.TARGET} 13745299Sobrien 13845583Sbdemultilib.h: 13945583Sbde echo 'static char *multilib_raw[] = { \ 14045583Sbde "aout maout;", "elf !maout;", NULL };' > ${.TARGET} 14145583Sbde echo 'static char *multilib_matches_raw[] = { \ 14245583Sbde "maout maout;", "melf melf;", NULL };' >> ${.TARGET} 14345583Sbde echo 'static char *multilib_extra = "";' >> ${.TARGET} 14445299Sobrien 14540457Sbdeoptions.h: 14640457Sbde echo '#include "cp/lang-options.h"' > ${.TARGET} 14745767Sobrien echo '#include "f/lang-options.h"' >> ${.TARGET} 14845299Sobrien 14940457Sbdespecs.h: 15045299Sobrien echo '#include "cp/lang-specs.h"' > ${.TARGET} 15145767Sobrien echo '#include "f/lang-specs.h"' >> ${.TARGET} 15245299Sobrien 15345583Sbdetconfig.h: 15445943Sobrien echo '#include "${GCC_ARCH}/xm-${GCC_ARCH}.h"' > ${.TARGET} 15545583Sbde 15640457Sbdetm.h: 15745943Sobrien echo '#include "${GCC_ARCH}/${GCC_ARCH}.h"' > ${.TARGET} 15845943Sobrien echo '#include "${GCC_ARCH}/freebsd.h"' >> ${.TARGET} 15945943Sobrien.if ${GCC_ARCH} == "i386" 16045943Sobrien echo '#include "${GCC_ARCH}/perform.h"' >> ${.TARGET} 16145305Sobrien.endif 16246157Sobrien echo '#include <freebsd-native.h>' >> ${.TARGET} 16318390Speter 16434229Speter#----------------------------------------------------------------------- 16535402Sbde# General things. 16634229Speter 16735402SbdeSRCS+= ${GENSRCS} 16835402SbdeCLEANFILES+= ${GENSRCS} 16934229Speter 17035402Sbdeall: ${SRCS} 17135402Sbde 17235402Sbde.include <bsd.prog.mk> 17335402Sbde 17434229Speter#----------------------------------------------------------------------- 17535402Sbde# Fixups. 17634112Sbde 17735402Sbde# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 17835402Sbde# define PROG because we have multiple programs. 17935402Sbde# 18035402SbdeOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 18135402Sbde 18235402Sbde.if !exists(${DEPENDFILE}) 18345519Sbde# Fudge pre-dependfile dependencies of objects in much the same way as 18445519Sbde# bsd.prog.mk would do if we defined PROG. There are complications to 18545519Sbde# avoid circular dependencies. First, only make most objects depend on 18645519Sbde# all headers. Filter out the objects that would cause problems (i.e., 18745519Sbde# objects that will be used to create programs that will generate headers). 18835402Sbde# 18945519Sbde${OBJS:Nbitmap.o:Ngenattr.o:Ngencheck.o:Ngencodes.o:Ngenconfig.o:Ngenflags.o:Ngengenrtl.o:Nobstack.o:Nrtl.o}: ${SRCS:M*.h} 19035402Sbde 19145519Sbde# Next, make each of the problematic objects depend on only most headers. 19245519Sbde# Filter out the headers that would cause problems (and a few more when it 19345519Sbde# is inconvenient to filter precisely). 19435402Sbde# 19545519Sbdebitmap.o genattr.o gencodes.o genconfig.o genflags.o obstack.o rtl.o: \ 19645519Sbde ${SRCS:M*.h:Ninsn-*.h} 19745519Sbdegencheck.o: ${SRCS:M*.h:Ngenrtl.h:Ntree-check.h:Ninsn-*.h} 19845519Sbdegengenrtl.o: ${SRCS:M*.h:Ngenrtl.h:Ninsn-*.h} 19935402Sbde.endif 200