mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-30 10:38:55 +00:00
4c017900c8
Until now, the rumpkernel based tools were installed with all symbols included. This accounts for about 200MiB used space on 64Bit system. Stripping the binaries prior to installation brings the space requirements down to 20MiB. Fixes #1245.
137 lines
4.1 KiB
Makefile
Executable File
137 lines
4.1 KiB
Makefile
Executable File
#!/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
|
|
|
|
.NOTPARALLEL: 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
|
|
|
|
copy: $(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
|
|
|
|
#
|
|
# Since at least the libraries are installed with 444 permission by the
|
|
# NetBSD build framework and it requires some effort we strip the binaries
|
|
# manually by calling strip(1) with root permission prior to copying the
|
|
# binaries.
|
|
#
|
|
|
|
strip-binaries: $(CONTRIB_DIR) $(BUILD_DIR)/bin/rump_server
|
|
$(ECHO) "$(BRIGHT_COL)stripping binaries prior to installation...$(DEFAULT_COL)"
|
|
$(VERBOSE)sudo find $(BUILD_DIR)/bin -type f \
|
|
-exec strip --strip-all {} \; > /dev/null 2>&1
|
|
$(VERBOSE)sudo find $(BUILD_DIR)/lib -type f \
|
|
-exec strip --strip-all {} \; > /dev/null 2>&1
|
|
|
|
install: strip-binaries copy
|
|
|
|
#
|
|
# Clean rules
|
|
#
|
|
|
|
clean:
|
|
$(VERBOSE)rm -rf $(BUILD_DIR)
|
|
$(VERBOSE)cd $(CONTRIB_DIR) > /dev/null 2>&1 && \
|
|
rm .compile.tag > /dev/null 2>&1 && \
|
|
make cleanrump > /dev/null 2>&1 || true
|
|
|
|
cleanall: clean
|
|
$(VERBOSE)rm -rf $(CONTRIB_DIR)
|
|
|