Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@akoeplinger@jkoritzinsky@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@akoeplinger@jkoritzinsky@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

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

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

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

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@akoeplinger@jkoritzinsky@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@akoeplinger@jkoritzinsky@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

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

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst - #126833

Merged
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target
Apr 15, 2026
Merged

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst#126833
steveisok merged 2 commits into
dotnet:mainfrom
steveisok:cmake-apple-target

Conversation

@steveisok

Copy link
Copy Markdown
Member

These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs.

Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence.

Per-platform variables are preserved where they genuinely differ:

  • configurecompiler.cmake: TARGET_* C++ defines and compiler targets
  • System.Security.Cryptography.Native.Apple: Swift platform names
  • System.Net.Security.Native / corehost: tvOS gssapi exclusion
  • System.Native: MacCatalyst pal_iossupportversion.m

Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block.

These three platforms share the same runtime constraints: static linking,
no fork(), no build tools, hybrid globalization, no console signals, etc.
Having each one listed individually in cmake conditions is verbose and
error-prone — PR dotnet#126550 accidentally disabled FEATURE_CORPROFILER for
tvOS alone, breaking unified-build tvOS legs.
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in
configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is
the target. Replace ~30 'all three grouped' patterns across 11 cmake
files with the umbrella, reducing line noise and preventing future
divergence.
Per-platform variables are preserved where they genuinely differ:
- configurecompiler.cmake: TARGET_* C++ defines and compiler targets
- System.Security.Cryptography.Native.Apple: Swift platform names
- System.Net.Security.Native / corehost: tvOS gssapi exclusion
- System.Native: MacCatalyst pal_iossupportversion.m
Also fixes: sendfile exclusion was missing MacCatalyst (now covered
by APPLE_MOBILE), and the triplicated configure.cmake feature overrides
for iOS/MacCatalyst/tvOS are consolidated into one block.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new CMake umbrella variable, CLR_CMAKE_TARGET_APPLE_MOBILE, to represent iOS/tvOS/MacCatalyst collectively, reducing duplicated platform conditionals and helping avoid unintended per-platform divergence in build feature logic.

Changes:

  • Define CLR_CMAKE_TARGET_APPLE_MOBILE in eng/native/configureplatform.cmake when targeting iOS, tvOS, or MacCatalyst.
  • Replace repeated (MACCATALYST OR IOS OR TVOS) / negated variants across CoreCLR and native libraries CMake files with the new umbrella variable.
  • Consolidate several Apple-mobile-specific configure-time feature overrides (e.g., sendfile probing and TRY_RUN-derived feature defaults) under the umbrella check.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
eng/native/configureplatform.cmakeDefines CLR_CMAKE_TARGET_APPLE_MOBILE and uses it for zlib/tooling platform gating.
src/native/libs/configure.cmakeUses the umbrella to gate sendfile probes and Apple-mobile TRY_RUN overrides / header availability flags.
src/native/libs/CMakeLists.txtUses umbrella for Apple-mobile install-name handling and to exclude System.IO.Ports.Native on Apple-mobile targets.
src/coreclr/CMakeLists.txtUses umbrella to skip single-file host build on Apple-mobile targets.
src/coreclr/clrfeatures.cmakeUses umbrella to drive FEATURE_STATICALLY_LINKED for Apple-mobile targets.
src/native/libs/System.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in console-signals and entrypoint-verification gating.
src/native/libs/System.Globalization.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for hybrid globalization + ICU/static-ICU behavior.
src/native/libs/System.IO.Compression.Native/CMakeLists.txtReplaces Apple-mobile platform triplets for export generation / entrypoints inclusion gating.
src/native/libs/System.IO.Compression.Native/extra_libs.cmakeUses umbrella for Apple-mobile zlib link behavior selection.
src/native/libs/System.Net.Security.Native/CMakeLists.txtReplaces Apple-mobile platform triplets in entrypoints inclusion and verification gating.
src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txtUses umbrella to select iOS-family keychain/x509 source set and entrypoint-verification gating.

Comment threadsrc/native/libs/configure.cmake Outdated
Comment threadsrc/native/libs/CMakeLists.txt

@jkoritzinskyjkoritzinsky left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once @akoeplinger's feedback is resolved.

MacCatalyst runs on macOS where sendfile() works and serial ports
are available. Only iOS and tvOS need these exclusions (sendfile
causes SIGSYS on physical devices, and IO.Ports has no hardware).
Addresses PR feedback from akoeplinger.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@steveisok
steveisok enabled auto-merge (squash) April 15, 2026 18:42
@steveisok

Copy link
Copy Markdown
MemberAuthor

/ba-g Known issues and an unrelated helix deadletter.

@steveisok
steveisok merged commit 20461f5 into dotnet:mainApr 15, 2026
173 of 179 checks passed
@steveisok
steveisok deleted the cmake-apple-target branch April 15, 2026 18:42
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 16, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@akoeplinger@jkoritzinsky@AaronRobinsonMSFT