From 10f554512f768ce4af44fcdc82bb48356025c363 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 2 Jan 2024 02:11:11 -0500 Subject: [PATCH] sim: ppc: hoist hw.[ch] creation to top-level --- sim/Makefile.in | 52 ++++++++++++++++++++++++++++++++++++++++------------ sim/ppc/Makefile.in | 37 ++----------------------------------- sim/ppc/local.mk | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 47 deletions(-) diff --git a/sim/Makefile.in b/sim/Makefile.in index be2b9b4..a60c640 100644 --- a/sim/Makefile.in +++ b/sim/Makefile.in @@ -280,21 +280,17 @@ 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/stamp-igen +@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/defines.h ppc/stamp-igen \ +@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-hw @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 \ @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 = \ -@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_93 = ppc/icache.h ppc/idecode.h \ +@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.h ppc/model.h \ +@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.h ppc/itable.h ppc/hw.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 @@ -2988,10 +2984,10 @@ testsuite_common_CPPFLAGS = \ @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_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/stamp-igen ppc/hw.c ppc/hw.h \ +@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-hw @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 @@ -3009,6 +3005,7 @@ testsuite_common_CPPFLAGS = \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn @SIM_ENABLE_ARCH_ppc_TRUE@IGEN_OPCODE_RULES = @sim_ppc_opcode@ +@SIM_ENABLE_ARCH_ppc_TRUE@ppc_HW_SRC = $(sim_ppc_hw_src:%=ppc/%) @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 = \ @@ -5857,6 +5854,37 @@ testsuite/common/bits64m63.c: testsuite/common/bits-gen$(EXEEXT) testsuite/commo @SIM_ENABLE_ARCH_ppc_TRUE@ppc/%-main.o: ppc/%.c @SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_CC)$(COMPILE_FOR_BUILD) -DMAIN -c $< -o $@ +@SIM_ENABLE_ARCH_ppc_TRUE@ppc/hw.c ppc/hw.h: ppc/stamp-hw ; @true +@SIM_ENABLE_ARCH_ppc_TRUE@ppc/stamp-hw: Makefile $(ppc_HW_SRC) $(srcroot)/move-if-change +@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_GEN)\ +@SIM_ENABLE_ARCH_ppc_TRUE@ f=""; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ for i in $(ppc_HW_SRC) ; do \ +@SIM_ENABLE_ARCH_ppc_TRUE@ case " $$f " in \ +@SIM_ENABLE_ARCH_ppc_TRUE@ *" $$i "*) ;; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ *) f="$$f $$i" ;; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ esac ; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ done ; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ for hw in $$f ; do echo $$hw ; done \ +@SIM_ENABLE_ARCH_ppc_TRUE@ | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ -e 's/^/extern const device_descriptor /' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ -e 's/$$/_device_descriptor\[\];/' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ > ppc/hw.hin; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ f=""; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ for i in $(ppc_HW_SRC) ; do \ +@SIM_ENABLE_ARCH_ppc_TRUE@ case " $$f " in \ +@SIM_ENABLE_ARCH_ppc_TRUE@ *" $$i "*) ;; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ *) f="$$f $$i" ;; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ esac ; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ done ; \ +@SIM_ENABLE_ARCH_ppc_TRUE@ for hw in $$f ; do echo $$hw ; done \ +@SIM_ENABLE_ARCH_ppc_TRUE@ | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ -e 's/^/ /' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ -e 's/$$/_device_descriptor,/' \ +@SIM_ENABLE_ARCH_ppc_TRUE@ > ppc/hw.cin +@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)$(SHELL) $(srcroot)/move-if-change ppc/hw.hin ppc/hw.h +@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)$(SHELL) $(srcroot)/move-if-change ppc/hw.cin ppc/hw.c +@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)touch $@ +@SIM_ENABLE_ARCH_ppc_TRUE@ppc/hw.c ppc/hw.h: ppc/stamp-igen @SIM_ENABLE_ARCH_pru_TRUE@$(pru_libsim_a_OBJECTS) $(pru_libsim_a_LIBADD): pru/hw-config.h @SIM_ENABLE_ARCH_pru_TRUE@pru/modules.o: pru/modules.c diff --git a/sim/ppc/Makefile.in b/sim/ppc/Makefile.in index 5717ddc..ed3185f 100644 --- a/sim/ppc/Makefile.in +++ b/sim/ppc/Makefile.in @@ -362,8 +362,7 @@ INLINE = \ inline.c BUILT_SRC_WO_CONFIG = \ - pk.h \ - hw.h hw.c + pk.h BUILT_SRC = \ $(BUILT_SRC_WO_CONFIG) @@ -456,7 +455,7 @@ PACKAGE_SRC = pk_disklabel.c PACKAGE_OBJ = $(PACKAGE_SRC:.c=.o) -$(TARGETLIB): tmp-hw defines.h $(LIB_OBJ) $(GDB_OBJ) +$(TARGETLIB): defines.h $(LIB_OBJ) $(GDB_OBJ) $(ECHO_AR) $(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ) $(ECHO_RANLIB) $(RANLIB) $(TARGETLIB) @@ -529,38 +528,6 @@ sim-fpu.o: $(srcdir)/../common/sim-fpu.c 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="$(ppc_IGEN_FLAGS)"' $(srcdir)/options.c -# real hardware -hw.c hw.h: tmp-hw; @true -tmp-hw: Makefile $(HW_SRC) $(srcroot)/move-if-change - $(ECHO_GEN)# The first for loop is to remove duplicates. - $(SILENCE) f=""; \ - for i in $(HW_SRC) ; do \ - case " $$f " in \ - *" $$i "*) ;; \ - *) f="$$f $$i" ;; \ - esac ; \ - done ; \ - for hw in $$f ; do echo $$hw ; done \ - | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ - -e 's/^/extern const device_descriptor /' \ - -e 's/$$/_device_descriptor\[\];/' \ - > tmp-hw.h - $(SILENCE) f=""; \ - for i in $(HW_SRC) ; do \ - case " $$f " in \ - *" $$i "*) ;; \ - *) f="$$f $$i" ;; \ - esac ; \ - done ; \ - for hw in $$f ; do echo $$hw ; done \ - | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ - -e 's/^/ /' \ - -e 's/$$/_device_descriptor,/' \ - > tmp-hw.c - $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-hw.h hw.h - $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-hw.c hw.c - $(SILENCE) touch $@ - hw_cpu.o: hw_cpu.c $(DEVICE_TABLE_H) $(HW_CPU_H) $(INTERRUPTS_H) $(CPU_H) hw_com.o: hw_com.c $(DEVICE_TABLE_H) hw_core.o: hw_core.c $(DEVICE_TABLE_H) $(COREFILE_H) diff --git a/sim/ppc/local.mk b/sim/ppc/local.mk index 8b5a165..7d4ea35 100644 --- a/sim/ppc/local.mk +++ b/sim/ppc/local.mk @@ -177,5 +177,48 @@ MOSTLYCLEANFILES += $(%C%_IGEN_TOOLS) %D%/libigen.a IGEN_OPCODE_RULES = @sim_ppc_opcode@ +## Real hardware. +## NB: The first for loop is to remove duplicates. +%C%_HW_SRC = $(sim_ppc_hw_src:%=%D%/%) +%D%/hw.c %D%/hw.h: %D%/stamp-hw ; @true +%D%/stamp-hw: Makefile $(%C%_HW_SRC) $(srcroot)/move-if-change + $(AM_V_GEN)\ + f=""; \ + for i in $(%C%_HW_SRC) ; do \ + case " $$f " in \ + *" $$i "*) ;; \ + *) f="$$f $$i" ;; \ + esac ; \ + done ; \ + for hw in $$f ; do echo $$hw ; done \ + | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ + -e 's/^/extern const device_descriptor /' \ + -e 's/$$/_device_descriptor\[\];/' \ + > %D%/hw.hin; \ + f=""; \ + for i in $(%C%_HW_SRC) ; do \ + case " $$f " in \ + *" $$i "*) ;; \ + *) f="$$f $$i" ;; \ + esac ; \ + done ; \ + for hw in $$f ; do echo $$hw ; done \ + | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ + -e 's/^/ /' \ + -e 's/$$/_device_descriptor,/' \ + > %D%/hw.cin + $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/hw.hin %D%/hw.h + $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/hw.cin %D%/hw.c + $(AM_V_at)touch $@ + +BUILT_SOURCES += \ + %D%/hw.h +%C%_BUILD_OUTPUTS += \ + %D%/hw.c \ + %D%/hw.h \ + %D%/stamp-hw +SIM_ALL_RECURSIVE_DEPS += %D%/stamp-hw +%D%/hw.c %D%/hw.h: %D%/stamp-igen + %C%docdir = $(docdir)/%C% %C%doc_DATA = %D%/BUGS %D%/INSTALL %D%/README %D%/RUN -- 2.7.4