From a9e95e24feeb2d1ac82a3f4c76012551449cbbaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 9 May 2014 14:22:45 +0200 Subject: [PATCH] tool: makefile for building rumpkernel tools The rumpkernel tools are used within the Genode OS Framework tool chain for preparing and populating disk images as well as creating cgd(4) based cryptographic disk devices. Execute 'tool/tool_chain_rump build' to build the tools and afterwards 'tool/tool_chain_rump install' to install the binaries. The default install location is _/usr/local/genode-rump_. --- tool/tool_chain_rump | 116 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100755 tool/tool_chain_rump diff --git a/tool/tool_chain_rump b/tool/tool_chain_rump new file mode 100755 index 000000000..f742383ee --- /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) +