215 строки
9.8 KiB
Makefile
215 строки
9.8 KiB
Makefile
TOP=..
|
|
include $(TOP)/Make.config
|
|
|
|
# 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 \
|
|
FSharp.Core.dll.mdb \
|
|
FSharp.Core.optdata \
|
|
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
|
|
TVOS_BIN_DIR = $(FSHARP_PATH)/lib/release/xamarintvos
|
|
MAC_MOBILE_BIN_DIR = $(FSHARP_PATH)/lib/release/xamarinmacmobile
|
|
MAC_45_BIN_DIR = $(FSHARP_PATH)/lib/release/xamarinmacfull
|
|
|
|
# Xamarin.iOS
|
|
|
|
IOS_FSHARP_TARGETS = \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(file)) \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/$(file)) \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/LICENSE-fsharp \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/LICENSE-fsharp \
|
|
|
|
IOS_FSHARP_DIRECTORIES = \
|
|
build/monotouch \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS \
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
# Xamarin.WatchOS
|
|
|
|
|
|
WATCH_FSHARP_TARGETS = \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/$(file)) \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS/LICENSE-fsharp \
|
|
|
|
WATCH_FSHARP_DIRECTORIES = \
|
|
build/xamarinwatchos \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.WatchOS \
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
# Xamarin.TVOS
|
|
|
|
|
|
TVOS_FSHARP_TARGETS = \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/$(file)) \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS/LICENSE-fsharp \
|
|
|
|
TVOS_FSHARP_DIRECTORIES = \
|
|
build/xamarintvos \
|
|
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.TVOS \
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
# Xamarin.Mac
|
|
|
|
MAC_FSHARP_TARGETS = \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/$(file)) \
|
|
$(foreach file,$(FSHARP_TARGET_FILES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/$(file)) \
|
|
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/LICENSE-fsharp \
|
|
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/LICENSE-fsharp \
|
|
|
|
MAC_FSHARP_DIRECTORIES = \
|
|
build/xamarinmacfull \
|
|
build/xamarinmacmobile \
|
|
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 \
|
|
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac \
|
|
|
|
## XM full
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
## XM mobile
|
|
|
|
$(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: $(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
|
|
$(Q) install -m 0644 $< $@
|
|
|
|
# Common
|
|
|
|
ifdef INCLUDE_IOS
|
|
FSHARP_TARGETS += $(IOS_FSHARP_TARGETS)
|
|
FSHARP_DIRECTORIES += $(IOS_FSHARP_DIRECTORIES)
|
|
FSHARP_BUILD_TARGETS += only-monotouch
|
|
ifdef INCLUDE_WATCH
|
|
FSHARP_TARGETS += $(WATCH_FSHARP_TARGETS)
|
|
FSHARP_DIRECTORIES += $(WATCH_FSHARP_DIRECTORIES)
|
|
FSHARP_BUILD_TARGETS += only-xamarinwatchos
|
|
endif
|
|
ifdef INCLUDE_TVOS
|
|
FSHARP_TARGETS += $(TVOS_FSHARP_TARGETS)
|
|
FSHARP_DIRECTORIES += $(TVOS_FSHARP_DIRECTORIES)
|
|
FSHARP_BUILD_TARGETS += only-xamarintvos
|
|
endif
|
|
endif
|
|
|
|
ifdef INCLUDE_MAC
|
|
FSHARP_TARGETS += $(MAC_FSHARP_TARGETS)
|
|
FSHARP_DIRECTORIES += $(MAC_FSHARP_DIRECTORIES)
|
|
FSHARP_BUILD_TARGETS += only-xamarinmac
|
|
endif
|
|
|
|
$(FSHARP_DIRECTORIES):
|
|
$(Q) mkdir -p $@
|
|
|
|
### Sign the assemblies. This is done in a temporary directory so that we don't have to re-sign on every install.
|
|
build/%.dll: $(BIN_DIR)/%.dll | build/monotouch build/xamarinmacmobile build/xamarinmacfull build/xamarinwatchos build/xamarintvos
|
|
$(Q) $(CP) $< $@
|
|
$(Q_SN) MONO_CFG_DIR="$(TOP)" $(SYSTEM_SN) -q -R "$@" "$(PRODUCT_KEY_PATH)"
|
|
|
|
build.stamp: export TargetFrameworkFallbackSearchPaths=$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks
|
|
build.stamp: export MSBuildExtensionsPathFallbackPathsOverride=$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild
|
|
build.stamp: $(FSHARP_FILES) $(FSHARP_PATH)/Makefile
|
|
$(MAKE) -C $(FSHARP_PATH)/src/fsharp build-proto
|
|
$(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
|
|
@echo "Executed autogen for fsharp"
|
|
|
|
clean-local::
|
|
git clean -xfd
|
|
cd $(FSHARP_PATH) && git clean -xfd
|
|
|
|
include $(TOP)/mk/rules.mk
|