2019-03-02 15:23:50 +01:00
|
|
|
include_rules
|
|
|
|
|
|
|
|
LDSO_DIR = $(BASE_DIR)/src/lib/ldso
|
|
|
|
|
|
|
|
ifeq (@(TUP_ARCH),x86_64)
|
|
|
|
LDSO_SPEC_DIR = $(LDSO_DIR)/spec/x86_64
|
|
|
|
endif
|
|
|
|
|
2019-10-06 14:27:28 +02:00
|
|
|
CPPFLAGS += -I$(LDSO_SPEC_DIR)
|
|
|
|
CPPFLAGS += -I$(LDSO_DIR)/include
|
2019-03-02 15:23:50 +01:00
|
|
|
|
|
|
|
: 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 += -T$(LDSO_DIR)/linker.ld
|
2019-10-28 10:01:10 +01:00
|
|
|
LDFLAGS += --entry=_start
|
2019-03-02 15:23:50 +01:00
|
|
|
endif
|
|
|
|
|
2019-10-28 10:01:10 +01:00
|
|
|
LDFLAGS += -z max-page-size=0x1000
|
|
|
|
LDFLAGS += -T$(BASE_DIR)/src/ld/genode_rel.ld
|
2019-03-02 15:23:50 +01:00
|
|
|
|
2019-10-28 10:01:10 +01:00
|
|
|
BASE_LIBS += $(REP_DIR)/src/lib/base/base-nova.lib.a
|
2019-09-21 15:13:27 +02:00
|
|
|
|
2019-10-28 10:01:10 +01:00
|
|
|
BASE_PKGS += alarm cxx-baremetal ldso-startup timeout
|
2019-09-21 15:13:27 +02:00
|
|
|
|
2019-10-28 10:01:10 +01:00
|
|
|
LDFLAGS += `$(PKG_CONFIG) --static --libs $(BASE_PKGS)` -L $(LIB_DIR)
|
2019-03-02 15:23:50 +01:00
|
|
|
|
2019-10-28 11:29:38 +01:00
|
|
|
: $(BASE_LIBS) {obj} | symbol.map $(REP_DIR)/<startup> $(REP_DIR)/<base-common> $(GENODE_DIR)/<pkg-config> $(DEV_DIR)/<lib> \
|
2019-03-02 15:23:50 +01:00
|
|
|
|> \
|
|
|
|
$(LD) -o %o \
|
|
|
|
$(LD_MARCH) $(LDFLAGS) \
|
|
|
|
--whole-archive --start-group \
|
2019-10-28 10:01:10 +01:00
|
|
|
%<base-common> \
|
|
|
|
%<startup> \
|
|
|
|
%f \
|
2019-03-02 15:23:50 +01:00
|
|
|
--end-group --no-whole-archive \
|
|
|
|
$(LIBGCC) \
|
2019-10-28 10:01:10 +01:00
|
|
|
|> ld-nova.lib.so $(REP_DIR)/<ld> {bin}
|
2019-03-02 15:23:50 +01:00
|
|
|
|
|
|
|
: {bin} |> !collect_bin |>
|