Tup: fix base-nova build
This commit is contained in:
parent
4235b5ab9b
commit
955e95272c
|
@ -1,17 +1,6 @@
|
|||
include_rules
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
CPPFLAGS += -I$(BASE_DIR)/src/lib/ldso/spec/x86_64
|
||||
endif
|
||||
|
||||
LDSO_DIR = $(BASE_DIR)/src/lib/ldso
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(LDSO_SPEC_DIR)
|
||||
CPPFLAGS = -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
include $(BASE_DIR)/src/lib/ldso/Tuprules.tup
|
||||
|
||||
: foreach $(LDSO_DIR)/*.cc |> !cxx |> {obj}
|
||||
: foreach $(LDSO_SPEC_DIR)/*.s |> !asm |> {obj}
|
||||
|
|
|
@ -45,14 +45,15 @@ CXXFLAGS_$(GEN_CORE_DIR)/version.cc += -DGENODE_VERSION=\"`git describe`\"
|
|||
|
||||
: foreach $(SRC_CC) |> !cxx |> {obj}
|
||||
|
||||
PKG_LIBS = -L$(DEV_DIR)/lib `$(PKG_CONFIG) --libs cxx`
|
||||
|
||||
: {obj} | \
|
||||
$(DEV_DIR)/<lib> \
|
||||
$(DEV_DIR)/<pkg-config> \
|
||||
$(BASE_DIR)/<base-libs> \
|
||||
$(REP_DIR)/<base-common> \
|
||||
$(BASE_DIR)/<cxx> \
|
||||
$(REP_DIR)/<startup> \
|
||||
|> $(LD) $(LDFLAGS) -u _start -r \
|
||||
--whole-archive --start-group %f %<base-libs> %<base-common> %<cxx> %<startup> --no-whole-archive --end-group -o %o \
|
||||
--whole-archive --start-group %f %<base-libs> %<base-common> %<startup> $(PKG_LIBS) --no-whole-archive --end-group -o %o \
|
||||
|> core.o $(REP_DIR)/<core> {core}
|
||||
: {core} |> cp %f %o |> $(OUT_DIR)/lib/core-nova.o
|
||||
|
|
|
@ -33,5 +33,6 @@ GENERIC_SRC_CC += \
|
|||
$(GENERIC_DIR)/trace.cc \
|
||||
$(GENERIC_DIR)/vm_session.cc \
|
||||
|
||||
: foreach $(GENERIC_SRC_CC) |> !cxx |> %B.base.o $(REP_DIR)/<base-common> {obj}
|
||||
: foreach *.cc |> !cxx |> %B.nova.o $(REP_DIR)/<base-common> {obj}
|
||||
: foreach $(GENERIC_SRC_CC) |> !cxx |> %B.o {obj}
|
||||
: foreach *.cc |> !cxx |> {obj}
|
||||
: {obj} |> !ar |> base-nova-common.lib.a | $(REP_DIR)/<base-common>
|
||||
|
|
|
@ -16,4 +16,4 @@ SRC_CC += \
|
|||
|
||||
: foreach $(SRC_CC) |> !cxx |> {base-obj}
|
||||
|
||||
: {base-obj} |> !ar |> base-nova.lib.a
|
||||
: {base-obj} |> !ar |> base-nova.lib.a | $(REP_DIR)/<base-nova>
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
include_rules
|
||||
|
||||
LDSO_DIR = $(BASE_DIR)/src/lib/ldso
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(LDSO_SPEC_DIR)
|
||||
CPPFLAGS += -I$(LDSO_DIR)/include
|
||||
include $(BASE_DIR)/src/lib/ldso/Tuprules.tup
|
||||
|
||||
: foreach $(LDSO_DIR)/*.cc |> !cxx |> {obj}
|
||||
: foreach $(LDSO_SPEC_DIR)/*.s |> !asm |> {obj}
|
||||
|
@ -23,7 +16,7 @@ LDFLAGS += -shared --eh-frame-hdr
|
|||
|
||||
LDFLAGS += -Bsymbolic-functions --version-script=symbol.map
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_32)
|
||||
ifeq (@(TUP_ARCH),i386)
|
||||
LDFLAGS += -T$(LDSO_DIR)/linux-32.ld
|
||||
else
|
||||
LDFLAGS += -T$(LDSO_DIR)/linker.ld
|
||||
|
@ -33,25 +26,16 @@ endif
|
|||
LDFLAGS += -z max-page-size=0x1000
|
||||
LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld
|
||||
|
||||
BASE_LIBS += $(REP_DIR)/src/lib/base/base-nova.lib.a
|
||||
|
||||
LDFLAGS += -L$(DEV_LIB_DIR) `$(PKG_CONFIG) --static --libs $(BASE_PKGS)`
|
||||
LDFLAGS += -L$(DEV_DIR)/lib
|
||||
|
||||
: {obj} | \
|
||||
$(DEV_DIR)/<lib> \
|
||||
$(DEV_DIR)/<pkg-config> \
|
||||
$(REP_DIR)/<base-common> \
|
||||
$(REP_DIR)/<base-nova> \
|
||||
$(REP_DIR)/<startup> \
|
||||
symbol.map \
|
||||
|> \
|
||||
$(LD) -o %o \
|
||||
$(LD_MARCH) $(LDFLAGS) \
|
||||
--whole-archive --start-group \
|
||||
%<base-common> \
|
||||
%<startup> \
|
||||
%f \
|
||||
--end-group --no-whole-archive \
|
||||
$(LIBGCC) \
|
||||
|> $(LD) -o %o $(LD_MARCH) $(LDFLAGS) --whole-archive --start-group -l:alarm.a %<base-common> %<base-nova> -l:cxx.a %<startup> -l:timeout.a %f --end-group --no-whole-archive $(LIBGCC) \
|
||||
|> ld-nova.lib.so $(REP_DIR)/<ld> {bin}
|
||||
|
||||
: {bin} |> !collect_bin |>
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
LDSO_DIR = $(BASE_DIR)/src/lib/ldso
|
||||
|
||||
ifeq (@(TUP_ARCH),i386)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
|
||||
CPPFLAGS = -I$(LDSO_SPEC_DIR) -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
|
||||
CPPFLAGS = -I$(LDSO_SPEC_DIR) -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),arm)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/arm
|
||||
CPPFLAGS = -I$(LDSO_SPEC_DIR) -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),arm64)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/arm_64
|
||||
CPPFLAGS = -I$(LDSO_SPEC_DIR) -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),riscv)
|
||||
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/riscv
|
||||
CPPFLAGS = -I$(LDSO_SPEC_DIR) -I$(LDSO_DIR)/include $(CPPFLAGS)
|
||||
endif
|
|
@ -19,6 +19,7 @@
|
|||
#include <util/string.h>
|
||||
#include <base/thread.h>
|
||||
#include <base/heap.h>
|
||||
#include <base/sleep.h>
|
||||
|
||||
/* base-internal includes */
|
||||
#include <base/internal/unmanaged_singleton.h>
|
||||
|
@ -775,3 +776,11 @@ void Component::construct(Genode::Env &env)
|
|||
/* start binary */
|
||||
binary_ptr->call_entry_point(env);
|
||||
}
|
||||
|
||||
|
||||
extern "C" int main(int, char **, char **)
|
||||
{
|
||||
Genode::error("LD: dummy \"main\" procedure invoked!");
|
||||
Genode::sleep_forever();
|
||||
return ~0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue