.gitignore export DHALL_GENODE export DHALL_GENODE_TYPES export DHALL_PRELUDE export NIX_LDFLAGS export NIX_PATH export PKG_CONFIG_PATH ERRATA_DIR=$(TUP_CWD)/errata OUTPUTS_OUT=$(TUP_CWD)/out OUT_BIN_DIR = $(OUTPUTS_OUT)/bin OUT_PKG_DIR = $(OUTPUTS_OUT)/pkg OUT_RAW_DIR = $(OUTPUTS_OUT)/raw ifeq (@(TUP_ARCH),i386) CC_MARCH = -march=i686 -m32 LD_MARCH = -melf_i386 AS_MARCH = -march=i686 --32 endif ifeq (@(TUP_ARCH),x86_64) TOOL_CHAIN_PREFIX=genode-x86- CC_MARCH = -m64 -mcmodel=large LD_MARCH = -melf_x86_64 endif ifeq (@(TUP_ARCH),arm_v8) CC_MARCH = -march=armv8-a endif GENODE_DIR = $(TUP_CWD) LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` !prg = | $(GENODE_DIR)/ $(GENODE_DIR)/ \ |> ^o LD %o^ \ $(LD) $(LD_MARCH) $(LDFLAGS) \ -L$(LIB_DIR) \ `$(PKG_CONFIG) --libs $(LIBS) genode-prg` \ %f \ $(LIBGCC) \ -o %o \ |> %d !lib = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LD_MARCH) %f $(LDFLAGS) `$(PKG_CONFIG) --libs genode-lib $(LIBS)` -L$(LIB_DIR) -o %o |> ifeq ($(RAW_NAME),) RAW_NAME = $(TARGET_NAME) endif ifeq ($(BIN_NAME),) BIN_NAME = $(TARGET_NAME) endif ifeq ($(PKG_NAME),) PKG_NAME = $(TARGET_NAME) endif ifdef DEPOT_VERSION DEPOT_VERSION = @(DEPOT_VERSION) else DEPOT_VERSION = current endif BIN_DIR = $(OUT_BIN_DIR)/$(BIN_NAME)/$(DEPOT_VERSION) PKG_DIR = $(OUT_PKG_DIR)/$(PKG_NAME)/$(DEPOT_VERSION) RAW_DIR = $(OUT_RAW_DIR)/$(RAW_NAME)/$(DEPOT_VERSION) !bin = |> |> !pkg = |> |> !raw = |> |> &RAW_RULES = errata/raw.tup # Rules for finalizing a locally defined raw package &BIN_RULES = errata/bin.tup # Rules for finalizing a locally defined binary package &PKG_RULES = errata/pkg.tup # Rules for finalizing a locally defined runtime package !collect_bin = |> ^ COLLECT %b^ \ $(TOOL_CHAIN_PREFIX)strip -o %o %f \ |> $(OUT_BIN_DIR)/$(BIN_NAME)/%b $(OUTPUTS_OUT)/ CC = $(TOOL_CHAIN_PREFIX)gcc CXX = $(TOOL_CHAIN_PREFIX)g++ LD= $(TOOL_CHAIN_PREFIX)ld AR = $(TOOL_CHAIN_PREFIX)ar AS = $(TOOL_CHAIN_PREFIX)as OBJCOPY = $(TOOL_CHAIN_PREFIX)objcopy AS_OPT += $(AS_MARCH) NIX_BUILD = nix-build --option substitute no LIBGCC = `$(CC) $(CC_MARCH) -print-libgcc-file-name` PKG_CONFIG = pkg-config !asm = |> ^ CC %b^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) -D__ASSEMBLY__ $(INCLUDES) -c %f -o %o |> %B.o !cc = | $(GENODE_DIR)/ |> ^o CC %f^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` $(INCLUDES) -c -fPIC -g %f -o %o |> %B.o !cc_port = | $(GENODE_DIR)/ |> ^o CC %o^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%o) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -c -fPIC -g -o %o |> %B.o !cxx = | $(GENODE_DIR)/ |> ^o CXX %b^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c -fPIC -g %f -o %o |> %B.o !cxx_port = | $(GENODE_DIR)/ |> ^o CXX %o^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c -fPIC -g -o %o |> %B.o !ld = | $(GENODE_DIR)/ $(GENODE_DIR)/ |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` --whole-archive --start-group %f --no-whole-archive --end-group -o %o |> !strip = |> strip -o %o %f |> !ln = |> ln -s %f %o |> ifeq (@(TUP_ARCH),i386) AS_MARCH = -march=i686 --32 endif DEPOT_MANIFEST = $(OUTPUTS_OUT)/manifest.dhall DHALL = dhall !index_pkg = | $(OUTPUTS_OUT)/ |> ^ Generate index.dhall^\ $(DHALL) <<< '{ info = (%f).indexInfo, name = "$(PKG_NAME)", version = ($(DEPOT_MANIFEST)).pkg.$(PKG_NAME).version }' > %o \ |> $(PKG_DIR)/index.dhall $(OUTPUTS_OUT)/index/ !render_runtime = | $(VERSIONS_SED_FILE) |> ^o render %d runtime^ \ $(DHALL) text <<< '$(ERRATA_DIR)/renderRuntime.dhall (%f).runtime' \ > $(OUT_PKG_DIR)/$(PKG_NAME)/current/runtime; \ xmllint --noout -schema $(ERRATA_DIR)/runtime.xsd - \ < $(OUT_PKG_DIR)/$(PKG_NAME)/current/runtime; \ echo $(PKG_DEPENDS) | tr ' ' '\n' | sed \ -e 's|_/\(.*\)/\(.*\)$|local/\1/\2/current|' \ > $(OUT_PKG_DIR)/$(PKG_NAME)/current/archives; \ sed -f $(VERSIONS_SED_FILE) $(OUT_PKG_DIR)/$(PKG_NAME)/current/archives \ > $(OUT_PKG_DIR)/$(PKG_NAME)/current/.ARCHIVES; \ |> \ $(OUT_PKG_DIR)/$(PKG_NAME)/current/runtime \ $(OUT_PKG_DIR)/$(PKG_NAME)/current/archives \ $(OUT_PKG_DIR)/$(PKG_NAME)/current/.ARCHIVES \ $(OUT_PKG_DIR)/ \