genode/repos/base-linux/src/lib/ld/Tupfile

56 lines
1.4 KiB
Plaintext

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)
: 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 += $(REP_DIR)/src/lib/base/base-linux.lib.a
: $(BASE_LIBS) {obj} | \
symbol.map \
$(DEV_DIR)/<lib> \
$(DEV_DIR)/<pkg-config> \
$(BASE_DIR)/<alarm> \
$(REP_DIR)/<base-common> \
$(BASE_DIR)/<cxx> \
$(BASE_DIR)/<ldso-startup> \
$(REP_DIR)/<startup> \
$(REP_DIR)/<syscall> \
$(BASE_DIR)/<timeout> \
|> \
$(LD) -o %o $(LD_MARCH) $(LDFLAGS) --whole-archive --start-group \
%<alarm> %<base-common> %<cxx> %<ldso-startup> %<startup> %<syscall> %<timeout> \
%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)/<ld> {bin}
: {bin} |> !collect_bin |>