From 1279dd1eaa8943afe3fb397f0394bd18cb0b2fec Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 19 Oct 2018 16:54:44 +0200 Subject: [PATCH] Get the F# binaries from macios-binaries instead of building them every time. (#5015) It's still possible to build from source if desired. Also remove the fsharp submodule (it will be cloned manually only if building from source). --- .gitmodules | 4 ---- Make.config | 1 - external/fsharp | 1 - external/macios-binaries | 2 +- fsharp/.gitignore | 2 ++ fsharp/Makefile | 48 ++++++++++++++++++++++++++++++++++------ mk/versions.mk | 4 ---- 7 files changed, 44 insertions(+), 18 deletions(-) delete mode 160000 external/fsharp diff --git a/.gitmodules b/.gitmodules index ad2d835245..9fd2b39428 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ -[submodule "external/fsharp"] - path = external/fsharp - url = ../../fsharp/fsharp.git - branch = master [submodule "external/guiunit"] path = external/guiunit url = ../../mono/guiunit.git diff --git a/Make.config b/Make.config index bad444a4a9..ce5bd30127 100644 --- a/Make.config +++ b/Make.config @@ -231,7 +231,6 @@ DEVICETV_OBJC_CFLAGS = $(DEVICETV_CFLAGS) $(DEVICE_OBJC_CFLAGS) # things in other places if they absolutely must. MONO_PATH=$(TOP)/external/mono WATCH_MONO_PATH=$(TOP)/external/mono -FSHARP_PATH=$(TOP)/external/fsharp TOUCH_UNIT_PATH=$(TOP)/external/Touch.Unit NUNITLITE_PATH=$(TOP)/external/mono/external/nunit-lite OPENTK_PATH=$(TOP)/external/opentk diff --git a/external/fsharp b/external/fsharp deleted file mode 160000 index 7171700877..0000000000 --- a/external/fsharp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7171700877115e2243b4edbc4e2eb88d019e02b0 diff --git a/external/macios-binaries b/external/macios-binaries index a4a1ceec88..850e2e3035 160000 --- a/external/macios-binaries +++ b/external/macios-binaries @@ -1 +1 @@ -Subproject commit a4a1ceec883cc47f5eb4d4604fe5fe52d1f662d0 +Subproject commit 850e2e3035843e93e758ca79aff3fc977b2c18ac diff --git a/fsharp/.gitignore b/fsharp/.gitignore index 7259e350e4..ee3d10ec8d 100644 --- a/fsharp/.gitignore +++ b/fsharp/.gitignore @@ -1,2 +1,4 @@ build.stamp +Makefile.inc +fsharp diff --git a/fsharp/Makefile b/fsharp/Makefile index 28a2fc0e1e..11d2a22447 100644 --- a/fsharp/Makefile +++ b/fsharp/Makefile @@ -1,7 +1,32 @@ TOP=.. include $(TOP)/Make.config -FSHARP_FILES:=$(shell git --git-dir=$(FSHARP_PATH)/.git --work-tree=$(FSHARP_PATH) ls-tree --full-tree -r HEAD --name-only | sed 's_^\(.*\)_$(FSHARP_PATH)/\1_' | sed 's/ /\\ /g') +# By default we'll get the F# binaries from the macios-binaries repository. +# It's still possible to build from source, by passing "FSHARP_BUILD_FROM_SOURCE=1" when building, +# which will automatically clone the fsharp repository, and build what's needed. +# The FSHARP_SOURCE_HASH variable below defines which fsharp hash to build. + +FSHARP_SOURCE_HASH=7171700877115e2243b4edbc4e2eb88d019e02b0 +FSHARP_SOURCE_BRANCH=master + +FSHARP_BINARIES_PATH=$(abspath $(MACIOS_BINARIES_PATH)/fsharp) +FSHARP_SOURCE_PATH=$(abspath $(CURDIR)/fsharp) + +ifeq ($(FSHARP_BUILD_FROM_SOURCE),) +FSHARP_PATH=$(FSHARP_BINARIES_PATH) +FSHARP_BUILD_PATH=$(FSHARP_BINARIES_PATH) +else +FSHARP_PATH=$(FSHARP_SOURCE_PATH) +FSHARP_BUILD_PATH=build + +# Create a list of all the source files in the fsharp repo to use as dependencies. +# But skip any files with spaces, because make + spaces is not a good combination. +Makefile.inc: $(FSHARP_SOURCE_PATH) + $(Q) printf "FSHARP_FILES := \\\\\\n" >> $@.tmp + $(Q) git --git-dir=$(FSHARP_SOURCE_PATH)/.git --work-tree=$(FSHARP_SOURCE_PATH) ls-tree --full-tree -r HEAD --name-only | grep -v ' ' | sed -e 's_^\(.*\)_ $(FSHARP_SOURCE_PATH)/\1 \\_' >> $@.tmp + $(Q) mv $@.tmp $@ +-include Makefile.inc +endif FSHARP_TARGET_FILES = \ FSharp.Core.dll \ @@ -10,6 +35,11 @@ FSHARP_TARGET_FILES = \ FSharp.Core.sigdata \ FSharp.Core.xml \ +$(FSHARP_SOURCE_PATH): + $(Q) echo "Cloning the fsharp repository..." + $(Q) git clone -q https://github.com/fsharp/fsharp fsharp + $(Q) cd fsharp && git checkout $(FSHARP_SOURCE_BRANCH) && git reset --hard $(FSHARP_SOURCE_HASH) + BIN_DIR=$(FSHARP_PATH)/lib/release IOS_BIN_DIR = $(FSHARP_PATH)/lib/release/monotouch WATCH_BIN_DIR = $(FSHARP_PATH)/lib/release/xamarinwatchos @@ -33,7 +63,7 @@ IOS_FSHARP_DIRECTORIES = \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 $(Q) install -m 0644 $< $@ -$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%.dll: build/monotouch/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 +$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%.dll: $(FSHARP_BUILD_PATH)/monotouch/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 $(Q) install -m 0644 $< $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%: $(IOS_BIN_DIR)/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 @@ -42,7 +72,7 @@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%: $(IOS_BIN_DIR)/% | $(IOS_DESTD $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS $(Q) install -m 0644 $< $@ -$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/%.dll: build/monotouch/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS +$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/%.dll: $(FSHARP_BUILD_PATH)/monotouch/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS $(Q) install -m 0644 $< $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/%: $(IOS_BIN_DIR)/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS @@ -62,7 +92,7 @@ WATCH_FSHARP_DIRECTORIES = \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS $(Q) install -m 0644 $< $@ -$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/%.dll: build/xamarinwatchos/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS +$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/%.dll: $(FSHARP_BUILD_PATH)/xamarinwatchos/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS $(Q) install -m 0644 $< $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/%: $(WATCH_BIN_DIR)/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS @@ -82,7 +112,7 @@ TVOS_FSHARP_DIRECTORIES = \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS $(Q) install -m 0644 $< $@ -$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/%.dll: build/xamarintvos/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS +$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/%.dll: $(FSHARP_BUILD_PATH)/xamarintvos/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS $(Q) install -m 0644 $< $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/%: $(TVOS_BIN_DIR)/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS @@ -107,7 +137,7 @@ MAC_FSHARP_DIRECTORIES = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 $(Q) install -m 0644 $< $@ -$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/%.dll: build/xamarinmacfull/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 +$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/%.dll: $(FSHARP_BUILD_PATH)/xamarinmacfull/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 $(Q) install -m 0644 $< $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/%: $(MAC_45_BIN_DIR)/% | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 @@ -118,7 +148,7 @@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/%: $(MAC_45_BIN_DIR)/% | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/LICENSE-fsharp: $(FSHARP_PATH)/LICENSE | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac $(Q) install -m 0644 $< $@ -$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/%.dll: build/xamarinmacmobile/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac +$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/%.dll: $(FSHARP_BUILD_PATH)/xamarinmacmobile/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac $(Q) install -m 0644 $< $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/%: $(MAC_MOBILE_BIN_DIR)/% | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac @@ -163,11 +193,15 @@ build.stamp: $(FSHARP_FILES) $(FSHARP_PATH)/Makefile $(MAKE) -C $(FSHARP_PATH)/src/fsharp $(FSHARP_BUILD_TARGETS) $(Q) touch $@ +ifneq ($(FSHARP_BUILD_FROM_SOURCE),) $(FSHARP_TARGETS): build.stamp +endif all-local:: $(FSHARP_TARGETS) install-local:: $(FSHARP_TARGETS) +$(FSHARP_PATH)/autogen.sh: $(FSHARP_SOURCE_PATH) + $(FSHARP_PATH)/Makefile: $(FSHARP_PATH)/autogen.sh $(FSHARP_FILES) /Library/Frameworks/Mono.framework/Versions/Current/updateinfo @echo "Executing autogen for fsharp..." $(Q) cd $(FSHARP_PATH) && ./autogen.sh --prefix=/Library/Frameworks/Mono.framework/Versions/Current diff --git a/mk/versions.mk b/mk/versions.mk index 368e3cd6c9..7427e4b063 100644 --- a/mk/versions.mk +++ b/mk/versions.mk @@ -67,7 +67,6 @@ endef $(shell rm -f .check-versions-failure) $(eval $(call CheckSubmoduleTemplate,mono,MONO)) -$(eval $(call CheckSubmoduleTemplate,fsharp,FSHARP)) $(eval $(call CheckSubmoduleTemplate,Touch.Unit,TOUCH_UNIT)) $(eval $(call CheckSubmoduleTemplate,opentk,OPENTK)) $(eval $(call CheckSubmoduleTemplate,Xamarin.MacDev,XAMARIN_MACDEV)) @@ -81,9 +80,6 @@ include $(TOP)/mk/xamarin.mk reset-mono:: $(Q) rm -f $(TOP)/.stamp-build* $(MONO_PATH)/configure -reset-fsharp:: - $(Q) cd $(FSHARP_PATH) && git clean -xffdq - check-versions:: @if test -e .check-versions-failure; then \ rm .check-versions-failure; \