From a25ec92a300fd878216685d879d4050b1241f990 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 18 Apr 2018 16:42:08 +0200 Subject: [PATCH] sel4: explicit vpath for each file in core The pattern rule picked up the wrong platform_services.cc in the depot-archive case only because the archive integrates generic and sel4-specific source files into REP_DIR. --- repos/base-sel4/lib/mk/core-sel4.inc | 102 ++++++++---------- .../lib/mk/spec/wand_quad/core-sel4.mk | 13 ++- .../base-sel4/lib/mk/spec/x86_32/core-sel4.mk | 21 ++-- .../base-sel4/lib/mk/spec/x86_64/core-sel4.mk | 21 ++-- .../{ => spec/x86}/io_port_session_support.cc | 0 5 files changed, 80 insertions(+), 77 deletions(-) rename repos/base-sel4/src/core/{ => spec/x86}/io_port_session_support.cc (100%) diff --git a/repos/base-sel4/lib/mk/core-sel4.inc b/repos/base-sel4/lib/mk/core-sel4.inc index 302fccaa54..d729de0bcc 100644 --- a/repos/base-sel4/lib/mk/core-sel4.inc +++ b/repos/base-sel4/lib/mk/core-sel4.inc @@ -1,66 +1,54 @@ -GEN_CORE_DIR = $(BASE_DIR)/src/core +GEN_CORE_DIR = $(dir $(call select_from_repositories,src/core/main.cc)) +BASE_REP_DIR = $(GEN_CORE_DIR)/../.. -SRC_CC += \ - main.cc \ - pd_session_component.cc \ - ram_dataspace_support.cc \ - rom_session_component.cc \ - cpu_session_component.cc \ - cpu_session_support.cc \ - cpu_thread_component.cc \ - rpc_cap_factory.cc \ - ram_dataspace_factory.cc \ - pd_session_support.cc \ - io_mem_session_component.cc \ - io_mem_session_support.cc \ - thread_start.cc \ - platform_thread.cc \ - platform_pd.cc \ - platform_services.cc \ - platform.cc \ - dataspace_component.cc \ - region_map_component.cc \ - irq_session_component.cc \ - signal_source_component.cc \ - signal_transmitter_proxy.cc \ - signal_receiver.cc \ - trace_session_component.cc \ - core_region_map.cc \ - core_mem_alloc.cc \ - core_rpc_cap_alloc.cc \ - core_log.cc core_log_out.cc default_log.cc \ - dump_alloc.cc \ - stack_area.cc \ - capability_space.cc \ - pager.cc +GEN_SRC_CC += \ + core_log.cc \ + core_mem_alloc.cc \ + core_rpc_cap_alloc.cc \ + cpu_session_component.cc \ + cpu_session_support.cc \ + cpu_thread_component.cc \ + dataspace_component.cc \ + default_log.cc \ + dump_alloc.cc \ + io_mem_session_component.cc \ + main.cc \ + pd_session_component.cc \ + pd_session_support.cc \ + platform_thread.cc \ + ram_dataspace_factory.cc \ + region_map_component.cc \ + rom_session_component.cc \ + signal_receiver.cc \ + signal_transmitter_proxy.cc \ + trace_session_component.cc + +REP_SRC_CC += \ + capability_space.cc \ + core_log_out.cc \ + core_region_map.cc \ + io_mem_session_support.cc \ + irq_session_component.cc \ + pager.cc \ + platform.cc \ + platform_pd.cc \ + platform_thread.cc \ + ram_dataspace_support.cc \ + rpc_cap_factory.cc \ + signal_source_component.cc \ + stack_area.cc \ + thread_start.cc + +SRC_CC += $(GEN_SRC_CC) $(REP_SRC_CC) LIBS += base-sel4-common syscall-sel4 cxx INC_DIR += $(REP_DIR)/src/core/include $(GEN_CORE_DIR)/include \ - $(REP_DIR)/src/include $(BASE_DIR)/src/include + $(REP_DIR)/src/include $(BASE_REP_DIR)/src/include include $(GEN_CORE_DIR)/version.inc -vpath main.cc $(GEN_CORE_DIR) -vpath pd_session_component.cc $(GEN_CORE_DIR) -vpath rom_session_component.cc $(GEN_CORE_DIR) -vpath core_log.cc $(GEN_CORE_DIR) -vpath cpu_session_component.cc $(GEN_CORE_DIR) -vpath cpu_session_support.cc $(GEN_CORE_DIR) -vpath cpu_thread_component.cc $(GEN_CORE_DIR) -vpath pd_session_support.cc $(GEN_CORE_DIR) -vpath pd_upgrade_ram_quota.cc $(GEN_CORE_DIR) -vpath region_map_component.cc $(GEN_CORE_DIR) -vpath io_mem_session_component.cc $(GEN_CORE_DIR) -vpath io_mem_session_support.cc $(GEN_CORE_DIR) -vpath trace_session_component.cc $(GEN_CORE_DIR) -vpath signal_transmitter_proxy.cc $(GEN_CORE_DIR) -vpath signal_receiver.cc $(GEN_CORE_DIR) -vpath ram_dataspace_factory.cc $(GEN_CORE_DIR) -vpath dataspace_component.cc $(GEN_CORE_DIR) -vpath core_mem_alloc.cc $(GEN_CORE_DIR) -vpath core_rpc_cap_alloc.cc $(GEN_CORE_DIR) -vpath dump_alloc.cc $(GEN_CORE_DIR) -vpath default_log.cc $(GEN_CORE_DIR) -vpath %.cc $(REP_DIR)/src/core +_vpath = $(foreach f,$(1),$(eval vpath $(f) $(2))) +$(call _vpath,$(GEN_SRC_CC),$(GEN_CORE_DIR)) +$(call _vpath,$(REP_SRC_CC),$(REP_DIR)/src/core) diff --git a/repos/base-sel4/lib/mk/spec/wand_quad/core-sel4.mk b/repos/base-sel4/lib/mk/spec/wand_quad/core-sel4.mk index 344dfc3a3d..b3d1440873 100644 --- a/repos/base-sel4/lib/mk/spec/wand_quad/core-sel4.mk +++ b/repos/base-sel4/lib/mk/spec/wand_quad/core-sel4.mk @@ -1,8 +1,13 @@ -SRC_CC += $(addprefix spec/arm/, boot_info.cc thread.cc platform.cc irq.cc \ - vm_space.cc platform_thread.cc) +GEN_SRC_CC = platform_services.cc + +REP_SRC_CC = \ + spec/arm/boot_info.cc \ + spec/arm/irq.cc \ + spec/arm/platform.cc \ + spec/arm/platform_thread.cc \ + spec/arm/thread.cc \ + spec/arm/vm_space.cc INC_DIR += $(REP_DIR)/src/core/spec/arm include $(REP_DIR)/lib/mk/core-sel4.inc - -vpath platform_services.cc $(GEN_CORE_DIR) diff --git a/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk b/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk index a14fff0fcb..78432e553c 100644 --- a/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk +++ b/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk @@ -1,13 +1,18 @@ -SRC_CC += $(addprefix spec/x86_32/, boot_info.cc thread.cc platform.cc \ - platform_pd.cc vm_space.cc) -SRC_CC += $(addprefix spec/x86/, irq.cc vm_space.cc platform_thread.cc) +GEN_SRC_CC = \ + spec/x86/platform_services.cc \ + spec/x86/io_port_session_component.cc -SRC_CC += io_port_session_component.cc -SRC_CC += io_port_session_support.cc +REP_SRC_CC = \ + spec/x86/io_port_session_support.cc \ + spec/x86/irq.cc \ + spec/x86/platform_thread.cc \ + spec/x86/vm_space.cc \ + spec/x86_32/boot_info.cc \ + spec/x86_32/platform.cc \ + spec/x86_32/platform_pd.cc \ + spec/x86_32/thread.cc \ + spec/x86_32/vm_space.cc INC_DIR += $(REP_DIR)/src/core/spec/x86 include $(REP_DIR)/lib/mk/core-sel4.inc - -vpath io_port_session_component.cc $(GEN_CORE_DIR)/spec/x86 -vpath platform_services.cc $(GEN_CORE_DIR)/spec/x86 diff --git a/repos/base-sel4/lib/mk/spec/x86_64/core-sel4.mk b/repos/base-sel4/lib/mk/spec/x86_64/core-sel4.mk index 75eb756c84..8e9ee6bf08 100644 --- a/repos/base-sel4/lib/mk/spec/x86_64/core-sel4.mk +++ b/repos/base-sel4/lib/mk/spec/x86_64/core-sel4.mk @@ -1,13 +1,18 @@ -SRC_CC += $(addprefix spec/x86_64/, boot_info.cc thread.cc platform.cc \ - platform_pd.cc vm_space.cc) -SRC_CC += $(addprefix spec/x86/, irq.cc vm_space.cc platform_thread.cc) +GEN_SRC_CC = \ + spec/x86/platform_services.cc \ + spec/x86/io_port_session_component.cc -SRC_CC += io_port_session_component.cc -SRC_CC += io_port_session_support.cc +REP_SRC_CC = \ + spec/x86/io_port_session_support.cc \ + spec/x86/irq.cc \ + spec/x86/platform_thread.cc \ + spec/x86/vm_space.cc \ + spec/x86_64/boot_info.cc \ + spec/x86_64/platform.cc \ + spec/x86_64/platform_pd.cc \ + spec/x86_64/thread.cc \ + spec/x86_64/vm_space.cc INC_DIR += $(REP_DIR)/src/core/spec/x86 include $(REP_DIR)/lib/mk/core-sel4.inc - -vpath io_port_session_component.cc $(GEN_CORE_DIR)/spec/x86 -vpath platform_services.cc $(GEN_CORE_DIR)/spec/x86 diff --git a/repos/base-sel4/src/core/io_port_session_support.cc b/repos/base-sel4/src/core/spec/x86/io_port_session_support.cc similarity index 100% rename from repos/base-sel4/src/core/io_port_session_support.cc rename to repos/base-sel4/src/core/spec/x86/io_port_session_support.cc