diff --git a/tool/tool_chain_rump b/tool/tool_chain_rump new file mode 100755 index 0000000000..f742383eee --- /dev/null +++ b/tool/tool_chain_rump @@ -0,0 +1,116 @@ +#!/usr/bin/make -f +# +# \brief Build rumpkernel based tools for use within the Genode OS Framework +# tool chain +# \author Josef Soentgen +# \date 2014-04-24 + +help: + $(ECHO) + $(ECHO) "Build rump tools for the Genode OS Framework tool chain" + $(ECHO) + $(ECHO) "--- available commands ---" + $(ECHO) "build - build rump tools" + $(ECHO) "clean - clean everything except contrib sources" + $(ECHO) "cleanall - clean everything including contrib sources" + $(ECHO) "install - copy rump tools to '$(INSTALL_LOCATION)'" + $(ECHO) + +.PHONY: build help install + +# +# Rump tool list +# + +TOOLS = cat cgdconfig cp dd df disklabel fsck_ext2fs fsck_ffs \ + fsck_msdos halt ln ls mkdir mount_ext2fs mount_ffs mv \ + newfs newfs_ext2fs newfs_msdos rm rump_server umount \ + vnconfig + +# +# Source and install location +# + +RUMPRUN_URL = https://github.com/cnuke/rumprun.git +INSTALL_LOCATION = /usr/local/genode-rump +CONTRIB_DIR = contrib/rumprun +BUILD_DIR = build/rumprun +TOOLS_LIST = $(addprefix $(BUILD_DIR)/bin/, $(TOOLS)) + +# +# Utilities +# + +SHELL = bash +BRIGHT_COL = \033[01;33m +DEFAULT_COL = \033[0m +ECHO = @echo -e +VERBOSE = @ + +# +# Target rules +# + +$(BUILD_DIR): + $(VERBOSE)mkdir -p $@ + +$(CONTRIB_DIR): + $(VERBOSE)mkdir -p $@ + +$(CONTRIB_DIR)/.checkout_sources.tag: + $(ECHO) "$(BRIGHT_COL)downloading rump sources...$(DEFAULT_COL)" + $(VERBOSE)git clone $(RUMPRUN_URL) $(CONTRIB_DIR) && \ + cd $(CONTRIB_DIR) && git submodule update --init --recursive && \ + ./buildrump.sh/buildrump.sh -s rumpsrc checkout + @touch $@ + +$(CONTRIB_DIR)/.patch_sources.tag: $(CONTRIB_DIR)/.checkout_sources.tag + $(ECHO) "$(BRIGHT_COL)patching rump sources...$(DEFAULT_COL)" + $(VERBOSE)cd $(CONTRIB_DIR) && \ + patch -N -d nbusersrc -p1 < updatesrc.sh.patch && \ + patch -N -d buildrump.sh -p1 < buildrump.sh.patch && \ + patch -N -d rumpsrc/usr.bin/rump_allserver -p0 < rump_allserver.c.patch + @touch $@ + +$(CONTRIB_DIR)/.prepare_sources.tag: $(CONTRIB_DIR)/.patch_sources.tag + $(ECHO) "$(BRIGHT_COL)preparing rump sources...$(DEFAULT_COL)" + $(VERBOSE)cd $(CONTRIB_DIR)/nbusersrc && \ + sh updatesrc.sh && cd .. && mv nbusersrc nbusersrc_old && \ + mv nbusersrc_old/newsrc nbusersrc && \ + cp -Rp nbusersrc/* rumpsrc/ + @touch $@ + +$(CONTRIB_DIR)/.compile.tag: $(CONTRIB_DIR)/.prepare_sources.tag + $(ECHO) "$(BRIGHT_COL)building rump tools...$(DEFAULT_COL)" + $(VERBOSE)cd $(CONTRIB_DIR) && \ + ./buildnb.sh && \ + make + @touch $@ + +$(BUILD_DIR)/bin/rump_server: $(CONTRIB_DIR)/.compile.tag $(BUILD_DIR) + $(ECHO) "$(BRIGHT_COL)finished building rump tools.$(DEFAULT_COL)" + $(VERBOSE)cp -a $(CONTRIB_DIR)/rumpdyn/* $(BUILD_DIR) && \ + cp -a $(CONTRIB_DIR)/bin $(BUILD_DIR) + @touch $@ + +build: $(CONTRIB_DIR) $(BUILD_DIR)/bin/rump_server + +install: $(CONTRIB_DIR) $(BUILD_DIR)/bin/rump_server + $(ECHO) "$(BRIGHT_COL)installing rump tools to '$(INSTALL_LOCATION)'...$(DEFAULT_COL)" + $(VERBOSE)sudo mkdir -p $(INSTALL_LOCATION)/bin >/dev/null 2>&1 || true + $(VERBOSE)sudo mkdir -p $(INSTALL_LOCATION)/share/man >/dev/null 2>&1 || true + $(VERBOSE)sudo cp -a $(TOOLS_LIST) $(INSTALL_LOCATION)/bin + $(VERBOSE)sudo cp -a $(BUILD_DIR)/lib/ $(INSTALL_LOCATION) + $(VERBOSE)sudo cp -a $(BUILD_DIR)/share/man/man* $(INSTALL_LOCATION)/share/man + +# +# Clean rules +# + +clean: + $(VERBOSE)rm -rf $(BUILD_DIR) + $(VERBOSE)cd $(CONTRIB_DIR) && make cleanrump + +cleanall: clean + $(VERBOSE)rm -rf $(CONTRIB_DIR) +