aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2024-01-02 02:00:09 -0500
committerMike Frysinger <vapier@gentoo.org>2024-01-02 02:19:50 -0500
commit431d8a2ca40e21b1f0ff61b6283e57fe32e12168 (patch)
treef5311e79adf8e23c5340be6375a0984881bdc7ea
parent5f7e03a6bb13bc14be42297d9fc798d01c0a47f0 (diff)
downloadfsf-binutils-gdb-431d8a2ca40e21b1f0ff61b6283e57fe32e12168.zip
fsf-binutils-gdb-431d8a2ca40e21b1f0ff61b6283e57fe32e12168.tar.gz
fsf-binutils-gdb-431d8a2ca40e21b1f0ff61b6283e57fe32e12168.tar.bz2
sim: ppc: hoist igen execution to top-level
Invoke ppc's igen from the top-level like we do for all other ports.
-rw-r--r--sim/Makefile.in113
-rw-r--r--sim/arch-subdir.mk.in2
-rw-r--r--sim/ppc/Makefile.in63
-rw-r--r--sim/ppc/local.mk63
4 files changed, 153 insertions, 88 deletions
diff --git a/sim/Makefile.in b/sim/Makefile.in
index 6dc2ef2..be2b9b4 100644
--- a/sim/Makefile.in
+++ b/sim/Makefile.in
@@ -280,32 +280,41 @@ TESTS = testsuite/common/bits32m0$(EXEEXT) \
@SIM_ENABLE_ARCH_or1k_TRUE@am__append_87 = or1k/eng.h
@SIM_ENABLE_ARCH_or1k_TRUE@am__append_88 = $(or1k_BUILD_OUTPUTS)
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_89 = common/libcommon.a \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/defines.h $(PPC_IGEN)
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/defines.h ppc/stamp-igen
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_90 = ppc/run
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_91 = ppc/defines.h \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-defines $(ppc_IGEN_TOOLS) \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/libigen.a
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-defines \
+@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_BUILD_OUTPUTS) \
+@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_IGEN_TOOLS) ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_92 = ppc/libigen.a
-@SIM_ENABLE_ARCH_ppc_TRUE@am__append_93 = $(ppc_IGEN_TOOLS)
-@SIM_ENABLE_ARCH_pru_TRUE@am__append_94 = pru/libsim.a
-@SIM_ENABLE_ARCH_pru_TRUE@am__append_95 = pru/run
-@SIM_ENABLE_ARCH_riscv_TRUE@am__append_96 = riscv/libsim.a
-@SIM_ENABLE_ARCH_riscv_TRUE@am__append_97 = riscv/run
-@SIM_ENABLE_ARCH_rl78_TRUE@am__append_98 = rl78/libsim.a
-@SIM_ENABLE_ARCH_rl78_TRUE@am__append_99 = rl78/run
-@SIM_ENABLE_ARCH_rx_TRUE@am__append_100 = rx/libsim.a
-@SIM_ENABLE_ARCH_rx_TRUE@am__append_101 = rx/run
-@SIM_ENABLE_ARCH_sh_TRUE@am__append_102 = sh/libsim.a
-@SIM_ENABLE_ARCH_sh_TRUE@am__append_103 = sh/run
-@SIM_ENABLE_ARCH_sh_TRUE@am__append_104 = \
+@SIM_ENABLE_ARCH_ppc_TRUE@am__append_93 = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.h
+
+@SIM_ENABLE_ARCH_ppc_TRUE@am__append_94 = $(ppc_IGEN_TOOLS)
+@SIM_ENABLE_ARCH_pru_TRUE@am__append_95 = pru/libsim.a
+@SIM_ENABLE_ARCH_pru_TRUE@am__append_96 = pru/run
+@SIM_ENABLE_ARCH_riscv_TRUE@am__append_97 = riscv/libsim.a
+@SIM_ENABLE_ARCH_riscv_TRUE@am__append_98 = riscv/run
+@SIM_ENABLE_ARCH_rl78_TRUE@am__append_99 = rl78/libsim.a
+@SIM_ENABLE_ARCH_rl78_TRUE@am__append_100 = rl78/run
+@SIM_ENABLE_ARCH_rx_TRUE@am__append_101 = rx/libsim.a
+@SIM_ENABLE_ARCH_rx_TRUE@am__append_102 = rx/run
+@SIM_ENABLE_ARCH_sh_TRUE@am__append_103 = sh/libsim.a
+@SIM_ENABLE_ARCH_sh_TRUE@am__append_104 = sh/run
+@SIM_ENABLE_ARCH_sh_TRUE@am__append_105 = \
@SIM_ENABLE_ARCH_sh_TRUE@ sh/code.c \
@SIM_ENABLE_ARCH_sh_TRUE@ sh/ppi.c
-@SIM_ENABLE_ARCH_sh_TRUE@am__append_105 = sh/gencode
-@SIM_ENABLE_ARCH_sh_TRUE@am__append_106 = $(sh_BUILD_OUTPUTS)
-@SIM_ENABLE_ARCH_v850_TRUE@am__append_107 = v850/libsim.a
-@SIM_ENABLE_ARCH_v850_TRUE@am__append_108 = v850/run
-@SIM_ENABLE_ARCH_v850_TRUE@am__append_109 = \
+@SIM_ENABLE_ARCH_sh_TRUE@am__append_106 = sh/gencode
+@SIM_ENABLE_ARCH_sh_TRUE@am__append_107 = $(sh_BUILD_OUTPUTS)
+@SIM_ENABLE_ARCH_v850_TRUE@am__append_108 = v850/libsim.a
+@SIM_ENABLE_ARCH_v850_TRUE@am__append_109 = v850/run
+@SIM_ENABLE_ARCH_v850_TRUE@am__append_110 = \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/icache.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/idecode.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/semantics.h \
@@ -314,7 +323,7 @@ TESTS = testsuite/common/bits32m0$(EXEEXT) \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/itable.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/engine.h
-@SIM_ENABLE_ARCH_v850_TRUE@am__append_110 = $(v850_BUILD_OUTPUTS)
+@SIM_ENABLE_ARCH_v850_TRUE@am__append_111 = $(v850_BUILD_OUTPUTS)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -1850,13 +1859,14 @@ noinst_LIBRARIES = common/libcommon.a $(am__append_3) $(am__append_5) \
$(am__append_46) $(am__append_50) $(am__append_54) \
$(am__append_58) $(am__append_62) $(am__append_64) \
$(am__append_69) $(am__append_77) $(am__append_81) \
- $(am__append_83) $(am__append_85) $(am__append_94) \
- $(am__append_96) $(am__append_98) $(am__append_100) \
- $(am__append_102) $(am__append_107)
+ $(am__append_83) $(am__append_85) $(am__append_95) \
+ $(am__append_97) $(am__append_99) $(am__append_101) \
+ $(am__append_103) $(am__append_108)
BUILT_SOURCES = $(am__append_15) $(am__append_21) $(am__append_25) \
$(am__append_36) $(am__append_44) $(am__append_48) \
$(am__append_56) $(am__append_71) $(am__append_79) \
- $(am__append_87) $(am__append_104) $(am__append_109)
+ $(am__append_87) $(am__append_93) $(am__append_105) \
+ $(am__append_110)
CLEANFILES = common/version.c common/version.c-stamp \
testsuite/common/bits-gen testsuite/common/bits32m0.c \
testsuite/common/bits32m31.c testsuite/common/bits64m0.c \
@@ -1872,7 +1882,7 @@ MOSTLYCLEANFILES = core $(SIM_ENABLED_ARCHES:%=%/*.o) \
$(am__append_37) $(am__append_45) $(am__append_49) \
$(am__append_53) $(am__append_57) $(am__append_61) \
$(am__append_75) $(am__append_80) $(am__append_88) \
- $(am__append_91) $(am__append_106) $(am__append_110)
+ $(am__append_91) $(am__append_107) $(am__append_111)
CONFIG_STATUS_DEPENDENCIES = $(srcroot)/bfd/development.sh
AM_CFLAGS = \
$(WERROR_CFLAGS) \
@@ -2950,7 +2960,39 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_SOURCES = ppc/igen.c
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_LDADD = ppc/libigen.a
+
+# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
+# leak detection while running it.
@SIM_ENABLE_ARCH_ppc_TRUE@PPC_IGEN = ppc/igen$(EXEEXT)
+@SIM_ENABLE_ARCH_ppc_TRUE@PPC_IGEN_RUN = ASAN_OPTIONS=detect_leaks=0 $(PPC_IGEN) $(ppc_IGEN_FLAGS)
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_FLAGS = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_decode_mechanism@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_dup@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_jump@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_filter@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_icache@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_igen_smp@ \
+@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_line_nr@
+
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc_BUILT_SRC_FROM_IGEN = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.c
+
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc_BUILD_OUTPUTS = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_BUILT_SRC_FROM_IGEN) \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-igen
+
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_OPCODE_RULES = ppc/@sim_ppc_opcode@
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_SOURCES =
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_LDADD = ppc/filter-main.o ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_cache_SOURCES =
@@ -2966,6 +3008,7 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn
+@SIM_ENABLE_ARCH_ppc_TRUE@IGEN_OPCODE_RULES = @sim_ppc_opcode@
@SIM_ENABLE_ARCH_ppc_TRUE@ppcdocdir = $(docdir)/ppc
@SIM_ENABLE_ARCH_ppc_TRUE@ppcdoc_DATA = ppc/BUGS ppc/INSTALL ppc/README ppc/RUN
@SIM_ENABLE_ARCH_pru_TRUE@nodist_pru_libsim_a_SOURCES = \
@@ -5782,6 +5825,24 @@ testsuite/common/bits64m63.c: testsuite/common/bits-gen$(EXEEXT) testsuite/commo
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_GEN)$(srcdir)/ppc/spreg-gen.py --header $@.tmp
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)$(SHELL) $(srcroot)/move-if-change $@.tmp $(srcdir)/ppc/spreg.h
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)touch $(srcdir)/ppc/spreg.h
+@SIM_ENABLE_ARCH_ppc_TRUE@$(ppc_BUILT_SRC_FROM_IGEN): ppc/stamp-igen
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc/stamp-igen: ppc/powerpc.igen ppc/altivec.igen ppc/e500.igen $(ppc_IGEN_OPCODE_RULES) $(PPC_IGEN)
+@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_GEN)$(PPC_IGEN_RUN) \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -o $(srcdir)/$(ppc_IGEN_OPCODE_RULES) \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -I $(srcdir)/ppc -i $(srcdir)/ppc/powerpc.igen \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n icache.h -hc ppc/icache.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n icache.c -c ppc/icache.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n semantics.h -hs ppc/semantics.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n semantics.c -s ppc/semantics.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n idecode.h -hd ppc/idecode.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n idecode.c -d ppc/idecode.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n itable.h -ht ppc/itable.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n itable.c -t ppc/itable.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n model.h -hm ppc/model.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n model.c -m ppc/model.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n support.h -hf ppc/support.h \
+@SIM_ENABLE_ARCH_ppc_TRUE@ -n support.c -f ppc/support.c
+@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)touch $@
@SIM_ENABLE_ARCH_ppc_TRUE@ppc/libigen.a: $(ppc_libigen_a_OBJECTS) $(ppc_libigen_a_DEPENDENCIES) $(EXTRA_ppc_libigen_a_DEPENDENCIES) ppc/$(am__dirstamp)
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)-rm -f $@
diff --git a/sim/arch-subdir.mk.in b/sim/arch-subdir.mk.in
index afa1103..c3da955 100644
--- a/sim/arch-subdir.mk.in
+++ b/sim/arch-subdir.mk.in
@@ -64,3 +64,5 @@ MAINT = ; @true
SIM_INLINE = @SIM_INLINE@
SIM_HW_CFLAGS = @SIM_HW_CFLAGS@
+
+PPC_IGEN_FLAGS = $(ppc_IGEN_FLAGS)
diff --git a/sim/ppc/Makefile.in b/sim/ppc/Makefile.in
index 220e4b8..5717ddc 100644
--- a/sim/ppc/Makefile.in
+++ b/sim/ppc/Makefile.in
@@ -86,29 +86,6 @@ NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(INCLUDES) $(SIM_FP
LIBS = $(COMMON_LIBS) @LIBS@ $(LIBGNU) $(LIBGNU_EXTRA_LIBS)
-IGEN_OPCODE_RULES = @sim_ppc_opcode@
-IGEN_DECODE_MECHANISM = @sim_ppc_decode_mechanism@
-IGEN_DUPLICATE = @sim_ppc_dup@
-IGEN_JUMP = @sim_ppc_jump@
-IGEN_FILTER = @sim_ppc_filter@
-IGEN_ICACHE = @sim_ppc_icache@
-IGEN_SMP = @sim_ppc_igen_smp@
-IGEN_LINE_NR = @sim_ppc_line_nr@
-
-IGEN_FLAGS = \
- $(IGEN_DECODE_MECHANISM) \
- $(IGEN_DUPLICATE) \
- $(IGEN_JUMP) \
- $(IGEN_FILTER) \
- $(IGEN_ICACHE) \
- $(IGEN_SMP) \
- $(IGEN_LINE_NR)
-
-# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
-# leak detection while running it.
-
-IGEN = ASAN_OPTIONS=detect_leaks=0 ./igen
-
.NOEXPORT:
MAKEOVERRIDES=
@@ -268,9 +245,6 @@ IDECODE_EXPRESSION_H = \
IDECODE_FIELDS_H = \
idecode_fields.h
-IGEN_H = \
- igen.h
-
INLINE_H = \
inline.h
@@ -388,13 +362,6 @@ INLINE = \
inline.c
BUILT_SRC_WO_CONFIG = \
- icache.h icache.c \
- support.h support.c \
- idecode.h idecode.c \
- semantics.h semantics.c \
- itable.h itable.c \
- model.h model.c \
- support.h support.c \
pk.h \
hw.h hw.c
@@ -489,7 +456,7 @@ PACKAGE_SRC = pk_disklabel.c
PACKAGE_OBJ = $(PACKAGE_SRC:.c=.o)
-$(TARGETLIB): tmp-igen tmp-hw defines.h $(LIB_OBJ) $(GDB_OBJ)
+$(TARGETLIB): tmp-hw defines.h $(LIB_OBJ) $(GDB_OBJ)
$(ECHO_AR) $(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ)
$(ECHO_RANLIB) $(RANLIB) $(TARGETLIB)
@@ -560,33 +527,7 @@ sim-fpu.o: $(srcdir)/../common/sim-fpu.c
# Rebuild options whenever something changes so the date/time is up to date.
options.o: options.c $(CPU_H) $(OPTIONS_H) $(DEFINES_H) $(BASICS_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) ../config.status Makefile
- $(ECHO_CC) $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_ppc_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' $(srcdir)/options.c
-
-#
-# Rules to create the built c source code files
-#
-
-tmp-igen: igen $(srcdir)/powerpc.igen $(srcdir)/altivec.igen $(srcdir)/e500.igen $(IGEN_OPCODE_RULES) $(srcroot)/move-if-change
- $(ECHO_GEN) $(IGEN) $(IGEN_FLAGS) \
- -o $(srcdir)/$(IGEN_OPCODE_RULES) \
- -I $(srcdir) -i $(srcdir)/powerpc.igen \
- -n icache.h -hc icache.h \
- -n icache.c -c icache.c \
- -n semantics.h -hs semantics.h \
- -n semantics.c -s semantics.c \
- -n idecode.h -hd idecode.h \
- -n idecode.c -d idecode.c \
- -n itable.h -ht itable.h \
- -n itable.c -t itable.c \
- -n model.h -hm model.h \
- -n model.c -m model.c \
- -n support.h -hf support.h \
- -n support.c -f support.c
- $(SILENCE) touch $@
-
-$(TARGETLIB): tmp-igen
-itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c model.h model.c support.h support.c: tmp-igen
-
+ $(ECHO_CC) $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_ppc_opcode@"' '-DIGEN_FLAGS="$(ppc_IGEN_FLAGS)"' $(srcdir)/options.c
# real hardware
hw.c hw.h: tmp-hw; @true
diff --git a/sim/ppc/local.mk b/sim/ppc/local.mk
index e2d6197..8b5a165 100644
--- a/sim/ppc/local.mk
+++ b/sim/ppc/local.mk
@@ -74,9 +74,68 @@ EXTRA_LIBRARIES += %D%/libigen.a
%C%_igen_SOURCES = %D%/igen.c
%C%_igen_LDADD = %D%/libigen.a
+# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
+# leak detection while running it.
PPC_IGEN = %D%/igen$(EXEEXT)
+PPC_IGEN_RUN = ASAN_OPTIONS=detect_leaks=0 $(PPC_IGEN) $(%C%_IGEN_FLAGS)
+
+%C%_IGEN_FLAGS = \
+ @sim_ppc_decode_mechanism@ \
+ @sim_ppc_dup@ \
+ @sim_ppc_jump@ \
+ @sim_ppc_filter@ \
+ @sim_ppc_icache@ \
+ @sim_ppc_igen_smp@ \
+ @sim_ppc_line_nr@
+
+## List all generated headers to help Automake dependency tracking.
+BUILT_SOURCES += \
+ %D%/icache.h \
+ %D%/idecode.h \
+ %D%/semantics.h \
+ %D%/model.h \
+ %D%/support.h \
+ %D%/itable.h
+%C%_BUILT_SRC_FROM_IGEN = \
+ %D%/icache.h \
+ %D%/icache.c \
+ %D%/idecode.h \
+ %D%/idecode.c \
+ %D%/semantics.h \
+ %D%/semantics.c \
+ %D%/model.h \
+ %D%/model.c \
+ %D%/support.h \
+ %D%/support.c \
+ %D%/itable.h \
+ %D%/itable.c
+%C%_BUILD_OUTPUTS = \
+ $(%C%_BUILT_SRC_FROM_IGEN) \
+ %D%/stamp-igen
+
+SIM_ALL_RECURSIVE_DEPS += %D%/stamp-igen
+$(%C%_BUILT_SRC_FROM_IGEN): %D%/stamp-igen
+
+%C%_IGEN_OPCODE_RULES = %D%/@sim_ppc_opcode@
+%D%/stamp-igen: %D%/powerpc.igen %D%/altivec.igen %D%/e500.igen $(%C%_IGEN_OPCODE_RULES) $(PPC_IGEN)
+ $(AM_V_GEN)$(PPC_IGEN_RUN) \
+ -o $(srcdir)/$(%C%_IGEN_OPCODE_RULES) \
+ -I $(srcdir)/%D% -i $(srcdir)/%D%/powerpc.igen \
+ -n icache.h -hc %D%/icache.h \
+ -n icache.c -c %D%/icache.c \
+ -n semantics.h -hs %D%/semantics.h \
+ -n semantics.c -s %D%/semantics.c \
+ -n idecode.h -hd %D%/idecode.h \
+ -n idecode.c -d %D%/idecode.c \
+ -n itable.h -ht %D%/itable.h \
+ -n itable.c -t %D%/itable.c \
+ -n model.h -hm %D%/model.h \
+ -n model.c -m %D%/model.c \
+ -n support.h -hf %D%/support.h \
+ -n support.c -f %D%/support.c
+ $(AM_V_at)touch $@
-SIM_ALL_RECURSIVE_DEPS += $(PPC_IGEN)
+MOSTLYCLEANFILES += $(%C%_BUILD_OUTPUTS)
## These rules are copied from automake, but tweaked to use FOR_BUILD variables.
%D%/libigen.a: $(%C%_libigen_a_OBJECTS) $(%C%_libigen_a_DEPENDENCIES) $(EXTRA_%C%_libigen_a_DEPENDENCIES) %D%/$(am__dirstamp)
@@ -116,5 +175,7 @@ $(%C%_libigen_a_OBJECTS) $(%C%_igen_OBJECTS): %D%/%.o: %D%/%.c
EXTRA_PROGRAMS += $(%C%_IGEN_TOOLS)
MOSTLYCLEANFILES += $(%C%_IGEN_TOOLS) %D%/libigen.a
+IGEN_OPCODE_RULES = @sim_ppc_opcode@
+
%C%docdir = $(docdir)/%C%
%C%doc_DATA = %D%/BUGS %D%/INSTALL %D%/README %D%/RUN