+# CGEN support
+
+CGENDIR = @cgendir@
+CGEN = "`if [ -f ../../guile/libguile/guile ]; then echo ../../guile/libguile/guile; else echo guile ; fi` -l $(CGENDIR)/guile.scm -s"
+CGENFLAGS = -v
+CGEN_CPU_DIR = $(CGENDIR)/cpu
+
+CGEN_READ_SCM = $(CGENDIR)/sim.scm
+CGEN_ARCH_SCM = $(CGENDIR)/sim-arch.scm
+CGEN_CPU_SCM = $(CGENDIR)/sim-cpu.scm $(CGENDIR)/sim-model.scm
+CGEN_DECODE_SCM = $(CGENDIR)/sim-decode.scm
+CGEN_DESC_SCM = $(CGENDIR)/desc.scm $(CGENDIR)/desc-cpu.scm
+
+# Various choices for which cpu specific files to generate.
+CGEN_CPU_EXTR = -E tmp-ext.c1
+CGEN_CPU_READ = -R tmp-read.c1
+CGEN_CPU_WRITE = -W tmp-write.c1
+CGEN_CPU_SEM = -S tmp-sem.c1
+CGEN_CPU_SEMSW = -X tmp-semsw.c1
+
+CGEN_FLAGS_TO_PASS = \
+ CGEN='$(CGEN)' \
+ CGENFLAGS="$(CGENFLAGS)"
+
+# We store the generated files in the source directory until we decide to
+# ship a Scheme interpreter with gdb/binutils. Maybe we never will.
+
+cgen-arch: force
+ $(SHELL) $(srccom)/cgen.sh arch $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" ignored "$(isa)" $(mach) ignored \
+ $(archfile) ignored
+
+cgen-cpu: force
+ $(SHELL) $(srccom)/cgen.sh cpu $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" $(cpu) "$(isa)" $(mach) "$(SUFFIX)" \
+ $(archfile) "$(EXTRAFILES)"
+
+cgen-defs: force
+ $(SHELL) $(srccom)/cgen.sh defs $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" $(cpu) "$(isa)" $(mach) "$(SUFFIX)" \
+ $(archfile) ignored
+
+cgen-decode: force
+ $(SHELL) $(srccom)/cgen.sh decode $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" $(cpu) "$(isa)" $(mach) "$(SUFFIX)" \
+ $(archfile) "$(EXTRAFILES)"
+
+cgen-cpu-decode: force
+ $(SHELL) $(srccom)/cgen.sh cpu-decode $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" $(cpu) "$(isa)" $(mach) "$(SUFFIX)" \
+ $(archfile) "$(EXTRAFILES)"
+
+cgen-desc: force
+ $(SHELL) $(srccom)/cgen.sh desc $(srcdir) \
+ $(CGEN) $(CGENDIR) "$(CGENFLAGS)" \
+ $(arch) "$(FLAGS)" $(cpu) "$(isa)" $(mach) "$(SUFFIX)" \
+ $(archfile) ignored $(opcfile)
+