genode/base-foc/Makefile
Stefan Kalkowski 05b0927302 Fix subversion usage of 'make prepare' in base-foc
It turns out that recent subversion clients are more nitpicking with respect to
the usage of 'svn update'. Formerly it was ok to just checkout a toplevel
directory of  some repository, and then update that parts in the repo that are
needed. This is used in the preparation makefile in 'base-foc' to just checkout
a small part of the L4Re software stack. Recent clients complain about using
update with some remote target, so we've to use 'checkout' here too.
This commit fixes #84.
2012-01-17 23:17:08 +01:00

99 lines
3.1 KiB
Makefile

#
# \brief Checkout Fiasco.OC and addtional needed tools (sigma0, bootstrap)
# \author Stefan Kalkowski
# \date 2011-03-31
#
VERBOSE ?= @
ECHO = @echo
SVN_URI = http://svn.tudos.org/repos/oc/tudos/trunk
SVN_REV = 38
CONTRIB_DIR = contrib
PATCHES = $(shell find patches -name *.patch)
SVN_TARGETS = tools/preprocess \
kernel/fiasco \
l4/conf \
l4/doc \
l4/mk \
l4/tool \
l4/pkg/bootstrap \
l4/pkg/cxx \
l4/pkg/drivers-frst \
l4/pkg/l4sys \
l4/pkg/l4util \
l4/pkg/ldscripts \
l4/pkg/libsigma0 \
l4/pkg/sigma0 \
l4/pkg/uclibc-headers \
l4/pkg/uclibc-minimal \
l4/pkg/uclibc \
l4/pkg/libvcpu
#
# Print help information by default
#
help::
# realpath is there to follow symlink; if contrib dir does not exists yet,
# create new directory
REAL_CONTRIB_DIR := $(realpath $(CONTRIB_DIR))
ifeq ($(REAL_CONTRIB_DIR),)
REAL_CONTRIB_DIR := $(CONTRIB_DIR)
endif
prepare: $(REAL_CONTRIB_DIR)/.svn update_contrib_subdirs apply_patches
help::
$(ECHO)
$(ECHO) "Check out upstream source code of Fiasco.OC"
$(ECHO)
$(ECHO) "The source code will be located at the '$(CONTRIB_DIR)/' directory."
$(ECHO)
$(ECHO) "--- available commands ---"
$(ECHO) "prepare - checkout upstream source codes"
$(ECHO) "clean - remove upstream source codes"
$(ECHO)
$(CONTRIB_DIR):
$(VERBOSE)mkdir -p $@
# use '.svn' subdirectory as rule to enable the use of a symbolic link as
# contrib directory
$(REAL_CONTRIB_DIR)/.svn: $(CONTRIB_DIR)
$(VERBOSE)svn co -r $(SVN_REV) --depth immediates $(SVN_URI) $(dir $@)
$(VERBOSE)svn co -r $(SVN_REV) --depth files $(SVN_URI)/l4 $(dir $@)/l4
$(VERBOSE)svn co -r $(SVN_REV) --depth files $(SVN_URI)/l4/pkg $(dir $@)/l4/pkg
# used phony to always update the SVN on 'make prepare'
# (before updating, we need to revert our custom patches)
update_contrib_subdirs: $(addprefix $(REAL_CONTRIB_DIR)/,$(SVN_TARGETS))
$(ECHO) "updating . to revision $(SVN_REV)"
$(VERBOSE)svn revert $(REAL_CONTRIB_DIR)
$(VERBOSE)svn up -r $(SVN_REV) -N $(REAL_CONTRIB_DIR)/
$(ECHO) "updating l4 to revision $(SVN_REV)"
$(VERBOSE)svn revert $(REAL_CONTRIB_DIR)/l4
$(VERBOSE)svn up -r $(SVN_REV) -N $(REAL_CONTRIB_DIR)/l4
$(ECHO) "updating l4/pkg to revision $(SVN_REV)"
$(VERBOSE)svn revert $(REAL_CONTRIB_DIR)/l4/pkg
$(VERBOSE)svn up -r $(SVN_REV) -N $(REAL_CONTRIB_DIR)/l4/pkg
$(VERBOSE)for i in $(SVN_TARGETS); do \
echo "updating $$i to revision $(SVN_REV)"; \
svn revert -R $(REAL_CONTRIB_DIR)/$$i; \
svn up -r $(SVN_REV) $(REAL_CONTRIB_DIR)/$$i; done
# for resolving the dependencies of 'update_contrib_subdirs'
$(REAL_CONTRIB_DIR)/%:
$(VERBOSE)svn co -r $(SVN_REV) $(SVN_URI)/$* $@
apply_patches:
$(ECHO) "applying patches to '$(REAL_CONTRIB_DIR)/'"
$(VERBOSE)for i in $(PATCHES); do \
patch -N -d $(REAL_CONTRIB_DIR) -p0 < $$i; done
# if $(CONTRIB_DIR) is a symlink, leave $(REAL_CONTRIB_DIR) alone
clean::
$(VERBOSE)rm -rf $(CONTRIB_DIR)
.NOTPARALLEL: