From: Mike Frysinger <vapier@gentoo.org>
To: gdb-patches@sourceware.org
Subject: [PATCH 02/83] sim: modules: trigger generation from top-level
Date: Tue, 3 Jan 2023 02:54:44 -0500 [thread overview]
Message-ID: <20230103075605.13606-3-vapier@gentoo.org> (raw)
In-Reply-To: <20230103075605.13606-1-vapier@gentoo.org>
Add rules for tracking generated subdir modules.c files. This doesn't
actually generate the file from the top-level, but allows us to add
rules that need to be ordered wrt it. Once those changes land, we can
rework this to actually generate from the top-level.
This currently builds off of the objects that go into the libsim.a as
we don't build those from the top-level either. Once we migrate that
up, we can switch this to the source files directly. It's a bit hacky
overall, but makes it easier to migrate things in smaller chunks, and
we aren't going to keep this logic long term.
---
sim/Makefile.in | 41 ++++++++++++++++++++++++++++++++-------
sim/bpf/local.mk | 1 +
sim/common/Make-common.in | 5 ++---
sim/common/local.mk | 16 +++++++++++++++
sim/cr16/local.mk | 1 +
sim/cris/local.mk | 1 +
sim/d10v/local.mk | 1 +
sim/frv/local.mk | 1 +
sim/iq2000/local.mk | 1 +
sim/lm32/local.mk | 1 +
sim/m32c/local.mk | 1 +
sim/m32r/local.mk | 1 +
sim/m68hc11/local.mk | 1 +
sim/mips/local.mk | 1 +
sim/mn10300/local.mk | 1 +
sim/or1k/local.mk | 1 +
sim/sh/local.mk | 1 +
sim/v850/local.mk | 1 +
18 files changed, 67 insertions(+), 10 deletions(-)
diff --git a/sim/bpf/local.mk b/sim/bpf/local.mk
index 4ba1f461303c..f86f3306a8a9 100644
--- a/sim/bpf/local.mk
+++ b/sim/bpf/local.mk
@@ -35,6 +35,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%D%/mloop-le.c %D%/eng-le.h: %D%/stamp-mloop-le ; @true
%D%/stamp-mloop-le: $(srccom)/genmloop.sh %D%/mloop.in
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 35477d94bb8e..b56a49a0051f 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -186,8 +186,7 @@ endif
all_object_files = $(LIB_OBJS) $(SIM_RUN_OBJS)
generated_files = \
- $(SIM_EXTRA_DEPS) \
- modules.c
+ $(SIM_EXTRA_DEPS)
# Ensure that generated files are created early. Use order-only
# dependencies if available. They require GNU make 3.80 or newer,
@@ -212,7 +211,7 @@ stamp-modules: Makefile $(SIM_OBJS:.o=.c)
$(ECHO_STAMP) modules.c
$(SILENCE) LANG=C ; export LANG ; \
LC_ALL=C ; export LC_ALL ; \
- sed -n -e '/^sim_install_/{s/^\(sim_install_[a-z_0-9A-Z]*\).*/\1/;p}' $^ | sort >$@.l-tmp
+ sed -n -e '/^sim_install_/{s/^\(sim_install_[a-z_0-9A-Z]*\).*/\1/;p}' $^ $(GEN_MODULES_C_SRCS) | sort >$@.l-tmp
@set -e; (\
echo '/* Do not modify this file. */'; \
echo '/* It is created automatically by the Makefile. */'; \
diff --git a/sim/common/local.mk b/sim/common/local.mk
index dd6ed5fec83c..128b770dbe10 100644
--- a/sim/common/local.mk
+++ b/sim/common/local.mk
@@ -130,6 +130,22 @@ endif
MOSTLYCLEANFILES += $(%C%_HW_CONFIG_H_TARGETS) $(patsubst %,%/stamp-hw,$(SIM_ENABLED_ARCHES))
SIM_ALL_RECURSIVE_DEPS += $(%C%_HW_CONFIG_H_TARGETS)
+## See sim_pre_argv_init and sim_module_install in sim-module.c for more details.
+## TODO: Switch this to xxx_SOURCES once projects build objects in local.mk.
+am_arch_d = $(subst -,_,$(@D))
+GEN_MODULES_C_SRCS = \
+ $(wildcard \
+ $(patsubst %.o,$(abs_srcdir)/%.c,$($(am_arch_d)_libsim_a_OBJECTS) $($(am_arch_d)_libsim_a_LIBADD)) \
+ $(filter-out %.o,$(patsubst $(@D)/%.o,$(abs_srcdir)/common/%.c,$($(am_arch_d)_libsim_a_LIBADD))))
+%/modules.c:
+ $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) GEN_MODULES_C_SRCS="$(GEN_MODULES_C_SRCS)" -C $(@D) $(@F)
+
+## NB: The ppc port doesn't currently utilize the modules API, so skip it.
+%C%_GEN_MODULES_C_TARGETS = $(patsubst %,%/modules.c,$(filter-out ppc,$(SIM_ENABLED_ARCHES)))
+MOSTLYCLEANFILES += $(%C%_GEN_MODULES_C_TARGETS) $(patsubst %,%/stamp-modules,$(SIM_ENABLED_ARCHES))
+## TODO: Drop this once each port's local.mk:libsim.a depends on it themself.
+SIM_ALL_RECURSIVE_DEPS += $(%C%_GEN_MODULES_C_TARGETS)
+
LIBIBERTY_LIB = ../libiberty/libiberty.a
BFD_LIB = ../bfd/libbfd.la
OPCODES_LIB = ../opcodes/libopcodes.la
diff --git a/sim/cr16/local.mk b/sim/cr16/local.mk
index f5401f6d5f93..8e28cc356f58 100644
--- a/sim/cr16/local.mk
+++ b/sim/cr16/local.mk
@@ -32,6 +32,7 @@ BUILT_SOURCES += %D%/simops.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%C%_gencode_SOURCES = %D%/gencode.c
%C%_gencode_LDADD = %D%/cr16-opc.o
diff --git a/sim/cris/local.mk b/sim/cris/local.mk
index 0e56fefa960c..d55e7b84e25b 100644
--- a/sim/cris/local.mk
+++ b/sim/cris/local.mk
@@ -46,6 +46,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: What is mono and what does "Use of `mono' is wip" mean (other
## than the apparent; some "mono" feature is work in progress)?
diff --git a/sim/d10v/local.mk b/sim/d10v/local.mk
index 38a3c9263d62..2556845ed1d1 100644
--- a/sim/d10v/local.mk
+++ b/sim/d10v/local.mk
@@ -32,6 +32,7 @@ BUILT_SOURCES += %D%/simops.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%C%_gencode_SOURCES = %D%/gencode.c
%C%_gencode_LDADD = %D%/d10v-opc.o
diff --git a/sim/frv/local.mk b/sim/frv/local.mk
index 11db636a7159..471b0adc6533 100644
--- a/sim/frv/local.mk
+++ b/sim/frv/local.mk
@@ -35,6 +35,7 @@ BUILT_SOURCES += %D%/eng.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: Use of `mono' is wip.
%D%/mloop.c %D%/eng.h: %D%/stamp-mloop ; @true
diff --git a/sim/iq2000/local.mk b/sim/iq2000/local.mk
index 881cf2c55dcd..4113b4bc2f39 100644
--- a/sim/iq2000/local.mk
+++ b/sim/iq2000/local.mk
@@ -32,6 +32,7 @@ BUILT_SOURCES += %D%/eng.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: Use of `mono' is wip.
%D%/mloop.c %D%/eng.h: %D%/stamp-mloop ; @true
diff --git a/sim/lm32/local.mk b/sim/lm32/local.mk
index 3f9606410d62..311de7df47e8 100644
--- a/sim/lm32/local.mk
+++ b/sim/lm32/local.mk
@@ -35,6 +35,7 @@ BUILT_SOURCES += %D%/eng.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: Use of `mono' is wip.
%D%/mloop.c %D%/eng.h: %D%/stamp-mloop ; @true
diff --git a/sim/m32c/local.mk b/sim/m32c/local.mk
index 1a542f186553..75909075a1e3 100644
--- a/sim/m32c/local.mk
+++ b/sim/m32c/local.mk
@@ -35,6 +35,7 @@ noinst_PROGRAMS += %D%/run
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%C%_opc2c_SOURCES = %D%/opc2c.c
diff --git a/sim/m32r/local.mk b/sim/m32r/local.mk
index 4f9f2bc257dc..9814ae5c6c16 100644
--- a/sim/m32r/local.mk
+++ b/sim/m32r/local.mk
@@ -42,6 +42,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: Use of `mono' is wip.
%D%/mloop.c %D%/eng.h: %D%/stamp-mloop ; @true
diff --git a/sim/m68hc11/local.mk b/sim/m68hc11/local.mk
index 187bd389cefe..d2e04576a771 100644
--- a/sim/m68hc11/local.mk
+++ b/sim/m68hc11/local.mk
@@ -34,6 +34,7 @@ AM_MAKEFLAGS += %C%_SIM_EXTRA_HW_DEVICES="$(%C%_SIM_EXTRA_HW_DEVICES)"
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%C%_gencode_SOURCES = %D%/gencode.c
diff --git a/sim/mips/local.mk b/sim/mips/local.mk
index 9db960ca4beb..5a7b12c29a1e 100644
--- a/sim/mips/local.mk
+++ b/sim/mips/local.mk
@@ -96,6 +96,7 @@ endif
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
$(%C%_BUILT_SRC_FROM_IGEN_ITABLE): %D%/stamp-igen-itable
$(%C%_BUILT_SRC_FROM_GEN_MODE_SINGLE): %D%/stamp-gen-mode-single
diff --git a/sim/mn10300/local.mk b/sim/mn10300/local.mk
index afb1df75f2ef..d24e6b8d0405 100644
--- a/sim/mn10300/local.mk
+++ b/sim/mn10300/local.mk
@@ -58,6 +58,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
$(%C%_BUILT_SRC_FROM_IGEN): %D%/stamp-igen
diff --git a/sim/or1k/local.mk b/sim/or1k/local.mk
index ef8ae2a6abcb..7d999f6f3aa4 100644
--- a/sim/or1k/local.mk
+++ b/sim/or1k/local.mk
@@ -34,6 +34,7 @@ BUILT_SOURCES += %D%/eng.h
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
## FIXME: Use of `mono' is wip.
%D%/mloop.c %D%/eng.h: %D%/stamp-mloop ; @true
diff --git a/sim/sh/local.mk b/sim/sh/local.mk
index 8c2ce0da1499..c25ab536c681 100644
--- a/sim/sh/local.mk
+++ b/sim/sh/local.mk
@@ -36,6 +36,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
%C%_gencode_SOURCES = %D%/gencode.c
diff --git a/sim/v850/local.mk b/sim/v850/local.mk
index 4741e070a300..2c27d0c6d7ea 100644
--- a/sim/v850/local.mk
+++ b/sim/v850/local.mk
@@ -55,6 +55,7 @@ BUILT_SOURCES += \
## This makes sure build tools are available before building the arch-subdirs.
SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS)
+%D%/modules.c: | $(%C%_BUILD_OUTPUTS)
$(%C%_BUILT_SRC_FROM_IGEN): %D%/stamp-igen
--
2.39.0
next prev parent reply other threads:[~2023-01-03 7:56 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-03 7:54 [PATCH 00/83] sim: merge subdir makefiles into top-level Mike Frysinger
2023-01-03 7:54 ` [PATCH 01/83] sim: mips: add multi source to built sources Mike Frysinger
2023-01-03 7:54 ` Mike Frysinger [this message]
2023-01-03 7:54 ` [PATCH 03/83] sim: build: drop support for subdir extra deps Mike Frysinger
2023-01-03 7:54 ` [PATCH 04/83] sim: aarch64: move libsim.a creation to top-level Mike Frysinger
2023-01-03 7:54 ` [PATCH 05/83] sim: arm: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 06/83] sim: avr: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 07/83] sim: bfin: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 08/83] sim: bpf: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 09/83] sim: cr16: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 10/83] sim: cris: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 11/83] sim: d10v: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 12/83] sim: erc32: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 13/83] sim: example-synacor: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 14/83] sim: frv: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 15/83] sim: ft32: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 16/83] sim: h8300: " Mike Frysinger
2023-01-03 7:54 ` [PATCH 17/83] sim: iq2000: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 18/83] sim: lm32: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 19/83] sim: m32c: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 20/83] sim: m32r: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 21/83] sim: m68hc11: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 22/83] sim: mcore: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 23/83] sim: microblaze: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 24/83] sim: mips: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 25/83] sim: mn10300: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 26/83] sim: moxie: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 27/83] sim: msp430: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 28/83] sim: or1k: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 29/83] sim: pru: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 30/83] sim: riscv: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 31/83] sim: rl78: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 32/83] sim: rx: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 33/83] sim: sh: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 34/83] sim: v850: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 35/83] sim: build: drop support for creating libsim.a in subdirs Mike Frysinger
2023-01-03 7:55 ` [PATCH 36/83] sim: build: drop common/nrun.o subdir hack Mike Frysinger
2023-01-03 7:55 ` [PATCH 37/83] sim: modules.c: move generation to top-level Mike Frysinger
2023-01-03 7:55 ` [PATCH 38/83] sim: build: add basic framework for compiling arch objects in top-level Mike Frysinger
2023-01-03 7:55 ` [PATCH 39/83] sim: aarch64: move arch-specific file compilation to top-level Mike Frysinger
2023-01-03 7:55 ` [PATCH 40/83] sim: arm: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 41/83] sim: avr: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 42/83] sim: bpf: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 43/83] sim: bfin: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 44/83] sim: cr16: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 45/83] sim: cris: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 46/83] sim: d10v: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 47/83] sim: erc32: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 48/83] sim: example-synacor: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 49/83] sim: frv: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 50/83] sim: ft32: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 51/83] sim: h8300: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 52/83] sim: iq2000: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 53/83] sim: lm32: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 54/83] sim: m32c: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 55/83] sim: m32r: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 56/83] sim: m68hc11: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 57/83] sim: mcore: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 58/83] sim: microblaze: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 59/83] sim: mips: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 60/83] sim: mn10300: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 61/83] sim: moxie: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 62/83] sim: msp430: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 63/83] sim: or1k: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 64/83] sim: pru: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 65/83] sim: riscv: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 66/83] sim: rl78: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 67/83] sim: rx: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 68/83] sim: sh: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 69/83] sim: v850: " Mike Frysinger
2023-01-03 7:55 ` [PATCH 70/83] sim: move arch-specific file compilation of common/ files " Mike Frysinger
2023-01-03 7:55 ` [PATCH 71/83] sim: common: move test-hw-events to top-level build Mike Frysinger
2023-01-03 7:55 ` [PATCH 72/83] sim: disable recursive make in (most) subdirs Mike Frysinger
2023-01-03 7:55 ` [PATCH 73/83] sim: build: drop subdir Makefile.in files Mike Frysinger
2023-01-03 7:55 ` [PATCH 74/83] sim: build: delete Make-common.in logic Mike Frysinger
2023-01-03 7:55 ` [PATCH 75/83] sim: build: drop AM_MAKEFLAGS settings Mike Frysinger
2023-01-03 7:55 ` [PATCH 76/83] sim: common: simplify hw-config.h deps Mike Frysinger
2023-01-03 7:55 ` [PATCH 77/83] sim: igen: simplify build dep Mike Frysinger
2023-01-03 7:56 ` [PATCH 78/83] sim: common: move libcommon.a objects to sources Mike Frysinger
2023-01-03 7:56 ` [PATCH 79/83] sim: build: drop most recursive build deps Mike Frysinger
2023-01-03 7:56 ` [PATCH 80/83] sim: common: move libcommon.a dep to ppc code Mike Frysinger
2023-01-03 7:56 ` [PATCH 81/83] sim: common: move modules.c to source tracking Mike Frysinger
2023-01-03 7:56 ` [PATCH 82/83] sim: common: simplify modules.c deps Mike Frysinger
2023-01-03 7:56 ` [PATCH 83/83] sim: build: drop depdir subdir hack Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230103075605.13606-3-vapier@gentoo.org \
--to=vapier@gentoo.org \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).