diff --git a/Tuprules.llvm b/Tuprules.llvm index 449b185b3..eaabd2a03 100644 --- a/Tuprules.llvm +++ b/Tuprules.llvm @@ -34,7 +34,7 @@ LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` !ld = | $(DEV_DIR)/ $(DEV_DIR)/ |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` --whole-archive --start-group %f --no-whole-archive --end-group -o %o |> !incbin = |> ^ incbin %f^ \ - export SYM=_binary_`echo %f | sed 's/\./_/g'`; \ + export SYM=_binary_`echo %b | 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 diff --git a/repos/Tuprules.tup b/repos/Tuprules.tup index f86601bd1..3f48a0031 100644 --- a/repos/Tuprules.tup +++ b/repos/Tuprules.tup @@ -18,8 +18,13 @@ endif -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) $(CC_MARCH) -x assembler -c - -Wl,-shared -Wl,-T&(LD_SCRIPT_SO) -o %o \ + %f > stub.s; \ + $(CC) $(CC_MARCH) -x assembler -c stub.s; \ + $(LD) -o %o \ + -shared \ + -T &(LD_SCRIPT_SO) \ + stub.o; \ + rm -v stub.o stub.s; \ |> $(DEV_LIB_DIR)/%B.lib.so $(DEV_DIR)/ BASE_DIR = $(GENODE_DIR)/repos/base diff --git a/repos/base-linux/src/core/Tupfile b/repos/base-linux/src/core/Tupfile index 747696e84..b831c3ca5 100644 --- a/repos/base-linux/src/core/Tupfile +++ b/repos/base-linux/src/core/Tupfile @@ -41,7 +41,11 @@ LDFLAGS += -Ttext=0x01000000 LDFLAGS += -T$(BASE_DIR)/src/ld/genode.ld LDFLAGS += -T$(REP_DIR)/src/ld/stack_area.ld +ifdef IS_LLVM +PKG_LIBS = -L$(DEV_DIR)/lib `$(PKG_CONFIG) --libs cxx-baremetal` +else PKG_LIBS = -L$(DEV_DIR)/lib `$(PKG_CONFIG) --libs cxx` +endif : {obj} | \ $(DEV_DIR)/ \ diff --git a/repos/base/src/lib/cxx/Tupfile b/repos/base/src/lib/cxx/Tupfile index f622ebee4..ebda6fca6 100644 --- a/repos/base/src/lib/cxx/Tupfile +++ b/repos/base/src/lib/cxx/Tupfile @@ -104,8 +104,8 @@ ifdef IS_LLVM : supc++.tmp |> @(OBJCOPY) $(LOCAL_SYMBOLS) $(REDEF_SYMBOLS) %f %o |> supc++.o : supc++-baremetal.tmp |> @(OBJCOPY) $(LOCAL_SYMBOLS) $(REDEF_SYMBOLS) %f %o |> supc++-baremetal.o -: supc++.o |> !ar |> cxx.a {bin} -: supc++-baremetal.o |> !ar |> cxx-baremetal.a {bin} +: supc++.o unwind.o |> !ar |> cxx.a {bin} +: supc++-baremetal.o unwind.o |> !ar |> cxx-baremetal.a {bin} : foreach {bin} |> !collect_static |> : |> !emit_lib_pkg_config |> diff --git a/repos/gems/src/server/terminal/Tupfile b/repos/gems/src/server/terminal/Tupfile deleted file mode 100644 index d7bba8afe..000000000 --- a/repos/gems/src/server/terminal/Tupfile +++ /dev/null @@ -1,5 +0,0 @@ -include_rules -LIBS += vfs -: foreach *.cc |> !cxx |> {obj} -: {obj} |> !prg |> {bin} -: {bin} |> !collect_bin |>