Emery Hemingway
1dc25293b8
The startup library might fail at runtime if local headers are included rather than headers from somewhere else.
55 lines
1.3 KiB
Plaintext
55 lines
1.3 KiB
Plaintext
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
|
|
|
|
: 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
|
|
LDFLAGS += --entry=_start
|
|
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
|
|
|
|
BASE_PKGS += alarm cxx-baremetal ldso-startup timeout
|
|
|
|
LDFLAGS += `$(PKG_CONFIG) --static --libs $(BASE_PKGS)` -L $(LIB_DIR)
|
|
|
|
: $(BASE_LIBS) {obj} | symbol.map $(REP_DIR)/<startup> $(REP_DIR)/<base-common> $(GENODE_DIR)/<pkg-config> $(DEV_DIR)/<lib> \
|
|
|> \
|
|
$(LD) -o %o \
|
|
$(LD_MARCH) $(LDFLAGS) \
|
|
--whole-archive --start-group \
|
|
%<base-common> \
|
|
%<startup> \
|
|
%f \
|
|
--end-group --no-whole-archive \
|
|
$(LIBGCC) \
|
|
|> ld-nova.lib.so $(REP_DIR)/<ld> {bin}
|
|
|
|
: {bin} |> !collect_bin |>
|