From 78c77cb5d6f23c47bb39d683485adc3516c82934 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 18 Oct 2018 14:29:54 +0200 Subject: [PATCH] Get the F# binaries from macios-binaries instead of building them every time. 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 ad2d8352452d..9fd2b3942859 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 bad444a4a984..ce5bd30127d0 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 717170087711..000000000000 --- a/external/fsharp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7171700877115e2243b4edbc4e2eb88d019e02b0 diff --git a/external/macios-binaries b/external/macios-binaries index a4a1ceec883c..850e2e303584 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 7259e350e439..ee3d10ec8d6b 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 28a2fc0e1efb..11d2a2244745 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 368e3cd6c9fd..7427e4b063c3 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; \