genode/ports-okl4/Makefile

84 lines
2.6 KiB
Makefile

#
# \brief Download, unpack and patch OKLinux source code
# \author Stefan Kalkowski
# \date 2010-01-06
DOWNLOAD_DIR = download
CONTRIB_DIR = contrib
PATCH_FILE = patches/oklx_genode.patch
PATCH_UNIONFS = patches/unionfs.patch
VERBOSE ?= @
ECHO = @echo
OKLX_URL = http://wiki.ok-labs.com/downloads/release-2.1.1-patch.9
OKLX_VERSION = oklinux_2.6.23.24
OKLX_ARCHIVE = $(OKLX_VERSION).tar.gz
OKLX_CONTRIB = kernel-2.6.23-v2
#
# Utility to check if a tool is installed
#
check_tool = $(if $(shell which $(1)),,$(error Need to have '$(1)' installed.))
$(call check_tool,wget)
$(call check_tool,patch)
$(call check_tool,sed)
#
# Print help information by default
#
help:
$(ECHO)
$(ECHO) "Prepare the OKLinux repository"
$(ECHO)
$(ECHO) "--- available commands ---"
$(ECHO) "prepare - download and extract the OKLinux source code"
$(ECHO) "clean - clean everything except downloaded archives"
$(ECHO) "cleanall - clean everything including downloaded archives"
$(ECHO) "update-patch - updates patch to the original OKLinux code"
$(ECHO)
prepare: $(CONTRIB_DIR) message
$(CONTRIB_DIR): $(DOWNLOAD_DIR)/$(OKLX_ARCHIVE)
$(ECHO) "unpacking source code to '$(CONTRIB_DIR)/'"
$(VERBOSE)tar xzf $<
$(VERBOSE)mv $(OKLX_VERSION)/$(OKLX_CONTRIB) $@
$(VERBOSE)rm -rf $(OKLX_VERSION)
$(ECHO) "applying patches to '$(CONTRIB_DIR)/'"
$(VERBOSE)patch -p0 < $(PATCH_FILE)
$(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -p1 < ../$(PATCH_UNIONFS)
$(DOWNLOAD_DIR)/$(OKLX_ARCHIVE):
$(ECHO) "downloading source code to '$(DOWNLOAD_DIR)/'"
$(VERBOSE)mkdir -p $(DOWNLOAD_DIR)
$(VERBOSE)wget -c $(OKLX_URL)/$(OKLX_ARCHIVE) -O $@
message:
$(ECHO)
$(ECHO) "Preparation completed!"
$(ECHO) "Now, go to your Genode build directory and type 'make oklinux'."
$(ECHO) "Hint: don't forget to put '$(shell pwd)' "
$(ECHO) " as a repository into your build.conf"
$(ECHO)
update-patch:
$(ECHO) "producing a new diff and save it to '$(PATCH_FILE)'"
$(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -R -p1 < ../$(PATCH_UNIONFS)
$(VERBOSE)tar xzf $(DOWNLOAD_DIR)/$(OKLX_ARCHIVE)
$(VERBOSE)mv $(OKLX_VERSION)/$(OKLX_CONTRIB) .
$(VERBOSE)find $(CONTRIB_DIR) -name "*~" -delete
$(VERBOSE)LC_COLLATE=C diff -urNpB $(OKLX_CONTRIB) $(CONTRIB_DIR) \
| sed "s/\(^--- [^\t]*\).*/\\1/" \
| sed "s/\(^+++ [^\t]*\).*/\\1/" \
> $(PATCH_FILE) || true
$(VERBOSE)rm -rf $(OKLX_CONTRIB) $(OKLX_VERSION)
$(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -p1 < ../$(PATCH_UNIONFS)
clean:
$(VERBOSE)rm -rf $(CONTRIB_DIR)
cleanall: clean
$(VERBOSE)rm -rf $(DOWNLOAD_DIR)