xamarin-macios/mk/versions.mk

93 строки
3.5 KiB
Makefile
Исходник Обычный вид История

2016-04-21 11:59:27 +03:00
# usage $(call CheckSubmoduleTemplate (name,MAKEFILE VAR,repo name))
# usage $(call CheckSubmoduleTemplate (mono,MONO,mono))
THISDIR=$(TOP)/mk
include $(THISDIR)/colors.mk
2016-04-21 11:59:27 +03:00
define CheckSubmoduleTemplate
#$(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)::
ifeq ($$(IGNORE_$(2)_VERSION),)
@rm -f $(THISDIR)/.stamp-reset-$(1)
2016-04-21 11:59:27 +03:00
@if test ! -d $($(2)_PATH); then \
if test x$$(RESET_VERSIONS) != "x"; then \
make reset-$(1) || exit 1; \
else \
echo "Your $(1) checkout is $(COLOR_RED)missing$(COLOR_CLEAR), please run 'git submodule update --init --recursive -- external/$(1)'"; \
2016-04-21 11:59:27 +03:00
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 \
echo "Your $(1) version is $(COLOR_RED)out of date$(COLOR_CLEAR), 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 $(COLOR_GREEN)up-to-date$(COLOR_CLEAR)."; \
2016-04-21 11:59:27 +03:00
fi; \
fi
else
@echo "$(1) is $(COLOR_GRAY)ignored$(COLOR_CLEAR)."
2016-04-21 11:59:27 +03:00
endif
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)::
ifneq ($$(IGNORE_$(2)_VERSION),)
@echo "*** Not resetting $(1) because IGNORE_$(2)_VERSION is set"
else
@echo "*** git submodule update --init --recursive --force -- $(TOP)/external/$(1)"
cd $(abspath $($(2)_PATH)/../..) && git submodule update --init --recursive --force -- ./external/$(1)
@touch $(THISDIR)/.stamp-reset-$(1)
2016-04-21 11:59:27 +03:00
endif
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-impl:: reset-$(1)
2016-04-21 11:59:27 +03:00
check-versions:: check-$(1)
print-versions:: print-$(1)
endef
2016-04-21 14:18:44 +03:00
$(shell rm -f .check-versions-failure)
2016-04-21 15:30:02 +03:00
$(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))
$(eval $(call CheckSubmoduleTemplate,macios-binaries,MACIOS_BINARIES))
$(eval $(call CheckSubmoduleTemplate,ikvm-fork,IKVM))
Submodule MonoTouch.Dialog. (#13058) * Submodule MonoTouch.Dialog. Submodule MonoTouch.Dialog, so that we can easily build it using .NET. This submodule will become redundant when/if we publish a .NET version of MonoTouch.Dialog, but until that happens we need it at least for our own test suites. This also means we have to copy our NuGet.config and global.json files to the MonoTouch.Dialog project directory so that we point msbuild to use our local build. New commits in spouliot/Touch.Unit: * spouliot/Touch.Unit@cbda703 [Touch.Client] Use MonoTouch.Dialog from a submodule. (#109) Diff: https://github.com/spouliot/Touch.Unit/compare/3345db2f4e6408fdf2e8f099251c5c1310b56937..cbda70358360329854ea399100a2b5b04ae43982 * Use relative path for submodule. And fix indentation and set the branch name. * Don't use 'RootTestsDirectory' when it might not be defined yet. * [tests] Our test projects don't need to reference MonoTouch.Dialog directly. The projects get the MonoTouch.Dialog reference indirectly through the Touch.Client project reference. * [tests] Only validate unique errors in the .NET unit tests. * [tests] No need to reference System.Json anymore, that's handled directly in the MonoTouch.Dialog project. * [tests] Reference nunit.framework.targets so we get a workaround for an NUnit issue everywhere. * [msbuild] Only try to create a package if we're able to create an app bundle. This fixes an issue where a library project would try (and fail) to create a package when 'CreatePackage=true' (which could be set for the executable project, but inherited by the library project since the executable project depends on it). * [tests] Adjust PackTest.BindingXcFrameworksProject to not set the AssemblyName property. MSBuild ends up being very confused when the project we're trying to build depends on other projects, because AssemblyName is set for all the projects being build, and MSBuild complains about ambiguous projects: > error: Ambiguous project name 'bindings-xcframework-test'
2021-10-26 09:18:34 +03:00
$(eval $(call CheckSubmoduleTemplate,MonoTouch.Dialog,MONOTOUCH_DIALOG))
2016-04-21 14:18:44 +03:00
include $(TOP)/mk/xamarin.mk
2016-04-21 11:59:27 +03:00
check-versions::
@if test -e .check-versions-failure; then \
rm .check-versions-failure; \
echo "$(COLOR_RED)One or more modules needs update$(COLOR_CLEAR)"; \
2016-04-21 11:59:27 +03:00
exit 1; \
else \
echo All dependent modules up to date; \
fi
all-local:: check-versions
reset: RESET_VERSIONS=1
reset: check-versions
$(Q) ! test -f $(THISDIR)/.stamp-reset-maccore || ( echo "$(COLOR_GRAY)Checking again since maccore changed$(COLOR_CLEAR)" && $(MAKE) check-versions RESET_VERSIONS=1 )
reset-versions: reset-versions-impl
$(Q) ! test -f $(THISDIR)/.stamp-reset-maccore || ( echo "$(COLOR_GRAY)Checking again since maccore changed$(COLOR_CLEAR)" && $(MAKE) reset-versions-impl )