Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add Mac Catalyst (iOS API, Mac ABI) runtime by directhex · Pull Request #47823 · dotnet/runtime · GitHub
Skip to content

Add Mac Catalyst (iOS API, Mac ABI) runtime - #47823

Merged
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse
Feb 8, 2021
Merged

Add Mac Catalyst (iOS API, Mac ABI) runtime#47823
directhex merged 32 commits into
dotnet:masterfrom
directhex:catalyse

Conversation

@directhex

@directhexdirecthex commented Feb 3, 2021

Copy link
Copy Markdown
Contributor

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness support for maccatalystAdd Support for Mac Catalyst  xharness#435

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@ghost

ghost commented Feb 3, 2021

Copy link
Copy Markdown

Tagging subscribers to this area: @safern, @ViktorHofer
See info in area-owners.md if you want to be subscribed.

Issue Details

This ties into several concurrent discussions:

#47645
#47517
#47518
#44882
dotnet/designs#174
#47768
dotnet/xamarin#29

I've made a few assumptions for now:

  • RIDs will be maccatalyst-x64 and maccatalyst-arm64
  • TFM is net6.0-maccatalyst
  • TargetsMacCatalyst gets defined in the build
  • IsMacCatalyst() and IsMacCatalystVersionAtLeast() get added to System.Runtime (an API change in need of review)
  • --os maccatalyst gets passed to build.sh
  • xharness ios will work with Catalyst apps, through addition of a maccatalyst test target (TODO)

It should work well enough right now to happily build a maccatalyst-x64 runtime pack. maccatalyst-arm64 requires an LLVM build, which we don't have as of today, plus a newer macOS/Xcode than my current dev machine. I know I've made some incorrect assumptions regarding ARM64 (e.g. the target iOS version for Catalyst needs to map to macOS 11.0+, but the number I'm using maps to 10.15.1)

Author:directhex
Assignees:-
Labels:

area-Infrastructure-libraries, new-api-needs-documentation

Milestone:-

@directhex

Copy link
Copy Markdown
ContributorAuthor

I haven't added yml to build the new stuff yet

Comment threadsrc/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs Outdated
Comment threadeng/build.sh
@directhex

Copy link
Copy Markdown
ContributorAuthor

Doesn't build with updated cmake. How exciting!

Somewhere between CMake 3.17 and 3.19.4, a decision was made to force
setting of -mmacosx-version-min when building with an OSX SDK. Leave
The relevant cmake deployment variable blank, and it just picks its
own default. You can't bypass it, as far as I can tell.
Mac Catalyst requires a -target flag, which is incompatible with
a -mmacosx-version-min flag. Sadly, our best option is to suppress
the warning/error, as the bug is in CMake not with us.
@directhex

Copy link
Copy Markdown
ContributorAuthor

Relevant CMake issue is https://gitlab.kitware.com/cmake/cmake/-/issues/20132. I have a workaround, pushing to branch

@directhex
directhex marked this pull request as ready for review February 4, 2021 19:11
Comment threadsrc/libraries/Native/Unix/configure.cmake
Comment threadDirectory.Build.props Outdated
Comment threadDirectory.Build.props Outdated
Comment threadeng/native/configurecompiler.cmake
Comment threadsrc/mono/mono/mini/graph.c Outdated
Comment threadsrc/mono/mono/mini/helpers.c Outdated
Comment threadsrc/tasks/AppleAppBuilder/Templates/runtime.m
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
Comment threadsrc/tasks/AppleAppBuilder/Xcode.cs Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 builds blocked on:

 /Users/directhex/Projects/runtime/src/mono/mono/mini/exceptions-arm64.c:552:2: warning: incompatible pointer to integer conversion assigning to '__uint64_t' (aka 'unsigned long long') from 'gpointer' (aka 'void *') [-Wint-conversion]
UCONTEXT_REG_SET_PC (sigctx, addr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/directhex/Projects/runtime/src/mono/mono/mini/../../mono/utils/mono-sigcontext.h:498:24: note: expanded from macro 'UCONTEXT_REG_SET_PC'
UCONTEXT_REG_PC (ctx) = (val); \
^ ~~~~~
1 warning generated.

@directhex

Copy link
Copy Markdown
ContributorAuthor

CI is boned today, and it's not my fault

@directhex

Copy link
Copy Markdown
ContributorAuthor

ARM64 will be turned on when #47891 is fixed and merged

@directhex

Copy link
Copy Markdown
ContributorAuthor

AppleAppBuilder needs serious work for Mac Catalyst ARM64, but should be good on x64

Comment threadsrc/mono/cmake/configure.cmake Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
Comment threadsrc/mono/mono.proj Outdated
@directhex

Copy link
Copy Markdown
ContributorAuthor

I've dispatched an official build, since my "oops it broke official builds" success rate isn't great

@directhex

Copy link
Copy Markdown
ContributorAuthor

passed on internal

@directhex
directhex merged commit 44f8f0f into dotnet:masterFeb 8, 2021
@ghostghost locked as resolved and limited conversation to collaborators Mar 10, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@directhex@rolfbjarne@marek-safar@steveisok@akoeplinger@CoffeeFlux@safern