Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial addition of tvOS Mono #34475

Merged
merged 40 commits into from
Apr 8, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
03c42ef
Initial addition of tvOS Mono
directhex Apr 2, 2020
0399617
Remove unneeded arm32 stuff for TVos
directhex Apr 2, 2020
2bd67ea
Group together conditional to avoid duplication
directhex Apr 2, 2020
6ace214
Actually define TargetstvOS
directhex Apr 3, 2020
8019fe6
More ac_cv_func values for tvOS, e.g.. no fork
directhex Apr 3, 2020
e2e4893
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 3, 2020
76832b8
Add some tvOS stuff to libraries build
directhex Apr 3, 2020
734d5b7
I hate XML
directhex Apr 3, 2020
b2917e9
Assume tvOS is iOS too, for build targetingy
directhex Apr 3, 2020
c500b2c
Revert "Assume tvOS is iOS too, for build targetingy"
directhex Apr 3, 2020
b2ae7d3
Add all the tvOS conditionals to library project files
directhex Apr 3, 2020
ad1e574
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 3, 2020
e890737
Typo
directhex Apr 3, 2020
4973e89
and not or
directhex Apr 3, 2020
c354cd0
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 3, 2020
98a21df
Changes to Mono corlib for TargetstvOS
directhex Apr 3, 2020
0e040e1
PR feedback
directhex Apr 3, 2020
84eba3f
Changes for build-native.sh for tvOS
directhex Apr 3, 2020
7865489
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 3, 2020
2064f1b
No objcopy for tvOS
directhex Apr 3, 2020
2a4c8f3
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 6, 2020
4255e62
Add tvOS conditionals to lots of PAL places
directhex Apr 6, 2020
9bfd9eb
Minor cleanup
directhex Apr 6, 2020
86c6a8d
Fix for setting a property before a needed override
directhex Apr 6, 2020
cf61062
No gssapi_krb5 on tvOS
directhex Apr 6, 2020
f328d80
No fork() on tvOS
directhex Apr 6, 2020
4f58eaa
Merge remote-tracking branch 'origin/master' into add-tvos
directhex Apr 6, 2020
b12b35f
Fix typo
directhex Apr 6, 2020
6bad0dc
Really no objcopy on tvOS
directhex Apr 6, 2020
fd24e88
Add tvOS Installer changes too
directhex Apr 6, 2020
570884e
Update src/mono/mono.proj
directhex Apr 7, 2020
feeb79f
Update src/mono/mono.proj
directhex Apr 7, 2020
b1e4a80
More flags
directhex Apr 7, 2020
b8731e0
Fix a nit
directhex Apr 7, 2020
3236ebe
More nits
directhex Apr 7, 2020
05e939f
Generalize tvOS deployment target setting
directhex Apr 7, 2020
fc8e22a
Revert "Update src/mono/mono.proj"
directhex Apr 7, 2020
daed844
Genericize use of mono AOT on iOS and tvOS
directhex Apr 7, 2020
a9b8bdc
More bitcode please
directhex Apr 7, 2020
a69a0d2
Clean up and genericize BuildMonoAOTCrossCompiler
directhex Apr 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion eng/Subsets.props
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@

<PropertyGroup>
<DefaultSubsetCategories>libraries-installer-coreclr-mono</DefaultSubsetCategories>
<DefaultSubsetCategories Condition="'$(TargetOS)' == 'tvOS'">libraries-installer-mono</DefaultSubsetCategories>
<DefaultSubsetCategories Condition="'$(TargetOS)' == 'iOS'">libraries-installer-mono</DefaultSubsetCategories>
<DefaultSubsetCategories Condition="'$(TargetOS)' == 'Android'">libraries-mono</DefaultSubsetCategories>
<DefaultInstallerSubsets>corehost-managed-depproj-pkgproj-bundle-installers-test</DefaultInstallerSubsets>
<DefaultInstallerSubsets Condition="'$(TargetOS)' == 'tvOS'">depproj-pkgproj</DefaultInstallerSubsets>
<DefaultInstallerSubsets Condition="'$(TargetOS)' == 'iOS'">depproj-pkgproj</DefaultInstallerSubsets>
<!-- TODO: Split into multiple sets. -->
<DefaultLibrariesSubsets>all</DefaultLibrariesSubsets>
Expand All @@ -80,7 +82,7 @@
</PropertyGroup>

<PropertyGroup>
<RuntimeFlavor Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">Mono</RuntimeFlavor>
<RuntimeFlavor Condition="'$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">Mono</RuntimeFlavor>
<RuntimeFlavor Condition="'$(RuntimeFlavor)' == '' and $(_subsetCategory.Contains('mono')) and !$(_subsetCategory.Contains('coreclr'))">Mono</RuntimeFlavor>
<RuntimeFlavor Condition="'$(RuntimeFlavor)' == ''">CoreCLR</RuntimeFlavor>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion eng/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ usage()
echo "Common settings:"
echo " --subset Build a subset, print available subsets with -subset help"
echo " --subsetCategory Build a subsetCategory, print available subsetCategories with -subset help"
echo " --os Build operating system: Windows_NT, Linux, FreeBSD, OSX, iOS or Android"
echo " --os Build operating system: Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS or Android"
echo " --arch Build platform: x86, x64, arm or arm64"
echo " --configuration Build configuration: Debug, Release or [CoreCLR]Checked (short: -c)"
echo " --runtimeConfiguration Runtime build configuration: Debug, Release or [CoreCLR]Checked"
Expand Down
2 changes: 1 addition & 1 deletion eng/codeOptimization.targets
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
IBCMerge optimizations on Mac for now to unblock the offical build.
See issue https://github.com/dotnet/runtime/issues/33303
-->
<IsEligibleForNgenOptimization Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">false</IsEligibleForNgenOptimization>
<IsEligibleForNgenOptimization Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">false</IsEligibleForNgenOptimization>
</PropertyGroup>

<Target Name="SetApplyNgenOptimization"
Expand Down
12 changes: 11 additions & 1 deletion eng/install-native-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ elif [ "$1" = "OSX" ]; then
if [ "$?" != "0" ]; then
exit 1;
fi
elif [ "$1" = "tvOS" ]; then
brew update
brew upgrade
if [ "$?" != "0" ]; then
exit 1;
fi
brew install openssl autoconf automake libtool pkg-config python3
if [ "$?" != "0" ]; then
exit 1;
fi
elif [ "$1" = "iOS" ]; then
brew update
brew upgrade
Expand All @@ -34,7 +44,7 @@ elif [ "$1" = "iOS" ]; then
exit 1;
fi
else
echo "Must pass \"Linux\", \"iOS\" or \"OSX\" as first argument."
echo "Must pass \"Linux\", \"tvOS\", \"iOS\" or \"OSX\" as first argument."
exit 1
fi

5 changes: 5 additions & 0 deletions eng/liveBuilds.targets
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,11 @@
<IsNative>true</IsNative>
</RuntimeFiles>

<MonoCrossFiles Condition="'$(TargetOS)' == 'tvOS'"
Include="$(MonoArtifactsPath)\cross\*.*" />
<MonoIncludeFiles Condition="'$(TargetOS)' == 'tvOS'"
Include="$(MonoArtifactsPath)\include\**\*.*" />

<MonoCrossFiles Condition="'$(TargetOS)' == 'iOS'"
Include="$(MonoArtifactsPath)\cross\*.*" />
<MonoIncludeFiles Condition="'$(TargetOS)' == 'iOS'"
Expand Down
13 changes: 13 additions & 0 deletions eng/native/configureplatform.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,19 @@ if(CLR_CMAKE_HOST_OS STREQUAL Darwin)
set(CMAKE_ASM_COMPILE_OBJECT "${CMAKE_C_COMPILER} <FLAGS> <DEFINES> <INCLUDES> -o <OBJECT> -c <SOURCE>")
endif(CLR_CMAKE_HOST_OS STREQUAL Darwin)

if(CLR_CMAKE_HOST_OS STREQUAL tvOS)
directhex marked this conversation as resolved.
Show resolved Hide resolved
set(CLR_CMAKE_HOST_UNIX 1)
set(CLR_CMAKE_HOST_IOS 1)
directhex marked this conversation as resolved.
Show resolved Hide resolved
set(CLR_CMAKE_HOST_TVOS 1)
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
set(CLR_CMAKE_HOST_UNIX_AMD64 1)
elseif(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
set(CLR_CMAKE_HOST_UNIX_ARM64 1)
else()
clr_unknown_arch()
endif()
endif(CLR_CMAKE_HOST_OS STREQUAL tvOS)
directhex marked this conversation as resolved.
Show resolved Hide resolved

if(CLR_CMAKE_HOST_OS STREQUAL iOS)
set(CLR_CMAKE_HOST_UNIX 1)
set(CLR_CMAKE_HOST_IOS 1)
Expand Down
2 changes: 2 additions & 0 deletions eng/native/init-distro-rid.sh
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@ initDistroRidGlobal()
distroRid="linux-$buildArch"
elif [ "$targetOs" = "OSX" ]; then
distroRid="osx-$buildArch"
elif [ "$targetOs" = "tvOS" ]; then
distroRid="tvos-$buildArch"
elif [ "$targetOs" = "iOS" ]; then
distroRid="ios-$buildArch"
elif [ "$targetOs" = "Android" ]; then
Expand Down
40 changes: 40 additions & 0 deletions eng/pipelines/common/platform-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,46 @@ jobs:
helixQueueGroup: ${{ parameters.helixQueueGroup }}
${{ insert }}: ${{ parameters.jobParameters }}

# tvOS x64

- ${{ if containsValue(parameters.platforms, 'tvOS_x64') }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
helixQueuesTemplate: ${{ parameters.helixQueuesTemplate }}
osGroup: tvOS
archType: x64
platform: tvOS_x64
jobParameters:
runtimeFlavor: mono
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
${{ if eq(parameters.passPlatforms, true) }}:
platforms: ${{ parameters.platforms }}
helixQueueGroup: ${{ parameters.helixQueueGroup }}
managedTestBuildOsGroup: OSX
${{ insert }}: ${{ parameters.jobParameters }}

# tvOS arm64

- ${{ if containsValue(parameters.platforms, 'tvOS_arm64') }}:
- template: xplat-setup.yml
parameters:
jobTemplate: ${{ parameters.jobTemplate }}
helixQueuesTemplate: ${{ parameters.helixQueuesTemplate }}
osGroup: tvOS
archType: arm64
platform: tvOS_arm64
jobParameters:
runtimeFlavor: mono
stagedBuild: ${{ parameters.stagedBuild }}
buildConfig: ${{ parameters.buildConfig }}
${{ if eq(parameters.passPlatforms, true) }}:
platforms: ${{ parameters.platforms }}
helixQueueGroup: ${{ parameters.helixQueueGroup }}
managedTestBuildOsGroup: OSX
${{ insert }}: ${{ parameters.jobParameters }}

# iOS x64

- ${{ if containsValue(parameters.platforms, 'iOS_x64') }}:
Expand Down
4 changes: 4 additions & 0 deletions eng/pipelines/common/xplat-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ jobs:
${{ if eq(parameters.osGroup, 'iOS') }}:
vmImage: 'macOS-10.14'

# Public OSX Build Pool
${{ if eq(parameters.osGroup, 'tvOS') }}:
vmImage: 'macOS-10.14'

# Official Build Windows Pool
${{ if and(eq(parameters.osGroup, 'Windows_NT'), ne(variables['System.TeamProject'], 'public')) }}:
name: NetCoreInternal-Pool
Expand Down
18 changes: 18 additions & 0 deletions eng/pipelines/installer/jobs/base-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,24 @@ jobs:
$(CommonMSBuildArgs)
$(OfficialBuildArg)

- ${{ if eq(parameters.osGroup, 'tvOS') }}:

- name: CommonMSBuildArgs
value: >-
/p:PortableBuild=true
/p:SkipTests=$(SkipTests)

- name: BaseJobBuildCommand
value: >-
$(Build.SourcesDirectory)/installer.sh --restore --build --ci --test
-configuration $(_BuildConfig)
-os ${{ parameters.osGroup }}
-arch ${{ parameters.archType }}
/p:StripSymbols=true
$(LiveOverridePathArgs)
$(CommonMSBuildArgs)
$(OfficialBuildArg)

- ${{ if eq(parameters.osGroup, 'iOS') }}:

- name: CommonMSBuildArgs
Expand Down
4 changes: 4 additions & 0 deletions eng/pipelines/libraries/base-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ jobs:
- ${{ if eq(parameters.osGroup, 'WebAssembly') }}:
- _runtimeOSArg: -os ${{ parameters.osGroup }}

# force a value for OS when cross-building tvOS on OSX
- ${{ if eq(parameters.osGroup, 'tvOS') }}:
- _runtimeOSArg: -os ${{ parameters.osGroup }}

# force a value for OS when cross-building iOS on OSX
- ${{ if eq(parameters.osGroup, 'iOS') }}:
- _runtimeOSArg: -os ${{ parameters.osGroup }}
Expand Down
5 changes: 4 additions & 1 deletion eng/pipelines/mono/templates/build-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ jobs:
value: /p:OutputRid=linux-musl-${{ parameters.archType }}
- name: _PortableBuild
value: true
- ${{ if eq(parameters.osGroup, 'tvOS') }}:
- name: osOverride
value: -os tvOS
- ${{ if eq(parameters.osGroup, 'iOS') }}:
- name: osOverride
value: -os iOS
Expand All @@ -79,7 +82,7 @@ jobs:
# Linux builds use docker images with dependencies preinstalled,
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if in(parameters.osGroup, 'OSX', 'iOS') }}:
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- script: sh $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
Expand Down
6 changes: 6 additions & 0 deletions eng/pipelines/runtime-official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ stages:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_x64
- iOS_arm
- iOS_arm64
Expand Down Expand Up @@ -145,6 +147,8 @@ stages:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_x64
- iOS_arm
- iOS_arm64
Expand Down Expand Up @@ -203,6 +207,8 @@ stages:
buildFullPlatformManifest: false
runtimeFlavor: mono
platforms:
- tvOS_x64
- tvOS_arm64
- iOS_arm
- iOS_arm64
- iOS_x64
Expand Down
10 changes: 10 additions & 0 deletions eng/pipelines/runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,8 @@ jobs:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_x64
- iOS_arm
- iOS_arm64
Expand Down Expand Up @@ -290,6 +292,8 @@ jobs:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_x64
- iOS_arm
- iOS_arm64
Expand Down Expand Up @@ -411,6 +415,8 @@ jobs:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_arm
- iOS_arm64
- iOS_x64
Expand All @@ -427,6 +433,8 @@ jobs:
- Android_x86
- Android_arm
- Android_arm64
- tvOS_x64
- tvOS_arm64
- iOS_arm
- iOS_arm64
- iOS_x64
Expand Down Expand Up @@ -523,6 +531,8 @@ jobs:
buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
runtimeFlavor: mono
platforms:
- tvOS_x64
- tvOS_arm64
- iOS_x64
- iOS_arm
- iOS_arm64
Expand Down
Loading