Move startup library to a Tup group

This commit is contained in:
Ehmry - 2019-10-28 10:01:10 +01:00
parent fa0c527732
commit 3bf1cc09eb
5 changed files with 23 additions and 26 deletions

View File

@ -42,14 +42,15 @@ LDFLAGS += \
-T$(BASE_DIR)/src/ld/genode.ld \ -T$(BASE_DIR)/src/ld/genode.ld \
-T$(REP_DIR)/src/ld/stack_area.ld \ -T$(REP_DIR)/src/ld/stack_area.ld \
LDFLAGS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx-baremetal startup` LDFLAGS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx-baremetal`
: {obj} | \ : {obj} | \
$(DEV_DIR)/<lib> \ $(DEV_DIR)/<lib> \
$(GENODE_DIR)/<pkg-config> \ $(GENODE_DIR)/<pkg-config> \
$(BASE_DIR)/<startup> \
$(REP_DIR)/<base-common> \ $(REP_DIR)/<base-common> \
$(REP_DIR)/<syscall> \ $(REP_DIR)/<syscall> \
|> !ld %<base-common> %<syscall> \ |> !ld %<base-common> %<startup> %<syscall> \
|> core-linux $(REP_DIR)/<core> {bin} |> core-linux $(REP_DIR)/<core> {bin}
: {bin} |> !collect_bin |> : {bin} |> !collect_bin |>

View File

@ -45,14 +45,15 @@ CXXFLAGS_$(GEN_CORE_DIR)/version.cc += -DGENODE_VERSION=\"`git describe`\"
: foreach $(SRC_CC) |> !cxx |> {obj} : foreach $(SRC_CC) |> !cxx |> {obj}
LDFLAGS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx-baremetal startup` LDFLAGS += -L$(LIB_DIR) `$(PKG_CONFIG) --libs cxx-baremetal`
: {obj} | \ : {obj} | \
$(DEV_DIR)/<lib> \ $(DEV_DIR)/<lib> \
$(GENODE_DIR)/<pkg-config> \ $(GENODE_DIR)/<pkg-config> \
$(BASE_DIR)/<base-libs> \ $(BASE_DIR)/<base-libs> \
$(BASE_DIR)/<startup> \
$(REP_DIR)/<base-common> \ $(REP_DIR)/<base-common> \
|> $(LD) $(LDFLAGS) -u _start -r \ |> $(LD) $(LDFLAGS) -u _start -r \
%<base-libs> %<base-common> %f -o %o \ %<base-libs> %<base-common> %<startup> %f -o %o \
|> core.o $(REP_DIR)/<core> {core} |> core.o $(REP_DIR)/<core> {core}
: {core} |> cp %f %o |> $(DEV_DIR)/lib/core-nova.o : {core} |> cp %f %o |> $(DEV_DIR)/lib/core-nova.o

View File

@ -33,6 +33,5 @@ GENERIC_SRC_CC += \
$(GENERIC_DIR)/trace.cc \ $(GENERIC_DIR)/trace.cc \
$(GENERIC_DIR)/vm_session.cc \ $(GENERIC_DIR)/vm_session.cc \
: foreach $(GENERIC_SRC_CC) |> !cxx |> %B.base.o {obj} : foreach $(GENERIC_SRC_CC) |> !cxx |> %B.base.o $(REP_DIR)/<base-common> {obj}
: foreach *.cc |> !cxx |> %B.nova.o {obj} : foreach *.cc |> !cxx |> %B.nova.o $(REP_DIR)/<base-common> {obj}
: {obj} |> !ar |> | $(REP_DIR)/<base-common>

View File

@ -1,5 +1,4 @@
include_rules include_rules
CPPFLAGS += -I$(BASE_DIR)/src/include
LDSO_DIR = $(BASE_DIR)/src/lib/ldso LDSO_DIR = $(BASE_DIR)/src/lib/ldso
@ -27,28 +26,29 @@ LDFLAGS += -Bsymbolic-functions --version-script=symbol.map
ifeq (@(TUP_ARCH),x86_32) ifeq (@(TUP_ARCH),x86_32)
LDFLAGS += -T$(LDSO_DIR)/linux-32.ld LDFLAGS += -T$(LDSO_DIR)/linux-32.ld
else else
LDFLAGS += --entry=_start
LDFLAGS += -T$(LDSO_DIR)/linker.ld LDFLAGS += -T$(LDSO_DIR)/linker.ld
LDFLAGS += --entry=_start
endif endif
LDFLAGS += -gc-sections -z max-page-size=0x1000 LDFLAGS += -z max-page-size=0x1000
LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld \ LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld
BASE_LIBS += \ BASE_LIBS += $(REP_DIR)/src/lib/base/base-nova.lib.a
$(REP_DIR)/src/lib/base/base-nova.lib.a \
BASE_PKGS += alarm cxx ldso-startup startup timeout BASE_PKGS += alarm cxx-baremetal ldso-startup timeout
LDFLAGS += `pkg-config --static --libs $(BASE_PKGS)` LDFLAGS += `$(PKG_CONFIG) --static --libs $(BASE_PKGS)` -L $(LIB_DIR)
: $(BASE_LIBS) {obj} | symbol.map $(REP_DIR)/<base-common> \ : $(BASE_LIBS) {obj} | symbol.map $(BASE_DIR)/<startup> $(REP_DIR)/<base-common> $(GENODE_DIR)/<pkg-config> $(DEV_DIR)/<lib> \
|> \ |> \
$(LD) -o %o \ $(LD) -o %o \
$(LD_MARCH) $(LDFLAGS) \ $(LD_MARCH) $(LDFLAGS) \
--whole-archive --start-group \ --whole-archive --start-group \
%<base-common> %f \ %<base-common> \
%<startup> \
%f \
--end-group --no-whole-archive \ --end-group --no-whole-archive \
$(LIBGCC) \ $(LIBGCC) \
|> ld.lib.so $(REP_DIR)/<ld> {bin} |> ld-nova.lib.so $(REP_DIR)/<ld> {bin}
: {bin} |> !collect_bin |> : {bin} |> !collect_bin |>

View File

@ -1,17 +1,13 @@
include_rules include_rules
: foreach *.cc |> !cxx |> {obj} : foreach *.cc |> !cxx |> | $(BASE_DIR)/<startup> {obj}
ifeq (@(TUP_ARCH),i386) ifeq (@(TUP_ARCH),i386)
: foreach spec/x86_32/*.s |> !asm |> {obj} : foreach spec/x86_32/*.s |> !asm |> | $(BASE_DIR)/<startup> {obj}
endif endif
ifeq (@(TUP_ARCH),x86_64) ifeq (@(TUP_ARCH),x86_64)
: foreach spec/x86_64/*.s |> !asm |> {obj} : foreach spec/x86_64/*.s |> !asm |> | $(BASE_DIR)/<startup> {obj}
endif endif
ifeq (@(TUP_ARCH),arm64) ifeq (@(TUP_ARCH),arm64)
: foreach spec/arm_64/*.s |> !asm |> {obj} : foreach spec/arm_64/*.s |> !asm |> | $(BASE_DIR)/<startup> {obj}
endif endif
: {obj} |> !ar |> {bin}
: foreach {bin} |> !collect_static |>
: |> !emit_lib_pkg_config |>