base-linux: separate x86-specific code

By moving core's build-description to a library - a pattern already
employed for the other base platforms - we become able to cleanly split
x86-specific code (I/O-port access) from generic code. This is a
prerequisite for enabling non-x86 architectures such as AARCH64.

Issue #4136
This commit is contained in:
Norman Feske 2021-05-05 13:58:47 +02:00 committed by Christian Helmuth
parent a4727c90a8
commit 0b36d81c0c
5 changed files with 87 additions and 83 deletions

View File

@ -0,0 +1,69 @@
GEN_CORE_DIR := $(BASE_DIR)/src/core
LIBS := syscall-linux
BOARD ?= unknown
SRC_CC := main.cc \
platform.cc \
platform_thread.cc \
platform_services.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 \
pd_session_support.cc \
dataspace_component.cc \
native_pd_component.cc \
native_cpu_component.cc \
capability_space.cc \
rpc_cap_factory_linux.cc \
ram_dataspace_factory.cc \
core_rpc_cap_alloc.cc \
io_mem_session_component.cc \
irq_session_component.cc \
signal_source_component.cc \
signal_transmitter_proxy.cc \
signal_receiver.cc \
trace_session_component.cc \
thread_linux.cc \
stack_area.cc \
core_log.cc \
core_log_out.cc \
default_log.cc \
env_reinit.cc \
heartbeat.cc \
thread.cc \
thread_myself.cc
INC_DIR += $(REP_DIR)/src/core/include \
$(GEN_CORE_DIR)/include \
$(REP_DIR)/src/platform \
$(REP_DIR)/src/include \
$(BASE_DIR)/src/include
vpath main.cc $(GEN_CORE_DIR)
vpath pd_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_upgrade_ram_quota.cc $(GEN_CORE_DIR)
vpath pd_session_support.cc $(GEN_CORE_DIR)
vpath capability_space.cc $(GEN_CORE_DIR)
vpath ram_dataspace_factory.cc $(GEN_CORE_DIR)
vpath signal_source_component.cc $(GEN_CORE_DIR)
vpath signal_transmitter_proxy.cc $(GEN_CORE_DIR)
vpath signal_receiver.cc $(GEN_CORE_DIR)
vpath trace_session_component.cc $(GEN_CORE_DIR)
vpath default_log.cc $(GEN_CORE_DIR)
vpath heartbeat.cc $(GEN_CORE_DIR)
vpath thread.cc $(BASE_DIR)/src/lib/base
vpath thread_myself.cc $(BASE_DIR)/src/lib/base
vpath trace.cc $(BASE_DIR)/src/lib/base
vpath env_reinit.cc $(REP_DIR)/src/lib/base
vpath dataspace_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath io_mem_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath irq_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath platform_services.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath %.cc $(REP_DIR)/src/core

View File

@ -0,0 +1 @@
include $(REP_DIR)/lib/mk/core-linux.inc

View File

@ -0,0 +1,7 @@
include $(REP_DIR)/lib/mk/core-linux.inc
SRC_CC += io_port_session_support.cc \
io_port_session_component.cc
vpath io_port_session_support.cc $(GEN_CORE_DIR)/spec/x86
vpath io_port_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)

View File

@ -8,8 +8,8 @@ lib/import src/ld:
content:
for spec in x86_32 x86_64 arm; do \
mv lib/mk/spec/$$spec/ld-linux.mk lib/mk/spec/$$spec/ld.mk; done;
sed -i "s/core-linux/core/" src/core/linux/target.mk
sed -i "s/BOARD.*unknown/BOARD := linux/" src/core/linux/target.mk
sed -i "/TARGET/s/core-linux/core/" src/core/linux/target.mk
sed -i "s/BOARD.*unknown/BOARD := linux/" lib/mk/core-linux.inc
sed -i "s/ld-linux/ld/" src/lib/ld/linux/target.mk
sed -i "s/linux_timer_drv/timer/" src/timer/linux/target.mk
rm -rf src/lib/initramfs

View File

@ -1,83 +1,10 @@
TARGET = core-linux
REQUIRES = linux
LIBS = cxx base-linux-common syscall-linux startup-linux
TARGET := core-linux
REQUIRES := linux
LIBS := cxx base-linux-common startup-linux core-linux
BOARD ?= unknown
BOARD ?= unknown
include $(BASE_DIR)/src/core/version.inc
GEN_CORE_DIR = $(BASE_DIR)/src/core
SRC_CC = main.cc \
platform.cc \
platform_thread.cc \
platform_services.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 \
pd_session_support.cc \
dataspace_component.cc \
native_pd_component.cc \
native_cpu_component.cc \
capability_space.cc \
rpc_cap_factory_linux.cc \
ram_dataspace_factory.cc \
core_rpc_cap_alloc.cc \
io_mem_session_component.cc \
io_port_session_component.cc \
io_port_session_support.cc \
irq_session_component.cc \
signal_source_component.cc \
signal_transmitter_proxy.cc \
signal_receiver.cc \
trace_session_component.cc \
thread_linux.cc \
stack_area.cc \
core_log.cc \
core_log_out.cc \
default_log.cc \
env_reinit.cc \
heartbeat.cc \
thread.cc \
thread_myself.cc
INC_DIR += $(REP_DIR)/src/core/include \
$(GEN_CORE_DIR)/include \
$(REP_DIR)/src/platform \
$(REP_DIR)/src/include \
$(BASE_DIR)/src/include
LD_TEXT_ADDR ?= 0x01000000
LD_SCRIPT_STATIC = $(BASE_DIR)/src/ld/genode.ld \
$(call select_from_repositories,src/ld/stack_area.ld)
include $(GEN_CORE_DIR)/version.inc
vpath main.cc $(GEN_CORE_DIR)
vpath pd_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_upgrade_ram_quota.cc $(GEN_CORE_DIR)
vpath pd_session_support.cc $(GEN_CORE_DIR)
vpath capability_space.cc $(GEN_CORE_DIR)
vpath ram_dataspace_factory.cc $(GEN_CORE_DIR)
vpath signal_source_component.cc $(GEN_CORE_DIR)
vpath signal_transmitter_proxy.cc $(GEN_CORE_DIR)
vpath signal_receiver.cc $(GEN_CORE_DIR)
vpath trace_session_component.cc $(GEN_CORE_DIR)
vpath default_log.cc $(GEN_CORE_DIR)
vpath heartbeat.cc $(GEN_CORE_DIR)
vpath io_port_session_support.cc $(GEN_CORE_DIR)/spec/x86
vpath thread.cc $(BASE_DIR)/src/lib/base
vpath thread_myself.cc $(BASE_DIR)/src/lib/base
vpath trace.cc $(BASE_DIR)/src/lib/base
vpath env_reinit.cc $(REP_DIR)/src/lib/base
vpath dataspace_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath io_mem_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath irq_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath io_port_session_component.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath platform_services.cc $(REP_DIR)/src/core/spec/$(BOARD)
vpath %.cc $(REP_DIR)/src/core
LD_TEXT_ADDR ?= 0x01000000
LD_SCRIPT_STATIC = $(BASE_DIR)/src/ld/genode.ld \
$(call select_from_repositories,src/ld/stack_area.ld)