Makefile revision 38462
118390Speter# 238462Sjb# $Id: Makefile,v 1.12 1998/07/07 01:46:41 bde 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# 1635402SbdeCFLAGS+= -I. 1735402Sbde 1818390Speter.include "../Makefile.inc" 1918390Speter 2018390Speter#----------------------------------------------------------------------- 2118390Speter# Bytecode components 2218390Speter 2318390Speter.for i in arity opcode opname 2437460Sbdebuild-tools: bi-$i 2537460Sbde 2635402Sbdebc-$i.h: bi-$i bytecode.def 2718390Speter ./bi-$i < ${GCCDIR}/bytecode.def > bc-$i.h 2818390Speter 2935402Sbdebi-$i: bi-$i.o bi-parser.o bi-lexer.o bi-reverse.o 3038462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 3118390Speter 3235402SbdeGENSRCS+= bc-$i.h bi-$i.c 3335402SbdeCLEANFILES+= bi-$i 3418390Speter.endfor 3518390Speter 3630113Sjkh.ORDER: bi-parser.c bi-parser.h 3735402Sbdebi-parser.c bi-parser.h: bi-parser.y 3830113Sjkh ${BISON} ${BISONFLAGS} -d ${.ALLSRC} -o bi-parser.c 3918390Speter 4035402SbdeSRCS+= bi-lexer.c bi-reverse.c 4135402SbdeGENSRCS+= bi-parser.c bi-parser.h 4218390Speter 4318390Speter#----------------------------------------------------------------------- 4418390Speter# insn-* gunk 4518390Speter 4635402Sbde.for i in attr codes config flags 4735402Sbdeinsn-$i.h: gen$i ${MD_FILE} 4818390Speter ./gen$i ${MD_FILE} > insn-$i.h 4935402SbdeGENSRCS+= insn-$i.h 5018390Speter.endfor 5118390Speter 5235402Sbde.for i in attrtab emit extract opinit output peep recog 5335402Sbdeinsn-$i.c: gen$i ${MD_FILE} 5418390Speter ./gen$i ${MD_FILE} > insn-$i.c 5535402SbdeGENSRCS+= insn-$i.c 5618390Speter.endfor 5718390Speter 5835402Sbde.for i in attr codes config emit extract flags opinit output peep recog 5937460Sbdebuild-tools: gen$i 6037460Sbde 6135402Sbdegen$i: gen$i.o rtl.o obstack.o 6238462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 6318390Speter 6435402SbdeGENSRCS+= gen$i.c 6535402SbdeCLEANFILES+= gen$i 6618390Speter.endfor 6718390Speter 6818390Speter.for i in attrtab 6937460Sbdebuild-tools: gen$i 7037460Sbde 7135402Sbdegen$i: gen$i.o rtl.o rtlanal.o print-rtl.o obstack.o 7238462Sjb ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 7318390Speter 7435402SbdeGENSRCS+= gen$i.c 7535402SbdeCLEANFILES+= gen$i 7618390Speter.endfor 7718390Speter 7835402SbdeSRCS+= print-rtl.c rtl.c rtlanal.c obstack.c 7918390Speter 8018390Speter#----------------------------------------------------------------------- 8118390Speter# C hash codes 8218390Speterc-gperf.h: c-parse.gperf 8318390Speter gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \ 8418390Speter ${GCCDIR}/c-parse.gperf > ${.TARGET} 8535402SbdeGENSRCS+= c-gperf.h 8618390Speter 8718390Speter#----------------------------------------------------------------------- 8818390Speter# C++ hash codes 8918390Speterhash.h: gxx.gperf 9018390Speter gperf -p -j1 -g -o -t -N is_reserved_word '-k1,4,7,$$' \ 9118390Speter ${GCCDIR}/cp/gxx.gperf >hash.h 9235402SbdeGENSRCS+= hash.h 9318390Speter 9418390Speter#----------------------------------------------------------------------- 9518390Speter# C parser 9630113Sjkh.ORDER: c-parse.c c-parse.h 9718390Speterc-parse.c c-parse.h: c-parse.in 9818390Speter sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ 9918390Speter -e "/^ifc$$/d" -e "/^end ifc$$/d" \ 10018390Speter ${GCCDIR}/c-parse.in > c-parse.y 10118390Speter ${BISON} -d c-parse.y -o c-parse.c 10218390Speter rm -f c-parse.y 10318390Speter 10435402SbdeGENSRCS+= c-parse.c c-parse.h 10535402SbdeCLEANFILES+= c-parse.y # insurance 10618390Speter 10718390Speter#----------------------------------------------------------------------- 10818390Speter# objc parser 10930113Sjkh.ORDER: objc-parse.c objc-parse.h 11018390Speterobjc-parse.c objc-parse.h: c-parse.in 11118390Speter sed -e "/^ifc$$/,/^end ifc$$/d" \ 11218390Speter -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \ 11318390Speter ${GCCDIR}/c-parse.in > objc-parse.y 11418390Speter ${BISON} -d objc-parse.y -o objc-parse.c 11518390Speter rm -f objc-parse.y 11618390Speter 11735402SbdeGENSRCS+= objc-parse.c objc-parse.h 11835402SbdeCLEANFILES+= objc-parse.y # insurance 11918390Speter 12018390Speter#----------------------------------------------------------------------- 12134112Sbde# C++ parser done in its own makefile 12218390Speter#----------------------------------------------------------------------- 12334112Sbde# CPP parser done in its own makefile 12418390Speter#----------------------------------------------------------------------- 12518390Speter# the host/target compiler config. 12618390Speter 12734112SbdeCOMMONHDRS= config.h hconfig.h tconfig.h tm.h options.h specs.h 12834112Sbde 12934229Speter${COMMONHDRS}: 13032763Sjb echo '#include "${MACHINE_ARCH}/freebsd.h"' > tm.h 13132763Sjb echo '#include "${MACHINE_ARCH}/xm-freebsd.h"' > config.h 13232763Sjb echo '#include "${MACHINE_ARCH}/xm-freebsd.h"' > hconfig.h 13332763Sjb echo '#include "${MACHINE_ARCH}/xm-freebsd.h"' > tconfig.h 13432763Sjb echo '#include "cp/lang-options.h"' > options.h 13532763Sjb echo '#include "cp/lang-specs.h"' > specs.h 13632763Sjb echo '#include "f2c-specs.h"' >> specs.h 13718390Speter 13835402SbdeGENSRCS+= ${COMMONHDRS} 13918390Speter 14034229Speter#----------------------------------------------------------------------- 14135402Sbde# General things. 14234229Speter 14335402SbdeSRCS+= ${GENSRCS} 14435402SbdeCLEANFILES+= ${GENSRCS} 14534229Speter 14635402Sbdeall: ${SRCS} 14735402Sbde 14835402Sbde.include <bsd.prog.mk> 14935402Sbde 15034229Speter#----------------------------------------------------------------------- 15135402Sbde# Fixups. 15234112Sbde 15335402Sbde# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 15435402Sbde# define PROG because we have multiple programs. 15535402Sbde# 15635402SbdeOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 15735402Sbde 15835402Sbde.if !exists(${DEPENDFILE}) 15935402Sbde# Fudge pre-dependfile dependencies of objects the same as bsd.prog.mk 16035402Sbde# would do if we defined PROG, except for leaving out dependencies on 16135402Sbde# bc-*.h and insn-*.h because these dependencies would be circular. 16235402Sbde# 16335402Sbde${OBJS}: ${SRCS:M*.h:Nbc-*.h:Ninsn-*.h} 16435402Sbde 16535402Sbde# Give all dependencies on bc-*.h and insn-*.h explicitly (none here for 16635402Sbde# bc-*.h). This suffices for `make -j<any> depend', and after that all 16735402Sbde# the dependencies will be in .depend since all .c source files are in 16835402Sbde# SRCS. 16935402Sbde# 17035402Sbdegenattrtab.o genextract.o: insn-config.h 17135402Sbdeinsn-attrtab.o: insn-attr.h insn-config.h 17235402Sbdeinsn-emit.o: insn-codes.h insn-config.h insn-flags.h 17335402Sbdeinsn-opinit.o: insn-codes.h insn-config.h insn-flags.h 17435402Sbdeinsn-output.o: insn-attr.h insn-codes.h insn-config.h insn-flags.h 17535402Sbdeinsn-recog.o: insn-config.h 17635402Sbde.endif 177