2016-04-21 11:59:27 +03:00
TOP = .
2021-02-11 17:35:04 +03:00
SUBDIRS = builds runtime fsharp src msbuild tools
2016-04-21 11:59:27 +03:00
i n c l u d e $( TOP ) / M a k e . c o n f i g
i n c l u d e $( TOP ) / m k / v e r s i o n s . m k
2016-04-21 14:45:14 +03:00
2021-02-11 17:35:04 +03:00
i f d e f E N A B L E _ D O T N E T
SUBDIRS += dotnet
e n d i f
2016-04-21 14:45:14 +03:00
#
# Common
#
2019-05-12 19:06:06 +03:00
all-local :: check -system
2020-05-14 17:45:23 +03:00
install-local ::
2019-05-12 19:06:06 +03:00
2016-04-21 14:47:16 +03:00
.PHONY : world
world : check -system
@$( MAKE) reset-versions
@$( MAKE) all -j8
@$( MAKE) install -j8
2016-04-21 14:46:12 +03:00
.PHONY : check -system
check-system :
2020-09-16 18:02:44 +03:00
i f d e f I N C L U D E _ M A C
i f d e f I N C L U D E _ I O S
2018-10-04 20:49:26 +03:00
@if [ [ " x $( IOS_COMMIT_DISTANCE) " != " x $( MAC_COMMIT_DISTANCE) " ] ] ; then \
echo " $( COLOR_RED) *** The commit distance for Xamarin.iOS ( $( IOS_COMMIT_DISTANCE) ) and Xamarin.Mac ( $( MAC_COMMIT_DISTANCE) ) are different. $( COLOR_CLEAR) " ; \
echo " $( COLOR_RED) *** To fix this problem, bump the revision (the third number) for both $( COLOR_GRAY) IOS_PACKAGE_NUMBER $( COLOR_RED) and $( COLOR_GRAY) MAC_PACKAGE_NUMBER $( COLOR_RED) in Make.versions. $( COLOR_CLEAR) " ; \
echo " $( COLOR_RED) *** Once fixed, you need to commit the changes for them to pass this check. $( COLOR_CLEAR) " ; \
exit 1; \
elif ( ( $( IOS_COMMIT_DISTANCE) > 999 || $( MAC_COMMIT_DISTANCE) > 999 ) ) ; then \
echo " $( COLOR_RED) *** The commit distance for Xamarin.iOS ( $( IOS_COMMIT_DISTANCE) ) and/or Xamarin.Mac ( $( MAC_COMMIT_DISTANCE) ) are > 999. $( COLOR_CLEAR) " ; \
echo " $( COLOR_RED) *** To fix this problem, bump the revision (the third number) for both $( COLOR_GRAY) IOS_PACKAGE_NUMBER $( COLOR_RED) and $( COLOR_GRAY) MAC_PACKAGE_NUMBER $( COLOR_RED) in Make.versions. $( COLOR_CLEAR) " ; \
echo " $( COLOR_RED) *** Once fixed, you need to commit the changes for them to pass this check. $( COLOR_CLEAR) " ; \
exit 1; \
fi
2020-09-16 18:02:44 +03:00
e n d i f
e n d i f
2016-04-21 14:46:12 +03:00
@./system-dependencies.sh
2020-05-13 16:23:29 +03:00
@echo "Building the packages:"
@echo " Xamarin.iOS $( IOS_PACKAGE_VERSION) "
@echo " Xamarin.Mac $( MAC_PACKAGE_VERSION) "
@echo "and the NuGets:"
@echo " Xamarin.iOS $( IOS_NUGET_VERSION_FULL) "
@echo " Xamarin.tvOS $( TVOS_NUGET_VERSION_FULL) "
@echo " Xamarin.watchOS $( WATCHOS_NUGET_VERSION_FULL) "
@echo " Xamarin.macOS $( MACOS_NUGET_VERSION_FULL) "
2016-04-21 14:46:12 +03:00
2017-02-01 16:30:29 +03:00
check-permissions :
i f d e f I N C L U D E _ M A C
@UNREADABLE= ` find $( MAC_DESTDIR) ! -perm -0644` ; if ! test -z " $$ UNREADABLE " ; then echo "There are files with invalid permissions (all installed files at least be readable by everybody, and writable by owner: 0644): " ; find $( MAC_DESTDIR) ! -perm -0644 | xargs ls -la; exit 1; fi
@echo Validated file permissions for Xamarin.Mac.
e n d i f
i f d e f I N C L U D E _ I O S
@UNREADABLE= ` find $( IOS_DESTDIR) ! -perm -0644` ; if ! test -z " $$ UNREADABLE " ; then echo "There are files with invalid permissions (all installed files at least be readable by everybody, and writable by owner: 0644): " ; find $( IOS_DESTDIR) ! -perm -0644 | xargs ls -la; exit 1; fi
@echo Validated file permissions for Xamarin.iOS.
e n d i f
2020-09-18 18:41:33 +03:00
all-local :: global .json global 6.json
2020-03-06 00:03:38 +03:00
global.json : Make .config Makefile
$( Q) printf " {\n\t\"sdk\": {\n\t\t\"version\": \" $( DOTNET_VERSION) \"\n\t}\n}\n " > $@
2020-09-21 14:22:44 +03:00
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
2020-09-18 18:41:33 +03:00
global6.json : $( TOP ) /Make .config .inc Makefile $( TOP ) /.git /HEAD $( TOP ) /.git /index
2020-09-21 14:22:44 +03:00
$( Q_GEN) \
printf "{\n" > $@ ; \
2020-09-18 18:41:33 +03:00
printf " \t\"sdk\": { \"version\": \" $( DOTNET6_VERSION) \" },\n " >> $@ ; \
2020-09-21 14:22:44 +03:00
printf "\t\"msbuild-sdks\": {\n" >> $@ ; \
printf "\t\t\"Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk\": \"5.0.0-beta.20120.1\"\n" >> $@ ; \
printf "\t}\n}\n" >> $@
2016-04-21 14:45:14 +03:00
install-hook ::
2017-02-01 16:30:29 +03:00
@$( MAKE) check-permissions
2016-04-21 14:45:14 +03:00
i f d e f I N C L U D E _ I O S
i f n e q ( $( findstring $ ( IOS_DESTDIR ) $ ( MONOTOUCH_PREFIX ) ,$ ( shell ls -l /Library /Frameworks /Xamarin .iOS .framework /Versions /Current 2>&1) ) , )
@echo
@echo " This build of Xamarin.iOS is the now default version on your system. "
@echo
e l s e
@echo
@echo " Xamarin.iOS has not been installed into your system by 'make install'"
@echo " In order to set the currently built Xamarin.iOS as your system version,"
@echo " execute 'make install-system'" .
@echo
e n d i f
e n d i f
i f d e f I N C L U D E _ M A C
i f n d e f I N C L U D E _ I O S
@echo
e n d i f
i f n e q ( $( findstring $ ( abspath $ ( MAC_DESTDIR ) $ ( MAC_FRAMEWORK_DIR ) /Versions ) ,$ ( shell ls -l $ ( MAC_FRAMEWORK_DIR ) /Versions /Current 2>&1) ) , )
@echo " This build of Xamarin.Mac is the now default version on your system. "
@echo
e l s e
@echo " Xamarin.Mac has not been installed into your system by 'make install'"
@echo " In order to set the currently built Xamarin.Mac as your system version,"
@echo " execute 'make install-system'" .
@echo
e n d i f
e n d i f
2017-08-30 00:33:43 +03:00
package :
mkdir -p ../package
Add support for building on Jenkins. (#4159)
Add support for building on internal Jenkins.
Jenkins has been configured to build every branch on xamarin/xamarin-macios that contains a `jenkins/Jenkinsfile`, which means it will start working as soon as this PR is merged.
Results will be posted as statuses on each commit, which can be viewed using the url `https://github.com/xamarin/xamarin-macios/commits/<branch>`:
![screenshot 2018-06-01 11 12 57](https://user-images.githubusercontent.com/249268/40832932-c3b05eb0-658c-11e8-9670-8de5fcc23407.png)
* The `continuous-integration/jenkins/branch` status links to the jenkins job.
* The other two are XI and XM packages (the `Jenkins-` prefix will be removed once we officially switch from Wrench to Jenkins).
More detailed information will be added as a comment to each commit, which can be seen by clicking on the commit and scrolling to the bottom (url of the format `https://github.com/xamarin/xamarin-macios/commit/<sha1>`)
![screenshot 2018-06-01 11 14 33](https://user-images.githubusercontent.com/249268/40833014-fd8772f4-658c-11e8-8a35-5df46bfb16c7.png)
Unfortunately GitHub does not display the commit statuses when viewing a single commit, so to view those statuses you'll have to view the list of commits (the `/commits/` url). Tip: it's possible to use `<sha1>` instead of `<branch>` (and vice versa for that matter) if you're interested in the statuses of a particular commit.
Pull requests will also be built (only from contributors with write access), but by default nothing will be done (the job will exit immediately, although a green check mark will still show up). Jenkins will **not** add a comment in the pull request in this case.
However, if the label `build-package` [1] is set for a pull request, the internal jenkins job will run (it will do everything except the local xharness test run: this includes creating and publishing packages, creating various diffs, run tests on older macOS versions, test docs, etc). A detailed comment will also be added to the pull request (see below for multiple examples), which means that there will be two Jenkins comments: one for the public Jenkins which builds every PR, and one for the internal Jenkins [2].
[1] I don't quite like the name of the label, because it doesn't get even close to explain all that will actually happen, but `run-on-internal-jenkins-and-create-package` is a bit too long IMHO... Also it's non-obvious that this is the label to apply if the reason for executing on the internal jenkins is some other reason (for instance to test a maccore bump). Other ideas:
* `run-internal-jenkins`: doesn't make it obvious that a package will be created (which is probably the most common reason to want to run on internal jenkins)
* We could have multiple labels that mean the same thing: `build-package`, `internal-build`, `run-internal-jenkins`, etc, but it's redundant and I don't quite like it either.
* Any other ideas?
[2] I'm noticing now that these two look quite similar and this might end up confusing (the main difference is that the comment from the public jenkins will say **Build success/failure** and **Build comment file:** at the top. If something goes wrong the failure will also show up differently). Should this be made clearer?
2018-06-05 02:40:16 +03:00
$( MAKE) -C $( MACCORE_PATH) package
2017-08-30 00:33:43 +03:00
# copy .pkg, .zip and *updateinfo to the packages directory to be uploaded to storage
2018-10-29 18:09:30 +03:00
$( CP) $( MACCORE_PATH) /release/*.pkg ../package
$( CP) $( MACCORE_PATH) /release/*.zip ../package
$( CP) $( MACCORE_PATH) /release/*updateinfo ../package
2017-08-30 00:33:43 +03:00
2016-04-21 14:45:14 +03:00
install-system : install -system -ios install -system -mac
2016-10-13 11:47:46 +03:00
@# Clean up some old files
$( Q) rm -Rf /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS
$( Q) rm -Rf /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Xamarin.ObjcBinding.CSharp.targets
$( Q) rm -Rf /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Xamarin.Common.CSharp.targets
$( Q) rm -Rf /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Xamarin.ObjcBinding.Tasks.dll
2016-10-13 15:11:48 +03:00
$( Q) rm -Rf /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac
2016-06-01 15:51:22 +03:00
$( Q) $( MAKE) install-symlinks MAC_DESTDIR = / MAC_INSTALL_VERSION = Current IOS_DESTDIR = / IOS_INSTALL_VERSION = Current -C msbuild V = $( V)
2016-06-04 13:46:52 +03:00
i f d e f E N A B L E _ X A M A R I N
$( Q) $( MAKE) install-symlinks MAC_DESTDIR = / MAC_INSTALL_VERSION = Current IOS_DESTDIR = / IOS_INSTALL_VERSION = Current -C $( MACCORE_PATH) V = $( V)
e n d i f
2016-04-21 14:45:14 +03:00
install-system-ios :
2017-08-10 08:21:39 +03:00
i f d e f I N C L U D E _ I O S
2016-04-21 14:45:14 +03:00
@if ! test -s " $( IOS_DESTDIR) / $( MONOTOUCH_PREFIX) /buildinfo " ; then echo "The Xamarin.iOS build seems incomplete. Did you run \"make install\"?" ; exit 1; fi
$( Q) rm -f /Library/Frameworks/Xamarin.iOS.framework/Versions/Current
$( Q) mkdir -p /Library/Frameworks/Xamarin.iOS.framework/Versions
$( Q) ln -s $( IOS_DESTDIR) $( MONOTOUCH_PREFIX) /Library/Frameworks/Xamarin.iOS.framework/Versions/Current
$( Q) echo Installed Xamarin.iOS into /Library/Frameworks/Xamarin.iOS.framework/Versions/Current
2017-08-10 08:21:39 +03:00
e n d i f
2016-04-21 14:45:14 +03:00
install-system-mac :
2017-08-10 08:21:39 +03:00
i f d e f I N C L U D E _ M A C
2016-04-21 14:45:14 +03:00
@if ! test -s " $( MAC_DESTDIR) / $( MAC_FRAMEWORK_CURRENT_DIR) /buildinfo " ; then echo "The Xamarin.Mac build seems incomplete. Did you run \"make install\"?" ; exit 1; fi
$( Q) rm -f $( MAC_FRAMEWORK_DIR) /Versions/Current
$( Q) mkdir -p $( MAC_FRAMEWORK_DIR) /Versions
$( Q) ln -s $( MAC_DESTDIR) $( MAC_FRAMEWORK_CURRENT_DIR) $( MAC_FRAMEWORK_DIR) /Versions/Current
$( Q) echo Installed Xamarin.Mac into $( MAC_FRAMEWORK_DIR) /Versions/Current
2017-08-10 08:21:39 +03:00
e n d i f
2016-04-21 14:45:14 +03:00
fix-install-permissions :
sudo mkdir -p /Library/Frameworks/Mono.framework/External/
sudo mkdir -p /Library/Frameworks/Xamarin.iOS.framework
sudo mkdir -p /Library/Frameworks/Xamarin.Mac.framework
sudo chown -R $( USER) /Library/Frameworks/Mono.framework/External/
sudo chown -R $( USER) /Library/Frameworks/Xamarin.iOS.framework
sudo chown -R $( USER) /Library/Frameworks/Xamarin.Mac.framework
2016-04-21 19:01:11 +03:00
2016-10-04 19:42:57 +03:00
git-clean-all :
2019-01-30 16:25:24 +03:00
@echo " $( COLOR_RED) Cleaning and resetting all dependencies. This is a destructive operation. $( COLOR_CLEAR) "
@echo " $( COLOR_RED) You have 5 seconds to cancel (Ctrl-C) if you wish. $( COLOR_CLEAR) "
2016-10-04 19:42:57 +03:00
@sleep 5
@echo "Cleaning xamarin-macios..."
2019-09-12 10:36:22 +03:00
@git clean -xffdq -e external/mono
@test -d external/mono && echo "Cleaning mono..." && cd external/mono && git clean -xffdq && git submodule foreach -q --recursive 'git clean -xffdq && git reset --hard -q' || true
2019-01-30 16:25:24 +03:00
@git submodule foreach -q --recursive 'git clean -xffdq && git reset --hard -q'
2016-10-04 19:42:57 +03:00
@for dir in $( DEPENDENCY_DIRECTORIES) ; do if test -d $( CURDIR) /$$ dir; then echo " Cleaning $$ dir " && cd $( CURDIR) /$$ dir && git clean -xffdq && git reset --hard -q && git submodule foreach -q --recursive 'git clean -xffdq' ; else echo " Skipped $$ dir (does not exist) " ; fi ; done
2020-11-05 17:58:15 +03:00
[dotnet] Initial support for .NET6 from Windows (#10590)
These changes add support for executing iOS and MacDev tasks remotely (on a Mac) when running a build from Windows, and creates a specific .NET6 pack for Windows that's only included in the MSI.
For now this only enables builds for the iOS Simulator, physical devices are not yet supported.
- Each task decides if it should run locally or remotely depending on the SessionId property, which will only have a value on Windows.
- The XMA Build agent is now part of this repo and will be included in the iOS .NET6 Windows pack.
- On this first version we're including some Windows specific tasks and references into the Xamarin.iOS.Tasks project for simplicity, but those will be moved to the Windows specific project.
------------
* [msbuild] Adds support for executing Xamarin.iOS tasks from Windows
* [msbuild] Adds support for executing Xamarin.MacDev tasks from Windows
* Added XMA Build Agent to Xamarin.MacDev.Tasks.sln
* Fixes some MSBuild versioning problems
* Makes the XMA Build agent load Xamarin.iOS tasks
We need to load a type from the iOS tasks assembly so we can run the tasks requested by MSBuild from Windows. We only need to load Xamarin.iOS.Tasks.dll since MacDev.tasks is already embedded in that one.
There's a little trick on the csproj, we can't directly use the Xamarin.iOS.Tasks project ref assemblies because that includes both Xamarin.iOS.Tasks.dll and Xamarin.MacDev.Tasks.dll, so the MacDev tasks will collide. We use the project ref only for build dependency purposes but we add an assembly reference to Xamarin.iOS.Tasks.dll.
* Added Xamarin.iOS.Tasks.Windows project
* Removed unnecessary references on Xamarin.iOS.Tasks.Windows.csproj
* Adds Messaging assemblies when ILRepacking Xamarin Tasks
The Xamarin Task assemblies now depend on Messaging, so we need the Messaging assemblies to be packed into Xamarin.Mac.Tasks and Xamarin.iOS.Tasks. Also had to remove the direct Messaging dependencies from the build agent since those are already contained in Xamarin.iOS.Tasks
* Adds a reference to Messaging.Core targets to the Agent's project
* [msbuild] Adds Xamarin iOS Windows targets
* [msbuild] Adds missing dependencies to Xamarin.iOS.Tasks
This should fix build errors because of missing dependencies. Had to move System.Net.Mqtt.Server from the Build agent project to the tasks one to avoid conflicts with System.Diagnostics.Tracer.
* [dotnet] Creates iOS Windows pack
Creates a new pack for Windows specific (targets, build agent, etc.) files that shouldn't be installed on the Mac. We have a separate package for this to avoid increasing the core pack size with things that are not needed when using it from macOS.
* Fixes type in dotnet makefile
* [dotnet] Fixes the iOS Windows pack generation
- The windows pack should not include the Sdk and Targets folders
- For now we'll just create an iOS pack
- Fixes the path to the files to include on the Windows Sdk pack
* Added reference to the Windows iOS SDK from the Xamarin.iOS.Common.targets
Added a property to navigate to the Windows iOS SDK folder, based on a naming convention that assumes that both packs will always have the same version
* Added reference to the core iOS SDK from the Windows iOS SDK
Added a property to navigate to the core iOS SDK folder, based on a naming convention that assumes that both packs will always have the same version
* Updated Messaging version
* Override MessagingBuildClientAssemblyFile property and correctly imported props from targets
* [dotnet] Make Windows pack using target files from the output dir
We need to take the target files from the output dir to include targets that are part of nuget packages, otherwise we will only include targets from our source
* [dotnet] Adds the Windows Sdk pack to the workload manifest
* [msbuild] Fixes the Windows Sdk pack name
* [dotnet] Merge Mqtt instead of Mqtt.Server
We only need System.Net.Mqtt to be merged into Xamarin.iOS.Tasks
* Updated Messaging version
* [dotnet] Several fixes for the Windows Sdk
- Adds missing task CollectMonotouchReferences
- Merges more dependencies into Xamarin.iOS.Tasks.dll needed by XMA
- Updates the msbuild/Makefile to include files from both the output dir and the source dir
- Overrides the agents directory to look for them on the Windows pack
* [dotnet] Fixes the XMA Build agent
- The build agent is an app so it cannot target ns2.0
- The MSBuild dependencies should be copied into the agent zip file
- Avoids copying all the Xamarin iOS SDK core targets into the build agent, since those are not needed
- Ensures the broker zip file is copied into the Xamarin.iOS.Windows.Tasks output dir so its included in the Windows pack
* Bumps Xamarin.Messaging to 1.2.102
* Adds net6-win branch to trigger builds
* Adds Messaging.Client missing dependency to Xamarin.Mac.Tasks
* Added Xamarin.Messaging.Apple.Tasks project and VerifyXcodeVersion Task
* Fix unloaded Xamarin.Messaging.Build project
* Added Build contracts project and unified Xamarin.Messaigng.Apple.Tasks in Xamarin.iOS.Tasks.Windows
Also added missing tasks and changes .After.targets
* Updated Xamarin.Messaging version
* Build agent - reference MSBuild assemblies from the framework
Since the assemblies will be included in the build agent we need those to be the ones that come from the framework to be compatible with macOS
* [msbuild] Fixes _UpdateDynamicLibraryId target
The tasks con this target need to be executed remotely (when building from Windows).
* Updates resources
* Bump Xamarin.Messaging
Fixes problems when executing Exec task remotely
* [dotnet] Overrides Publish targets to execute them remotely from Windows
The `_CopyResolvedFilesToPublishPreserveNewest` and `_CopyResolvedFilesToPublishAlways` targets essentially copy files into the app bundle. Since those are part of the .NET SDK we need to override those so we can pass to the Copy task the SessionId parameter and then it will be executed remotely when building from Windows.
This is done in a Windows.After.targets file so it won't affect builds on macOS.
* Added ILMerge to Xamarin.iOS.Tasks.Windows
Also modified ILMerge.targets to not include System assemblies because we don't need them on the Windows package
* Bumps Messaging
This new version of messaging fixes a problem when copying task inputs from Windows to the Mac
* [dotnet] Fixes copying files to the Mac when building from Windows
When building from Windows there are .NET SDK targets that copy dynamic libraries from the SDK to the intermediate output directory or other files to the publish directory, since we can't control those we can't run them remotely so we need to copy those files to the Mac to ensure other targets will find those.
* [dotnet] Fixes how files are copied to the output dir
- Before executing `_CopyResolvedFilesToPublishPreserveNewest` and `_CopyResolvedFilesToPublishAlways` we copy the input files for those targets to the Mac
- Then we override the original targets to execute the same copy task as the original ones but on the Mac, so the output files are placed in the right location for the following targets to pick them up.
* Fixes typo on Xamarin.iOS.Common.After.targets
* Bumps Xamarin.Messaging
* [msbuild] Fixes VerifyXcodeVersion and ResolveUTIs tasks
Both tasks were not being able to connect to the Mac mostly because of ILRepack, there were kind of 2 versions of Xamarin.Messaging, one merged into Xamarin.iOS.Tasks and another one merged into Xamarin.iOS.Windows.Tasks. Because of this the build connection object registered on the task could not be casted to the build connection type.
This essentially moves both tasks into the Xamarin.iOS.Tasks assembly to avoid this issue, and as part of that also includes the Messaging contracts into that same project.
* [msbuild] Fixes warnings when building from Windows
* [dotnet] Adds missing assemblies to merge into Xamarin.iOS.Tasks
Those 2 new assemblies will only be used from Windows and we need their implementation instead of the ref assemblies. In the future we will need to find a way of doing this on the Windows only pack insted of doing it on the core Xamarin.iOS.Tasks assembly.
* [dotnet] Compute PublishTrimmed on a target
We need to do this so the property is evaluated after VS on Windows connects to the Mac, otherwise by default IsMacEnabled is false from Windows.
* Bumps Messaging to 1.2.111
* [dotnet] Execute ILLink remotely when building from Windows
- Overrides the ILLink task and _RunILLink target to add the hability to execute it remotely, adding input and output properties so files are copied to the server and output files are created on Windows.
- This "custom" ILLink task will only be executed from the Windows targets so when building from a Mac it will execute the core SDK task.
* [dotnet] Fixes intput/output files creation for linker tasks
- Custom Linker options file should be created on the Mac so we need to execute WriteLinesToFile remotely
- All the *.items files from the linker are created on the Mac so we need to execute ReadItemsFromFile remotely
- CompileNativeCode: fixes the OutputFile metadata path, otherwise the execution fails; also copies all the files in the declared "IncludeDirectories" to the Mac
- Avoids copying input files from Windows to the Mac when running LinkNativeCode since the real input files already exist on the Mac, and Windows contains only empty files just to make MSBuild inputs/outputs check work. If we copy those empty files to the Mac we brake the build.
* [msbuild] Minor fixes after merging from main
* [dotnet] Adds missing output files to the Xamarin.iOS.Tasks.Windows project
The output of this project was missing Messaging build targets and the build agent zip file that are needed to create the dotnet Windows specific pack
* [dotnet] Fixes dotnet Windows specific pack generation
Ensures the Windows projects are built and the files are copied to the dotnet pack directory before creating the package.
It also adds a variable to enable building this pack.
* [dotnet] Adds iOS Windows specific pack to iOS only MSI
There's only a Windows specific pack for iOS available for now, so we should only add it to the iOS SDK MSI
* [dotnet] Create a separate bundle for the iOS Windows MSI
We need to do this to avoid including the Windows specific pack in the pkg. Also for now we'll only create an MSI for iOS since it's the only supported platform from Windows.
* Fixes spacing issues in Xamarin.iOS.Tasks.csproj
* Bumps Touch.Unit back to 05db76
* Fixes formatting problems
* [msbuild] Replaces error E0176 by E0186
Because there's a warning W0176 that will overlap with the error
* [msbuild] Fixes CompileEntitlements task
There were 2 problems:
1- The if statement on the DefaultEntitlementsPath was wrong, because we should return the base value if there's no SessionId (which means the task is running on a Mac)
2- We should copy to the Mac the default entitlements file if no custom file was specified
* Several fixes to cleanup the code to support iOS from Windows
* Apply suggestions from code review
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
* Formatting fixes in Xamarin.Messaging.Build
* Reverted formatting changes in CompileEntitlements.cs
* More formatting fixes
* Update msbuild/Messaging/Xamarin.Messaging.Build/Handlers/ExecuteTaskMessageHandler.cs
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
* Fixes order of MSBuild errors in the resource file
* Add newly added localizable strings to canary test of translated strings.
* Delete tests that ensure theres code only on the abstract tasks
These were needed to ensure all the code was in the base tasks so we could have tasks implementations on Windows to remote those. Now that code is part of this repo (and that is why these tests are failing now) so we do not need them anymore.
* [dotnet] Don't build the Windows SDK pack if not configured to do so.
Co-authored-by: mag <mauro.agnoletti@gmail.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2021-02-12 09:43:17 +03:00
@if [ -n " $( ENABLE_XAMARIN) " ] || [ -n " $( ENABLE_DOTNET) " ] || [ -n " $( ENABLE_DOTNET_WINDOWS) " ] ; then \
2020-11-05 17:58:15 +03:00
CONFIGURE_FLAGS = "" ; \
if [ -n " $( ENABLE_XAMARIN) " ] ; then \
echo "Xamarin-specific build has been re-enabled" ; \
CONFIGURE_FLAGS = " $$ CONFIGURE_FLAGS --enable-xamarin " ; \
fi ; \
if [ -n " $( ENABLE_DOTNET) " ] ; then \
echo "Dotnet-specific build has been re-enabled" ; \
CONFIGURE_FLAGS = " $$ CONFIGURE_FLAGS --enable-dotnet " ; \
fi ; \
[dotnet] Initial support for .NET6 from Windows (#10590)
These changes add support for executing iOS and MacDev tasks remotely (on a Mac) when running a build from Windows, and creates a specific .NET6 pack for Windows that's only included in the MSI.
For now this only enables builds for the iOS Simulator, physical devices are not yet supported.
- Each task decides if it should run locally or remotely depending on the SessionId property, which will only have a value on Windows.
- The XMA Build agent is now part of this repo and will be included in the iOS .NET6 Windows pack.
- On this first version we're including some Windows specific tasks and references into the Xamarin.iOS.Tasks project for simplicity, but those will be moved to the Windows specific project.
------------
* [msbuild] Adds support for executing Xamarin.iOS tasks from Windows
* [msbuild] Adds support for executing Xamarin.MacDev tasks from Windows
* Added XMA Build Agent to Xamarin.MacDev.Tasks.sln
* Fixes some MSBuild versioning problems
* Makes the XMA Build agent load Xamarin.iOS tasks
We need to load a type from the iOS tasks assembly so we can run the tasks requested by MSBuild from Windows. We only need to load Xamarin.iOS.Tasks.dll since MacDev.tasks is already embedded in that one.
There's a little trick on the csproj, we can't directly use the Xamarin.iOS.Tasks project ref assemblies because that includes both Xamarin.iOS.Tasks.dll and Xamarin.MacDev.Tasks.dll, so the MacDev tasks will collide. We use the project ref only for build dependency purposes but we add an assembly reference to Xamarin.iOS.Tasks.dll.
* Added Xamarin.iOS.Tasks.Windows project
* Removed unnecessary references on Xamarin.iOS.Tasks.Windows.csproj
* Adds Messaging assemblies when ILRepacking Xamarin Tasks
The Xamarin Task assemblies now depend on Messaging, so we need the Messaging assemblies to be packed into Xamarin.Mac.Tasks and Xamarin.iOS.Tasks. Also had to remove the direct Messaging dependencies from the build agent since those are already contained in Xamarin.iOS.Tasks
* Adds a reference to Messaging.Core targets to the Agent's project
* [msbuild] Adds Xamarin iOS Windows targets
* [msbuild] Adds missing dependencies to Xamarin.iOS.Tasks
This should fix build errors because of missing dependencies. Had to move System.Net.Mqtt.Server from the Build agent project to the tasks one to avoid conflicts with System.Diagnostics.Tracer.
* [dotnet] Creates iOS Windows pack
Creates a new pack for Windows specific (targets, build agent, etc.) files that shouldn't be installed on the Mac. We have a separate package for this to avoid increasing the core pack size with things that are not needed when using it from macOS.
* Fixes type in dotnet makefile
* [dotnet] Fixes the iOS Windows pack generation
- The windows pack should not include the Sdk and Targets folders
- For now we'll just create an iOS pack
- Fixes the path to the files to include on the Windows Sdk pack
* Added reference to the Windows iOS SDK from the Xamarin.iOS.Common.targets
Added a property to navigate to the Windows iOS SDK folder, based on a naming convention that assumes that both packs will always have the same version
* Added reference to the core iOS SDK from the Windows iOS SDK
Added a property to navigate to the core iOS SDK folder, based on a naming convention that assumes that both packs will always have the same version
* Updated Messaging version
* Override MessagingBuildClientAssemblyFile property and correctly imported props from targets
* [dotnet] Make Windows pack using target files from the output dir
We need to take the target files from the output dir to include targets that are part of nuget packages, otherwise we will only include targets from our source
* [dotnet] Adds the Windows Sdk pack to the workload manifest
* [msbuild] Fixes the Windows Sdk pack name
* [dotnet] Merge Mqtt instead of Mqtt.Server
We only need System.Net.Mqtt to be merged into Xamarin.iOS.Tasks
* Updated Messaging version
* [dotnet] Several fixes for the Windows Sdk
- Adds missing task CollectMonotouchReferences
- Merges more dependencies into Xamarin.iOS.Tasks.dll needed by XMA
- Updates the msbuild/Makefile to include files from both the output dir and the source dir
- Overrides the agents directory to look for them on the Windows pack
* [dotnet] Fixes the XMA Build agent
- The build agent is an app so it cannot target ns2.0
- The MSBuild dependencies should be copied into the agent zip file
- Avoids copying all the Xamarin iOS SDK core targets into the build agent, since those are not needed
- Ensures the broker zip file is copied into the Xamarin.iOS.Windows.Tasks output dir so its included in the Windows pack
* Bumps Xamarin.Messaging to 1.2.102
* Adds net6-win branch to trigger builds
* Adds Messaging.Client missing dependency to Xamarin.Mac.Tasks
* Added Xamarin.Messaging.Apple.Tasks project and VerifyXcodeVersion Task
* Fix unloaded Xamarin.Messaging.Build project
* Added Build contracts project and unified Xamarin.Messaigng.Apple.Tasks in Xamarin.iOS.Tasks.Windows
Also added missing tasks and changes .After.targets
* Updated Xamarin.Messaging version
* Build agent - reference MSBuild assemblies from the framework
Since the assemblies will be included in the build agent we need those to be the ones that come from the framework to be compatible with macOS
* [msbuild] Fixes _UpdateDynamicLibraryId target
The tasks con this target need to be executed remotely (when building from Windows).
* Updates resources
* Bump Xamarin.Messaging
Fixes problems when executing Exec task remotely
* [dotnet] Overrides Publish targets to execute them remotely from Windows
The `_CopyResolvedFilesToPublishPreserveNewest` and `_CopyResolvedFilesToPublishAlways` targets essentially copy files into the app bundle. Since those are part of the .NET SDK we need to override those so we can pass to the Copy task the SessionId parameter and then it will be executed remotely when building from Windows.
This is done in a Windows.After.targets file so it won't affect builds on macOS.
* Added ILMerge to Xamarin.iOS.Tasks.Windows
Also modified ILMerge.targets to not include System assemblies because we don't need them on the Windows package
* Bumps Messaging
This new version of messaging fixes a problem when copying task inputs from Windows to the Mac
* [dotnet] Fixes copying files to the Mac when building from Windows
When building from Windows there are .NET SDK targets that copy dynamic libraries from the SDK to the intermediate output directory or other files to the publish directory, since we can't control those we can't run them remotely so we need to copy those files to the Mac to ensure other targets will find those.
* [dotnet] Fixes how files are copied to the output dir
- Before executing `_CopyResolvedFilesToPublishPreserveNewest` and `_CopyResolvedFilesToPublishAlways` we copy the input files for those targets to the Mac
- Then we override the original targets to execute the same copy task as the original ones but on the Mac, so the output files are placed in the right location for the following targets to pick them up.
* Fixes typo on Xamarin.iOS.Common.After.targets
* Bumps Xamarin.Messaging
* [msbuild] Fixes VerifyXcodeVersion and ResolveUTIs tasks
Both tasks were not being able to connect to the Mac mostly because of ILRepack, there were kind of 2 versions of Xamarin.Messaging, one merged into Xamarin.iOS.Tasks and another one merged into Xamarin.iOS.Windows.Tasks. Because of this the build connection object registered on the task could not be casted to the build connection type.
This essentially moves both tasks into the Xamarin.iOS.Tasks assembly to avoid this issue, and as part of that also includes the Messaging contracts into that same project.
* [msbuild] Fixes warnings when building from Windows
* [dotnet] Adds missing assemblies to merge into Xamarin.iOS.Tasks
Those 2 new assemblies will only be used from Windows and we need their implementation instead of the ref assemblies. In the future we will need to find a way of doing this on the Windows only pack insted of doing it on the core Xamarin.iOS.Tasks assembly.
* [dotnet] Compute PublishTrimmed on a target
We need to do this so the property is evaluated after VS on Windows connects to the Mac, otherwise by default IsMacEnabled is false from Windows.
* Bumps Messaging to 1.2.111
* [dotnet] Execute ILLink remotely when building from Windows
- Overrides the ILLink task and _RunILLink target to add the hability to execute it remotely, adding input and output properties so files are copied to the server and output files are created on Windows.
- This "custom" ILLink task will only be executed from the Windows targets so when building from a Mac it will execute the core SDK task.
* [dotnet] Fixes intput/output files creation for linker tasks
- Custom Linker options file should be created on the Mac so we need to execute WriteLinesToFile remotely
- All the *.items files from the linker are created on the Mac so we need to execute ReadItemsFromFile remotely
- CompileNativeCode: fixes the OutputFile metadata path, otherwise the execution fails; also copies all the files in the declared "IncludeDirectories" to the Mac
- Avoids copying input files from Windows to the Mac when running LinkNativeCode since the real input files already exist on the Mac, and Windows contains only empty files just to make MSBuild inputs/outputs check work. If we copy those empty files to the Mac we brake the build.
* [msbuild] Minor fixes after merging from main
* [dotnet] Adds missing output files to the Xamarin.iOS.Tasks.Windows project
The output of this project was missing Messaging build targets and the build agent zip file that are needed to create the dotnet Windows specific pack
* [dotnet] Fixes dotnet Windows specific pack generation
Ensures the Windows projects are built and the files are copied to the dotnet pack directory before creating the package.
It also adds a variable to enable building this pack.
* [dotnet] Adds iOS Windows specific pack to iOS only MSI
There's only a Windows specific pack for iOS available for now, so we should only add it to the iOS SDK MSI
* [dotnet] Create a separate bundle for the iOS Windows MSI
We need to do this to avoid including the Windows specific pack in the pkg. Also for now we'll only create an MSI for iOS since it's the only supported platform from Windows.
* Fixes spacing issues in Xamarin.iOS.Tasks.csproj
* Bumps Touch.Unit back to 05db76
* Fixes formatting problems
* [msbuild] Replaces error E0176 by E0186
Because there's a warning W0176 that will overlap with the error
* [msbuild] Fixes CompileEntitlements task
There were 2 problems:
1- The if statement on the DefaultEntitlementsPath was wrong, because we should return the base value if there's no SessionId (which means the task is running on a Mac)
2- We should copy to the Mac the default entitlements file if no custom file was specified
* Several fixes to cleanup the code to support iOS from Windows
* Apply suggestions from code review
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
* Formatting fixes in Xamarin.Messaging.Build
* Reverted formatting changes in CompileEntitlements.cs
* More formatting fixes
* Update msbuild/Messaging/Xamarin.Messaging.Build/Handlers/ExecuteTaskMessageHandler.cs
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
* Fixes order of MSBuild errors in the resource file
* Add newly added localizable strings to canary test of translated strings.
* Delete tests that ensure theres code only on the abstract tasks
These were needed to ensure all the code was in the base tasks so we could have tasks implementations on Windows to remote those. Now that code is part of this repo (and that is why these tests are failing now) so we do not need them anymore.
* [dotnet] Don't build the Windows SDK pack if not configured to do so.
Co-authored-by: mag <mauro.agnoletti@gmail.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2021-02-12 09:43:17 +03:00
if [ -n " $( ENABLE_DOTNET_WINDOWS) " ] ; then \
echo "Dotnet-specific Windows build has been re-enabled" ; \
CONFIGURE_FLAGS = " $$ CONFIGURE_FLAGS --enable-dotnet-windows " ; \
fi ; \
2020-11-05 17:58:15 +03:00
./configure " $$ CONFIGURE_FLAGS " ; \
$( MAKE) reset; \
echo "Done" ; \
else \
echo "Done" ; \
fi ; \
2016-10-04 19:42:57 +03:00
2016-04-21 19:01:11 +03:00
i f d e f E N A B L E _ X A M A R I N
SUBDIRS += $( MACCORE_PATH)
e n d i f
2016-06-06 18:13:52 +03:00
SUBDIRS += tests