sim: mips: unify itable generation (a bit)
authorMike Frysinger <vapier@gentoo.org>
Sun, 25 Dec 2022 06:48:01 +0000 (01:48 -0500)
committerMike Frysinger <vapier@gentoo.org>
Tue, 27 Dec 2022 05:31:33 +0000 (00:31 -0500)
The m16 & multi targets generate itable once even when all the other
modules are generated multiple times.  The default igen target will
generate itable with everything else out of convenience.  This means
flags are passed which don't affect the generated itable there.

We can unify the itable generation by making sure the right -F/-M
filter variables are passed down.  Since there's already a dedicated
rule & variable in the multi build mode, generalize that and switch
the m16 & igen builds over too.

I spent a lot of time staring at this code, building for diff mips
targets, and exploring all the shell code paths.  I think this is
safe, but only time (and users) will really tell.

sim/configure
sim/mips/Makefile.in
sim/mips/acinclude.m4

index 10458921d5022e7b7298c3d5e7c4fa2fdbe637cc..093142f3c03af21f1eb46476b2a72ec740d6cb40 100755 (executable)
@@ -16601,6 +16601,10 @@ __EOF__
 
 else
       SIM_MIPS_MULTI_SRC=doesnt-exist.c
+  SIM_MIPS_IGEN_ITABLE_FLAGS='$(SIM_MIPS_IGEN_FLAGS)'
+  if test "x$SIM_MIPS_GEN" = x"M16"; then :
+  as_fn_append SIM_MIPS_IGEN_ITABLE_FLAGS ' $(SIM_MIPS_M16_FLAGS)'
+fi
 
 fi
 SIM_MIPS_IGEN_FLAGS="-F ${sim_mips_igen_filter} ${sim_mips_igen_machine}"
index 3861e4e507795f660093f78ca74b3e1986fb4446..4cd59642119056b456da897aed00d4dc3bb4a72f 100644 (file)
@@ -92,7 +92,7 @@ IGEN_INCLUDE=\
 # NB:  Since these can be built by a number of generators, care
 #      must be taken to ensure that they are only dependant on
 #      one of those generators.
-BUILT_SRC_FROM_GEN = \
+BUILT_SRC_FROM_IGEN_ITABLE = \
        itable.h \
        itable.c \
 
@@ -100,8 +100,24 @@ SIM_IGEN_ALL = tmp-igen
 SIM_M16_ALL = tmp-m16
 SIM_MULTI_ALL = tmp-multi
 
-$(BUILT_SRC_FROM_GEN): $(SIM_$(SIM_MIPS_GEN)_ALL)
+$(BUILT_SRC_FROM_IGEN_ITABLE): tmp-itable
 
+tmp-itable: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
+       $(ECHO_IGEN) $(IGEN_RUN) \
+               $(IGEN_TRACE) \
+               -I $(srcdir) \
+               -Werror \
+               -Wnodiscard \
+               -Wnowidth \
+               -Wnounimplemented \
+               $(SIM_MIPS_IGEN_ITABLE_FLAGS) \
+               -G gen-direct-access \
+               -G gen-zero-r0 \
+               -i $(IGEN_INSN) \
+               -n itable.h    -ht itable.h \
+               -n itable.c    -t  itable.c \
+               #
+       $(SILENCE) touch $@
 
 
 BUILT_SRC_FROM_IGEN = \
@@ -145,8 +161,6 @@ tmp-igen: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
                -n model.c     -m  model.c \
                -n support.h   -hf support.h \
                -n support.c   -f  support.c \
-               -n itable.h    -ht itable.h \
-               -n itable.c    -t  itable.c \
                -n engine.h    -he engine.h \
                -n engine.c    -e  engine.c \
                -n irun.c      -r  irun.c
@@ -228,25 +242,12 @@ tmp-m16: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
                -n m32_support.h   -hf m32_support.h \
                -n m32_support.c   -f  m32_support.c \
                #
-       $(ECHO_IGEN) $(IGEN_RUN) \
-               $(IGEN_TRACE) \
-               -I $(srcdir) \
-               -Werror \
-               -Wnodiscard \
-               -Wnowidth \
-               $(SIM_MIPS_IGEN_FLAGS) $(SIM_MIPS_M16_FLAGS) \
-               -G gen-direct-access \
-               -G gen-zero-r0 \
-               -i $(IGEN_INSN) \
-               -n itable.h    -ht itable.h \
-               -n itable.c    -t  itable.c \
-               #
        $(SILENCE) touch $@
 
 BUILT_SRC_FROM_MULTI = $(SIM_MIPS_MULTI_SRC)
 
 $(BUILT_SRC_FROM_MULTI): tmp-multi
-tmp-multi: tmp-mach-multi tmp-itable-multi tmp-run-multi
+tmp-multi: tmp-mach-multi tmp-run-multi
 tmp-mach-multi: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
        for t in $(SIM_MIPS_MULTI_IGEN_CONFIGS); do \
          p=`echo $${t} | sed -e 's/:.*//'` ; \
@@ -292,21 +293,6 @@ tmp-mach-multi: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
          || exit; \
        done
        $(SILENCE) touch $@
-tmp-itable-multi: $(IGEN_INSN) $(IGEN_DC) $(IGEN) $(IGEN_INCLUDE)
-       $(ECHO_IGEN) $(IGEN_RUN) \
-               $(IGEN_TRACE) \
-               -I $(srcdir) \
-               -Werror \
-               -Wnodiscard \
-               -Wnowidth \
-               $(SIM_MIPS_IGEN_ITABLE_FLAGS) \
-               -G gen-direct-access \
-               -G gen-zero-r0 \
-               -i $(IGEN_INSN) \
-               -n itable.h    -ht itable.h \
-               -n itable.c    -t  itable.c \
-               #
-       $(SILENCE) touch $@
 tmp-run-multi: $(srcdir)/m16run.c $(srcdir)/micromipsrun.c
        for t in $(SIM_MIPS_MULTI_IGEN_CONFIGS); do \
          case $${t} in \
@@ -347,7 +333,7 @@ tmp-run-multi: $(srcdir)/m16run.c $(srcdir)/micromipsrun.c
        $(SILENCE) touch $@
 
 clean-extra:
-       rm -f $(BUILT_SRC_FROM_GEN)
+       rm -f $(BUILT_SRC_FROM_IGEN_ITABLE)
        rm -f $(BUILT_SRC_FROM_IGEN)
        rm -f $(BUILT_SRC_FROM_M16)
        rm -f $(BUILT_SRC_FROM_MULTI)
index 116dc1e6141bac34a2450e1ea5d7267136022b51..452dfc84514f4d7aa5ded3cc07fce64f1c35c0e9 100644 (file)
@@ -321,6 +321,8 @@ __EOF__
 ], [dnl
   dnl For clean-extra target.
   SIM_MIPS_MULTI_SRC=doesnt-exist.c
+  SIM_MIPS_IGEN_ITABLE_FLAGS='$(SIM_MIPS_IGEN_FLAGS)'
+  AS_VAR_IF([SIM_MIPS_GEN], ["M16"], [AS_VAR_APPEND([SIM_MIPS_IGEN_ITABLE_FLAGS], [' $(SIM_MIPS_M16_FLAGS)'])])
 ])
 SIM_MIPS_IGEN_FLAGS="-F ${sim_mips_igen_filter} ${sim_mips_igen_machine}"
 SIM_MIPS_M16_FLAGS="-F ${sim_mips_m16_filter} ${sim_mips_m16_machine}"