diff options
author | Mike Frysinger <vapier@gentoo.org> | 2022-12-25 14:40:47 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2023-01-10 01:15:23 -0500 |
commit | 437eeee95c10c613d992fc786350618bbafcdf57 (patch) | |
tree | 80eccebe64f76af4962276700a01830c5f2d7664 /sim/common | |
parent | 7dd38e31d67c2548b52bea313ab18e40824c05da (diff) | |
download | gdb-437eeee95c10c613d992fc786350618bbafcdf57.zip gdb-437eeee95c10c613d992fc786350618bbafcdf57.tar.gz gdb-437eeee95c10c613d992fc786350618bbafcdf57.tar.bz2 |
sim: modules: trigger generation from top-level
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.
Diffstat (limited to 'sim/common')
-rw-r--r-- | sim/common/Make-common.in | 5 | ||||
-rw-r--r-- | sim/common/local.mk | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in index 35477d9..b56a49a 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 dd6ed5f..128b770 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 |