TOP=.. include $(TOP)/Make.config PREFIX=$(abspath $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/) # Keep all intermediate files always. .SECONDARY: ## ## Mono download vs. build ## download: download-mono download-mono: downloads/$(basename $(MONO_IOS_FILENAME)) downloads/$(basename $(MONO_MAC_FILENAME)) downloads/$(basename $(MONO_IOS_FILENAME)): MONO_URL=$(MONO_IOS_URL) downloads/$(basename $(MONO_MAC_FILENAME)): MONO_URL=$(MONO_MAC_URL) include $(TOP)/mk/colors.mk # This target downloads the mono archives, there's one for Xamarin.iOS and one for Xamarin.Mac. # If doing many clean builds, it's possible to copy the downloaded zip file to ~/Library/Caches/xamarin-macios # to avoid having to download it every time. The zip files have to be copied manually, otherwise # we'd end up filling up a lot of hard drives around the world. downloads/$(MONO_IOS_FILENAME) downloads/$(MONO_MAC_FILENAME): $(Q) mkdir -p downloads $(Q) echo "Downloading $(MONO_URL)..." $(Q) if test -f ~/Library/Caches/xamarin-macios/$(notdir $@); then \ echo "Found a cached version of $(MONO_URL) in ~/Library/Caches/xamarin-macios/$(notdir $@)."; \ $(CP) ~/Library/Caches/xamarin-macios/$(notdir $@) $@.tmp; \ else \ EC=0; \ curl -f -L $(if $(V),-v,-s) $(MONO_URL) --output $@.tmp || EC=$$?; \ if [[ x$$EC == x22 ]]; then \ MSG="Could not download the archive %s because the URL doesn't exist. This can happen if bumping mono very soon after the corresponding commit was pushed to mono (i.e. the archive hasn't been built yet). If so, please wait a bit and try again."; \ printf "$(COLOR_RED)*** $$MSG$(COLOR_CLEAR)\n" "$(notdir $@)"; \ if test -n "$$FAILURE_REASON_PATH"; then printf "$$MSG\n" "[$(notdir $@)]($(MONO_URL))" >> "$$FAILURE_REASON_PATH"; fi; \ fi; \ if [[ x$$EC != x0 ]]; then exit $$EC; fi; \ fi $(Q) mv $@.tmp $@ $(Q) echo "Downloaded $(MONO_URL)" downloads/%: downloads/%.7z $(Q) echo "Unzipping $*..." $(Q) rm -Rf $@.tmp $(Q) 7z x $< -o$@.tmp $(Q) mv $@.tmp $@ $(Q) echo "Unzipped $*." .stamp-download-mono: download-mono $(TOP)/Make.config $(TOP)/mk/mono.mk $(Q) touch $@ clean-local:: $(Q) rm -Rf downloads .stamp-download-mono x86-64-slice.c: Makefile echo "void xamarin_x86_64_function_for_notarization_workaround () {}" > $@ x86-64-slice.o: x86-64-slice.c $(MAC_CC) -c -ggdb3 $< -o $@ X86_64_SLICE_BASE=$(abspath $(CURDIR)/x86-64-slice) X86_64_SLICE_DYLIB=$(X86_64_SLICE_BASE).dylib X86_64_SLICE_A=$(X86_64_SLICE_BASE).a X86_64_SLICE_NOEXT=$(X86_64_SLICE_BASE) X86_64_SLICE=$(X86_64_SLICE_BASE)$(suffix $@) X86_64_SLICE_ALL=$(X86_64_SLICE_DYLIB) $(X86_64_SLICE_A) $(X86_64_SLICE_NOEXT) $(X86_64_SLICE_DYLIB): x86-64-slice.o $(MAC_CC) -shared -o$@ $< $(X86_64_SLICE_A): x86-64-slice.o $(AR) -rv $@ $< $(X86_64_SLICE_NOEXT): $(X86_64_SLICE_DYLIB) $(Q) $(CP) $< $@ ifeq ($(MONO_BUILD_FROM_SOURCE),) all-local:: .stamp-download-mono .stamp-mono-ios-sdk-destdir else # this is a list of all the files from mono we care about, so that we # can use that list as dependencies for our makefile targets -include .deps.mono.mk .deps.mono.mk: $(TOP)/Make.config $(TOP)/mk/mono.mk $(Q) printf 'MONO_DEPENDENCIES += Makefile \\\n' > $@.tmp $(Q) cd $(MONO_PATH) && git ls-files --recurse-submodules 'mcs/class/*.cs' 'mcs/build/*.cs' 'external/*.cs' '*.h' '*.c' '*.cpp' | sed 's/ /\\ /g' | sed 's@^\(.*\)$$@ $(MONO_PATH)/\1 \\@' >> $(abspath $@).tmp $(Q) mv $@.tmp $@ # # Configuration for the mono sdk makefiles # SDK_ARGS= \ XCODE_DIR=$(XCODE_DEVELOPER_ROOT) \ IOS_VERSION=$(IOS_SDK_VERSION) IOS_VERSION_MIN=$(MIN_IOS_SDK_VERSION) \ TVOS_VERSION=$(TVOS_SDK_VERSION) TVOS_VERSION_MIN=$(MIN_TVOS_SDK_VERSION) \ WATCHOS_VERSION=$(WATCH_SDK_VERSION) WATCHOS_VERSION_MIN=$(MIN_WATCHOS_SDK_VERSION) \ WATCHOS64_32_VERSION=$(WATCH_SDK_VERSION) WATCHOS64_32_VERSION_MIN=$(MIN_WATCHOS64_32_SDK_VERSION) \ MACOS_VERSION=$(OSX_SDK_VERSION) MACOS_VERSION_MIN=$(MIN_OSX_SDK_VERSION) SDK_CONFIG = $(MONO_PATH)/sdks/Make.config SDK_BUILDDIR = $(MONO_PATH)/sdks/builds $(SDK_CONFIG): echo "DISABLE_ANDROID=1" > $@ echo "DISABLE_DESKTOP=1" >> $@ echo "DISABLE_WASM=1" >> $@ echo "ENABLE_IOS=1" >> $@ echo "ENABLE_MAC=1" >> $@ ifdef DISABLE_BUILDS_MAKEFILE_DEP BUILDS_MAKEFILE_DEP = else BUILDS_MAKEFILE_DEP = Makefile endif .stamp-configure-mono: $(SDK_CONFIG) ulimit -n 4096 && $(MAKE) -C $(SDK_BUILDDIR) configure-ios configure-mac $(SDK_ARGS) $(Q) touch $@ .stamp-compile-mono: .stamp-configure-mono $(MONO_DEPENDENCIES) $(BUILDS_MAKEFILE_DEP) $(TOP)/Make.config $(TOP)/mk/mono.mk $(MAKE) -C $(SDK_BUILDDIR) package-ios package-ios-bcl $(SDK_ARGS) $(MAKE) -C $(SDK_BUILDDIR) package-mac package-mac-bcl $(SDK_ARGS) $(Q) touch $@ clean-local:: $(MAKE) -C $(SDK_BUILDDIR) clean $(SDK_ARGS) $(Q) rm -f .stamp-compile-mono all-local:: .stamp-compile-mono .stamp-mono-ios-sdk-destdir endif .stamp-mono-ios-sdk-destdir: .stamp-$(MONO_BUILD_MODE) ln -sf $(MONO_IOS_SDK_DESTDIR) mono-ios-sdk-destdir $(Q) touch $@ ifndef DISABLE_STRIP INSTALL_STRIP_FLAG=-s endif # # Xamarin.iOS/WatchOS/TVOS/Mac BCL assemblies # install-local:: install-bcl all-local:: install-bcl $(MONO_IOS_SDK_DESTDIR)/ios-bcl/%: .stamp-$(MONO_BUILD_MODE) $(MONO_MAC_SDK_DESTDIR)/mac-bcl/%: .stamp-$(MONO_BUILD_MODE) IOS_ASSEMBLIES = \ I18N \ I18N.CJK \ I18N.MidEast \ I18N.Other \ I18N.Rare \ I18N.West \ Microsoft.CSharp \ Mono.CSharp \ Mono.Data.Sqlite \ Mono.Data.Tds \ Mono.Security \ mscorlib \ System \ System.ComponentModel.Composition \ System.ComponentModel.DataAnnotations \ System.Core \ System.Data \ System.Data.Services.Client \ System.Data.DataSetExtensions \ System.IdentityModel \ System.IO.Compression \ System.IO.Compression.FileSystem \ System.Json \ System.Net \ System.Net.Http \ System.Net.Http.WinHttpHandler \ System.Numerics \ System.Numerics.Vectors \ System.Reflection.Context \ System.Runtime.Serialization \ System.Security \ System.ServiceModel \ System.ServiceModel.Internals \ System.ServiceModel.Web \ System.Transactions \ System.Web.Services \ System.Windows \ System.Xml \ System.Xml.Linq \ System.Xml.Serialization MAC_ASSEMBLIES = \ I18N \ I18N.CJK \ I18N.MidEast \ I18N.Other \ I18N.Rare \ I18N.West \ mscorlib \ Microsoft.CSharp \ Mono.CSharp \ Mono.CompilerServices.SymbolWriter \ Mono.Data.Sqlite \ Mono.Data.Tds \ Mono.Security \ System.ComponentModel.Composition \ System.ComponentModel.DataAnnotations \ System.Core \ System.Data.Services.Client \ System.Data.DataSetExtensions \ System.Data \ System.IdentityModel \ System.IO.Compression.FileSystem \ System.IO.Compression \ System.Json \ System.Net.Http \ System.Net \ System.Numerics \ System.Runtime.Serialization \ System.ServiceModel.Web \ System.ServiceModel \ System.ServiceModel.Internals \ System.Transactions \ System.Web.Services \ System.Windows \ System.Xml.Linq \ System.Xml.Serialization \ System.Xml \ System \ System.Security \ System.Reflection.Context \ System.Net.Http.WinHttpHandler \ System.Numerics.Vectors MAC_4_5_ASSEMBLIES = \ $(MAC_ASSEMBLIES) \ Mono.Messaging \ Mono.Posix \ System.Configuration \ System.Configuration.Install \ System.Data.Linq \ System.EnterpriseServices \ System.IdentityModel.Selectors \ System.Messaging \ System.Runtime.Serialization.Formatters.Soap COMMON_FACADE_ASSEMBLIES = \ Microsoft.Win32.Primitives \ Microsoft.Win32.Registry \ Microsoft.Win32.Registry.AccessControl \ System.AppContext \ System.Collections \ System.Collections.Concurrent \ System.Collections.NonGeneric \ System.Collections.Specialized \ System.ComponentModel \ System.ComponentModel.Annotations \ System.ComponentModel.EventBasedAsync \ System.ComponentModel.Primitives \ System.ComponentModel.TypeConverter \ System.Console \ System.Data.Common \ System.Data.SqlClient \ System.Diagnostics.Contracts \ System.Diagnostics.Debug \ System.Diagnostics.FileVersionInfo \ System.Diagnostics.Process \ System.Diagnostics.StackTrace \ System.Diagnostics.TextWriterTraceListener \ System.Diagnostics.Tools \ System.Diagnostics.TraceEvent \ System.Diagnostics.TraceSource \ System.Diagnostics.Tracing \ System.Drawing.Common \ System.Drawing.Primitives \ System.Dynamic.Runtime \ System.Globalization \ System.Globalization.Calendars \ System.Globalization.Extensions \ System.IO \ System.IO.Compression.ZipFile \ System.IO.FileSystem \ System.IO.FileSystem.AccessControl \ System.IO.FileSystem.DriveInfo \ System.IO.FileSystem.Primitives \ System.IO.FileSystem.Watcher \ System.IO.IsolatedStorage \ System.IO.MemoryMappedFiles \ System.IO.Pipes \ System.IO.UnmanagedMemoryStream \ System.Linq \ System.Linq.Expressions \ System.Linq.Parallel \ System.Linq.Queryable \ System.Net.AuthenticationManager \ System.Net.Cache \ System.Net.HttpListener \ System.Net.Mail \ System.Net.NameResolution \ System.Net.NetworkInformation \ System.Net.Ping \ System.Net.Primitives \ System.Net.Requests \ System.Net.Security \ System.Net.ServicePoint \ System.Net.Sockets \ System.Net.Utilities \ System.Net.WebHeaderCollection \ System.Net.WebSockets \ System.Net.WebSockets.Client \ System.ObjectModel \ System.Reflection \ System.Reflection.Emit \ System.Reflection.Emit.ILGeneration \ System.Reflection.Emit.Lightweight \ System.Reflection.Extensions \ System.Reflection.Primitives \ System.Reflection.TypeExtensions \ System.Resources.Reader \ System.Resources.ReaderWriter \ System.Resources.ResourceManager \ System.Resources.Writer \ System.Runtime \ System.Runtime.CompilerServices.VisualC \ System.Runtime.Extensions \ System.Runtime.Handles \ System.Runtime.InteropServices \ System.Runtime.InteropServices.RuntimeInformation \ System.Runtime.InteropServices.WindowsRuntime \ System.Runtime.Numerics \ System.Runtime.Serialization.Formatters \ System.Runtime.Serialization.Json \ System.Runtime.Serialization.Primitives \ System.Runtime.Serialization.Xml \ System.Security.AccessControl \ System.Security.Claims \ System.Security.Cryptography.Algorithms \ System.Security.Cryptography.Csp \ System.Security.Cryptography.DeriveBytes \ System.Security.Cryptography.Encoding \ System.Security.Cryptography.Encryption \ System.Security.Cryptography.Encryption.Aes \ System.Security.Cryptography.Encryption.ECDiffieHellman \ System.Security.Cryptography.Encryption.ECDsa \ System.Security.Cryptography.Hashing \ System.Security.Cryptography.Hashing.Algorithms \ System.Security.Cryptography.Primitives \ System.Security.Cryptography.ProtectedData \ System.Security.Cryptography.RandomNumberGenerator \ System.Security.Cryptography.RSA \ System.Security.Cryptography.X509Certificates \ System.Security.Principal \ System.Security.Principal.Windows \ System.Security.SecureString \ System.ServiceModel.Duplex \ System.ServiceModel.Http \ System.ServiceModel.NetTcp \ System.ServiceModel.Primitives \ System.ServiceModel.Security \ System.ServiceProcess.ServiceController \ System.Text.Encoding \ System.Text.Encoding.CodePages \ System.Text.Encoding.Extensions \ System.Text.RegularExpressions \ System.Threading \ System.Threading.AccessControl \ System.Threading.Overlapped \ System.Threading.Tasks \ System.Threading.Tasks.Parallel \ System.Threading.Thread \ System.Threading.ThreadPool \ System.Threading.Timer \ System.ValueTuple \ System.Xml.ReaderWriter \ System.Xml.XDocument \ System.Xml.XmlDocument \ System.Xml.XmlSerializer \ System.Xml.XPath \ System.Xml.XPath.XDocument \ System.Xml.Xsl.Primitives \ netstandard MOBILE_ADDITIONAL_FACADE_ASSEMBLIES = \ System.Buffers \ System.Memory \ System.Reflection.DispatchProxy \ System.Runtime.Loader \ System.Security.Cryptography.Cng \ System.Security.Cryptography.OpenSsl \ System.Security.Cryptography.Pkcs \ System.Threading.Tasks.Extensions \ System.Xml.XPath.XmlDocument TVOS_ASSEMBLIES = $(IOS_ASSEMBLIES) WATCHOS_ASSEMBLIES = $(filter-out Mono.Security Mono.Data.Tds,$(IOS_ASSEMBLIES)) IOS_REPL_ASSEMBLIES = mscorlib System System.Core System.Xml Mono.CSharp TVOS_REPL_ASSEMBLIES = $(IOS_REPL_ASSEMBLIES) WATCHOS_REPL_ASSEMBLIES = $(IOS_REPL_ASSEMBLIES) IOS_FACADE_ASSEMBLIES = $(COMMON_FACADE_ASSEMBLIES) $(MOBILE_ADDITIONAL_FACADE_ASSEMBLIES) TVOS_FACADE_ASSEMBLIES = $(COMMON_FACADE_ASSEMBLIES) $(MOBILE_ADDITIONAL_FACADE_ASSEMBLIES) WATCHOS_FACADE_ASSEMBLIES = $(COMMON_FACADE_ASSEMBLIES) $(MOBILE_ADDITIONAL_FACADE_ASSEMBLIES) MAC_FACADE_ASSEMBLIES = $(COMMON_FACADE_ASSEMBLIES) $(MOBILE_ADDITIONAL_FACADE_ASSEMBLIES) MAC_4_5_FACADE_ASSEMBLIES = $(COMMON_FACADE_ASSEMBLIES) System.Net.Http.Rtc IOS_BCL_DIRECTORIES = \ $(PREFIX)/lib/mono/2.1 \ $(PREFIX)/lib/mono/2.1/Facades \ $(PREFIX)/lib/mono/2.1/repl \ $(PREFIX)/lib/mono/Xamarin.iOS \ $(PREFIX)/lib/mono/Xamarin.iOS/Facades \ $(PREFIX)/lib/mono/Xamarin.iOS/repl WATCHOS_BCL_DIRECTORIES = \ $(PREFIX)/lib/mono/Xamarin.WatchOS \ $(PREFIX)/lib/mono/Xamarin.WatchOS/Facades \ $(PREFIX)/lib/mono/Xamarin.WatchOS/repl TVOS_BCL_DIRECTORIES = \ $(PREFIX)/lib/mono/Xamarin.TVOS \ $(PREFIX)/lib/mono/Xamarin.TVOS/Facades \ $(PREFIX)/lib/mono/Xamarin.TVOS/repl MAC_BCL_DIRECTORIES = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/Facades \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/Facades NO_PDB_ASSEMBLIES = System.Windows System.Xml.Serialization MAC_NO_PDB_ASSEMBLIES = System.Windows System.Xml.Serialization IOS_BCL_TARGETS = \ $(foreach file,$(IOS_ASSEMBLIES),$(PREFIX)/lib/mono/2.1/$(file).dll) \ $(foreach file,$(filter-out $(NO_PDB_ASSEMBLIES),$(IOS_ASSEMBLIES)),$(PREFIX)/lib/mono/2.1/$(file).pdb) \ $(foreach file,$(IOS_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.iOS/$(file).dll) \ $(foreach file,$(filter-out $(NO_PDB_ASSEMBLIES),$(IOS_ASSEMBLIES)),$(PREFIX)/lib/mono/Xamarin.iOS/$(file).pdb) \ $(foreach file,$(IOS_FACADE_ASSEMBLIES),$(PREFIX)/lib/mono/2.1/Facades/$(file).dll) \ $(foreach file,$(IOS_FACADE_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.iOS/Facades/$(file).dll) \ $(foreach file,$(IOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/2.1/repl/$(file).dll) \ $(foreach file,$(IOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/2.1/repl/$(file).pdb) \ $(foreach file,$(IOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.iOS/repl/$(file).dll) \ $(foreach file,$(IOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.iOS/repl/$(file).pdb) \ WATCHOS_BCL_TARGETS = \ $(foreach file,$(WATCHOS_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.WatchOS/$(file).dll) \ $(foreach file,$(filter-out $(NO_PDB_ASSEMBLIES),$(WATCHOS_ASSEMBLIES)),$(PREFIX)/lib/mono/Xamarin.WatchOS/$(file).pdb) \ $(foreach file,$(WATCHOS_FACADE_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.WatchOS/Facades/$(file).dll) \ $(foreach file,$(WATCHOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.WatchOS/repl/$(file).dll) \ $(foreach file,$(WATCHOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.WatchOS/repl/$(file).pdb) \ TVOS_BCL_TARGETS = \ $(foreach file,$(TVOS_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.TVOS/$(file).dll) \ $(foreach file,$(filter-out $(NO_PDB_ASSEMBLIES),$(TVOS_ASSEMBLIES)),$(PREFIX)/lib/mono/Xamarin.TVOS/$(file).pdb) \ $(foreach file,$(TVOS_FACADE_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.TVOS/Facades/$(file).dll) \ $(foreach file,$(TVOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.TVOS/repl/$(file).dll) \ $(foreach file,$(TVOS_REPL_ASSEMBLIES),$(PREFIX)/lib/mono/Xamarin.TVOS/repl/$(file).pdb) \ MAC_BCL_TARGETS = \ $(foreach file,$(MAC_ASSEMBLIES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/$(file).dll) \ $(foreach file,$(filter-out $(MAC_NO_PDB_ASSEMBLIES),$(MAC_ASSEMBLIES)),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/$(file).pdb) \ $(foreach file,$(MAC_FACADE_ASSEMBLIES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/Facades/$(file).dll) \ $(foreach file,$(MAC_4_5_ASSEMBLIES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/$(file).dll) \ $(foreach file,$(filter-out $(MAC_NO_PDB_ASSEMBLIES),$(MAC_4_5_ASSEMBLIES)),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/$(file).pdb) \ $(foreach file,$(MAC_4_5_FACADE_ASSEMBLIES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/Facades/$(file).dll) \ $(PREFIX)/lib/mono/Xamarin.iOS/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.iOS/Facades $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch/Facades/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.iOS/repl/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.iOS/repl $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_runtime/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.iOS/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.iOS $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch/$(notdir $@) $@ $(PREFIX)/lib/mono/2.1/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/2.1/Facades $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch/Facades/$(notdir $@) $@ $(PREFIX)/lib/mono/2.1/repl/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/2.1/repl $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_runtime/$(notdir $@) $@ $(PREFIX)/lib/mono/2.1/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/2.1 $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.WatchOS/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.WatchOS/Facades $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch/Facades/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.WatchOS/repl/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.WatchOS/repl $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch_runtime/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.WatchOS/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.WatchOS $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.TVOS/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.TVOS/Facades $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv/Facades/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.TVOS/repl/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.TVOS/repl $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv_runtime/$(notdir $@) $@ $(PREFIX)/lib/mono/Xamarin.TVOS/%: .stamp-$(MONO_BUILD_MODE) | $(PREFIX)/lib/mono/Xamarin.TVOS $(Q) install -m 0755 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv/$(notdir $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/Facades $(Q) install -m 0755 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac/Facades/$(notdir $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac/%: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/Xamarin.Mac $(Q) install -m 0755 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac/$(notdir $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/Facades/%: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/Facades $(Q) install -m 0755 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac_net_4_5/Facades/$(notdir $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/%: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5 $(Q) install -m 0755 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac_net_4_5/$(notdir $@) $@ $(IOS_BCL_DIRECTORIES) $(WATCHOS_BCL_DIRECTORIES) $(TVOS_BCL_DIRECTORIES) $(MAC_BCL_DIRECTORIES): $(Q) mkdir -p $@ MONO_ARCHIVE_IOS_IGNORED_ASSEMBLIES = Mono.Simd System.Runtime.CompilerServices.Unsafe nunitlite # TODO check if we should add them MONO_ARCHIVE_MAC_IGNORED_ASSEMBLIES = System.Runtime.CompilerServices.Unsafe nunitlite # TODO check if we should add them MONO_ARCHIVE_MAC_4_5_IGNORED_ASSEMBLIES = SMDiagnostics System.Net.Http.WebRequest System.Runtime.CompilerServices.Unsafe nunitlite # TODO check if we should add them ios-assemblies-check: $(IOS_BCL_TARGETS) $(Q) rm -f .$@* $(Q) echo $(IOS_ASSEMBLIES) $(IOS_FACADE_ASSEMBLIES) $(MONO_ARCHIVE_IOS_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@1 $(Q) ls -1 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@2 $(Q) if ! diff -u .$@1 .$@2; then echo "\n*** There are assemblies in "$(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch" not defined in IOS_ASSEMBLIES or IOS_FACADE_ASSEMBLIES ***\n"; exit 1; fi $(Q) rm -f .$@* watchos-assemblies-check: $(WATCHOS_BCL_TARGETS) $(Q) rm -f .$@* $(Q) echo $(WATCHOS_ASSEMBLIES) $(WATCHOS_FACADE_ASSEMBLIES) $(MONO_ARCHIVE_IOS_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@1 $(Q) ls -1 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@2 $(Q) if ! diff -u .$@1 .$@2; then echo "\n*** There are assemblies in "$(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_watch" not defined in WATCHOS_ASSEMBLIES or WATCHOS_FACADE_ASSEMBLIES ***\n"; exit 1; fi $(Q) rm -f .$@* tvos-assemblies-check: $(TVOS_BCL_TARGETS) $(Q) rm -f .$@* $(Q) echo $(TVOS_ASSEMBLIES) $(TVOS_FACADE_ASSEMBLIES) $(MONO_ARCHIVE_IOS_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@1 $(Q) ls -1 $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv $(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@2 $(Q) if ! diff -u .$@1 .$@2; then echo "\n*** There are assemblies in "$(MONO_IOS_SDK_DESTDIR)/ios-bcl/monotouch_tv" not defined in TVOS_ASSEMBLIES or TVOS_FACADE_ASSEMBLIES ***\n"; exit 1; fi $(Q) rm -f .$@* mac-assemblies-check: $(MAC_BCL_TARGETS) $(Q) rm -f .$@* $(Q) echo $(MAC_ASSEMBLIES) $(MAC_FACADE_ASSEMBLIES) $(MONO_ARCHIVE_MAC_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@1 $(Q) ls -1 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@2 $(Q) if ! diff -u .$@1 .$@2; then echo "\n*** There are assemblies in "$(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac " not defined in MAC_ASSEMBLIES or MAC_FACADE_ASSEMBLIES ***\n"; exit 1; fi $(Q) rm -f .$@* mac-45-assemblies-check: $(MAC_BCL_TARGETS) $(Q) rm -f .$@* $(Q) echo $(MAC_4_5_ASSEMBLIES) $(MAC_4_5_FACADE_ASSEMBLIES) $(MONO_ARCHIVE_MAC_4_5_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@1 $(Q) ls -1 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac_net_4_5 $(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac_net_4_5/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@2 $(Q) if ! diff -u .$@1 .$@2; then echo "\n*** There are assemblies in "$(MONO_MAC_SDK_DESTDIR)/mac-bcl/xammac_net_4_5 " not defined in MAC_4_5_ASSEMBLIES or MAC_4_5_FACADE_ASSEMBLIES ***\n"; exit 1; fi $(Q) rm -f .$@* install-bcl-ios: $(IOS_BCL_TARGETS) ios-assemblies-check install-bcl-tvos: $(TVOS_BCL_TARGETS) tvos-assemblies-check install-bcl-watchos: $(WATCHOS_BCL_TARGETS) watchos-assemblies-check install-bcl-mac: $(MAC_BCL_TARGETS) mac-assemblies-check mac-45-assemblies-check install-bcl:: install-bcl-ios install-bcl:: install-bcl-watchos install-bcl:: install-bcl-tvos install-bcl:: install-bcl-mac ### TODO END verify-signature: for file in $(PREFIX)/lib/mono/2.1/*.dll; do \ MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $$file; \ done @MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $(PREFIX)/lib/mono/2.1/monotouch.dll \ @MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $(PREFIX)/lib/mono/2.1/MonoTouch.Dialog.dll \ @MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $(PREFIX)/lib/mono/2.1/MonoTouch.NUnitLite.dll \ @MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $(PREFIX)/lib/mono/2.1/OpenTK.dll \ @MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $(PREFIX)/lib/mono/2.1/OpenTK-10.dll for file in $$(find $(PREFIX)/lib/mono/2.1/Facades -name "*.dll"); do \ MONO_CFG_DIR=$(TOP) $(SYSTEM_SN) -q -v $$file; \ done # # smcs # FIXME: Needed because of broken MonoDevelop assumptions # install-local:: install-smcs all-local:: install-smcs $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/bin/smcs: @mkdir -p $(dir $@) @echo Installing smcs script @echo "#!/bin/bash" > $@ @echo >> $@ @echo 'SMCS=`which mcs`' >> $@ @echo 'if test -z $$SMCS; then' >> $@ @echo " SMCS=/Library/Frameworks/Mono.framework/Versions/Current/bin/mcs" >> $@ @echo "fi" >> $@ @echo 'unset MONO_PATH' >> $@ @echo "\$$SMCS -nostdlib -r:$(abspath $(IOS_TARGETDIR)/$(MONOTOUCH_PREFIX)/lib/mono/2.1/mscorlib.dll) -r:$(abspath $(IOS_TARGETDIR)/$(MONOTOUCH_PREFIX)/lib/mono/2.1/System.dll) \"\$$@\"" >> $@ @chmod +x $@ install-smcs: $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/bin/smcs # # Xamarin.Mac common pieces # install-local:: install-mac-common all-local:: install-mac-common MAC_COMMON_DIRECTORIES = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Versions \ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR) \ MAC_COMMON_TARGETS = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Versions/Current \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Commands \ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/buildinfo \ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/Version \ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/updateinfo \ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/Versions.plist \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Versions/Current: | $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Versions $(Q_LN) ln -hfs $(MAC_INSTALL_VERSION) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Commands: $(Q_LN) ln -hfs $(MAC_TARGETDIR)/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/bin $@ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/buildinfo: $(TOP)/Make.config.inc $(TOP)/.git/index | $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR) $(Q_GEN) echo "Version: $(MAC_PACKAGE_VERSION)" > $@ $(Q) echo "Hash: $(shell git log --oneline -1 --pretty=%h)" >> $@ $(Q) echo "Branch: $(CURRENT_BRANCH)" >> $@ $(Q) echo "Build date: $(shell date '+%Y-%m-%d %H:%M:%S%z')" >> $@ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/updateinfo: $(TOP)/Make.config.inc $(Q) echo "0ab364ff-c0e9-43a8-8747-3afb02dc7731 $(MAC_PACKAGE_UPDATE_ID)" > $@ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/Version: $(TOP)/Make.config.inc $(Q) echo $(MAC_PACKAGE_VERSION) > $@ $(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/Versions.plist: $(TOP)/Versions-mac.plist.in Makefile $(TOP)/Make.config $(TOP)/mk/mono.mk $(TOP)/versions-check.csharp .stamp-$(MONO_BUILD_MODE) $(Q) $(TOP)/versions-check.csharp $< "$(MIN_IOS_SDK_VERSION)" "$(MAX_IOS_DEPLOYMENT_TARGET)" "$(MIN_TVOS_SDK_VERSION)" "$(MAX_TVOS_DEPLOYMENT_TARGET)" "$(MIN_WATCH_OS_VERSION)" "$(MAX_WATCH_DEPLOYMENT_TARGET)" "$(MIN_OSX_SDK_VERSION)" "$(OSX_SDK_VERSION)" $(Q_GEN) sed -e 's/@XCODE_VERSION@/$(XCODE_VERSION)/g' -e "s/@MONO_VERSION@/$(shell cat $(MONO_MAC_SDK_DESTDIR)/mac-mono-version.txt)/g" -e "s/@MIN_XM_MONO_VERSION@/$(MIN_XM_MONO_VERSION)/g" $< > $@ $(MAC_COMMON_DIRECTORIES): $(Q) mkdir -p $@ install-mac-common: $(MAC_COMMON_TARGETS) # # Xamarin.Mac Mono runtime pieces # install-local:: install-mac all-local:: install-mac MAC_DIRECTORIES = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/assemblies/System MAC_TARGETS = \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmonosgen-2.0.a \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-profiler-log.a \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-native-compat.a \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-native-unified.a \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmonosgen-2.0.dylib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libMonoPosixHelper.dylib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-native-compat.dylib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-native-unified.dylib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-2.0.dylib \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-2.0.a \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/pkgconfig/mono-2.pc \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/assemblies/System/System.config \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bmac-mobile-mono \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/%: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib $(Q) $(CP) $(MONO_MAC_SDK_DESTDIR)/mac-libs/$(notdir $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-2.0.dylib $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/libmono-2.0.a: | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib $(Q) ln -sf libmonosgen-2.0$(suffix $@) $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/pkgconfig/mono-2.pc: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib $(Q) mkdir -p $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/pkgconfig $(Q) $(CP) $(MONO_MAC_SDK_DESTDIR)/mac-pkgconfig/mono-2.pc $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/assemblies/System/System.config: mac-System.config | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/assemblies/System $(Q) $(CP) $< $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bmac-mobile-mono: .stamp-$(MONO_BUILD_MODE) | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin $(Q) install -m 0755 $(MONO_MAC_SDK_DESTDIR)/mac-bin/mono-sgen $@ $(MAC_DIRECTORIES): $(Q) mkdir -p $@ install-mac: $(MAC_TARGETS) # # Xamarin.iOS/WatchOS/TVOS common pieces # install-local:: install-ios-common all-local:: install-ios-common IOS_COMMON_DIRECTORIES = \ $(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions \ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX) \ IOS_COMMON_TARGETS = \ $(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current \ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/buildinfo \ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/Version \ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/updateinfo \ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/Versions.plist \ $(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current: | $(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions $(Q_LN) ln -hfs $(IOS_INSTALL_VERSION) $@ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/buildinfo: $(TOP)/Make.config.inc $(TOP)/.git/index | $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX) $(Q_GEN) echo "Version: $(IOS_PACKAGE_VERSION)" > $@ $(Q) echo "Hash: $(shell git log --oneline -1 --pretty=%h)" >> $@ $(Q) echo "Branch: $(CURRENT_BRANCH)" >> $@ $(Q) echo "Build date: $(shell date '+%Y-%m-%d %H:%M:%S%z')" >> $@ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/Version: $(TOP)/Make.config.inc | $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX) $(Q) echo $(IOS_PACKAGE_VERSION) > $@ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/updateinfo: $(TOP)/Make.config.inc $(Q) echo "4569c276-1397-4adb-9485-82a7696df22e $(IOS_PACKAGE_UPDATE_ID)" > $@ $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/Versions.plist: $(TOP)/Versions-ios.plist.in Makefile $(TOP)/Make.config $(TOP)/mk/mono.mk $(TOP)/versions-check.csharp .stamp-$(MONO_BUILD_MODE) $(Q) $(TOP)/versions-check.csharp $< "$(MIN_IOS_SDK_VERSION)" "$(MAX_IOS_DEPLOYMENT_TARGET)" "$(MIN_TVOS_SDK_VERSION)" "$(MAX_TVOS_DEPLOYMENT_TARGET)" "$(MIN_WATCH_OS_VERSION)" "$(MAX_WATCH_DEPLOYMENT_TARGET)" "$(MIN_OSX_SDK_VERSION)" "$(OSX_SDK_VERSION)" $(Q_GEN) sed -e 's/@XCODE_VERSION@/$(XCODE_VERSION)/g' -e "s/@MONO_VERSION@/$(shell cat $(MONO_IOS_SDK_DESTDIR)/ios-mono-version.txt)/g" $< > $@ $(IOS_COMMON_DIRECTORIES): $(Q) mkdir -p $@ install-ios-common: $(IOS_COMMON_TARGETS) # # iPhone simulator Mono runtime pieces # install-local:: install-iphonesimulator all-local:: install-iphonesimulator IPHONESIMULATOR_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib IPHONESIMULATOR_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/usr/lib $(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios-sim/$(notdir $@) $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios-sim/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios-sim/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/ios-sim/Mono.framework $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/ios-sim/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/Frameworks $(IPHONESIMULATOR_DIRECTORIES): $(Q) mkdir -p $@ install-iphonesimulator:: $(IPHONESIMULATOR_TARGETS) # # Watch simulator Mono runtime pieces # install-local:: install-watchsimulator all-local:: install-watchsimulator WATCHSIMULATOR_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib WATCHSIMULATOR_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/usr/lib $(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos-sim/$(notdir $@) $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos-sim/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos-sim/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/watchos-sim/Mono.framework $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/watchos-sim/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/Frameworks $(WATCHSIMULATOR_DIRECTORIES): $(Q) mkdir -p $@ install-watchsimulator: $(WATCHSIMULATOR_TARGETS) # # TV simulator Mono runtime pieces # install-local:: install-tvsimulator all-local:: install-tvsimulator TVSIMULATOR_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib TVSIMULATOR_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/usr/lib $(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos-sim/$(notdir $@) $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos-sim/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos-sim/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) | $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/tvos-sim/Mono.framework $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/tvos-sim/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/Frameworks $(TVSIMULATOR_DIRECTORIES): $(Q) mkdir -p $@ install-tvsimulator: $(TVSIMULATOR_TARGETS) # # iPhone device Mono runtime pieces # install-local:: install-iphoneos all-local:: install-iphoneos IPHONEOS_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib IPHONEOS_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-ee-interp.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-icall-table.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-ilgen.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/usr/lib @#$(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios/$(notdir $@) $@ $(Q_LIPO) lipo $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios/$(notdir $@) $(X86_64_SLICE) -create -output $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/ios/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/ios/Mono.framework $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/ios/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks @# inject x86-64 slice $(Q) mv $@ $@.tmp $(Q_LIPO) lipo $@.tmp $(X86_64_SLICE) -create -output $@ $(Q) rm $@.tmp $(IPHONEOS_DIRECTORIES): $(Q) mkdir -p $@ install-iphoneos: $(IPHONEOS_TARGETS) # # Watch device Mono runtime pieces # install-local:: install-watchos all-local:: install-watchos WATCHOS_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib WATCHOS_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-ee-interp.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-icall-table.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-ilgen.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/usr/lib @#$(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos/$(notdir $@) $@ $(Q_LIPO) lipo $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos/$(notdir $@) $(X86_64_SLICE) -create -output $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/watchos/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/watchos/Mono.framework $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/watchos/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks @# inject x86-64 slice $(Q) mv $@ $@.tmp $(Q_LIPO) lipo $@.tmp $(X86_64_SLICE) -create -output $@ $(Q) rm $@.tmp $(WATCHOS_DIRECTORIES): $(Q) mkdir -p $@ install-watchos: $(WATCHOS_TARGETS) # # TV device Mono runtime pieces # install-local:: install-tvos all-local:: install-tvos TVOS_DIRECTORIES = \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib TVOS_TARGETS = \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmonosgen-2.0.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-profiler-log.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-ee-interp.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-icall-table.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-ilgen.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-native-compat.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-native-unified.a \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmonosgen-2.0.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-native-compat.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-native-unified.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/libmono-profiler-log.dylib \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks/Mono.framework/Mono \ $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib/%: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/usr/lib @#$(Q) $(CP) $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos/$(notdir $@) $@ $(Q_LIPO) lipo $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos/$(notdir $@) $(X86_64_SLICE) -create -output $@ $(Q) if test -d $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos/$(notdir $@).dSYM; then $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-libs/tvos/$(notdir $@).dSYM $(dir $@); fi $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks/Mono.framework/Mono: .stamp-$(MONO_BUILD_MODE) $(X86_64_SLICE_ALL) | $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/tvos/Mono.framework $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks $(Q) $(CP) -R $(MONO_IOS_SDK_DESTDIR)/ios-frameworks/tvos/Mono.framework.dSYM $(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks @# inject x86-64 slice $(Q) mv $@ $@.tmp $(Q_LIPO) lipo $@.tmp $(X86_64_SLICE) -create -output $@ $(Q) rm $@.tmp $(TVOS_DIRECTORIES): $(Q) mkdir -p $@ install-tvos: $(TVOS_TARGETS) # # Cross compilers # # This is the cross aot version of mono. runs on x86 but the jit/aot spits out arm. # # There are two versions of the cross compiler, a 32 bit version targeting arm, and a 64 # bit version targeting arm64. # These are compiled using the mono sdk makefiles # install-local:: install-cross $(MONO_IOS_SDK_DESTDIR)/ios-cross32-release/bin/arm-darwin-mono-sgen: .stamp-$(MONO_BUILD_MODE) $(MONO_IOS_SDK_DESTDIR)/ios-cross64-release/bin/aarch64-darwin-mono-sgen: .stamp-$(MONO_BUILD_MODE) $(MONO_IOS_SDK_DESTDIR)/ios-crosswatch-release/bin/armv7k-unknown-darwin-mono-sgen: .stamp-$(MONO_BUILD_MODE) $(MONO_IOS_SDK_DESTDIR)/ios-crosswatch-release/bin/aarch64-apple-darwin10_ilp32-mono-sgen: .stamp-$(MONO_BUILD_MODE) $(PREFIX)/bin/arm-darwin-mono-sgen: $(MONO_IOS_SDK_DESTDIR)/ios-cross32-release/bin/arm-darwin-mono-sgen | $(PREFIX)/bin $(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@ $(PREFIX)/bin/arm64-darwin-mono-sgen: $(MONO_IOS_SDK_DESTDIR)/ios-cross64-release/bin/aarch64-darwin-mono-sgen | $(PREFIX)/bin $(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@ $(PREFIX)/bin/armv7k-unknown-darwin-mono-sgen: $(MONO_IOS_SDK_DESTDIR)/ios-crosswatch-release/bin/armv7k-unknown-darwin-mono-sgen | $(PREFIX)/bin $(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@ $(PREFIX)/bin/arm64_32-darwin-mono-sgen: $(MONO_IOS_SDK_DESTDIR)/ios-crosswatch64_32-release/bin/aarch64-apple-darwin10_ilp32-mono-sgen | $(PREFIX)/bin $(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@ $(PREFIX)/bin: $(Q) mkdir -p $@ .PHONY: install-cross install-cross: $(PREFIX)/bin/arm-darwin-mono-sgen $(PREFIX)/bin/arm64-darwin-mono-sgen $(PREFIX)/bin/armv7k-unknown-darwin-mono-sgen $(PREFIX)/bin/arm64_32-darwin-mono-sgen # # LLVM # install-local:: install-llvm LLVM64_TARGETS = \ $(PREFIX)/LLVM/bin/opt \ $(PREFIX)/LLVM/bin/llc \ $(MONO_IOS_SDK_DESTDIR)/llvm-llvm64/bin/%: .stamp-$(MONO_BUILD_MODE) $(PREFIX)/LLVM/bin/%: $(MONO_IOS_SDK_DESTDIR)/llvm-llvm64/bin/% | $(PREFIX)/LLVM/bin $(call Q_2,INSTALL ,[LLVM64]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@ $(PREFIX)/LLVM/bin: $(Q) mkdir -p $@ .PHONY: install-llvm64 install-llvm install-llvm: install-llvm64 install-llvm64: $(LLVM64_TARGETS)