Core-linux Tupfile

This commit is contained in:
Ehmry - 2019-07-09 11:17:13 +02:00
parent 03b9cb7530
commit 3e0b1db59e
12 changed files with 262 additions and 3 deletions

View File

@ -0,0 +1,2 @@
include &(BASE_DIR)/Tuprules.tup
REP_DIR = $(TUP_CWD)

View File

@ -0,0 +1,59 @@
include_rules
GEN_CORE_DIR = $(BASE_DIR)/src/core
DEFINES += -D_GNU_SOURCE
INCLUDES += \
-I$(REP_DIR)/src/core/include \
-I$(GEN_CORE_DIR)/include \
-I$(REP_DIR)/src/platform \
-I$(REP_DIR)/src/include \
-I$(BASE_DIR)/src/include \
include $(REP_DIR)/src/lib/syscall/headers.tup
SRC_CC += \
*.cc \
$(REP_DIR)/src/lib/base/env_reinit.cc \
$(BASE_DIR)/src/lib/base/thread.cc \
$(BASE_DIR)/src/lib/base/thread_myself.cc \
$(GEN_CORE_DIR)/capability_space.cc \
$(GEN_CORE_DIR)/core_log.cc \
$(GEN_CORE_DIR)/core_rpc_cap_alloc.cc \
$(GEN_CORE_DIR)/cpu_session_component.cc \
$(GEN_CORE_DIR)/cpu_session_support.cc \
$(GEN_CORE_DIR)/cpu_thread_component.cc \
$(GEN_CORE_DIR)/default_log.cc \
$(GEN_CORE_DIR)/heartbeat.cc \
$(GEN_CORE_DIR)/main.cc \
$(GEN_CORE_DIR)/pd_session_component.cc \
$(GEN_CORE_DIR)/pd_session_support.cc \
$(GEN_CORE_DIR)/platform_services.cc \
$(GEN_CORE_DIR)/ram_dataspace_factory.cc \
$(GEN_CORE_DIR)/rpc_cap_factory_l4.cc \
$(GEN_CORE_DIR)/signal_receiver.cc \
$(GEN_CORE_DIR)/signal_source_component.cc \
$(GEN_CORE_DIR)/signal_transmitter_proxy.cc \
$(GEN_CORE_DIR)/trace_session_component.cc \
$(GEN_CORE_DIR)/version.cc \
CXXFLAGS_$(GEN_CORE_DIR)/version.cc += -DGENODE_VERSION=\"`git describe`\"
: foreach $(SRC_CC) |> !cxx |> {obj}
LDFLAGS += \
$(LD_MARCH) \
-gc-sections \
-z max-page-size=0x1000 \
-nostdlib \
-Ttext=0x01000000 \
-T$(BASE_DIR)/src/ld/genode.ld \
-T$(REP_DIR)/src/ld/stack_area.ld \
CORE_LIBS += \
$(BASE_DIR)/src/lib/cxx/cxx.lib.a \
$(BASE_DIR)/src/lib/startup/startup.lib.a \
$(REP_DIR)/src/lib/base/base-linux-common.lib.a \
$(REP_DIR)/src/lib/syscall/syscall-linux.lib.a \
: {obj} $(CORE_LIBS) |> !ld $(LIBGCC) |> core-linux $(REP_DIR)/<core>

View File

@ -0,0 +1,74 @@
# DANGER: any source or header here may be ovelayed by $(BASE_DIR)
include_rules
INCLUDES += -I$(REP_DIR)/src/include
INCLUDES += -I$(REP_DIR)/src/lib/syscall
INCLUDES += -I$(BASE_DIR)/src/include
export HOST_LIBC
# an environmental variable set by nix-shell
INCLUDES += -I$HOST_LIBC/include
BASE_LIB_DIR = $(BASE_DIR)/src/lib/base
COMMON_SRC_CC += \
$(BASE_DIR)/src/lib/base/allocator_avl.cc \
$(BASE_DIR)/src/lib/base/avl_tree.cc \
$(BASE_DIR)/src/lib/base/child.cc \
$(BASE_DIR)/src/lib/base/component.cc \
$(BASE_DIR)/src/lib/base/console.cc \
$(BASE_DIR)/src/lib/base/elf_binary.cc \
$(BASE_DIR)/src/lib/base/entrypoint.cc \
$(BASE_DIR)/src/lib/base/env_session_id_space.cc \
$(BASE_DIR)/src/lib/base/heap.cc \
$(BASE_DIR)/src/lib/base/lock.cc \
$(BASE_DIR)/src/lib/base/log.cc \
$(BASE_DIR)/src/lib/base/output.cc \
$(BASE_DIR)/src/lib/base/raw_output.cc \
$(BASE_DIR)/src/lib/base/registry.cc \
$(BASE_DIR)/src/lib/base/root_proxy.cc \
$(BASE_DIR)/src/lib/base/session_state.cc \
$(BASE_DIR)/src/lib/base/signal_common.cc \
$(BASE_DIR)/src/lib/base/slab.cc \
$(BASE_DIR)/src/lib/base/sliced_heap.cc \
$(BASE_DIR)/src/lib/base/stack_allocator.cc \
$(BASE_DIR)/src/lib/base/stack_protector.cc \
$(BASE_LIB_DIR)/capability.cc \
$(BASE_LIB_DIR)/rpc_dispatch_loop.cc \
$(BASE_LIB_DIR)/rpc_entrypoint.cc \
$(BASE_LIB_DIR)/sleep.cc \
$(BASE_LIB_DIR)/trace.cc \
$(BASE_LIB_DIR)/vm_session.cc \
child_process.cc \
debug.cc \
ipc.cc \
region_map_client.cc \
region_map_mmap.cc \
rm_session_client.cc \
thread_env.cc \
: foreach $(COMMON_SRC_CC) |> !cxx |> %B.o {base-common-obj}
: {base-common-obj} |> !ar |> base-linux-common.lib.a
SRC_CC += \
$(BASE_LIB_DIR)/capability_space.cc \
$(BASE_LIB_DIR)/default_log.cc \
$(BASE_LIB_DIR)/env_deprecated.cc \
$(BASE_LIB_DIR)/heartbeat.cc \
$(BASE_LIB_DIR)/main_thread_cap.cc \
$(BASE_LIB_DIR)/rpc_cap_alloc.cc \
$(BASE_LIB_DIR)/signal.cc \
$(BASE_LIB_DIR)/signal_transmitter.cc \
$(BASE_LIB_DIR)/stack_area.cc \
$(BASE_LIB_DIR)/thread.cc \
$(BASE_LIB_DIR)/thread_myself.cc \
attach_stack_area.cc \
capability_raw.cc \
env_reinit.cc \
platform_env.cc \
thread_linux.cc \
: foreach $(SRC_CC) |> !cxx |> {base-obj}
: {base-obj} |> !ar |> base-linux.lib.a

View File

@ -0,0 +1,62 @@
TARGET_NAME = base-linux
include_rules
ifeq (@(TUP_ARCH),x86_64)
INCLUDES += -I$(BASE_DIR)/src/lib/ldso/spec/x86_64
endif
INCLUDES += -I$(BASE_DIR)/src/include
LDSO_DIR = $(BASE_DIR)/src/lib/ldso
ifeq (@(TUP_ARCH),x86_64)
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
endif
INCLUDES += -I$(LDSO_SPEC_DIR)
INCLUDES += -I$(LDSO_DIR)/include
DEFINES += -fPIC
: foreach $(LDSO_DIR)/*.cc |> !cxx |> {obj}
: foreach $(LDSO_SPEC_DIR)/*.s |> !asm |> {obj}
LDFLAGS += -shared --eh-frame-hdr
: $(BASE_DIR)/lib/symbols/ld \
|> \
echo -e '{\n\tglobal:' >> %o; \
sed -n "s/^\(\w\+\) .*/\t\t\1;/p" %f >> %o; \
echo -e "\tlocal: *;\n};" >> %o; \
|> symbol.map
LDFLAGS += -Bsymbolic-functions --version-script=symbol.map
LDFLAGS += --entry=_start_initial_stack
LDFLAGS += -gc-sections -z max-page-size=0x1000
LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld
LDFLAGS += -T$(REP_DIR)/src/ld/stack_area.ld
BASE_LIBS += \
$(BASE_DIR)/src/lib/alarm/alarm.lib.a \
$(REP_DIR)/src/lib/base/base-linux-common.lib.a \
$(REP_DIR)/src/lib/base/base-linux.lib.a \
$(BASE_DIR)/src/lib/cxx/cxx.lib.a \
$(BASE_DIR)/src/lib/ldso/startup/ldso-startup.lib.a \
$(BASE_DIR)/src/lib/startup/startup.lib.a \
$(REP_DIR)/src/lib/syscall/syscall-linux.lib.a \
$(BASE_DIR)/src/lib/timeout/timeout.lib.a \
: $(BASE_LIBS) {obj} | symbol.map \
|> \
$(LD) -o %o \
$(LD_MARCH) $(LDFLAGS) \
--whole-archive --start-group \
%f \
--end-group --no-whole-archive \
$(LIBGCC) \
|> ld-linux.lib.so $(REP_DIR)/<ld> {bin}
: {bin} |> !collect_bin |>
include &(BIN_RULES)

View File

@ -0,0 +1,13 @@
include_rules
include $(REP_DIR)/src/lib/syscall/headers.tup
INCLUDES += -I$(REP_DIR)/src/include
INCLUDES += -I$(BASE_DIR)/src/include
STATIC_LIBS = \
../base/base-linux-common.lib.a \
$(BASE_DIR)/src/lib/timeout/timeout.lib.a \
: foreach *.cc $(BASE_DIR)/src/lib/cxx/new_delete.cc |> !cxx |> {obj}
: foreach *.c |> !cc |> {obj}
: {obj} $(STATIC_LIBS) |> !ar |> %d.lib.a

View File

@ -0,0 +1,22 @@
include_rules
SPEC_DIR=
ifeq (@(TUP_ARCH),i386)
SPEC_DIR = spec/x86_32
endif
ifeq (@(TUP_ARCH),x86_64)
SPEC_DIR = spec/x86_64
endif
ifeq (@(TUP_ARCH),arm)
SPEC_DIR = spec/arm
endif
ifeq ($(SPEC_DIR),)
error syscall library is missing rules for @(TUP_ARCH)
endif
: foreach $(SPEC_DIR)/*.S |> !cc |> {obj}
: {obj} |> !ar |> syscall-linux.lib.a

View File

@ -0,0 +1,5 @@
INCLUDES += -I$(REP_DIR)/src/lib/syscall
export HOST_LIBC
# an environmental variable set by nix-shell
INCLUDES += -I$HOST_LIBC/include

View File

@ -47,7 +47,7 @@
#include <linux/futex.h>
#include <unistd.h>
#include <signal.h>
#include <sched.h>
#include <linux/sched.h>
#include <sys/syscall.h>
#include <sys/un.h>
#include <sys/socket.h>

View File

@ -0,0 +1,22 @@
TARGET_NAME = linux_timer_drv
LIBS += genode-base
include_rules
BASE_TIMER_DIR = $(BASE_DIR)/src/timer
PERIODIC_DIR = $(BASE_TIMER_DIR)/periodic
INCLUDES += -I.
INCLUDES += -I$(BASE_TIMER_DIR)/include
INCLUDES += -I$(PERIODIC_DIR)
include $(REP_DIR)/src/lib/syscall/headers.tup
: foreach $(BASE_TIMER_DIR)/*.cc |> !cxx |> %B.linux.o {obj}
: foreach $(PERIODIC_DIR)/*.cc |> !cxx |> %B.linux.o {obj}
: foreach *.cc |> !cxx |> %B.o {obj}
: {obj} $(REP_DIR)/src/lib/syscall/syscall-linux.lib.a |> !prg |> timer {bin}
: {bin} |> !collect_bin |>
include &(BIN_RULES)

View File

@ -8,8 +8,10 @@ BASE_LIB_DIR = $(BASE_DIR)/src/lib/base
include $(BASE_DIR)/src/lib/base/common.tup
COMMON_SRC_CC += \
$(BASE_DIR)/src/lib/base/child_process.cc \
$(BASE_DIR)/src/lib/base/thread.cc \
$(BASE_DIR)/src/lib/base/thread_myself.cc \
$(BASE_DIR)/src/lib/base/trace.cc \
capability.cc \
cap_map.cc \
ipc.cc \

View File

@ -4,7 +4,6 @@ COMMON_SRC_CC += \
$(BASE_DIR)/src/lib/base/allocator_avl.cc \
$(BASE_DIR)/src/lib/base/avl_tree.cc \
$(BASE_DIR)/src/lib/base/child.cc \
$(BASE_DIR)/src/lib/base/child_process.cc \
$(BASE_DIR)/src/lib/base/component.cc \
$(BASE_DIR)/src/lib/base/console.cc \
$(BASE_DIR)/src/lib/base/elf_binary.cc \
@ -24,4 +23,3 @@ COMMON_SRC_CC += \
$(BASE_DIR)/src/lib/base/sliced_heap.cc \
$(BASE_DIR)/src/lib/base/stack_allocator.cc \
$(BASE_DIR)/src/lib/base/stack_protector.cc \
$(BASE_DIR)/src/lib/base/trace.cc \