diff --git a/.gitignore b/.gitignore index 134de28b1..92ff7869d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,11 @@ /depot /public /repos/world - +##### TUP GITIGNORE ##### +##### Lines below automatically generated by Tup. +##### Do not edit. +.tup +/.gitignore +/bin.dhall +/dev +/out diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..2495f3f76 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "repos/base-nova/src/NOVA"] + path = repos/base-nova/src/NOVA + url = git://depot.h4ck.me/srv/git/NOVA diff --git a/Tupfile b/Tupfile new file mode 100644 index 000000000..a033983a3 --- /dev/null +++ b/Tupfile @@ -0,0 +1,19 @@ +ifeq (@(TUP_ARCH),x86_64) +DEPOT_ARCH = x86_64 +endif + +ifeq ($(DEPOT_ARCH),) + error unhandled TUP_ARCH @(TUP_ARCH) +endif + +include_rules + +DEPOT_MANIFEST = $(OUTPUTS_OUT)/manifest.dhall + +: $(OUTPUTS_OUT)/ |> \ + echo % \ + | awk -F '/' --assign RS=' ' 'BEGIN { print "{=}"} {print "∧{"$3"={=}}" }' \ + | dhall > %o\ +|> bin.dhall {records} + +: | {records} |> !dhall <<< '{bin = { $(DEPOT_ARCH) = ./bin.dhall } }' > %o |> $(DEPOT_MANIFEST) diff --git a/Tuprules.tup b/Tuprules.tup new file mode 100644 index 000000000..03a7da9d0 --- /dev/null +++ b/Tuprules.tup @@ -0,0 +1,159 @@ +.gitignore + +OUTPUTS_OUT=$(TUP_CWD)/out +OUTPUTS_DEV=$(TUP_CWD)/dev + +ifeq (@(TUP_ARCH),i386) +CC_MARCH = -march=i686 -m32 +LD_MARCH = -melf_i386 +AS_MARCH = -march=i686 --32 +endif + +ifeq (@(TUP_ARCH),x86_64) +TOOL_CHAIN_PREFIX=genode-x86- +CC_MARCH = -m64 -mcmodel=large +LD_MARCH = -melf_x86_64 +endif + +ifeq (@(TUP_ARCH),arm_v8) +CC_MARCH = -march=armv8-a +endif + +OUT_BIN_DIR = $(OUTPUTS_OUT)/bin + +GENODE_DIR = $(TUP_CWD) + +LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` + +!prg = | $(GENODE_DIR)/ $(GENODE_DIR)/ \ +|> ^o LD %o^ \ + $(LD) $(LD_MARCH) $(LDFLAGS) \ + -L$(LIB_DIR) \ + `$(PKG_CONFIG) --libs $(LIBS) genode-prg` \ + %f \ + $(LIBGCC) \ + -o %o \ +|> %d + +!lib = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LD_MARCH) %f $(LDFLAGS) `$(PKG_CONFIG) --libs genode-lib $(LIBS)` -L$(LIB_DIR) -o %o |> + +ifeq ($(BIN_NAME),) +BIN_NAME = $(TARGET_NAME) +endif + +ifdef DEPOT_VERSION +DEPOT_VERSION = @(DEPOT_VERSION) +else +DEPOT_VERSION = current +endif + +BIN_VERSION=$(DEPOT_VERSION) + +BIN_DIR = $(OUT_BIN_DIR)/$(BIN_NAME)/$(DEPOT_VERSION) + # Destination for locally defined binary package + +!bin = |> |> + # Macro invoked in BIN_RULES + +&BIN_RULES = errata/bin.tup + # Rules for finalizing a locally defined binary package + +!collect_bin = |> ^ COLLECT %b^ \ + $STRIP -o %o %f \ +|> $(OUT_BIN_DIR)/$(BIN_NAME)/%b $(OUTPUTS_OUT)/ + +export CC +export CXX +export LD + +CC = $CC +CXX = $CXX +LD= $LD +OBJCOPY = $OBJCOPY + +CXXFLAGS += -Wno-undefined-bool-conversion -Wno-unknown-attributes -Wsystem-headers -Werror +#CXXFLAGS += -Wno-unused-command-line-argument + +export NIX_PATH +NIX_BUILD = nix-build --option substitute no + +LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` + +LIB_DIR = $(OUTPUTS_DEV)/lib +PKG_CONFIG_DIR = $(OUTPUTS_DEV)/lib/pkgconfig +PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_DIR) pkg-config + +DEFINES += -g +OLEVEL = -O0 + +!ir = | $(GENODE_DIR)/ |> clang $(OLEVEL) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -S -emit-llvm %f |> %B.ll + +!asm = |> ^ CC %b^ @(CC_WRAPPER) $(CC) $(OLEVEL) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) -D__ASSEMBLY__ $(INCLUDES) -c %f -o %o |> %B.o + +!cc = | $(GENODE_DIR)/ |> ^o CC %f^ @(CC_WRAPPER) $(CC) $(OLEVEL) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` $(INCLUDES) -c -fPIC %f -o %o |> %B.o + +!cxx = | $(GENODE_DIR)/ |> ^o CXX %b^ @(CC_WRAPPER) $(CXX) $(OLEVEL) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c -fPIC %f -o %o |> %B.o + +!ld = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` --whole-archive --start-group %f --no-whole-archive --end-group -o %o |> + +export STRIP +!strip = |> $STRIP -o %o %f |> + +!ln = |> ln -s %f %o |> + +&LD_SCRIPT_SO = repos/base/src/ld/genode_rel.ld + +ifeq (@(TUP_ARCH),x86_64) + ASM_SYM_DEPENDENCY = movq \1@GOTPCREL(%rip), %rax +else + ASM_SYM_DEPENDENCY = .long \1 +endif + +!abi_stub = |> ^ STUB %o^\ + sed \ + -e "s/^\(\w\+\) D \(\w\+\)\$/.data; .global \1; .type \1,%%object; .size \1,\2; \1:/" \ + -e "s/^\(\w\+\) V/.data; .weak \1; .type \1,%%object; \1:/" \ + -e "s/^\(\w\+\) T/.text; .global \1; .type \1,%%function; \1:/" \ + -e "s/^\(\w\+\) R \(\w\+\)\$/.section .rodata; .global \1; .type \1,%%object; .size \1,\2; \1:/" \ + -e "s/^\(\w\+\) W/.text; .weak \1; .type \1,%%function; \1:/" \ + -e "s/^\(\w\+\) B \(\w\+\)\$/.bss; .global \1; .type \1,%%object; .size \1,\2; \1:/" \ + -e "s/^\(\w\+\) U/.text; .global \1; $(ASM_SYM_DEPENDENCY)/" \ + %f \ + | $(CC) -x assembler -c - -o tmp.o; \ + $(LD) -o %o \ + -shared \ + -T &(LD_SCRIPT_SO) \ + tmp.o; \ + rm tmp.o; \ +|> $(OUTPUTS_DEV)/lib/%B.lib.so $(GENODE_DIR)/ + +!dhall = |> ^b dhall > %o^ dhall |> + +ifeq (@(TUP_ARCH),i386) +AS_MARCH = -march=i686 --32 +endif + +BASE_DIR = $(GENODE_DIR)/repos/base +&BASE_DIR = repos/base + +!incbin = |> ^ incbin %f^ \ + export SYM=_binary_`echo %f | sed 's/\./_/g'`; \ + echo ".global ${SYM}_start, ${SYM}_end; .data; .align 4; ${SYM}_start:; .incbin \"%f\"; ${SYM}_end:" \ + | llvm-mc -filetype=obj - > %o \ +|> binary_%b.o + +export AR +!ar = |> ^ MERGE %o^ $AR -rcs %o %f |> + +export TOOLCHAIN_DIR +SED_FLAGS += -e "s|@DEPOT_VERSION@|$(DEPOT_VERSION)|" + +!sed_pkgconfig_file = |> ^o SED %B^ \ + sed $(SED_PKGCONFIG_FLAGS) $(SED_FLAGS) < %f > %o; \ + pkg-config --validate %o; \ +|> $(PKG_CONFIG_DIR)/%B $(GENODE_DIR)/ + +!sed_pkgconfig_flags = |> ^o SED %d.pc^ \ + sed $(SED_PKGCONFIG_FLAGS) $(SED_FLAGS) > %o; \ + pkg-config --validate %o; \ +|> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/ diff --git a/errata/bin.tup b/errata/bin.tup new file mode 100644 index 000000000..30af60fa7 --- /dev/null +++ b/errata/bin.tup @@ -0,0 +1,14 @@ +ifeq ($(BIN_NAME),) +error BIN_NAME is empty +endif + +ifeq ($(BIN_VERSION),) +error BIN_VERSION is empty +endif + +: |> !bin |> + # Finalize the metadata with the macro defined in the + # ../Tuprules.tup. The macro cannot be defined here + # because the "include" directive is not available for + # relative paths during "include_rules" so this file + # cannot be included by intermediate Tuprules.tup. diff --git a/errata/pkg.tup b/errata/pkg.tup new file mode 100644 index 000000000..e69de29bb diff --git a/errata/raw.tup b/errata/raw.tup new file mode 100644 index 000000000..d8204ae28 --- /dev/null +++ b/errata/raw.tup @@ -0,0 +1,14 @@ +ifeq ($(RAW_NAME),) +error RAW_NAME is empty +endif + +ifeq ($(RAW_VERSION),) +error RAW_VERSION is empty +endif + +: |> !raw |> + # Finalize the metadata with the macro defined in the + # ../Tuprules.tup. The macro cannot be defined here + # because the "include" directive is not available for + # relative paths during "include_rules" so this file + # cannot be included by intermediate Tuprules.tup. diff --git a/repos/base-linux/Tuprules.tup b/repos/base-linux/Tuprules.tup new file mode 100644 index 000000000..2911d6f80 --- /dev/null +++ b/repos/base-linux/Tuprules.tup @@ -0,0 +1,2 @@ +include &(BASE_DIR)/Tuprules.tup +REP_DIR = $(TUP_CWD) diff --git a/repos/base-linux/src/core/Tupfile b/repos/base-linux/src/core/Tupfile new file mode 100644 index 000000000..fbcb2d0d6 --- /dev/null +++ b/repos/base-linux/src/core/Tupfile @@ -0,0 +1,63 @@ +TARGET_NAME = core-linux + +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 |> core-linux $(REP_DIR)/ {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/base-linux/src/lib/base/Tupfile b/repos/base-linux/src/lib/base/Tupfile new file mode 100644 index 000000000..f1dbd62a3 --- /dev/null +++ b/repos/base-linux/src/lib/base/Tupfile @@ -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 diff --git a/repos/base-linux/src/lib/ld/Tupfile b/repos/base-linux/src/lib/ld/Tupfile new file mode 100644 index 000000000..7bc7657a2 --- /dev/null +++ b/repos/base-linux/src/lib/ld/Tupfile @@ -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 += -gc-sections -z max-page-size=0x1000 +LDFLAGS += -T$(REP_DIR)/src/ld/stack_area.ld +LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld +LDFLAGS += --entry=_start_initial_stack + +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) ;\ + printf "\x02" | dd of=%o bs=1 seek=16 count=1 conv=notrunc ; \ +|> ld-linux.lib.so $(REP_DIR)/ {bin} + +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/base-linux/src/lib/lx_hybrid/Tupfile b/repos/base-linux/src/lib/lx_hybrid/Tupfile new file mode 100644 index 000000000..af63947db --- /dev/null +++ b/repos/base-linux/src/lib/lx_hybrid/Tupfile @@ -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 diff --git a/repos/base-linux/src/lib/syscall/Tupfile b/repos/base-linux/src/lib/syscall/Tupfile new file mode 100644 index 000000000..1c1cdd30e --- /dev/null +++ b/repos/base-linux/src/lib/syscall/Tupfile @@ -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 |> !asm |> {obj} +: {obj} |> !ar |> syscall-linux.lib.a diff --git a/repos/base-linux/src/lib/syscall/headers.tup b/repos/base-linux/src/lib/syscall/headers.tup new file mode 100644 index 000000000..e1b320cea --- /dev/null +++ b/repos/base-linux/src/lib/syscall/headers.tup @@ -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 diff --git a/repos/base-linux/src/lib/syscall/linux_syscalls.h b/repos/base-linux/src/lib/syscall/linux_syscalls.h index 5b5bafad1..f6897aa20 100644 --- a/repos/base-linux/src/lib/syscall/linux_syscalls.h +++ b/repos/base-linux/src/lib/syscall/linux_syscalls.h @@ -47,7 +47,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/repos/base-linux/src/timer/linux/Tupfile b/repos/base-linux/src/timer/linux/Tupfile new file mode 100644 index 000000000..11e0c8de9 --- /dev/null +++ b/repos/base-linux/src/timer/linux/Tupfile @@ -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) diff --git a/repos/base-nova/Tuprules.tup b/repos/base-nova/Tuprules.tup new file mode 100644 index 000000000..7f19d025f --- /dev/null +++ b/repos/base-nova/Tuprules.tup @@ -0,0 +1,12 @@ +ifeq (@(TUP_ARCH),x86_32) + INCLUDES += -I$(TUP_CWD)/include/spec/64bit +endif + +ifeq (@(TUP_ARCH),x86_64) + INCLUDES += -I$(TUP_CWD)/include/spec/64bit +endif + +INCLUDES += -I$(TUP_CWD)/include + +include &(BASE_DIR)/Tuprules.tup +REP_DIR = $(TUP_CWD) diff --git a/repos/base-nova/src/NOVA b/repos/base-nova/src/NOVA new file mode 160000 index 000000000..fbb002d4d --- /dev/null +++ b/repos/base-nova/src/NOVA @@ -0,0 +1 @@ +Subproject commit fbb002d4d6e2b6eddae4d1f0990fe71307e8c7ca diff --git a/repos/base-nova/src/Tuprules.tup b/repos/base-nova/src/Tuprules.tup new file mode 100644 index 000000000..099a50f28 --- /dev/null +++ b/repos/base-nova/src/Tuprules.tup @@ -0,0 +1 @@ +INCLUDES += -I$(REP_DIR)/src/include diff --git a/repos/base-nova/src/core/Tupfile b/repos/base-nova/src/core/Tupfile new file mode 100644 index 000000000..d82351964 --- /dev/null +++ b/repos/base-nova/src/core/Tupfile @@ -0,0 +1,59 @@ +ifeq (@(BUILD_NOVA),y) + +include_rules +GEN_CORE_DIR = $(BASE_DIR)/src/core + +INCLUDES += \ + -I$(REP_DIR)/src/core/include \ + -I$(REP_DIR)/src/include \ + -I$(BASE_DIR)/src/include \ + -I$(GEN_CORE_DIR)/include \ + -I$(BASE_DIR)/include \ + +ifeq (@(TUP_ARCH),i386) +SRC_CC += spec/x86_32/*.cc +endif + +ifeq (@(TUP_ARCH),x86_64) +SRC_CC += spec/x86_64/*.cc +endif + +SRC_CC += \ + *.cc \ + $(GEN_CORE_DIR)/core_log.cc \ + $(GEN_CORE_DIR)/core_mem_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)/dataspace_component.cc \ + $(GEN_CORE_DIR)/default_log.cc \ + $(GEN_CORE_DIR)/dump_alloc.cc \ + $(GEN_CORE_DIR)/heartbeat.cc \ + $(GEN_CORE_DIR)/io_mem_session_component.cc \ + $(GEN_CORE_DIR)/main.cc \ + $(GEN_CORE_DIR)/pd_session_component.cc \ + $(GEN_CORE_DIR)/platform_rom_modules.cc \ + $(GEN_CORE_DIR)/ram_dataspace_factory.cc \ + $(GEN_CORE_DIR)/region_map_component.cc \ + $(GEN_CORE_DIR)/rom_session_component.cc \ + $(GEN_CORE_DIR)/signal_receiver.cc \ + $(GEN_CORE_DIR)/signal_transmitter_noinit.cc \ + $(GEN_CORE_DIR)/spec/x86/io_port_session_component.cc \ + $(GEN_CORE_DIR)/spec/x86/io_port_session_support.cc \ + $(GEN_CORE_DIR)/stack_area.cc \ + $(GEN_CORE_DIR)/trace_session_component.cc \ + $(GEN_CORE_DIR)/vm_session_common.cc \ + $(GEN_CORE_DIR)/version.cc \ + +CXXFLAGS_$(GEN_CORE_DIR)/version.cc += -DGENODE_VERSION=\"`git describe`\" + +: foreach $(SRC_CC) |> !cxx |> {link-items} + +: {link-items} |> !ar |> core-nova.lib.a + +: core-nova.lib.a | $(REP_DIR)/ $(BASE_DIR)/ \ + |> $(LD) $(LD_MARCH) -u _start --whole-archive -r \ + % % %f -o %o \ + |> core-nova.o $(REP_DIR)/ + +endif diff --git a/repos/base-nova/src/core/pager.cc b/repos/base-nova/src/core/pager_common.cc similarity index 100% rename from repos/base-nova/src/core/pager.cc rename to repos/base-nova/src/core/pager_common.cc diff --git a/repos/base-nova/src/core/spec/x86_32/pager.cc b/repos/base-nova/src/core/spec/x86_32/pager_x86_32.cc similarity index 100% rename from repos/base-nova/src/core/spec/x86_32/pager.cc rename to repos/base-nova/src/core/spec/x86_32/pager_x86_32.cc diff --git a/repos/base-nova/src/core/spec/x86_64/pager.cc b/repos/base-nova/src/core/spec/x86_64/pager_x86_64.cc similarity index 100% rename from repos/base-nova/src/core/spec/x86_64/pager.cc rename to repos/base-nova/src/core/spec/x86_64/pager_x86_64.cc diff --git a/repos/base-nova/src/lib/base/Tupfile b/repos/base-nova/src/lib/base/Tupfile new file mode 100644 index 000000000..ce9511afb --- /dev/null +++ b/repos/base-nova/src/lib/base/Tupfile @@ -0,0 +1,46 @@ +ifeq (@(BUILD_NOVA),y) + +include_rules +INCLUDES += -I$(BASE_DIR)/src/include + +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 \ + region_map_client.cc \ + rpc_entrypoint.cc \ + signal_transmitter.cc \ + sleep.cc \ + stack_area_addr.cc \ + stack.cc \ + vm_session.cc \ + +: foreach $(COMMON_SRC_CC) |> !cxx |> nova-%B.o {base-common-obj} + +: {base-common-obj} |> !ar |> base-nova-common.lib.a $(REP_DIR)/ + +SRC_CC += \ + rpc_cap_alloc.cc \ + thread_start.cc \ + $(BASE_LIB_DIR)/default_log.cc \ + $(BASE_LIB_DIR)/env_deprecated.cc \ + $(BASE_LIB_DIR)/stack_area.cc \ + $(BASE_LIB_DIR)/env_reinit.cc \ + $(BASE_LIB_DIR)/main_thread_cap.cc \ + $(BASE_LIB_DIR)/heartbeat.cc \ + $(BASE_LIB_DIR)/cache.cc \ + $(BASE_LIB_DIR)/signal.cc \ + +: foreach $(SRC_CC) |> !cxx |> {base-obj} + +: {base-obj} |> !ar |> base-nova.lib.a + +endif diff --git a/repos/base-nova/src/lib/ld/Tupfile b/repos/base-nova/src/lib/ld/Tupfile new file mode 100644 index 000000000..c1bdd4c9f --- /dev/null +++ b/repos/base-nova/src/lib/ld/Tupfile @@ -0,0 +1,64 @@ +ifeq (@(BUILD_NOVA),y) + +TARGET_NAME = base-nova +include_rules +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 + +ifeq (@(TUP_ARCH),x86_32) +LDFLAGS += -T$(LDSO_DIR)/linux-32.ld +else +LDFLAGS += --entry=_start +LDFLAGS += -T$(LDSO_DIR)/linker.ld +endif + +LDFLAGS += -gc-sections -z max-page-size=0x1000 +LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld \ + +BASE_LIBS += \ + $(BASE_DIR)/src/lib/alarm/alarm.lib.a \ + $(REP_DIR)/src/lib/base/base-nova-common.lib.a \ + $(REP_DIR)/src/lib/base/base-nova.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 \ + $(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.lib.so $(REP_DIR)/ {bin} + +: {bin} |> !collect_bin |> +include &(BIN_RULES) + +endif \ No newline at end of file diff --git a/repos/base-nova/src/timer/nova/Tupfile b/repos/base-nova/src/timer/nova/Tupfile new file mode 100644 index 000000000..a3bfd1686 --- /dev/null +++ b/repos/base-nova/src/timer/nova/Tupfile @@ -0,0 +1,14 @@ +TARGET_NAME = nova_timer_drv +LIBS += genode-base +include_rules + +BASE_TIMER_DIR = $(BASE_DIR)/src/timer + +INCLUDES += -I. +INCLUDES += -I$(BASE_TIMER_DIR)/include + +: foreach *.cc $(BASE_TIMER_DIR)/*.cc |> !cxx |> %B.nova.o {obj} +: {obj} |> !prg |> timer {bin} +: {bin} |> !collect_bin |> + +include &(BIN_RULES) diff --git a/repos/base/Tupfile b/repos/base/Tupfile new file mode 100644 index 000000000..05f1109df --- /dev/null +++ b/repos/base/Tupfile @@ -0,0 +1,34 @@ +include_rules + +ifdef NIX_OUTPUTS_DEV +SED_FLAGS += -e "s|@includedir@|@(NIX_OUTPUTS_DEV)/include/base|" +SED_FLAGS += -e "s|@lddir@|@(NIX_OUTPUTS_DEV)/ld|" +else +SED_FLAGS += -e "s|@includedir@|`nix-store --add $(REP_DIR)/include`|" +SED_FLAGS += -e "s|@lddir@|`nix-store --add $(REP_DIR)/src/ld`|" +endif + + +SED_FLAGS += -e "s|@toolchainincludedir@|`$(CC) $(CC_MARCH) -print-file-name=include`|" +SED_FLAGS += -e "s|@libgcc@|`$(CC) $(CC_MARCH) -print-file-name=libgcc.a`|" + +SED_FLAGS += -e "s|@cc@|$(CC)|" +SED_FLAGS += -e "s|@cxx@|$(CXX)|" +SED_FLAGS += -e "s|@ld@|$(LD)|" +SED_FLAGS += -e "s|@ar@|$(AR)|" +SED_FLAGS += -e "s|@ranlib@|$(RANLIB)|" + +ifeq (@(TUP_ARCH),i386) +SED_FLAGS += -e 's|@spec_includes@|-I${includedir}/spec/x86_32 -I${includedir}/spec/x86 -I${includedir}/spec/32bit|' +endif + +ifeq (@(TUP_ARCH),x86_64) +SED_FLAGS += -e 's|@spec_includes@|-I${includedir}/spec/x86_64 -I${includedir}/spec/x86 -I${includedir}/spec/64bit|' +endif + +ifeq (@(TUP_ARCH),arm64) +SED_FLAGS += -e 's|@spec_includes@| -I${includedir}/spec/arm_64 -I${includedir}/spec/64bit|' +endif + +: foreach *.pc.in |> !sed_pkgconfig_file |> +: |> ln -s genode-base.pc %o |> $(PKG_CONFIG_DIR)/base.pc $(GENODE_DIR)/ diff --git a/repos/base/Tuprules.tup b/repos/base/Tuprules.tup new file mode 100644 index 000000000..59780bbec --- /dev/null +++ b/repos/base/Tuprules.tup @@ -0,0 +1,52 @@ +REP_DIR = $(TUP_CWD) + +ifeq (@(TUP_ARCH),i386) +INCLUDES += -I$(BASE_DIR)/include/spec/x86_32 +INCLUDES += -I$(BASE_DIR)/include/spec/x86 +INCLUDES += -I$(BASE_DIR)/include/spec/32bit +endif + +ifeq (@(TUP_ARCH),x86_64) +INCLUDES += -I$(BASE_DIR)/include/spec/x86_64 +INCLUDES += -I$(BASE_DIR)/include/spec/x86 +INCLUDES += -I$(BASE_DIR)/include/spec/64bit +endif + +ifeq (@(TUP_ARCH),arm64) +INCLUDES += -I$(BASE_DIR)/include/spec/arm_64 +INCLUDES += -I$(BASE_DIR)/include/spec/64bit +endif + +INCLUDES += -I$(BASE_DIR)/include + +# Override base macros to bypass pkg-config + +DEFINES += \ + -ffunction-sections \ + -fno-strict-aliasing \ + -fPIC \ + -g \ + -nostdinc \ + -Wall \ + +CXXFLAGS += \ + -std=gnu++17 \ + +GCC_INCLUDE = -I`$(CC) -print-file-name=include` + +!cc = |> ^ COMPILE %b^ \ + @(CC_WRAPPER) $(CC) $(DEFINES) $(OLEVEL) \ + $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) \ + $(INCLUDES) $(GCC_INCLUDE) $(CC_MARCH) \ + -c %f -o %o \ +|> %B.o + +!cxx = |> ^ COMPILE %b^ \ + @(CC_WRAPPER) $(CXX) $(DEFINES) $(OLEVEL) \ + $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) \ + $(INCLUDES) $(GCC_INCLUDE) $(CC_MARCH) \ + -c %f -o %o \ +|> %B.o + +!ld = |> ^ MERGE %o^ $(LD) \ + $(LDFLAGS) --whole-archive --start-group %f --end-group --no-whole-archive -o %o |> diff --git a/repos/base/genode-base.pc.in b/repos/base/genode-base.pc.in new file mode 100644 index 000000000..90581ccf1 --- /dev/null +++ b/repos/base/genode-base.pc.in @@ -0,0 +1,12 @@ +includedir=@includedir@ +cc=@cc@ +cxx=@cxx@ +ld=@ld@ +ar=@ar@ +ranlib=@ranlib@ + +Name: base +Description: Genode base repository +URL: https://genode.org/ +Version: @VERSION@ +Cflags: -I${includedir} @spec_includes@ -I@toolchainincludedir@ diff --git a/repos/base/genode-lib.pc.in b/repos/base/genode-lib.pc.in new file mode 100644 index 000000000..61ab012a3 --- /dev/null +++ b/repos/base/genode-lib.pc.in @@ -0,0 +1,4 @@ +Name: genode-lib +Description: Flags for linking Genode libraries +Version: @VERSION@ +Libs: -shared --eh-frame-hdr -gc-sections -z max-page-size=0x1000 -T@lddir@/genode_rel.ld --entry=0x0 -l:ldso-startup.lib.a @libgcc@ diff --git a/repos/base/genode-prg.pc.in b/repos/base/genode-prg.pc.in new file mode 100644 index 000000000..7418bb1f1 --- /dev/null +++ b/repos/base/genode-prg.pc.in @@ -0,0 +1,8 @@ +lddir=@lddir@ + +Name: genode-prg +Description: Flags for dynamically-linked Genode programs +URL: https://genode.org/ +Version: @VERSION@ +Requires: ld +Libs: -gc-sections -z max-page-size=0x1000 --dynamic-list=${lddir}/genode_dyn.dl -nostdlib -Ttext=0x01000000 --dynamic-linker=ld.lib.so --eh-frame-hdr -rpath-link=. -T${lddir}/genode_dyn.ld diff --git a/repos/base/src/Tuprules.tup b/repos/base/src/Tuprules.tup new file mode 100644 index 000000000..099a50f28 --- /dev/null +++ b/repos/base/src/Tuprules.tup @@ -0,0 +1 @@ +INCLUDES += -I$(REP_DIR)/src/include diff --git a/repos/base/src/lib/alarm/Tupfile b/repos/base/src/lib/alarm/Tupfile new file mode 100644 index 000000000..24e6b1f17 --- /dev/null +++ b/repos/base/src/lib/alarm/Tupfile @@ -0,0 +1,3 @@ +include_rules +: foreach *.cc |> !cxx |> {obj} +: {obj} |> !ar |> alarm.lib.a diff --git a/repos/base/src/lib/base/common.tup b/repos/base/src/lib/base/common.tup new file mode 100644 index 000000000..b664fdd85 --- /dev/null +++ b/repos/base/src/lib/base/common.tup @@ -0,0 +1,25 @@ +# Portions of base library shared by core and non-core processes + +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/rm_session_client.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 \ diff --git a/repos/base/src/lib/cxx/Tupfile b/repos/base/src/lib/cxx/Tupfile new file mode 100644 index 000000000..04529c5ad --- /dev/null +++ b/repos/base/src/lib/cxx/Tupfile @@ -0,0 +1,70 @@ +include_rules + +DEFINES = -ffunction-sections -fno-strict-aliasing -g -fPIC + # drop the standard defines to avoid -nostdinc + +: foreach *.cc |> !cxx |> {supc++} + +# +# Prevent symbols of the gcc support libs from being discarded during 'ld -r' +# +KEEP_SYMBOLS = \ + -u __cxa_guard_acquire \ + -u __dynamic_cast \ + -u __cxa_throw_bad_array_new_length \ + -u __cxa_current_exception_type \ + -u _ZTVN10__cxxabiv116__enum_type_infoE \ + -u _ZN10__cxxabiv121__vmi_class_type_infoD0Ev \ + -u _ZTVN10__cxxabiv119__pointer_type_infoE \ + -u _ZTSN10__cxxabiv120__function_type_infoE \ + +LIBCXX_GCC = \ + `$(CXX) $(CC_MARCH) -print-file-name=libsupc++.a` \ + `$(CXX) $(CC_MARCH) -print-file-name=libgcc_eh.a` \ + +: {supc++} |> $(LD) $(LD_MARCH) $(KEEP_SYMBOLS) -r %f $(LIBCXX_GCC) -o %o |> supc++.tmp + +# +# Here we define all symbols we want to hide in libsupc++ and libgcc_eh +# +LOCAL_SYMBOLS = \ + --localize-symbol=abort \ + --localize-symbol=calloc \ + --localize-symbol=fputc \ + --localize-symbol=fputs \ + --localize-symbol=free \ + --localize-symbol=fwrite \ + --localize-symbol=malloc \ + --localize-symbol=memcmp \ + --localize-symbol=realloc \ + --localize-symbol=sprintf \ + --localize-symbol=stderr \ + --localize-symbol=__stderrp \ + --localize-symbol=strcat \ + --localize-symbol=strcmp \ + --localize-symbol=strcpy \ + --localize-symbol=strlen \ + --localize-symbol=strncmp \ + +# +# Symbols we wrap (see unwind.cc) +# +EH_SYMBOLS = \ + _Unwind_Resume \ + _Unwind_Complete \ + _Unwind_DeleteException \ + +# +# Additional functions for ARM +# +EH_SYMBOLS += \ + __aeabi_unwind_cpp_pr0 \ + __aeabi_unwind_cpp_pr1 \ + +REDEF_SYMBOLS = `echo $(EH_SYMBOLS) | awk -v RS=' ' '{ print "--redefine-sym "$1"=_cxx_"$1 }'` + +: supc++.tmp |> $(OBJCOPY) $(LOCAL_SYMBOLS) $(REDEF_SYMBOLS) %f %o |> supc++.o {obj} + +: foreach *.c |> !cc |> {obj} + +: {obj} |> !ar |> cxx.lib.a $(BASE_DIR)/ diff --git a/repos/base/src/lib/ld/Tupfile b/repos/base/src/lib/ld/Tupfile new file mode 100644 index 000000000..a46ff162c --- /dev/null +++ b/repos/base/src/lib/ld/Tupfile @@ -0,0 +1,3 @@ +include_rules +: $(REP_DIR)/lib/symbols/ld |> !abi_stub |> +: foreach *.pc.in |> !sed_pkgconfig_file |> diff --git a/repos/base/src/lib/ld/ld.pc.in b/repos/base/src/lib/ld/ld.pc.in new file mode 100644 index 000000000..d28554509 --- /dev/null +++ b/repos/base/src/lib/ld/ld.pc.in @@ -0,0 +1,5 @@ +Name: ld +Description: Genode dynamic loader +URL: https://genode.org/ +Version: @VERSION@ +Libs: -l:ld.lib.so -l:ldso-startup.lib.a diff --git a/repos/base/src/lib/ldso/startup/Tupfile b/repos/base/src/lib/ldso/startup/Tupfile new file mode 100644 index 000000000..0bd18a3a5 --- /dev/null +++ b/repos/base/src/lib/ldso/startup/Tupfile @@ -0,0 +1,6 @@ +LIBS += base +include_rules + +: foreach startup.cc |> !cxx |> %B.o {obj} +: {obj} | |> !ar |> ldso-startup.lib.a +: {obj} | |> !ar |> $(LIB_DIR)/ldso-startup.lib.a $(GENODE_DIR)/ diff --git a/repos/base/src/lib/startup/Tupfile b/repos/base/src/lib/startup/Tupfile new file mode 100644 index 000000000..fa7ce9bd1 --- /dev/null +++ b/repos/base/src/lib/startup/Tupfile @@ -0,0 +1,15 @@ +include_rules + +: foreach *.cc |> !cxx |> {obj} + +ifeq (@(TUP_ARCH),i386) + : foreach spec/x86_32/*.s |> !asm |> {obj} +endif +ifeq (@(TUP_ARCH),x86_64) + : foreach spec/x86_64/*.s |> !asm |> {obj} +endif +ifeq (@(TUP_ARCH),arm64) + : foreach spec/arm_64/*.s |> !asm |> {obj} +endif + +: {obj} |> !ar |> startup.lib.a $(BASE_DIR)/ diff --git a/repos/base/src/lib/startup/cap_copy.cc b/repos/base/src/lib/startup/cap_copy.cc deleted file mode 100644 index 421cfed64..000000000 --- a/repos/base/src/lib/startup/cap_copy.cc +++ /dev/null @@ -1,20 +0,0 @@ -/* - * \brief Copy a platform-capability to another protection domain. - * \author Stefan Kalkowski - * \date 2012-03-09 - */ - -/* - * Copyright (C) 2012-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include -#include - -using namespace Genode; - -void Cap_dst_policy::copy(void* dst, Native_capability_tpl* src) { - memcpy(dst, src, sizeof(Native_capability_tpl)); } diff --git a/repos/base/src/lib/timeout/Tupfile b/repos/base/src/lib/timeout/Tupfile new file mode 100644 index 000000000..8eb87de05 --- /dev/null +++ b/repos/base/src/lib/timeout/Tupfile @@ -0,0 +1,17 @@ +include_rules +INCLUDES += $(REP_DIR)/src/include + +SRC_CC += \ + duration.cc \ + timeout.cc \ + timer_connection.cc \ + timer_connection_timestamp.cc \ + +ifeq (@(TUP_ARCH),arm) + SRC_CC += arm/timer_connection_time.cc +else + SRC_CC += timer_connection_time.cc +endif + +: foreach $(SRC_CC) |> !cxx |> {obj} +: {obj} |> !ar |> %d.lib.a diff --git a/repos/base/src/test/Tuprules.tup b/repos/base/src/test/Tuprules.tup new file mode 100644 index 000000000..3b376cc68 --- /dev/null +++ b/repos/base/src/test/Tuprules.tup @@ -0,0 +1 @@ +LIBS += base diff --git a/repos/base/src/test/log/Tupfile b/repos/base/src/test/log/Tupfile new file mode 100644 index 000000000..0cb599339 --- /dev/null +++ b/repos/base/src/test/log/Tupfile @@ -0,0 +1,6 @@ +TARGET_NAME = test-log +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !prg |> test-%d {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/Tupfile b/repos/gems/Tupfile new file mode 100644 index 000000000..f6655ba9c --- /dev/null +++ b/repos/gems/Tupfile @@ -0,0 +1,9 @@ +include_rules + +ifdef NIX_OUTPUTS_DEV +SED_FLAGS += -e "s|@includedir@|@(NIX_OUTPUTS_DEV)/include/gems|" +else +SED_FLAGS += -e "s|@includedir@|`nix-store --add $(REP_DIR)/include`|" +endif + +: *.pc.in |> !sed_pkgconfig_file |> diff --git a/repos/gems/Tuprules.tup b/repos/gems/Tuprules.tup new file mode 100644 index 000000000..454a87e16 --- /dev/null +++ b/repos/gems/Tuprules.tup @@ -0,0 +1,2 @@ +REP_DIR = $(TUP_CWD) +LIBS += genode-gems diff --git a/repos/gems/genode-gems.pc.in b/repos/gems/genode-gems.pc.in new file mode 100644 index 000000000..6dd9ff2bb --- /dev/null +++ b/repos/gems/genode-gems.pc.in @@ -0,0 +1,8 @@ +includedir=@includedir@ + +Name: gems +Description: Genode gems repository +URL: https://genode.org/ +Version: @VERSION@ +Requires: genode-os +Cflags: -I${includedir} diff --git a/repos/gems/src/app/backdrop/Tupfile b/repos/gems/src/app/backdrop/Tupfile new file mode 100644 index 000000000..bfa40a46b --- /dev/null +++ b/repos/gems/src/app/backdrop/Tupfile @@ -0,0 +1,11 @@ +TARGET_NAME = backdrop +LIBS += libpng libc + +include_rules + +BLIT = $(GENODE_DIR)/repos/os/src/lib/blit/blit.lib.a + +: foreach *.cc $(REP_DIR)/src/lib/file/*.cc |> !cxx |> %B.o {obj} +: {obj} $(BLIT) |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/decorator/Tupfile b/repos/gems/src/app/decorator/Tupfile new file mode 100644 index 000000000..91d9641af --- /dev/null +++ b/repos/gems/src/app/decorator/Tupfile @@ -0,0 +1,12 @@ +TARGET_NAME = decorator +include_rules +INCLUDES += -I$(REP_DIR)/../demo/include + +: $(REP_DIR)/../demo/src/app/scout/data/droidsansb10.tff |> !ln |> %b {font} + +: foreach *.rgba {font} |> !incbin |> {obj} +: foreach *.cc |> !cxx |> %B.o {obj} + +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/depot_deploy/Tupfile b/repos/gems/src/app/depot_deploy/Tupfile new file mode 100644 index 000000000..21212b1bf --- /dev/null +++ b/repos/gems/src/app/depot_deploy/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = depot_deploy +LIBS += vfs +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/depot_download_manager/Tupfile b/repos/gems/src/app/depot_download_manager/Tupfile new file mode 100644 index 000000000..30e0df06c --- /dev/null +++ b/repos/gems/src/app/depot_download_manager/Tupfile @@ -0,0 +1,6 @@ +TARGET_NAME = depot_download_manager +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/depot_query/Tupfile b/repos/gems/src/app/depot_query/Tupfile new file mode 100644 index 000000000..e53876078 --- /dev/null +++ b/repos/gems/src/app/depot_query/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = depot_query +LIBS += vfs +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/driver_manager/Tupfile b/repos/gems/src/app/driver_manager/Tupfile new file mode 100644 index 000000000..da9febd9b --- /dev/null +++ b/repos/gems/src/app/driver_manager/Tupfile @@ -0,0 +1,6 @@ +TARGET_NAME = driver_manager +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/fs_query/Tupfile b/repos/gems/src/app/fs_query/Tupfile new file mode 100644 index 000000000..f33576deb --- /dev/null +++ b/repos/gems/src/app/fs_query/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = fs_query +LIBS += vfs +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/fs_tool/Tupfile b/repos/gems/src/app/fs_tool/Tupfile new file mode 100644 index 000000000..6e1d60ddd --- /dev/null +++ b/repos/gems/src/app/fs_tool/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = fs_tool +LIBS += vfs +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/menu_view/Tupfile b/repos/gems/src/app/menu_view/Tupfile new file mode 100644 index 000000000..b506a6c39 --- /dev/null +++ b/repos/gems/src/app/menu_view/Tupfile @@ -0,0 +1,9 @@ +TARGET_NAME = menu_view +LIBS += libpng libc +include_rules +INCLUDES += -I. +INCLUDES += -I$(REP_DIR)/../demo/include +: foreach *.cc $(REP_DIR)/src/lib/file/*.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/pipe/Tupfile b/repos/gems/src/app/pipe/Tupfile new file mode 100644 index 000000000..0e7eccb4a --- /dev/null +++ b/repos/gems/src/app/pipe/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = pipe +LIBS += posix +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/sculpt_manager/Tupfile b/repos/gems/src/app/sculpt_manager/Tupfile new file mode 100644 index 000000000..82f3e3c3f --- /dev/null +++ b/repos/gems/src/app/sculpt_manager/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = sculpt_manager +INCLUDES += -I. +INCLUDES += -I../depot_deploy +include_rules +: foreach *.cc view/*.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/themed_decorator/Tupfile b/repos/gems/src/app/themed_decorator/Tupfile new file mode 100644 index 000000000..37f243327 --- /dev/null +++ b/repos/gems/src/app/themed_decorator/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = themed_decorator +LIBS += libpng libc +include_rules +INCLUDES += -I$(REP_DIR)/../demo/include +: foreach *.cc $(REP_DIR)/src/lib/file/*.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/app/window_layouter/Tupfile b/repos/gems/src/app/window_layouter/Tupfile new file mode 100644 index 000000000..4460f9c1e --- /dev/null +++ b/repos/gems/src/app/window_layouter/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = window_layouter +INCLUDES += -I. +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/lib/vfs/import/Tupfile b/repos/gems/src/lib/vfs/import/Tupfile new file mode 100644 index 000000000..6c84f828d --- /dev/null +++ b/repos/gems/src/lib/vfs/import/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = vfs_import + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !lib |> vfs_import.lib.so {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/server/file_terminal/Tupfile b/repos/gems/src/server/file_terminal/Tupfile new file mode 100644 index 000000000..8f8b11b9c --- /dev/null +++ b/repos/gems/src/server/file_terminal/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = file_terminal +LIBS += libc + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/server/nit_fader/Tupfile b/repos/gems/src/server/nit_fader/Tupfile new file mode 100644 index 000000000..d49053de1 --- /dev/null +++ b/repos/gems/src/server/nit_fader/Tupfile @@ -0,0 +1,12 @@ +TARGET_NAME = nit_fader +include_rules + +INCLUDES += -I. +INCLUDES += -I$(REP_DIR)/../demo/include + +BLIT = $(GENODE_DIR)/repos/os/src/lib/blit/blit.lib.a + +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} $(BLIT) |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/server/terminal/Tupfile b/repos/gems/src/server/terminal/Tupfile new file mode 100644 index 000000000..a59a92ddd --- /dev/null +++ b/repos/gems/src/server/terminal/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = terminal +LIBS += vfs +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/gems/src/server/wm/Tupfile b/repos/gems/src/server/wm/Tupfile new file mode 100644 index 000000000..a1e7b47ad --- /dev/null +++ b/repos/gems/src/server/wm/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = wm +INCLUDES += -I. +include_rules + +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/Tupfile b/repos/os/Tupfile new file mode 100644 index 000000000..0adaca990 --- /dev/null +++ b/repos/os/Tupfile @@ -0,0 +1,21 @@ +include_rules + +ifdef NIX_OUTPUTS_DEV +SED_FLAGS += -e "s|@includedir@|@(NIX_OUTPUTS_DEV)/include/os|" +else +SED_FLAGS += -e "s|@includedir@|`nix-store --add $(REP_DIR)/include`|" +endif + +ifeq (@(TUP_ARCH),i386) +SED_FLAGS += -e 's|@spec_includes@|-I${includedir}/spec/x86_32 -I${includedir}/spec/x86|' +endif + +ifeq (@(TUP_ARCH),x86_64) +SED_FLAGS += -e 's|@spec_includes@|-I${includedir}/spec/x86_64 -I${includedir}/spec/x86|' +endif + +ifeq (@(TUP_ARCH),arm) + SED_FLAGS += -e 's|@spec_includes@| -I${includedir}/spec/arm|' +endif + +: *.pc.in |> !sed_pkgconfig_file |> diff --git a/repos/os/Tuprules.tup b/repos/os/Tuprules.tup new file mode 100644 index 000000000..64d57f97a --- /dev/null +++ b/repos/os/Tuprules.tup @@ -0,0 +1,2 @@ +REP_DIR = $(TUP_CWD) +LIBS += genode-os diff --git a/repos/os/genode-os.pc.in b/repos/os/genode-os.pc.in new file mode 100644 index 000000000..4754d3981 --- /dev/null +++ b/repos/os/genode-os.pc.in @@ -0,0 +1,8 @@ +includedir=@includedir@ + +Name: os +Description: Genode os repository +URL: https://genode.org/ +Version: @VERSION@ +Requires: genode-base +Cflags: @spec_includes@ -I${includedir} diff --git a/repos/os/src/app/global_keys_handler/Tupfile b/repos/os/src/app/global_keys_handler/Tupfile new file mode 100644 index 000000000..d4e206d46 --- /dev/null +++ b/repos/os/src/app/global_keys_handler/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = global_keys_handler + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/log_core/Tupfile b/repos/os/src/app/log_core/Tupfile new file mode 100644 index 000000000..215680777 --- /dev/null +++ b/repos/os/src/app/log_core/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = log_core + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/nit_focus/Tupfile b/repos/os/src/app/nit_focus/Tupfile new file mode 100644 index 000000000..5dbfd3533 --- /dev/null +++ b/repos/os/src/app/nit_focus/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = nit_focus + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/ping/Tupfile b/repos/os/src/app/ping/Tupfile new file mode 100644 index 000000000..86521889a --- /dev/null +++ b/repos/os/src/app/ping/Tupfile @@ -0,0 +1,10 @@ +TARGET_NAME = ping +INCLUDES += -I. +include_rules + +: foreach *.cc |> !cxx |> %B.o {obj} +: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} + +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/pointer/Tupfile b/repos/os/src/app/pointer/Tupfile new file mode 100644 index 000000000..ca125839d --- /dev/null +++ b/repos/os/src/app/pointer/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = pointer + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/rom_logger/Tupfile b/repos/os/src/app/rom_logger/Tupfile new file mode 100644 index 000000000..a7dcc206f --- /dev/null +++ b/repos/os/src/app/rom_logger/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = rom_logger + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/rom_reporter/Tupfile b/repos/os/src/app/rom_reporter/Tupfile new file mode 100644 index 000000000..c6c590f68 --- /dev/null +++ b/repos/os/src/app/rom_reporter/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = rom_reporter + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/rom_to_file/Tupfile b/repos/os/src/app/rom_to_file/Tupfile new file mode 100644 index 000000000..93ee1f467 --- /dev/null +++ b/repos/os/src/app/rom_to_file/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = rom_to_file + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/sequence/Tupfile b/repos/os/src/app/sequence/Tupfile new file mode 100644 index 000000000..d5b64cd11 --- /dev/null +++ b/repos/os/src/app/sequence/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = sequence + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/app/usb_report_filter/Tupfile b/repos/os/src/app/usb_report_filter/Tupfile new file mode 100644 index 000000000..e23ec70a5 --- /dev/null +++ b/repos/os/src/app/usb_report_filter/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = usb_report_filter + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/drivers/ahci/Tuprules.tup b/repos/os/src/drivers/ahci/Tuprules.tup new file mode 100644 index 000000000..22e944acd --- /dev/null +++ b/repos/os/src/drivers/ahci/Tuprules.tup @@ -0,0 +1,2 @@ +INCLUDES += -I$(TUP_CWD) +SRC_CC = $(TUP_CWD)/*.cc diff --git a/repos/os/src/drivers/ahci/spec/x86/Tupfile b/repos/os/src/drivers/ahci/spec/x86/Tupfile new file mode 100644 index 000000000..ec96bd7cc --- /dev/null +++ b/repos/os/src/drivers/ahci/spec/x86/Tupfile @@ -0,0 +1,10 @@ +ifdef x86 + +TARGET_NAME = ahci_drv +include_rules +: foreach $(SRC_CC) *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !prg |> $(TARGET_NAME) {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) + +endif diff --git a/repos/os/src/drivers/input/spec/ps2/Tuprules.tup b/repos/os/src/drivers/input/spec/ps2/Tuprules.tup new file mode 100644 index 000000000..8e021bbf4 --- /dev/null +++ b/repos/os/src/drivers/input/spec/ps2/Tuprules.tup @@ -0,0 +1 @@ +INCLUDES += -I$(TUP_CWD) diff --git a/repos/os/src/drivers/input/spec/ps2/x86/Tupfile b/repos/os/src/drivers/input/spec/ps2/x86/Tupfile new file mode 100644 index 000000000..2ccac1b7e --- /dev/null +++ b/repos/os/src/drivers/input/spec/ps2/x86/Tupfile @@ -0,0 +1,10 @@ +ifdef x86 + +TARGET_NAME = ps2_drv +include_rules +: foreach $(SRC_CC) *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !prg |> $(TARGET_NAME) {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) + +endif diff --git a/repos/os/src/init/Tupfile b/repos/os/src/init/Tupfile new file mode 100644 index 000000000..0f3c34f17 --- /dev/null +++ b/repos/os/src/init/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = init +INCLUDES += -I./ +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} | |> !prg |> {bin} + +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/lib/blit/Tupfile b/repos/os/src/lib/blit/Tupfile new file mode 100644 index 000000000..967644d2a --- /dev/null +++ b/repos/os/src/lib/blit/Tupfile @@ -0,0 +1,27 @@ + +include_rules + +BLIT_DIR = $(GENODE_DIR)/repos/os/src/lib/blit + +ifeq (@(TUP_ARCH),i386) +BLIT_INCLUDES += -Ispec/x86_32 +BLIT_INCLUDES += -Ispec/x86 +endif + +ifeq (@(TUP_ARCH),x86_64) +BLIT_INCLUDES += -Ispec/x86_64 +BLIT_INCLUDES += -Ispec/x86 +endif + +ifeq (@(TUP_ARCH),arm) +BLIT_INCLUDES += -Ispec/arm +endif + +ifeq ($(BLIT_INCLUDES),) +error blit library not yet ported to @(TUP_ARCH) +endif + +INCLUDES += $(BLIT_INCLUDES) + +: foreach *.cc |> !cxx |> {obj} +: {obj} |> !ar |> %d.lib.a diff --git a/repos/os/src/lib/blit/blit.pc.in b/repos/os/src/lib/blit/blit.pc.in new file mode 100644 index 000000000..304e0e12c --- /dev/null +++ b/repos/os/src/lib/blit/blit.pc.in @@ -0,0 +1,6 @@ +Name: blit +Description: Genode blitting library +URL: https://genode.org/ +Version: @VERSION@ +Requires: genode-os +Libs: -l:blit.lib.a diff --git a/repos/os/src/lib/vfs/Tupfile b/repos/os/src/lib/vfs/Tupfile new file mode 100644 index 000000000..a322c9259 --- /dev/null +++ b/repos/os/src/lib/vfs/Tupfile @@ -0,0 +1,17 @@ +TARGET_NAME = vfs +INCLUDES += -I./ +include_rules + +: $(REP_DIR)/lib/symbols/vfs |> !abi_stub |> + +: vfs.pc.in |> !sed_pkgconfig_file |> + +: foreach *.cc |> !cxx |> %B.o {lib-obj} +: {lib-obj} |> !lib |> %d.lib.so {lib} + +: foreach ../../server/vfs/*.cc |> !cxx |> %B.o {server-obj} +: {server-obj} {lib} |> !prg |> server/vfs {server} + # Link the server to the immediate vfs.lib.so + +: foreach {lib} {server} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/lib/vfs/vfs.pc.in b/repos/os/src/lib/vfs/vfs.pc.in new file mode 100644 index 000000000..24a4e68eb --- /dev/null +++ b/repos/os/src/lib/vfs/vfs.pc.in @@ -0,0 +1,4 @@ +Name: VFS +Description: Genode Virtual File-System library +Version: @VERSION@ +Libs: -l:vfs.lib.so diff --git a/repos/os/src/server/cached_fs_rom/Tupfile b/repos/os/src/server/cached_fs_rom/Tupfile new file mode 100644 index 000000000..cb874ecec --- /dev/null +++ b/repos/os/src/server/cached_fs_rom/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = cached_fs_rom +INCLUDES += -I. + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/chroot/Tupfile b/repos/os/src/server/chroot/Tupfile new file mode 100644 index 000000000..05b36495d --- /dev/null +++ b/repos/os/src/server/chroot/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = chroot + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/clipboard/Tupfile b/repos/os/src/server/clipboard/Tupfile new file mode 100644 index 000000000..13f6d9cd2 --- /dev/null +++ b/repos/os/src/server/clipboard/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = clipboard + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/dynamic_rom/Tupfile b/repos/os/src/server/dynamic_rom/Tupfile new file mode 100644 index 000000000..3c6ef762e --- /dev/null +++ b/repos/os/src/server/dynamic_rom/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = dynamic_rom + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/fs_log/Tupfile b/repos/os/src/server/fs_log/Tupfile new file mode 100644 index 000000000..5f883ddbf --- /dev/null +++ b/repos/os/src/server/fs_log/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = fs_log + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/fs_report/Tupfile b/repos/os/src/server/fs_report/Tupfile new file mode 100644 index 000000000..7ce4f5e5c --- /dev/null +++ b/repos/os/src/server/fs_report/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = fs_report +include_rules +LIBS += vfs +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/fs_rom/Tupfile b/repos/os/src/server/fs_rom/Tupfile new file mode 100644 index 000000000..72fc61643 --- /dev/null +++ b/repos/os/src/server/fs_rom/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = fs_rom + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> %d {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/input_filter/Tupfile b/repos/os/src/server/input_filter/Tupfile new file mode 100644 index 000000000..3daddb571 --- /dev/null +++ b/repos/os/src/server/input_filter/Tupfile @@ -0,0 +1,8 @@ +TARGET_NAME = input_filter +INCLUDES += -I. + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/input_merger/Tupfile b/repos/os/src/server/input_merger/Tupfile new file mode 100644 index 000000000..f932a0ed2 --- /dev/null +++ b/repos/os/src/server/input_merger/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = input_merger + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/iso9660/Tupfile b/repos/os/src/server/iso9660/Tupfile new file mode 100644 index 000000000..22257949b --- /dev/null +++ b/repos/os/src/server/iso9660/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = iso9660 + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/log_report/Tupfile b/repos/os/src/server/log_report/Tupfile new file mode 100644 index 000000000..462fc0a32 --- /dev/null +++ b/repos/os/src/server/log_report/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = log_report + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/mixer/Tupfile b/repos/os/src/server/mixer/Tupfile new file mode 100644 index 000000000..ff02b6c35 --- /dev/null +++ b/repos/os/src/server/mixer/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = mixer + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nic_bridge/Tupfile b/repos/os/src/server/nic_bridge/Tupfile new file mode 100644 index 000000000..b1eed9ed3 --- /dev/null +++ b/repos/os/src/server/nic_bridge/Tupfile @@ -0,0 +1,10 @@ +TARGET_NAME = nic_bridge +INCLUDES += -I. +include_rules + +: foreach *.cc |> !cxx |> %B.o {obj} +: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} + +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nic_dump/Tupfile b/repos/os/src/server/nic_dump/Tupfile new file mode 100644 index 000000000..3f595808e --- /dev/null +++ b/repos/os/src/server/nic_dump/Tupfile @@ -0,0 +1,10 @@ +TARGET_NAME = nic_dump +INCLUDES += -I. +include_rules + +: foreach *.cc |> !cxx |> %B.o {obj} +: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} + +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nic_loopback/Tupfile b/repos/os/src/server/nic_loopback/Tupfile new file mode 100644 index 000000000..a513ce3cb --- /dev/null +++ b/repos/os/src/server/nic_loopback/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = nic_loopback + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nic_router/Tupfile b/repos/os/src/server/nic_router/Tupfile new file mode 100644 index 000000000..40125c09b --- /dev/null +++ b/repos/os/src/server/nic_router/Tupfile @@ -0,0 +1,10 @@ +TARGET_NAME = nic_router +INCLUDES += -I. +include_rules + +: foreach *.cc |> !cxx |> %B.o {obj} +: foreach ../../lib/net/*.cc |> !cxx |> %B.o {obj} + +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nit_fb/Tupfile b/repos/os/src/server/nit_fb/Tupfile new file mode 100644 index 000000000..e4d9cbd50 --- /dev/null +++ b/repos/os/src/server/nit_fb/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = nit_fb + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/nitpicker/Tupfile b/repos/os/src/server/nitpicker/Tupfile new file mode 100644 index 000000000..84b59016b --- /dev/null +++ b/repos/os/src/server/nitpicker/Tupfile @@ -0,0 +1,11 @@ +TARGET_NAME = nitpicker + +include_rules + +BLIT_LIB = $(REP_DIR)/src/lib/blit/blit.lib.a + +: foreach *.cc |> !cxx |> %B.o {obj} +: default.tff |> !incbin |> {obj} +: {obj} $(BLIT_LIB) |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/ram_block/Tupfile b/repos/os/src/server/ram_block/Tupfile new file mode 100644 index 000000000..f5dddc479 --- /dev/null +++ b/repos/os/src/server/ram_block/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = ram_block + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/ram_fs/Tupfile b/repos/os/src/server/ram_fs/Tupfile new file mode 100644 index 000000000..1689054c7 --- /dev/null +++ b/repos/os/src/server/ram_fs/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = ram_fs + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/report_rom/Tupfile b/repos/os/src/server/report_rom/Tupfile new file mode 100644 index 000000000..233ba11e2 --- /dev/null +++ b/repos/os/src/server/report_rom/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = report_rom + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/rom_block/Tupfile b/repos/os/src/server/rom_block/Tupfile new file mode 100644 index 000000000..2e28fc3df --- /dev/null +++ b/repos/os/src/server/rom_block/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = rom_block + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/rom_filter/Tupfile b/repos/os/src/server/rom_filter/Tupfile new file mode 100644 index 000000000..c23e1c61f --- /dev/null +++ b/repos/os/src/server/rom_filter/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = rom_filter + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/terminal_crosslink/Tupfile b/repos/os/src/server/terminal_crosslink/Tupfile new file mode 100644 index 000000000..771f939aa --- /dev/null +++ b/repos/os/src/server/terminal_crosslink/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = terminal_crosslink + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/terminal_log/Tupfile b/repos/os/src/server/terminal_log/Tupfile new file mode 100644 index 000000000..d4af3ed2e --- /dev/null +++ b/repos/os/src/server/terminal_log/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = terminal_log + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/server/tz_vmm/spec/imx53/target.inc b/repos/os/src/server/tz_vmm/spec/imx53/target.inc index 1de0277a7..246b8a9af 100644 --- a/repos/os/src/server/tz_vmm/spec/imx53/target.inc +++ b/repos/os/src/server/tz_vmm/spec/imx53/target.inc @@ -1,5 +1,5 @@ REQUIRES = hw arm_v7 -LIBS += base +LIBS += genode-os SRC_CC += serial_driver.cc block_driver.cc vm_base.cc spec/imx53/main.cc INC_DIR += $(REP_DIR)/src/server/tz_vmm/spec/imx53 INC_DIR += $(REP_DIR)/src/server/tz_vmm/include diff --git a/repos/os/src/test/audio_out/Tupfile b/repos/os/src/test/audio_out/Tupfile new file mode 100644 index 000000000..a1d2465ce --- /dev/null +++ b/repos/os/src/test/audio_out/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = test-audio_out + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> test-audio_out {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/test/audio_out_click/Tupfile b/repos/os/src/test/audio_out_click/Tupfile new file mode 100644 index 000000000..de562f276 --- /dev/null +++ b/repos/os/src/test/audio_out_click/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = test-audio_out_click + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> test-%d {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/test/block/Tupfile b/repos/os/src/test/block/Tupfile new file mode 100644 index 000000000..c63d88bac --- /dev/null +++ b/repos/os/src/test/block/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = test-block + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> test-%d {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/repos/os/src/test/bomb/Tupfile b/repos/os/src/test/bomb/Tupfile new file mode 100644 index 000000000..69e3d37e3 --- /dev/null +++ b/repos/os/src/test/bomb/Tupfile @@ -0,0 +1,7 @@ +TARGET_NAME = test-bomb + +include_rules +: foreach *.cc |> !cxx |> %B.o {obj} +: {obj} |> !prg |> test-%d {bin} +: {bin} |> !collect_bin |> +include &(BIN_RULES) diff --git a/shell.nix b/shell.nix new file mode 100644 index 000000000..8392fe173 --- /dev/null +++ b/shell.nix @@ -0,0 +1 @@ +{ pkgs ? import { } }: pkgs.upstream