2016-04-21 11:59:27 +03:00
# usage $(call CheckSubmoduleTemplate (name,MAKEFILE VAR,repo name))
# usage $(call CheckSubmoduleTemplate (mono,MONO,mono))
d e f i n e C h e c k S u b m o d u l e T e m p l a t e
2016-04-21 19:01:11 +03:00
#$(eval NEEDED_$(2)_VERSION:=$(shell git --git-dir $(abspath $($(2)_PATH)/../..)/.git --work-tree $(abspath $($(2)_PATH)/../..) ls-tree HEAD --full-tree -- external/$(1) | awk -F' ' '{printf "%s",$$3}'))
2016-04-21 11:59:27 +03:00
#$(eval $(2)_VERSION:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git rev-parse HEAD 2>/dev/null))
check-$(1) ::
i f e q ( $$ ( I G N O R E _ $( 2) _ V E R S I O N ) , )
@if test ! -d $( $( 2) _PATH) ; then \
if test x$$ ( RESET_VERSIONS) != "x" ; then \
make reset-$( 1) || exit 1; \
else \
echo " Your $( 1) checkout is missing, please run 'git submodule update --init --recursive -- external/ $( 1) ' " ; \
touch .check-versions-failure; \
fi ; \
else \
if test " x $( $( 2) _VERSION) " != " x $( NEEDED_$( 2) _VERSION) " ; then \
if test x$$ ( RESET_VERSIONS) != "x" ; then \
make reset-$( 1) || exit 1; \
else \
2017-05-10 17:40:31 +03:00
echo " Your $( 1) version is out of date, please run 'make reset- $( 1) ' (found $( $( 2) _VERSION) , expected $( NEEDED_$( 2) _VERSION) ). Alternatively export IGNORE_ $( 2) _VERSION=1 to skip this check. " ; \
2016-04-21 11:59:27 +03:00
test -z " $( BUILD_REVISION) " || $( MAKE) test-$( 1) ; \
touch .check-versions-failure; \
fi ; \
else \
echo " $( 1) is up-to-date. " ; \
fi ; \
fi
e l s e
@echo " $( 1) is ignored. "
e n d i f
test-$(1) ::
@echo $( 1)
@echo " NEEDED_ $( 2) _VERSION= $( NEEDED_$( 2) _VERSION) "
@echo " $( 2) _VERSION= $( $( 2) _VERSION) "
@echo " $( 2) _PATH= $( $( 2) _PATH) => $( abspath $( $( 2) _PATH) ) "
reset-$(1) ::
i f n e q ( $$ ( I G N O R E _ $( 2) _ V E R S I O N ) , )
@echo " *** Not resetting $( 1) because IGNORE_ $( 2) _VERSION is set "
e l s e
@echo " *** git submodule update --init --recursive --force -- $( TOP) /external/ $( 1) "
2016-04-21 19:01:11 +03:00
cd $( abspath $( $( 2) _PATH) /../..) && git submodule update --init --recursive --force -- ./external/$( 1)
2016-04-21 11:59:27 +03:00
e n d i f
print-$(1) ::
@printf "*** %-16s %-45s %s (%s)\n" " $( 1) " " $( shell git config submodule.external/$( 1) .url) " " $( NEEDED_$( 2) _VERSION) " " $( shell git config -f $( abspath $( TOP) /.gitmodules) submodule.external/$( 1) .branch) "
.PHONY : check -$( 1) reset -$( 1) print -$( 1)
reset-versions :: reset -$( 1)
check-versions :: check -$( 1)
print-versions :: print -$( 1)
e n d e f
2016-04-21 14:18:44 +03:00
$( shell rm -f .check -versions -failure )
$( eval $ ( call CheckSubmoduleTemplate ,llvm ,LLVM ) )
$( eval $ ( call CheckSubmoduleTemplate ,mono ,MONO ) )
2016-04-21 14:56:47 +03:00
$( eval $ ( call CheckSubmoduleTemplate ,fsharp ,FSHARP ) )
2016-04-21 15:30:02 +03:00
$( eval $ ( call CheckSubmoduleTemplate ,MonoTouch .Dialog ,MONOTOUCH_DIALOG ) )
$( eval $ ( call CheckSubmoduleTemplate ,Touch .Unit ,TOUCH_UNIT ) )
$( eval $ ( call CheckSubmoduleTemplate ,opentk ,OPENTK ) )
2016-04-21 16:40:25 +03:00
$( eval $ ( call CheckSubmoduleTemplate ,Xamarin .MacDev ,XAMARIN_MACDEV ) )
2016-05-04 22:12:18 +03:00
$( eval $ ( call CheckSubmoduleTemplate ,guiunit ,GUI_UNIT ) )
2016-11-29 02:23:26 +03:00
$( eval $ ( call CheckSubmoduleTemplate ,linker ,LINKER_TOOLS ) )
2016-04-21 14:18:44 +03:00
2016-04-21 19:01:11 +03:00
i n c l u d e $( TOP ) / m k / x a m a r i n . m k
2016-04-21 14:18:44 +03:00
# some hackish reset-* targets to deal with what needs to happen in various parts of the build tree when you reset a module
reset-mono ::
$( Q) rm -f $( TOP) /.stamp-build* $( MONO_PATH) /configure
reset-llvm ::
$( Q) $( MAKE) -C $( TOP) /builds clean-llvm
2016-04-21 14:56:47 +03:00
reset-fsharp ::
$( Q) cd $( FSHARP_PATH) && git clean -xffdq
2016-04-21 11:59:27 +03:00
check-versions ::
@if test -e .check-versions-failure; then \
rm .check-versions-failure; \
echo One or more modules needs update; \
exit 1; \
else \
echo All dependent modules up to date; \
fi
all-local :: check -versions
reset :
@make check-versions RESET_VERSIONS = 1