2016-04-21 14:18:44 +03:00
TOP = ..
i n c l u d e $( TOP ) / M a k e . c o n f i g
PREFIX = $( abspath $( IOS_DESTDIR) /$( MONOTOUCH_PREFIX) /)
2019-05-12 19:06:06 +03:00
# Keep all intermediate files always.
.SECONDARY :
2022-07-11 21:00:53 +03:00
i f e q ( $( shell arch ) , a r m 6 4 )
DOTNET_ARCH = arm64
e l s e
DOTNET_ARCH = x64
e n d i f
2019-05-12 19:06:06 +03:00
##
## Mono download vs. build
##
download : download -mono
2020-11-11 18:40:06 +03:00
download-mono : \
downloads/$( basename $( MONO_IOS_FILENAME) ) \
downloads/$( basename $( MONO_MAC_FILENAME) ) \
downloads/$( basename $( MONO_MACCATALYST_FILENAME) ) \
2018-12-11 09:48:05 +03:00
2019-04-26 17:44:29 +03:00
downloads/$(basename $(MONO_IOS_FILENAME)) : MONO_URL =$( MONO_IOS_URL )
downloads/$(basename $(MONO_MAC_FILENAME)) : MONO_URL =$( MONO_MAC_URL )
2020-11-11 18:40:06 +03:00
downloads/$(basename $(MONO_MACCATALYST_FILENAME)) : MONO_URL =$( MONO_MACCATALYST_URL )
2019-04-26 17:44:29 +03:00
2019-05-29 15:57:49 +03:00
i n c l u d e $( TOP ) / m k / c o l o r s . m k
2020-03-06 01:43:01 +03:00
DOWNLOADS = \
downloads/$( MONO_IOS_FILENAME) \
downloads/$( MONO_MAC_FILENAME) \
2020-11-11 18:40:06 +03:00
downloads/$( MONO_MACCATALYST_FILENAME) \
2020-03-06 01:43:01 +03:00
2019-04-30 16:56:38 +03:00
# 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.
2020-03-06 01:43:01 +03:00
$(DOWNLOADS) :
2018-12-11 09:48:05 +03:00
$( Q) mkdir -p downloads
$( Q) echo " Downloading $( MONO_URL) ... "
2019-04-30 16:56:38 +03:00
$( 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 \
2019-05-29 15:57:49 +03:00
EC = 0; \
2022-10-20 15:37:59 +03:00
$( CURL_RETRY) $( MONO_URL) --output $@ .tmp || EC = $$ ?; \
2019-05-29 15:57:49 +03:00
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 ; \
2020-10-19 11:50:27 +03:00
if [ [ " x $$ MACIOS_CACHE_DOWNLOADS " != "x" ] ] ; then \
2021-01-11 18:25:56 +03:00
mkdir -p ~/Library/Caches/xamarin-macios/; \
2020-10-19 11:50:27 +03:00
$( CP) $@ .tmp ~/Library/Caches/xamarin-macios/" $( notdir $@ ) " ; \
echo " Cached the download of $( notdir $@ ) in ~/Library/Caches/xamarin-macios " ; \
fi ; \
2019-04-30 16:56:38 +03:00
fi
2018-12-11 09:48:05 +03:00
$( Q) mv $@ .tmp $@
$( Q) echo " Downloaded $( MONO_URL) "
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
downloads/% : downloads /%.7z
2019-04-26 17:44:29 +03:00
$( Q) echo " Unzipping $* ... "
2018-12-11 09:48:05 +03:00
$( Q) rm -Rf $@ .tmp
2019-05-12 19:06:06 +03:00
$( Q) 7z x $< -o$@ .tmp
2020-02-11 00:30:52 +03:00
$( Q) find $@ .tmp -exec touch { } +
2018-12-11 09:48:05 +03:00
$( Q) mv $@ .tmp $@
2019-04-26 17:44:29 +03:00
$( Q) echo " Unzipped $* . "
2018-12-11 09:48:05 +03:00
2020-03-06 01:43:01 +03:00
downloads/% : downloads /%.nupkg
$( Q) echo " Unzipping $* ... "
$( Q) rm -Rf $@ .tmp
$( Q) unzip -d $@ .tmp $<
$( Q) find $@ .tmp -exec touch { } +
$( Q) mv $@ .tmp $@
$( Q) echo " Unzipped $* . "
2022-07-11 21:00:53 +03:00
downloads/$(DOTNET_INSTALL_NAME) : dotnet -install .sh
2022-03-23 10:07:34 +03:00
$( Q) echo " Downloading and installing .NET $( DOTNET_VERSION) into $@ ... "
2022-07-11 21:00:53 +03:00
$( Q) ./dotnet-install.sh --install-dir " $@ .tmp " --version " $( DOTNET_VERSION) " --architecture $( DOTNET_ARCH) --no-path $$ DOTNET_INSTALL_EXTRA_ARGS
2021-06-30 21:02:12 +03:00
$( Q) rm -Rf " $@ "
$( Q) mv " $@ .tmp " " $@ "
2022-03-23 10:07:34 +03:00
$( Q) echo " Downloaded and installed .NET $( DOTNET_VERSION) into $@ . "
2021-06-30 21:02:12 +03:00
2022-03-25 11:01:04 +03:00
# This is just a helpful target to print the url to the .pkg to download and install the current .NET version into the system.
print-dotnet-pkg-urls : dotnet -install .sh
$( Q) rm -f $@ -found-it.stamp
2022-07-11 21:00:53 +03:00
$( Q) for url in $$ ( ./dotnet-install.sh --version " $( DOTNET_VERSION) " --architecture $( DOTNET_ARCH) --no-path $$ DOTNET_INSTALL_EXTRA_ARGS --dry-run | grep URL.*primary: | sed 's/.*primary: //' ) ; do \
2022-03-25 11:01:04 +03:00
pkg = $$ { url/tar.gz/pkg} ; \
2022-10-20 15:37:59 +03:00
if $( CURL) -I " $$ pkg " >/dev/null 2>& 1; then echo " $$ pkg " ; touch $@ -found-it.stamp; break; fi ; \
2022-03-25 11:01:04 +03:00
done
$( Q) if ! test -f $@ -found-it.stamp; then echo "No working urls were found." ; exit 1; fi
$( Q) rm -f $@ -found-it.stamp
2021-06-30 21:02:12 +03:00
dotnet-install.sh : Makefile
2022-10-20 15:37:59 +03:00
$( Q) $( CURL_RETRY) https://dot.net/v1/dotnet-install.sh --output $@ .tmp
2021-06-30 21:02:12 +03:00
$( Q) chmod +x $@ .tmp
$( Q) mv $@ .tmp $@
2020-11-23 11:59:48 +03:00
# Fix the BCL assemblies we get for Mac Catalyst
fix-maccatalyst-assembly/bin/Debug/fix-maccatalyst-assembly.exe : $( wildcard fix -maccatalyst -assembly /*.cs *) Makefile
2021-08-04 10:30:16 +03:00
$( Q) $( SYSTEM_MSBUILD) " /bl: $@ .binlog " /r fix-maccatalyst-assembly/fix-maccatalyst-assembly.csproj $( MSBUILD_VERBOSITY)
2020-11-23 11:59:48 +03:00
d e f i n e F i x M a c C a t a l y s t A s s e m b l y
2021-03-11 00:51:35 +03:00
$(MONO_MACCATALYST_SDK_DESTDIR)/maccat-bcl/monotouch/$(1).dll : .stamp -$( MONO_BUILD_MODE )
2020-11-23 11:59:48 +03:00
2021-03-11 00:51:35 +03:00
downloads/fix-maccatalyst-tmpdir/$(1).dll : $( MONO_MACCATALYST_SDK_DESTDIR ) /maccat -bcl /monotouch /$( 1) .dll Makefile fix -maccatalyst -assembly /bin /Debug /fix -maccatalyst -assembly .exe
2020-11-23 11:59:48 +03:00
$( Q) mkdir -p $$ ( dir $$ @)
$( Q) mono fix-maccatalyst-assembly/bin/Debug/fix-maccatalyst-assembly.exe $$ ( abspath $$ <) $$ ( abspath $$ @) .tmp
$( Q) mv $$ ( abspath $$ @) .tmp $$ ( abspath $$ @)
$(PREFIX)/lib/mono/Xamarin.MacCatalyst/$(1).dll : downloads /fix -maccatalyst -tmpdir /$( 1) .dll | $( PREFIX ) /lib /mono /Xamarin .MacCatalyst
$( Q) $( CP) $$ < $$ @
e n d e f
$( eval $ ( call FixMacCatalystAssembly ,Mono .Security ) )
$( eval $ ( call FixMacCatalystAssembly ,mscorlib ) )
$( eval $ ( call FixMacCatalystAssembly ,System ) )
$( eval $ ( call FixMacCatalystAssembly ,System .Net .Http ) )
2020-05-14 17:45:23 +03:00
.stamp-download-mono : $( TOP ) /Make .config $( TOP ) /mk /mono .mk
$( MAKE) download-mono
2018-12-11 09:48:05 +03:00
$( Q) touch $@
2021-05-21 23:18:25 +03:00
i f d e f C U S T O M _ D O T N E T
DOWNLOAD_DOTNET_VERSION = $( CUSTOM_DOTNET_VERSION)
2021-12-07 13:33:33 +03:00
e l s e
i f n e q ( $( BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION ) , )
DOWNLOAD_DOTNET_VERSION = $( BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION)
e n d i f
2021-05-21 23:18:25 +03:00
e n d i f
2022-09-02 19:26:19 +03:00
.stamp-install-custom-dotnet-runtime-workloads :
2022-09-06 11:21:43 +03:00
@# mono toolchain
2023-03-03 15:17:55 +03:00
$( Q) $( CP) $( TOP) /packages/microsoft.net.workload.mono.toolchain.net7.manifest-$( MONO_TOOLCHAIN_MANIFEST_VERSION_BAND) /$( DOWNLOAD_DOTNET_VERSION) /data/WorkloadManifest.* ./downloads/$( DOTNET_INSTALL_NAME) /sdk-manifests/$( MONO_TOOLCHAIN_MANIFEST_VERSION_BAND) /microsoft.net.workload.mono.toolchain.net7/
$( Q) $( CP) $( TOP) /packages/microsoft.net.workload.mono.toolchain.net6.manifest-$( MONO_TOOLCHAIN_MANIFEST_VERSION_BAND) /$( DOWNLOAD_DOTNET_VERSION) /data/WorkloadManifest.* ./downloads/$( DOTNET_INSTALL_NAME) /sdk-manifests/$( MONO_TOOLCHAIN_MANIFEST_VERSION_BAND) /microsoft.net.workload.mono.toolchain.net6/
2022-09-06 11:21:43 +03:00
@# emscripten, which mono depens on
2023-03-03 15:17:55 +03:00
$( Q) $( CP) $( TOP) /packages/microsoft.net.workload.emscripten.net7.manifest-$( EMSCRIPTEN_MANIFEST_VERSION_BAND) /$( EMSCRIPTEN_MANIFEST_PACKAGE_VERSION) /data/WorkloadManifest.* ./downloads/$( DOTNET_INSTALL_NAME) /sdk-manifests/$( EMSCRIPTEN_MANIFEST_VERSION_BAND) /microsoft.net.workload.emscripten.net7/
$( Q) $( CP) $( TOP) /packages/microsoft.net.workload.emscripten.net6.manifest-$( EMSCRIPTEN_MANIFEST_VERSION_BAND) /$( EMSCRIPTEN_MANIFEST_PACKAGE_VERSION) /data/WorkloadManifest.* ./downloads/$( DOTNET_INSTALL_NAME) /sdk-manifests/$( EMSCRIPTEN_MANIFEST_VERSION_BAND) /microsoft.net.workload.emscripten.net6/
2022-09-06 15:41:21 +03:00
$( Q) touch $@
2022-09-02 19:26:19 +03:00
2022-09-27 09:49:54 +03:00
package-download/all-package-references.csproj : $( TOP ) /.git /HEAD $( TOP ) /.git /index ./create -csproj -for -all -packagereferences .sh
$( Q_GEN) ./create-csproj-for-all-packagereferences.sh --output " $( abspath $@ .tmp) " $( if $( V) ,-v,)
$( Q) mv " $@ .tmp " " $@ "
.stamp-download-dotnet-packages : $( TOP ) /Make .config downloads /$( DOTNET_INSTALL_NAME ) package -download /all -package -references .csproj
2022-03-21 17:56:57 +03:00
$( Q_GEN) cd package-download && $( DOTNET) \
2021-02-22 10:16:41 +03:00
build \
2022-09-27 09:49:54 +03:00
download-packages.csproj \
2021-02-22 10:16:41 +03:00
/t:WriteBundledNETCorePlatformsPackageVersion \
/p:WriteFilePath= $( CURDIR) /BundledNETCorePlatformsPackageVersion.txt \
/p:PackageRuntimeIdentifiers= " $( DOTNET_RUNTIME_IDENTIFIERS) " \
2021-04-20 16:09:56 +03:00
/p:PackageRuntimeIdentifiersCoreCLR= " $( DOTNET_CORECLR_RUNTIME_IDENTIFIERS) " \
2021-05-21 23:18:25 +03:00
/p:CustomDotNetVersion= " $( DOWNLOAD_DOTNET_VERSION) " \
2023-03-03 15:17:55 +03:00
/p:MonoToolChainManifestVersionBand= " $( MONO_TOOLCHAIN_MANIFEST_VERSION_BAND) " \
/p:EmscriptenManifestVersionBand= " $( EMSCRIPTEN_MANIFEST_VERSION_BAND) " \
2021-02-22 10:16:41 +03:00
/bl \
2021-04-20 16:09:56 +03:00
$( DOTNET_BUILD_VERBOSITY)
2022-09-02 19:26:19 +03:00
$( MAKE) .stamp-install-custom-dotnet-runtime-workloads
2021-02-22 10:16:41 +03:00
$( Q) touch $@
2022-06-07 11:11:02 +03:00
.stamp-install-t4 : $( TOP ) /.config /dotnet -tools .json .stamp -download -dotnet -packages
2022-06-09 16:38:59 +03:00
@# https://github.com/dotnet/sdk/issues/16165
$( Q) rm -f ~/.dotnet/toolResolverCache/*/dotnet-t4
2022-06-07 11:11:02 +03:00
$( DOTNET) tool restore
2022-05-25 09:26:51 +03:00
$( Q) touch $@
2021-02-22 10:16:41 +03:00
BundledNETCorePlatformsPackageVersion.txt : .stamp -download -dotnet -packages
2020-03-06 01:43:01 +03:00
DOTNET_DOWNLOADS = \
2022-07-11 21:00:53 +03:00
downloads/$( DOTNET_INSTALL_NAME) \
2021-02-22 10:16:41 +03:00
.stamp-download-dotnet-packages \
2022-05-25 09:26:51 +03:00
.stamp-install-t4 \
2020-03-06 01:43:01 +03:00
dotnet : $( DOTNET_DOWNLOADS )
i f d e f E N A B L E _ D O T N E T
all-local :: $( DOTNET_DOWNLOADS )
e n d i f
2019-05-12 19:06:06 +03:00
clean-local ::
$( Q) rm -Rf downloads .stamp-download-mono
2016-04-21 14:18:44 +03:00
2019-09-16 16:11:49 +03:00
i f e q ( $( MONO_BUILD_FROM_SOURCE ) , )
2019-05-24 20:44:49 +03:00
all-local :: .stamp -download -mono .stamp -mono -ios -sdk -destdir
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
e l s e
2016-10-06 19:56:17 +03:00
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
# 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
- i n c l u d e . d e p s . m o n o . m k
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
.deps.mono.mk : $( TOP ) /Make .config $( TOP ) /mk /mono .mk
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
$( Q) printf 'MONO_DEPENDENCIES += Makefile \\\n' > $@ .tmp
2019-06-11 20:05:11 +03:00
$( 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
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
$( Q) mv $@ .tmp $@
2018-03-23 04:25:00 +03:00
#
# Configuration for the mono sdk makefiles
#
2019-01-17 13:38:26 +03:00
SDK_ARGS = \
2019-09-24 14:40:18 +03:00
XCODE_DIR = $( XCODE_DEVELOPER_ROOT) \
2019-01-17 13:38:26 +03:00
IOS_VERSION = $( IOS_SDK_VERSION) IOS_VERSION_MIN = $( MIN_IOS_SDK_VERSION) \
TVOS_VERSION = $( TVOS_SDK_VERSION) TVOS_VERSION_MIN = $( MIN_TVOS_SDK_VERSION) \
2019-05-27 19:15:55 +03:00
WATCHOS_VERSION = $( WATCH_SDK_VERSION) WATCHOS_VERSION_MIN = $( MIN_WATCHOS_SDK_VERSION) \
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
WATCHOS64_32_VERSION = $( WATCH_SDK_VERSION) WATCHOS64_32_VERSION_MIN = $( MIN_WATCHOS64_32_SDK_VERSION) \
2021-11-22 20:48:05 +03:00
MACOS_VERSION = $( MACOS_SDK_VERSION) MACOS_VERSION_MIN = $( MIN_MACOS_SDK_VERSION)
2018-03-23 04:25:00 +03:00
2019-05-12 19:06:06 +03:00
SDK_CONFIG = $( MONO_PATH) /sdks/Make.config
2018-03-23 04:25:00 +03:00
SDK_BUILDDIR = $( MONO_PATH) /sdks/builds
2019-05-12 19:06:06 +03:00
$(SDK_CONFIG) :
Bump to mono:2019-10 (#7192)
## Miscellaneous fixes
* Fixed
`/Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/builds/mono-ios-sdk-destdir/ios-sources/external/linker/src/linker/Linker.Steps/OutputStep.cs(110,15): error CS0246: The type or namespace name ‘OutputException’ could not be found (are you missing a using directive or an assembly reference?) [/Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mmp/mmp.csproj]`
* Changed the name of the method that is used from linker. Because of this commit https://github.com/mono/linker/commit/6be26771b9bc6d40305a8f005d38f08dfa423252
* Added `OutputException.cs` file on `mtouch.csproj`.
* Removing enter_gc_safe and exit_gc_safe because now it's already gc_safe in this part of code, after a mono change.
* Added known exceptions to LLVM exception list.
* Needs `ifdef` because of this https://github.com/mono/mono/pull/17260.
* Bump MIN_MONO_VERSION to 6.8.0.41 and point MIN_MONO_URL to the PR.
* Add ENABLE_IOS=1 and ENABLE_MAC=1.
* Added switch to disable packaged mono build
* [Tests] Ignore tests that fail on 32b.
Ignore the test on 32b, and filled issue: https://github.com/mono/mono/issues/17752
* [Tests] Ignore a couple of tests causing OOM.
Hopefully fixes https://github.com/xamarin/maccore/issues/1659 for good.
* Ignore `MM0135` test on Catalina+ because it needs Xcode 9.4.
* [monotouch-test] Add null checks for teardown when test didn't run because of a too early OS version.
* [CFNetwork]: Http 2.0 requires OS X 10.11 or later.
Check whether `_HTTPVersion2_0` is available and fallback to HTTP 1.1 otherwise.
## Bring HttpClient from CoreFX
* #7346
* This bumps Mono to use https://github.com/mono/mono/pull/17645 (which is the 2019-10 backport
of https://github.com/mono/mono/pull/17628).
* The big user-visible change is in regards to certificate validation, everything below are just
some minor adjustments to tests.
### SocketsHttpHandler
CoreFX uses a completely new `HttpClientHandler` implementation called `SocketsHttpHandler`,
which you can find at https://github.com/dotnet/corefx/tree/release/3.0/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler.
Since this is not based on the web stack anymore, it does not use any of the related APIs such
as `ServicePointManager` or `WebException`.
### Certificate Validation Changes
There is a new API called `HttpClientHandler.ServerCertificateCustomValidationCallback`.
- https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=netframework-4.8
- https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L154
- https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Windows.cs#L383
The `ServicePointManager.ServerCertificateValidationCallback` is no longer invoked and on
certificate validation failure, `AuthenticationException` (from `System.Security.Authentication`)
is thrown instead of `WebException`.
At the moment, the `NSUrlSessionHandler` still uses it's own validation callback and also still
throws `WebException` on failure; we should probably look into making this consistent with the
other handlers.
### Minor adjustments related to internal Mono APIs
* `HttpContent.SerializeToStreamAsync()` is now `protected` (changed from `protected internal`).
- src/Foundation/NSUrlSessionHandler.cs: changed overload accordingly.
- src/System.Net.Http/CFContentStream.cs: likewise.
* `HttpHeaders.GetKnownHeaderKind()` is an internal Mono API.
There is a new internal API called `System.Net.Http.PlatformHelper.IsContentHeader(key)`
which exists in both the old as well as the new implementation.
The correct way of doing it with the CoreFX handler is
`HeaderDescriptor.TryGet (key, out var descriptor) && descriptor.HeaderType == HttpHeaderType.Content`
### Minor adjustments to tests.
* `HttpClientHandler.MaxRequestContentBufferSize` is now longer supported, you can set it to
any non-negative value, the getter will always return 0.
See https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Core.cs#L18.
- tests/linker/ios/link sdk/HttpClientHandlerTest.cs: removed assertion from test.
* `HttpMessageInvoker.handler` is a `protected private` field - in the CoreFX handler, it is
called `_handler` and `private`. This is accessed via reflection by some of the tests, which are
now using the new name.
- tests/mmptest/src/MMPTest.cs: here
- tests/mtouch/MTouch.cs: here
* tests/monotouch-test/System.Net.Http/MessageHandlers.cs:
Adjust `RejectSslCertificatesServicePointManager` to reflect the certificate validation
changes described above.
- FIXME: There was an `Assert.Ignore()` related to `NSUrlSessionHandler` and macOS 10.10;
I removed that to reenable the test because the description linked to an old issue in
the private repo that was referenced by several "Merged" PR's, so it looked to me that
this might have already been fixed - and I also didn't see why it would fail there.
2019-12-04 23:10:32 +03:00
echo "ENABLE_IOS=1" >> $@
echo "ENABLE_MAC=1" >> $@
2021-03-11 00:51:35 +03:00
echo "ENABLE_MACCAT=1" >> $@
Bump to mono:2019-10 (#7192)
## Miscellaneous fixes
* Fixed
`/Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/builds/mono-ios-sdk-destdir/ios-sources/external/linker/src/linker/Linker.Steps/OutputStep.cs(110,15): error CS0246: The type or namespace name ‘OutputException’ could not be found (are you missing a using directive or an assembly reference?) [/Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mmp/mmp.csproj]`
* Changed the name of the method that is used from linker. Because of this commit https://github.com/mono/linker/commit/6be26771b9bc6d40305a8f005d38f08dfa423252
* Added `OutputException.cs` file on `mtouch.csproj`.
* Removing enter_gc_safe and exit_gc_safe because now it's already gc_safe in this part of code, after a mono change.
* Added known exceptions to LLVM exception list.
* Needs `ifdef` because of this https://github.com/mono/mono/pull/17260.
* Bump MIN_MONO_VERSION to 6.8.0.41 and point MIN_MONO_URL to the PR.
* Add ENABLE_IOS=1 and ENABLE_MAC=1.
* Added switch to disable packaged mono build
* [Tests] Ignore tests that fail on 32b.
Ignore the test on 32b, and filled issue: https://github.com/mono/mono/issues/17752
* [Tests] Ignore a couple of tests causing OOM.
Hopefully fixes https://github.com/xamarin/maccore/issues/1659 for good.
* Ignore `MM0135` test on Catalina+ because it needs Xcode 9.4.
* [monotouch-test] Add null checks for teardown when test didn't run because of a too early OS version.
* [CFNetwork]: Http 2.0 requires OS X 10.11 or later.
Check whether `_HTTPVersion2_0` is available and fallback to HTTP 1.1 otherwise.
## Bring HttpClient from CoreFX
* #7346
* This bumps Mono to use https://github.com/mono/mono/pull/17645 (which is the 2019-10 backport
of https://github.com/mono/mono/pull/17628).
* The big user-visible change is in regards to certificate validation, everything below are just
some minor adjustments to tests.
### SocketsHttpHandler
CoreFX uses a completely new `HttpClientHandler` implementation called `SocketsHttpHandler`,
which you can find at https://github.com/dotnet/corefx/tree/release/3.0/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler.
Since this is not based on the web stack anymore, it does not use any of the related APIs such
as `ServicePointManager` or `WebException`.
### Certificate Validation Changes
There is a new API called `HttpClientHandler.ServerCertificateCustomValidationCallback`.
- https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=netframework-4.8
- https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L154
- https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Windows.cs#L383
The `ServicePointManager.ServerCertificateValidationCallback` is no longer invoked and on
certificate validation failure, `AuthenticationException` (from `System.Security.Authentication`)
is thrown instead of `WebException`.
At the moment, the `NSUrlSessionHandler` still uses it's own validation callback and also still
throws `WebException` on failure; we should probably look into making this consistent with the
other handlers.
### Minor adjustments related to internal Mono APIs
* `HttpContent.SerializeToStreamAsync()` is now `protected` (changed from `protected internal`).
- src/Foundation/NSUrlSessionHandler.cs: changed overload accordingly.
- src/System.Net.Http/CFContentStream.cs: likewise.
* `HttpHeaders.GetKnownHeaderKind()` is an internal Mono API.
There is a new internal API called `System.Net.Http.PlatformHelper.IsContentHeader(key)`
which exists in both the old as well as the new implementation.
The correct way of doing it with the CoreFX handler is
`HeaderDescriptor.TryGet (key, out var descriptor) && descriptor.HeaderType == HttpHeaderType.Content`
### Minor adjustments to tests.
* `HttpClientHandler.MaxRequestContentBufferSize` is now longer supported, you can set it to
any non-negative value, the getter will always return 0.
See https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Core.cs#L18.
- tests/linker/ios/link sdk/HttpClientHandlerTest.cs: removed assertion from test.
* `HttpMessageInvoker.handler` is a `protected private` field - in the CoreFX handler, it is
called `_handler` and `private`. This is accessed via reflection by some of the tests, which are
now using the new name.
- tests/mmptest/src/MMPTest.cs: here
- tests/mtouch/MTouch.cs: here
* tests/monotouch-test/System.Net.Http/MessageHandlers.cs:
Adjust `RejectSslCertificatesServicePointManager` to reflect the certificate validation
changes described above.
- FIXME: There was an `Assert.Ignore()` related to `NSUrlSessionHandler` and macOS 10.10;
I removed that to reenable the test because the description linked to an old issue in
the private repo that was referenced by several "Merged" PR's, so it looked to me that
this might have already been fixed - and I also didn't see why it would fail there.
2019-12-04 23:10:32 +03:00
2018-03-23 04:25:00 +03:00
2019-05-12 19:06:06 +03:00
i f d e f D I S A B L E _ B U I L D S _ M A K E F I L E _ D E P
BUILDS_MAKEFILE_DEP =
e l s e
BUILDS_MAKEFILE_DEP = Makefile
e n d i f
.stamp-configure-mono : $( SDK_CONFIG )
2019-09-16 15:30:59 +03:00
ulimit -n 4096 && $( MAKE) -C $( SDK_BUILDDIR) configure-ios configure-mac $( SDK_ARGS)
2019-05-12 19:06:06 +03:00
$( Q) touch $@
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
.stamp-compile-mono : .stamp -configure -mono $( MONO_DEPENDENCIES ) $( BUILDS_MAKEFILE_DEP ) $( TOP ) /Make .config $( TOP ) /mk /mono .mk
2019-09-16 15:52:23 +03:00
$( MAKE) -C $( SDK_BUILDDIR) package-ios package-ios-bcl $( SDK_ARGS)
$( MAKE) -C $( SDK_BUILDDIR) package-mac package-mac-bcl $( SDK_ARGS)
2021-03-11 00:51:35 +03:00
$( MAKE) -C $( SDK_BUILDDIR) package-maccat package-maccat-bcl $( SDK_ARGS)
2019-05-12 19:06:06 +03:00
$( Q) touch $@
clean-local ::
$( MAKE) -C $( SDK_BUILDDIR) clean $( SDK_ARGS)
$( Q) rm -f .stamp-compile-mono
2019-05-24 20:44:49 +03:00
all-local :: .stamp -compile -mono .stamp -mono -ios -sdk -destdir
2019-05-12 19:06:06 +03:00
e n d i f
2019-05-24 20:44:49 +03:00
.stamp-mono-ios-sdk-destdir : .stamp -$( MONO_BUILD_MODE )
ln -sf $( MONO_IOS_SDK_DESTDIR) mono-ios-sdk-destdir
$( Q) touch $@
2019-05-12 19:06:06 +03:00
i f n d e f D I S A B L E _ S T R I P
INSTALL_STRIP_FLAG = -s
e n d i f
#
2020-11-23 16:46:11 +03:00
# Xamarin.iOS/WatchOS/TVOS/Mac/MacCatalyst BCL assemblies
2019-05-12 19:06:06 +03:00
#
install-local :: install -bcl
all-local :: install -bcl
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 \
2019-10-02 14:59:39 +03:00
System.Data.DataSetExtensions \
2019-05-12 19:06:06 +03:00
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 = \
2016-04-21 14:18:44 +03:00
I18N \
I18N.CJK \
I18N.MidEast \
I18N.Other \
I18N.Rare \
I18N.West \
mscorlib \
Microsoft.CSharp \
2019-01-31 18:39:34 +03:00
Mono.CSharp \
2016-04-21 14:18:44 +03:00
Mono.CompilerServices.SymbolWriter \
Mono.Data.Sqlite \
Mono.Data.Tds \
Mono.Security \
System.ComponentModel.Composition \
System.ComponentModel.DataAnnotations \
System.Core \
System.Data.Services.Client \
2019-10-02 14:59:39 +03:00
System.Data.DataSetExtensions \
2016-04-21 14:18:44 +03:00
System.Data \
2016-08-12 21:50:10 +03:00
System.IdentityModel \
2016-04-21 14:18:44 +03:00
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 \
2016-08-18 17:47:15 +03:00
System.Security \
2016-07-21 22:24:22 +03:00
System.Reflection.Context \
2016-09-19 23:43:58 +03:00
System.Net.Http.WinHttpHandler \
System.Numerics.Vectors
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
MAC_4_5_ASSEMBLIES = \
$( MAC_ASSEMBLIES) \
2016-04-21 14:18:44 +03:00
Mono.Messaging \
Mono.Posix \
System.Configuration \
System.Configuration.Install \
System.Data.Linq \
System.EnterpriseServices \
System.IdentityModel.Selectors \
System.Messaging \
2016-08-18 17:47:15 +03:00
System.Runtime.Serialization.Formatters.Soap
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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
2016-04-21 14:18:44 +03:00
TVOS_ASSEMBLIES = $( IOS_ASSEMBLIES)
2016-10-03 15:57:32 +03:00
WATCHOS_ASSEMBLIES = $( filter-out Mono.Security Mono.Data.Tds,$( IOS_ASSEMBLIES) )
2020-11-23 16:46:11 +03:00
MACCATALYST_ASSEMBLIES = $( IOS_ASSEMBLIES)
2019-05-12 19:06:06 +03:00
IOS_REPL_ASSEMBLIES = mscorlib System System.Core System.Xml Mono.CSharp
2016-04-21 14:18:44 +03:00
TVOS_REPL_ASSEMBLIES = $( IOS_REPL_ASSEMBLIES)
WATCHOS_REPL_ASSEMBLIES = $( IOS_REPL_ASSEMBLIES)
2020-11-23 16:46:11 +03:00
MACCATALYST_REPL_ASSEMBLIES = $( IOS_REPL_ASSEMBLIES)
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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
2020-11-23 16:46:11 +03:00
MACCATALYST_FACADE_ASSEMBLIES = $( COMMON_FACADE_ASSEMBLIES) $( MOBILE_ADDITIONAL_FACADE_ASSEMBLIES)
2019-05-12 19:06:06 +03:00
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 \
2016-07-19 12:12:00 +03:00
$( PREFIX) /lib/mono/Xamarin.iOS/Facades \
2019-05-12 19:06:06 +03:00
$( PREFIX) /lib/mono/Xamarin.iOS/repl
WATCHOS_BCL_DIRECTORIES = \
$( PREFIX) /lib/mono/Xamarin.WatchOS \
2016-04-21 14:18:44 +03:00
$( PREFIX) /lib/mono/Xamarin.WatchOS/Facades \
2019-05-12 19:06:06 +03:00
$( PREFIX) /lib/mono/Xamarin.WatchOS/repl
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
TVOS_BCL_DIRECTORIES = \
$( PREFIX) /lib/mono/Xamarin.TVOS \
2016-04-21 14:18:44 +03:00
$( PREFIX) /lib/mono/Xamarin.TVOS/Facades \
2019-05-12 19:06:06 +03:00
$( PREFIX) /lib/mono/Xamarin.TVOS/repl
2020-11-23 16:46:11 +03:00
MACCATALYST_BCL_DIRECTORIES = \
$( PREFIX) /lib/mono/Xamarin.MacCatalyst \
$( PREFIX) /lib/mono/Xamarin.MacCatalyst/Facades \
$( PREFIX) /lib/mono/Xamarin.MacCatalyst/repl
2019-05-12 19:06:06 +03:00
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
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
NO_PDB_ASSEMBLIES = System.Windows System.Xml.Serialization
MAC_NO_PDB_ASSEMBLIES = System.Windows System.Xml.Serialization
IOS_BCL_TARGETS = \
2016-04-21 14:18:44 +03:00
$( foreach file,$( IOS_ASSEMBLIES) ,$( PREFIX) /lib/mono/2.1/$( file) .dll) \
2019-05-12 19:06:06 +03:00
$( foreach file,$( filter-out $( NO_PDB_ASSEMBLIES) ,$( IOS_ASSEMBLIES) ) ,$( PREFIX) /lib/mono/2.1/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
$( foreach file,$( IOS_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.iOS/$( file) .dll) \
2019-05-12 19:06:06 +03:00
$( foreach file,$( filter-out $( NO_PDB_ASSEMBLIES) ,$( IOS_ASSEMBLIES) ) ,$( PREFIX) /lib/mono/Xamarin.iOS/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
$( foreach file,$( IOS_FACADE_ASSEMBLIES) ,$( PREFIX) /lib/mono/2.1/Facades/$( file) .dll) \
2016-07-19 12:12:00 +03:00
$( foreach file,$( IOS_FACADE_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.iOS/Facades/$( file) .dll) \
2016-04-21 14:18:44 +03:00
$( foreach file,$( IOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/2.1/repl/$( file) .dll) \
2016-12-21 12:36:17 +03:00
$( foreach file,$( IOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/2.1/repl/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
$( foreach file,$( IOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.iOS/repl/$( file) .dll) \
2016-12-21 12:36:17 +03:00
$( foreach file,$( IOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.iOS/repl/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
WATCHOS_BCL_TARGETS = \
2016-04-21 14:18:44 +03:00
$( foreach file,$( WATCHOS_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.WatchOS/$( file) .dll) \
2019-05-12 19:06:06 +03:00
$( foreach file,$( filter-out $( NO_PDB_ASSEMBLIES) ,$( WATCHOS_ASSEMBLIES) ) ,$( PREFIX) /lib/mono/Xamarin.WatchOS/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
$( 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) \
2016-12-21 12:36:17 +03:00
$( foreach file,$( WATCHOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.WatchOS/repl/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
TVOS_BCL_TARGETS = \
2016-04-21 14:18:44 +03:00
$( foreach file,$( TVOS_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.TVOS/$( file) .dll) \
2019-05-12 19:06:06 +03:00
$( foreach file,$( filter-out $( NO_PDB_ASSEMBLIES) ,$( TVOS_ASSEMBLIES) ) ,$( PREFIX) /lib/mono/Xamarin.TVOS/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
$( 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) \
2016-12-21 12:36:17 +03:00
$( foreach file,$( TVOS_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.TVOS/repl/$( file) .pdb) \
2016-04-21 14:18:44 +03:00
2020-11-23 16:46:11 +03:00
MACCATALYST_BCL_TARGETS = \
$( foreach file,$( MACCATALYST_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.MacCatalyst/$( file) .dll) \
$( foreach file,$( filter-out $( NO_PDB_ASSEMBLIES) ,$( MACCATALYST_ASSEMBLIES) ) ,$( PREFIX) /lib/mono/Xamarin.MacCatalyst/$( file) .pdb) \
$( foreach file,$( MACCATALYST_FACADE_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.MacCatalyst/Facades/$( file) .dll) \
# the mono archive doesn't have the repl assemblies yet
MACCATALYST_BCL_TARGETS_DISABLED = \
$( foreach file,$( MACCATALYST_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.MacCatalyst/repl/$( file) .dll) \
$( foreach file,$( MACCATALYST_REPL_ASSEMBLIES) ,$( PREFIX) /lib/mono/Xamarin.MacCatalyst/repl/$( file) .pdb) \
2019-05-12 19:06:06 +03:00
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) \
2016-09-16 21:02:25 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2019-05-12 20:55:43 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2019-05-12 20:55:43 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2019-05-12 20:55:43 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2020-11-23 16:46:11 +03:00
$(PREFIX)/lib/mono/Xamarin.MacCatalyst/Facades/% : .stamp -$( MONO_BUILD_MODE ) | $( PREFIX ) /lib /mono /Xamarin .MacCatalyst /Facades
$( Q) install -m 0755 $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch/Facades/$( notdir $@ ) $@
$(PREFIX)/lib/mono/Xamarin.MacCatalyst/repl/% : .stamp -$( MONO_BUILD_MODE ) | $( PREFIX ) /lib /mono /Xamarin .MacCatalyst /repl
$( Q) install -m 0755 $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch_runtime/$( notdir $@ ) $@
$(PREFIX)/lib/mono/Xamarin.MacCatalyst/% : .stamp -$( MONO_BUILD_MODE ) | $( PREFIX ) /lib /mono /Xamarin .MacCatalyst
$( Q) install -m 0755 $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch/$( notdir $@ ) $@
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 $@ ) $@
2020-11-23 16:46:11 +03:00
$(IOS_BCL_DIRECTORIES) $(WATCHOS_BCL_DIRECTORIES) $(TVOS_BCL_DIRECTORIES) $(MAC_BCL_DIRECTORIES) $(MACCATALYST_BCL_DIRECTORIES) :
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
$( Q) mkdir -p $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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 )
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
$( 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
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
watchos-assemblies-check : $( WATCHOS_BCL_TARGETS )
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
$( 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
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
tvos-assemblies-check : $( TVOS_BCL_TARGETS )
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
$( 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
2019-05-12 20:55:43 +03:00
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
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 .$@ *
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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 .$@ *
2016-04-21 14:18:44 +03:00
2020-11-23 16:46:11 +03:00
maccatalyst-assemblies-check : $( MACCATALYST_BCL_TARGETS )
$( Q) rm -f .$@ *
$( Q) echo $( MACCATALYST_ASSEMBLIES) $( MACCATALYST_FACADE_ASSEMBLIES) $( MONO_ARCHIVE_IOS_IGNORED_ASSEMBLIES) | tr ' ' '\n' | sort > .$@ 1
$( Q) ls -1 $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch/Facades | grep dll$$ | sed 's/[.]dll//' | sort > .$@ 2
$( Q) if ! diff -u .$@ 1 .$@ 2; then echo "\n*** There are assemblies in " $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-bcl/monotouch" not defined in MACCATALYST_ASSEMBLIES or MACCATALYST_FACADE_ASSEMBLIES ***\n" ; exit 1; fi
$( Q) rm -f .$@ *
2019-05-12 19:06:06 +03:00
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
2020-11-23 16:46:11 +03:00
install-bcl-maccatalyst : $( MACCATALYST_BCL_TARGETS ) maccatalyst -assemblies -check
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
install-bcl :: install -bcl -ios
install-bcl :: install -bcl -watchos
install-bcl :: install -bcl -tvos
install-bcl :: install -bcl -mac
2020-11-23 16:46:11 +03:00
install-bcl :: install -bcl -maccatalyst
2019-05-12 19:06:06 +03:00
### TODO END
2016-04-21 14:18:44 +03:00
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
2019-05-12 19:06:06 +03:00
for file in $$ ( find $( PREFIX) /lib/mono/2.1/Facades -name "*.dll" ) ; do \
MONO_CFG_DIR = $( TOP) $( SYSTEM_SN) -q -v $$ file; \
2016-04-21 14:18:44 +03:00
done
#
2019-05-12 19:06:06 +03:00
# smcs
# FIXME: Needed because of broken MonoDevelop assumptions
2016-04-21 14:18:44 +03:00
#
2019-05-12 19:06:06 +03:00
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 >> $@
2020-05-13 09:49:26 +03:00
@echo " echo 'This script ( $$ 0) is obsolete. Use csc to compile instead.' " >> $@
@echo "exit 1" >> $@
2019-05-12 19:06:06 +03:00
@chmod +x $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
install-smcs : $( IOS_DESTDIR ) /$( MONOTOUCH_PREFIX ) /bin /smcs
2016-04-21 14:18:44 +03:00
2018-03-23 04:25:00 +03:00
#
2019-05-12 19:06:06 +03:00
# Xamarin.Mac common pieces
2018-03-23 04:25:00 +03:00
#
2019-05-12 19:06:06 +03:00
install-local :: install -mac -common
all-local :: install -mac -common
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
MAC_COMMON_DIRECTORIES = \
$( MAC_DESTDIR) $( MAC_FRAMEWORK_DIR) /Versions \
$( MAC_DESTDIR) /$( MAC_FRAMEWORK_CURRENT_DIR) \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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 \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Versions/Current : | $( MAC_DESTDIR ) $( MAC_FRAMEWORK_DIR ) /Versions
$( Q_LN) ln -hfs $( MAC_INSTALL_VERSION) $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(MAC_DESTDIR)$(MAC_FRAMEWORK_DIR)/Commands :
$( Q_LN) ln -hfs $( MAC_TARGETDIR) /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/bin $@
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
2019-05-12 19:06:06 +03:00
$(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' ) " >> $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/updateinfo : $( TOP ) /Make .config .inc
$( Q) echo " 0ab364ff-c0e9-43a8-8747-3afb02dc7731 $( MAC_PACKAGE_UPDATE_ID) " > $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(MAC_DESTDIR)/$(MAC_FRAMEWORK_CURRENT_DIR)/Version : $( TOP ) /Make .config .inc
$( Q) echo $( MAC_PACKAGE_VERSION) > $@
2016-04-21 14:18:44 +03:00
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
$(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 )
2021-11-22 20:48:05 +03:00
$( 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_MACOS_SDK_VERSION) " " $( MACOS_SDK_VERSION) " " $( MIN_MACCATALYST_SDK_VERSION) " " $( MACCATALYST_SDK_VERSION) "
2019-05-12 19:06:06 +03:00
$( 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 " $< > $@
2018-10-15 22:39:29 +03:00
2020-05-13 16:23:29 +03:00
$(DOTNET_DESTDIR)/$(MACOS_NUGET).Sdk/Versions.plist : $( MAC_DESTDIR ) /$( MAC_FRAMEWORK_CURRENT_DIR ) /Versions .plist | $( DOTNET_DESTDIR ) /$( MACOS_NUGET ) .Sdk
$( Q) $( CP) $< $@
2021-05-05 04:36:48 +03:00
$(DOTNET_DESTDIR)/$(MACOS_NUGET).Sdk/tools/buildinfo : $( MAC_DESTDIR ) /$( MAC_FRAMEWORK_CURRENT_DIR ) /buildinfo | $( DOTNET_DESTDIR ) /$( MACOS_NUGET ) .Sdk /tools
$( Q) $( CP) $< $@
2019-05-12 19:06:06 +03:00
$(MAC_COMMON_DIRECTORIES) :
$( Q) mkdir -p $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
install-mac-common : $( MAC_COMMON_TARGETS )
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
2019-05-12 19:06:06 +03:00
#
# Xamarin.Mac Mono runtime pieces
#
install-local :: install -mac
all-local :: install -mac
2018-03-23 04:25:00 +03:00
2019-05-12 19:06:06 +03:00
MAC_DIRECTORIES = \
$( MAC_DESTDIR) $( MAC_FRAMEWORK_CURRENT_DIR) /bin \
$( MAC_DESTDIR) $( MAC_FRAMEWORK_CURRENT_DIR) /lib \
2020-04-16 15:19:45 +03:00
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /etc/mono/assemblies/System \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /Frameworks \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/pkgconfig \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
MAC_TARGETS = \
2020-04-16 15:19:45 +03:00
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmonosgen-2.0.a \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-profiler-log.a \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-native-compat.a \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-native-unified.a \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmonosgen-2.0.dylib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libMonoPosixHelper.dylib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-native-compat.dylib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-native-unified.dylib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-2.0.dylib \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/libmono-2.0.a \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /lib/pkgconfig/mono-2.pc \
$( MAC_DESTDIR) $( XAMARIN_MACOS_SDK) /etc/mono/assemblies/System/System.config \
2020-02-25 08:51:12 +03:00
$( MAC_DESTDIR) $( MAC_FRAMEWORK_CURRENT_DIR) /bin/mono-sgen \
Xamarin.Mac native Apple Silicon targetting support (#10115)
* Add support for Xamarin.Mac arm64
* Add compile product definition task
Xamarin.Mac can be provided with a ProductDefinition file for the generated pkg. Normally, providing a product definition was optional. However, with Apple Silicon, we have an extra issue : `productbuild` needs to know what architectures your package target. If not provided with them, it will guess to the best of its abilities. However, on Catalina and lower, the guess is x86_64, even if you have an arm64 slice. To fix this, we add a new task to compile the product definition and use this file to create the pkg. If you provide your own Product Definition, we can check and warn if the architectures don't match what we expect. If the file doesn't exist or there is no architecture, we set it ourselves based on our target architectures.
* Don't reference dynamic objC_send on arm64
When building in debug, we currently try to link dynamic objC_send symbols when targeting a 64-bit architecture. However, this is actually only defined on Intel architectures, not on arm64, so we end up failing because we're referring symbols that don't exist. Rework the `GetRequiredSymbols` to take an abi, and tag those symbols to only be valid on i386/x86_64, so they don't get referred at all when building on arm64, but still get referred in x86_64.
* Fix improper delete/move with already existing directories
* Fix stret requirement for Xamarin.Mac in arm64.
The generator supposes that we're running in x64 mode, refactor to take into account the possibility of running in arm64.
* Implement OS version generation in Product.plist, based on MinimumSystemVersion of the app
* Re-generalize some mmp registrar rules
`Microsoft.macOS.registrar` was missed by the current rule set
* Fix mmp tests
* Set E7072 as not translated
Tests were failing otherwise
* Rename Xamarin.Mac lib/x86_64 folder to 64bits (currently all targeted archs are the same)
* Fix style issues
* Fix `ToLower` usage for invariant usage
* Fix xtro-sharpie test
2021-03-18 04:48:02 +03:00
$( MAC_DESTDIR) $( MAC_FRAMEWORK_CURRENT_DIR) /bin/aarch64-darwin-mono-sgen \
2016-04-21 14:18:44 +03:00
2020-04-16 15:19:45 +03:00
$(MAC_DESTDIR)$(XAMARIN_MACOS_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( MAC_DESTDIR ) $( XAMARIN_MACOS_SDK ) /lib
2019-05-12 19:06:06 +03:00
$( Q) $( CP) $( MONO_MAC_SDK_DESTDIR) /mac-libs/$( notdir $@ ) $@
2016-04-21 14:18:44 +03:00
2020-04-16 15:19:45 +03:00
$(MAC_DESTDIR)$(XAMARIN_MACOS_SDK)/lib/libmono-2.0.dylib $(MAC_DESTDIR)$(XAMARIN_MACOS_SDK)/lib/libmono-2.0.a : | $( MAC_DESTDIR ) $( XAMARIN_MACOS_SDK ) /lib
2019-05-12 19:06:06 +03:00
$( Q) ln -sf libmonosgen-2.0$( suffix $@ ) $@
2016-04-21 14:18:44 +03:00
2020-04-16 15:19:45 +03:00
$(MONO_MAC_SDK_DESTDIR)/mac-pkgconfig/mono-2.pc : .stamp -$( MONO_BUILD_MODE )
2016-04-21 14:18:44 +03:00
2020-04-16 15:19:45 +03:00
$(MAC_DESTDIR)$(XAMARIN_MACOS_SDK)/lib/pkgconfig/mono-2.pc : $( MONO_MAC_SDK_DESTDIR ) /mac -pkgconfig /mono -2.pc | $( MAC_DESTDIR ) $( XAMARIN_MACOS_SDK ) /lib /pkgconfig
$( Q) $( CP) $< $@
$(MAC_DESTDIR)$(XAMARIN_MACOS_SDK)/etc/mono/assemblies/System/System.config : mac -System .config | $( MAC_DESTDIR ) $( XAMARIN_MACOS_SDK ) /etc /mono /assemblies /System
2019-05-12 19:06:06 +03:00
$( Q) $( CP) $< $@
2016-04-21 14:18:44 +03:00
2020-02-25 08:51:12 +03:00
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/mono-sgen : .stamp -$( MONO_BUILD_MODE ) | $( MAC_DESTDIR ) $( MAC_FRAMEWORK_CURRENT_DIR ) /bin
2019-05-12 19:06:06 +03:00
$( Q) install -m 0755 $( MONO_MAC_SDK_DESTDIR) /mac-bin/mono-sgen $@
2016-04-21 14:18:44 +03:00
Xamarin.Mac native Apple Silicon targetting support (#10115)
* Add support for Xamarin.Mac arm64
* Add compile product definition task
Xamarin.Mac can be provided with a ProductDefinition file for the generated pkg. Normally, providing a product definition was optional. However, with Apple Silicon, we have an extra issue : `productbuild` needs to know what architectures your package target. If not provided with them, it will guess to the best of its abilities. However, on Catalina and lower, the guess is x86_64, even if you have an arm64 slice. To fix this, we add a new task to compile the product definition and use this file to create the pkg. If you provide your own Product Definition, we can check and warn if the architectures don't match what we expect. If the file doesn't exist or there is no architecture, we set it ourselves based on our target architectures.
* Don't reference dynamic objC_send on arm64
When building in debug, we currently try to link dynamic objC_send symbols when targeting a 64-bit architecture. However, this is actually only defined on Intel architectures, not on arm64, so we end up failing because we're referring symbols that don't exist. Rework the `GetRequiredSymbols` to take an abi, and tag those symbols to only be valid on i386/x86_64, so they don't get referred at all when building on arm64, but still get referred in x86_64.
* Fix improper delete/move with already existing directories
* Fix stret requirement for Xamarin.Mac in arm64.
The generator supposes that we're running in x64 mode, refactor to take into account the possibility of running in arm64.
* Implement OS version generation in Product.plist, based on MinimumSystemVersion of the app
* Re-generalize some mmp registrar rules
`Microsoft.macOS.registrar` was missed by the current rule set
* Fix mmp tests
* Set E7072 as not translated
Tests were failing otherwise
* Rename Xamarin.Mac lib/x86_64 folder to 64bits (currently all targeted archs are the same)
* Fix style issues
* Fix `ToLower` usage for invariant usage
* Fix xtro-sharpie test
2021-03-18 04:48:02 +03:00
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/aarch64-darwin-mono-sgen : .stamp -$( MONO_BUILD_MODE ) | $( MAC_DESTDIR ) $( MAC_FRAMEWORK_CURRENT_DIR ) /bin
$( Q) install -m 0755 $( MONO_MAC_SDK_DESTDIR) /mac-bin/aarch64-darwin-mono-sgen $@
2019-05-12 19:06:06 +03:00
$(MAC_DIRECTORIES) :
$( Q) mkdir -p $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
install-mac : $( MAC_TARGETS )
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
#
# Xamarin.iOS/WatchOS/TVOS common pieces
#
install-local :: install -ios -common
all-local :: install -ios -common
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
IOS_COMMON_DIRECTORIES = \
$( IOS_DESTDIR) /Library/Frameworks/Xamarin.iOS.framework/Versions \
$( IOS_DESTDIR) /$( MONOTOUCH_PREFIX) \
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
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 \
2018-10-15 22:39:29 +03:00
2019-05-12 19:06:06 +03:00
$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current : | $( IOS_DESTDIR ) /Library /Frameworks /Xamarin .iOS .framework /Versions
$( Q_LN) ln -hfs $( IOS_INSTALL_VERSION) $@
2018-10-15 22:39:29 +03:00
2019-05-12 19:06:06 +03:00
$(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' ) " >> $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/Version : $( TOP ) /Make .config .inc | $( IOS_DESTDIR ) /$( MONOTOUCH_PREFIX )
$( Q) echo $( IOS_PACKAGE_VERSION) > $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/updateinfo : $( TOP ) /Make .config .inc
$( Q) echo " 4569c276-1397-4adb-9485-82a7696df22e $( IOS_PACKAGE_UPDATE_ID) " > $@
2016-04-21 14:18:44 +03:00
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
$(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 )
2021-11-22 20:48:05 +03:00
$( 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_MACOS_SDK_VERSION) " " $( MACOS_SDK_VERSION) " " $( MIN_MACCATALYST_SDK_VERSION) " " $( MACCATALYST_SDK_VERSION) "
2019-05-12 19:06:06 +03:00
$( 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 " $< > $@
2016-04-21 14:18:44 +03:00
2020-05-13 16:23:29 +03:00
$(DOTNET_DESTDIR)/%.Sdk/Versions.plist : $( IOS_DESTDIR ) /$( MONOTOUCH_PREFIX ) /Versions .plist | $( DOTNET_DESTDIR ) /%.Sdk
$( Q) $( CP) $< $@
2021-05-05 04:36:48 +03:00
$(DOTNET_DESTDIR)/%.Sdk/tools/buildinfo : $( IOS_DESTDIR ) /$( MONOTOUCH_PREFIX ) /buildinfo | $( DOTNET_DESTDIR ) /%.Sdk /tools
$( Q) $( CP) $< $@
2019-05-12 19:06:06 +03:00
$(IOS_COMMON_DIRECTORIES) :
$( Q) mkdir -p $@
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
2019-05-12 19:06:06 +03:00
install-ios-common : $( IOS_COMMON_TARGETS )
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
2019-05-12 19:06:06 +03:00
#
# iPhone simulator Mono runtime pieces
#
install-local :: install -iphonesimulator
all-local :: install -iphonesimulator
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
IPHONESIMULATOR_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
IPHONESIMULATOR_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /lib/libmono-profiler-log.dylib \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_IOSSIMULATOR_SDK) /Frameworks/Mono.framework/Mono \
2020-04-16 15:19:45 +03:00
$(IOS_DESTDIR)$(XAMARIN_IOSSIMULATOR_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_IOSSIMULATOR_SDK ) /lib
2019-05-12 19:06:06 +03:00
$( 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
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(IPHONESIMULATOR_DIRECTORIES) :
$( Q) mkdir -p $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
install-iphonesimulator :: $( IPHONESIMULATOR_TARGETS )
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
#
# Watch simulator Mono runtime pieces
#
install-local :: install -watchsimulator
all-local :: install -watchsimulator
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
WATCHSIMULATOR_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib
2018-11-14 21:16:13 +03:00
2019-05-12 19:06:06 +03:00
WATCHSIMULATOR_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /lib/libmono-profiler-log.dylib \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHSIMULATOR_SDK) /Frameworks/Mono.framework/Mono \
2018-11-14 21:16:13 +03:00
2020-04-16 15:19:45 +03:00
$(IOS_DESTDIR)$(XAMARIN_WATCHSIMULATOR_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_WATCHSIMULATOR_SDK ) /lib
2019-05-12 19:06:06 +03:00
$( 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
2018-11-14 21:16:13 +03:00
2019-05-12 19:06:06 +03:00
$(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
2018-11-14 21:16:13 +03:00
2016-04-21 14:18:44 +03:00
$(WATCHSIMULATOR_DIRECTORIES) :
$( Q) mkdir -p $@
install-watchsimulator : $( WATCHSIMULATOR_TARGETS )
#
2019-05-12 19:06:06 +03:00
# TV simulator Mono runtime pieces
2016-04-21 14:18:44 +03:00
#
install-local :: install -tvsimulator
2017-04-03 12:52:29 +03:00
all-local :: install -tvsimulator
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
TVSIMULATOR_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib
[builds] Improve mono/llvm dependencies. (#1948)
* [builds] Improve mono/llvm dependencies.
* Create a list of all the files in the mono and llvm repositories, and save
these lists as a Make variable (in a generated Makefile - .deps.*.mk). We
don't list _all_ the files in each repository, because there are quite a few
(55k for mono), and Make measurably takes a while to check all of them, so
try to limit it to a sane subset, without risking missing changes to files
that actually matters.
* Always create stamp files when we're done with mono builds.
* Modify the mono/llvm builds to depend on all the files in their
repositories.
* Explicitly list the corresponding .stamp-build-* files as dependencies for
various files that are produced by the mono builds, so that make knows how
to build these files.
* Rewrite the *-facade-check targets to depend on the corresponding
*_BCL_TARGETS, so that we can avoid running a submake to the same Makefile
to execute the facade checks.
It now takes a little while (less than a second on my machine, which is
fine) for make to list all dependencies and get their timestamps, but if
executing multiple submakes this adds up to a multi-second timewaste.
So avoid the timewaste by not doing submakes, but instead use dependencies
to enforce the required target execution ordering.
* Don't depend on nicely named intermediate targets, since won't prevent
rebuilds:
build-cross64: setup-cross64
Since the `setup-cross64` file doesn't exist, `build-cross64` will always
execute. Instead depend on the stamp file:
build-cross64: .stamp-configure-cross64
And now `build-cross64` will only rebuild if needed.
* Don't try to list all intermediate files as .SECONDARY dependencies, instead
list none at all, which works as if all files were listed as dependencies.
* Some targets had to move later in the file, since variables used in dependencies:
foo: $(VARIABLE)
must be defined before that point in the file, as opposed to variables used in recipes:
foo:
$(MAKE) $(VARIABLE)
can be defined anywhere in the Makefile.
* Simplify the targets that sign assemblies significantly.
There are a few end results:
* It's now possible to do `make install`, without doing `make all` first. This
might seem weird, but that also ensures the more common `make all install`
works properly.
* Remakes (without any mono/llvm changes) in build/ are much faster, because
we now won't recurse into every mono build:
$ time make all -C builds/ -j8
[...]
real 0m1.873s
This even means that we might be able to make it a habit to remake in the
root directory, which doesn't take forever now:
$ time make all -j8
[...]
real 0m4.521s
Unfortunately adding `make install` to the mix still does some useless
stuff, and it ends up taking ~30 seconds to complete a full build:
$ time make all install -j8
[...]
real 0m32.542s
* [msbuild] Don't verify the xml syntax of targets files unless the files change.
* [build] Don't depend on installed files.
Don't depend on installed files, because that causes a rebuild when installing
to a different directory (i.e. package creation).
* Bump maccore to get build improvements.
Rebuilds are now very fast:
$ make all install -j8
$ time make all install -j8
real 0m5.735s
Less than 6s to figure out that nothing needs to be done.
And strangely flushing the disk cache doesn't make it much slower:
$ sudo purge
$ time make all install -j8
real 0m7.309s
Which probably means that Make mostly reads file metadata, and not actual file
contents (which is good).
2017-03-31 21:23:38 +03:00
2016-04-21 14:18:44 +03:00
TVSIMULATOR_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /lib/libmono-profiler-log.dylib \
2016-04-21 14:18:44 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVSIMULATOR_SDK) /Frameworks/Mono.framework/Mono \
2020-04-16 15:19:45 +03:00
$(IOS_DESTDIR)$(XAMARIN_TVSIMULATOR_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_TVSIMULATOR_SDK ) /lib
2019-05-12 19:06:06 +03:00
$( 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
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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
2018-11-14 21:16:13 +03:00
2016-04-21 14:18:44 +03:00
$(TVSIMULATOR_DIRECTORIES) :
$( Q) mkdir -p $@
install-tvsimulator : $( TVSIMULATOR_TARGETS )
2020-11-17 11:30:08 +03:00
#
# Mac Catalyst Mono runtime pieces
#
install-local :: install -maccatalyst
all-local :: install -maccatalyst
MACCATALYST_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /Frameworks \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib \
MACCATALYST_TARGETS = \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib/libmono-native.a \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /lib/libmono-native.dylib \
$(IOS_DESTDIR)$(XAMARIN_MACCATALYST_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_MACCATALYST_SDK ) /lib
$( Q) $( CP) $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-libs/$( notdir $@ ) $@
$( Q) if test -d $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-libs/$( notdir $@ ) .dSYM; then $( CP) -R $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-libs/$( notdir $@ ) .dSYM $( dir $@ ) ; fi
$(IOS_DESTDIR)$(XAMARIN_MACCATALYST_SDK)/Frameworks/Mono.framework/Mono : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_MACCATALYST_SDK ) /Frameworks
$( Q) $( CP) -R $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-frameworks/ios-sim/Mono.framework $( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /Frameworks
$( Q) $( CP) -R $( MONO_MACCATALYST_SDK_DESTDIR) /maccat-frameworks/ios-sim/Mono.framework.dSYM $( IOS_DESTDIR) $( XAMARIN_MACCATALYST_SDK) /Frameworks
$(XAMARIN_MACCATALYST_SDK_DIRECTORIES) :
$( Q) mkdir -p $@
$(MACCATALYST_DIRECTORIES) :
$( Q) mkdir -p $@
install-maccatalyst :: $( MACCATALYST_TARGETS )
2016-04-21 14:18:44 +03:00
#
2019-05-12 19:06:06 +03:00
# iPhone device Mono runtime pieces
2016-04-21 14:18:44 +03:00
#
install-local :: install -iphoneos
2017-04-03 12:52:29 +03:00
all-local :: install -iphoneos
2016-04-21 14:18:44 +03:00
IPHONEOS_DIRECTORIES = \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib
2019-05-12 19:06:06 +03:00
IPHONEOS_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-ee-interp.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-icall-table.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-ilgen.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /lib/libmono-profiler-log.dylib \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_IPHONEOS_SDK) /Frameworks/Mono.framework/Mono \
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_IPHONEOS_SDK ) /lib
$( Q) $( CP) $( MONO_IOS_SDK_DESTDIR) /ios-libs/ios/$( notdir $@ ) $@
2019-05-12 19:06:06 +03:00
$( 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
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_IPHONEOS_SDK)/Frameworks/Mono.framework/Mono : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_IPHONEOS_SDK ) /Frameworks
2019-05-12 19:06:06 +03:00
$( 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
2018-10-15 22:39:29 +03:00
2016-04-21 14:18:44 +03:00
$(IPHONEOS_DIRECTORIES) :
$( Q) mkdir -p $@
2019-05-12 19:06:06 +03:00
install-iphoneos : $( IPHONEOS_TARGETS )
2018-10-03 09:18:11 +03:00
2016-04-21 14:18:44 +03:00
#
2019-05-12 19:06:06 +03:00
# Watch device Mono runtime pieces
#
2016-04-21 14:18:44 +03:00
install-local :: install -watchos
2017-04-03 12:52:29 +03:00
all-local :: install -watchos
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
WATCHOS_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib
2016-04-21 14:18:44 +03:00
WATCHOS_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-ee-interp.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-icall-table.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-ilgen.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /lib/libmono-profiler-log.dylib \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_WATCHOS_SDK) /Frameworks/Mono.framework/Mono \
2016-05-31 02:50:41 +03:00
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_WATCHOS_SDK ) /lib
$( Q) $( CP) $( MONO_IOS_SDK_DESTDIR) /ios-libs/watchos/$( notdir $@ ) $@
2019-05-12 19:06:06 +03:00
$( 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
2018-11-14 21:16:13 +03:00
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_WATCHOS_SDK)/Frameworks/Mono.framework/Mono : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_WATCHOS_SDK ) /Frameworks
2019-05-12 19:06:06 +03:00
$( 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
2018-11-14 21:16:13 +03:00
2016-04-21 14:18:44 +03:00
$(WATCHOS_DIRECTORIES) :
$( Q) mkdir -p $@
install-watchos : $( WATCHOS_TARGETS )
#
2019-05-12 19:06:06 +03:00
# TV device Mono runtime pieces
2018-03-23 04:25:00 +03:00
#
2016-04-21 14:18:44 +03:00
install-local :: install -tvos
2017-04-03 12:52:29 +03:00
all-local :: install -tvos
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
TVOS_DIRECTORIES = \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /Frameworks \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib
2016-04-21 14:18:44 +03:00
TVOS_TARGETS = \
2020-04-16 15:19:45 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmonosgen-2.0.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-profiler-log.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-ee-interp.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-icall-table.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-ilgen.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-native-compat.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-native-unified.a \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmonosgen-2.0.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-native-compat.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-native-unified.dylib \
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /lib/libmono-profiler-log.dylib \
2019-05-12 19:06:06 +03:00
$( IOS_DESTDIR) $( XAMARIN_TVOS_SDK) /Frameworks/Mono.framework/Mono \
2016-04-21 14:18:44 +03:00
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/lib/% : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_TVOS_SDK ) /lib
$( Q) $( CP) $( MONO_IOS_SDK_DESTDIR) /ios-libs/tvos/$( notdir $@ ) $@
2019-05-12 19:06:06 +03:00
$( 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
2018-11-14 21:16:13 +03:00
2021-03-12 09:38:07 +03:00
$(IOS_DESTDIR)$(XAMARIN_TVOS_SDK)/Frameworks/Mono.framework/Mono : .stamp -$( MONO_BUILD_MODE ) | $( IOS_DESTDIR ) $( XAMARIN_TVOS_SDK ) /Frameworks
2019-05-12 19:06:06 +03:00
$( 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
2018-11-14 21:16:13 +03:00
2016-04-21 14:18:44 +03:00
$(TVOS_DIRECTORIES) :
$( Q) mkdir -p $@
install-tvos : $( TVOS_TARGETS )
2021-02-11 22:17:12 +03:00
#
# .NET
#
DOTNET_COMMON_DIRECTORIES += \
$( foreach platform,$( DOTNET_PLATFORMS_UPPERCASE) ,$( DOTNET_DESTDIR) /$( $( platform) _NUGET) .Sdk) \
2021-05-05 04:36:48 +03:00
$( foreach platform,$( DOTNET_PLATFORMS_UPPERCASE) ,$( DOTNET_DESTDIR) /$( $( platform) _NUGET) .Sdk/tools) \
2021-02-11 22:17:12 +03:00
DOTNET_COMMON_TARGETS = \
$( foreach platform,$( DOTNET_PLATFORMS_UPPERCASE) ,$( DOTNET_DESTDIR) /$( $( platform) _NUGET) .Sdk/Versions.plist) \
2021-05-05 04:36:48 +03:00
$( foreach platform,$( DOTNET_PLATFORMS_UPPERCASE) ,$( DOTNET_DESTDIR) /$( $( platform) _NUGET) .Sdk/tools/buildinfo) \
2021-02-11 22:17:12 +03:00
$(DOTNET_COMMON_DIRECTORIES) :
$( Q) mkdir -p $@
install-dotnet : $( DOTNET_COMMON_TARGETS )
install-local :: install -dotnet
all-local :: install -dotnet
2016-04-21 14:18:44 +03:00
#
2018-03-23 04:25:00 +03:00
# Cross compilers
#
# This is the cross aot version of mono. runs on x86 but the jit/aot spits out arm.
2016-04-21 14:18:44 +03:00
#
# There are two versions of the cross compiler, a 32 bit version targeting arm, and a 64
# bit version targeting arm64.
2018-03-23 04:25:00 +03:00
# These are compiled using the mono sdk makefiles
2016-04-21 14:18:44 +03:00
#
2019-05-12 19:06:06 +03:00
install-local :: install -cross
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(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 )
2019-09-24 18:24:49 +03:00
$(MONO_IOS_SDK_DESTDIR)/ios-crosswatch-release/bin/aarch64-apple-darwin10_ilp32-mono-sgen : .stamp -$( MONO_BUILD_MODE )
2018-03-23 04:25:00 +03:00
2019-05-12 19:06:06 +03:00
$(PREFIX)/bin/arm-darwin-mono-sgen : $( MONO_IOS_SDK_DESTDIR ) /ios -cross 32-release /bin /arm -darwin -mono -sgen | $( PREFIX ) /bin
$( call Q_2,INSTALL ,[ CROSS] ) install -c -m 0755 $( INSTALL_STRIP_FLAG) $^ $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(PREFIX)/bin/arm64-darwin-mono-sgen : $( MONO_IOS_SDK_DESTDIR ) /ios -cross 64-release /bin /aarch 64-darwin -mono -sgen | $( PREFIX ) /bin
$( call Q_2,INSTALL ,[ CROSS] ) install -c -m 0755 $( INSTALL_STRIP_FLAG) $^ $@
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
$(PREFIX)/bin/armv7k-unknown-darwin-mono-sgen : $( MONO_IOS_SDK_DESTDIR ) /ios -crosswatch -release /bin /armv 7k -unknown -darwin -mono -sgen | $( PREFIX ) /bin
$( call Q_2,INSTALL ,[ CROSS] ) install -c -m 0755 $( INSTALL_STRIP_FLAG) $^ $@
2018-10-16 17:55:11 +03:00
2019-09-24 18:24:49 +03:00
$(PREFIX)/bin/arm64_32-darwin-mono-sgen : $( MONO_IOS_SDK_DESTDIR ) /ios -crosswatch 64_ 32-release /bin /aarch 64-apple -darwin 10_ilp 32-mono -sgen | $( PREFIX ) /bin
$( call Q_2,INSTALL ,[ CROSS] ) install -c -m 0755 $( INSTALL_STRIP_FLAG) $^ $@
2019-05-12 19:06:06 +03:00
$(PREFIX)/bin :
$( Q) mkdir -p $@
2018-12-17 12:22:54 +03:00
2019-05-12 19:06:06 +03:00
.PHONY : install -cross
2019-09-24 18:24:49 +03:00
install-cross : $( PREFIX ) /bin /arm -darwin -mono -sgen $( PREFIX ) /bin /arm 64-darwin -mono -sgen $( PREFIX ) /bin /armv 7k -unknown -darwin -mono -sgen $( PREFIX ) /bin /arm 64_ 32-darwin -mono -sgen
2016-04-21 14:18:44 +03:00
2019-05-12 19:06:06 +03:00
#
# LLVM
#
install-local :: install -llvm
2016-04-21 14:18:44 +03:00
2018-12-17 12:22:54 +03:00
LLVM64_TARGETS = \
2016-04-21 14:18:44 +03:00
$( PREFIX) /LLVM/bin/opt \
$( PREFIX) /LLVM/bin/llc \
2018-12-17 12:22:54 +03:00
2019-05-12 19:06:06 +03:00
$(MONO_IOS_SDK_DESTDIR)/llvm-llvm64/bin/% : .stamp -$( MONO_BUILD_MODE )
2018-10-10 18:02:28 +03:00
2019-04-26 17:44:29 +03:00
$(PREFIX)/LLVM/bin/% : $( MONO_IOS_SDK_DESTDIR ) /llvm -llvm 64/bin /% | $( PREFIX ) /LLVM /bin
2016-04-21 14:18:44 +03:00
$( call Q_2,INSTALL ,[ LLVM64] ) install -c -m 0755 $( INSTALL_STRIP_FLAG) $^ $@
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
$(PREFIX)/LLVM/bin :
2018-10-10 18:02:28 +03:00
$( Q) mkdir -p $@
Bump to mono:2019-06 (#6196)
* Use the commonly used casing for `MSBuildSDKsPath` property
Handle "incorrectly" cased msbuild property names
msbuild property names are case insensitive. While generating the custom
app.config, in `SetToolsetProperty(..)` we try to update the property if
it already exists. But the name lookup was case sensitive, thus causing
the lookup to fail, resulting in two entries for the same property name
differing only in case. Eg. `MSBuildSDKsPath` vs `MSBuildSdksPath`.
* [mtouch] Whitelist new Brotli native symbols in Xamarin.Tests.Misc.PublicSymbols test
* [mtouch] Better assert in NoLLVMFailuresInWatchOS() test
We'd list the "LLVM failed" messages before even though the AOT might've crashed and the list is meaningless. Assert the exit code before that.
* [mtouch] Use new LLVM even for 32bit targets
See https://github.com/mono/mono/issues/14841 and https://github.com/mono/mono/issues/9621
* [mtouch] Work around slow LLVM in "don't link" test
See https://github.com/mono/mono/issues/14843
* Remove useless conditional
* Remove LLVM36 from Makefile
* [watch4] set right min version for arm64_32 based watch devices (#6307)
Fixes the confusion around `libmono-native*` (see for example https://github.com/xamarin/xamarin-macios/commit/ce5ba1e41d526eddd9b61f68fae22a747831e9f2#commitcomment-33834491 ) when building with `MONO_BUILD_FROM_SOURCE=1`.
* reflect watchos64_32_version_min change from mono sdk
* Move mono hash info to mk/mono.mk so that existing scripts work.
* Add Makefile dependency on mono.mk where necessary
With https://github.com/xamarin/xamarin-macios/commit/3e7bc29adec8dff3558c284a3050f2db36ea3cf2 the Mono hash was moved from Make.config to mono.mk.
We need to add a Makefile dependency on this file wherever Make.config was used to track a Mono dependency.
* [tests] Copy mk/mono.mk to the XM test package.
* [tests] Update minOS version test after consolidating min watchOS versions everywhere.
Fixes this mtouch and mmptest failure:
1) Failed : Xamarin.Tests.ProductTests.MinOSVersion(watchOS,MinwatchOS,WatchOSSimulator,False)
Failures
Expected: <empty>
But was: < "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (mono-runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (bindings-generated-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (shared-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (runtime-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-invoke-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (xamarin-support-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (nsstring-localization-debug.arm64_32.o).", "Unexpected minOS version (expected 2.0.0, alternatively 2.0.0, found 5.1.0) in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/Xamarin.WatchSimulator.sdk/usr/lib/libxamarin-debug.a (trampolines-varargs-debug.arm64_32.o)."... >
* [mmp] Fix make clean target
It needs an -r to remove directories:
```
rm: bin: is a directory
rm: obj: is a directory
```
* Add new xamarin_timezone_get_local_name() to a few more places
2019-07-16 18:24:00 +03:00
.PHONY : install -llvm 64 install -llvm
install-llvm : install -llvm 64
2018-12-17 12:22:54 +03:00
install-llvm64 : $( LLVM 64_TARGETS )