Skip to content

Add Tizen x64 and arm64 native build support#3620

Merged
mattleibow merged 3 commits into
mainfrom
dev/tizen-x64-arm64
Apr 9, 2026
Merged

Add Tizen x64 and arm64 native build support#3620
mattleibow merged 3 commits into
mainfrom
dev/tizen-x64-arm64

Conversation

@mattleibow

@mattleibow mattleibow commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Add 64-bit (x86_64, aarch64) native library builds for Tizen alongside existing 32-bit (arm, x86) builds.

Architecture matrix

Arch Output Dir RID Rootstrap Profile
ARM 32 armel tizen-armel mobile-6.0-device.core mobile-6.0
x86 32 i586 tizen-x86 mobile-6.0-emulator.core mobile-6.0
x64 x86_64 tizen-x64 tizen-8.0-emulator64.core tizen-8.0
ARM64 aarch64 tizen-arm64 tizen-8.0-device64.core tizen-8.0

Changes

File Change
externals/skia Submodule update → mono/skia#175 (GN config for x64/arm64 target_cpu)
native/tizen/build.cake Refactored with SetProjectProfile() helper; builds all 4 architectures; cleans stale build dirs between arch switches
binding/IncludeNativeAssets.SkiaSharp.targets Add tizen-x64 and tizen-arm64 TizenTpkFiles entries
binding/IncludeNativeAssets.HarfBuzzSharp.targets Same + fix missing space in tvOS condition
binding/SkiaSharp.NativeAssets.Tizen/*.csproj Add x86_64 and aarch64 PackageFile entries
binding/HarfBuzzSharp.NativeAssets.Tizen/*.csproj Same

RIDs match Samsung's official RuntimeIdentifierGraph.json.

Depends on

Add 64-bit (x86_64, aarch64) native library builds for Tizen alongside
existing 32-bit (arm, x86) builds.

Native build (native/tizen/build.cake):
- Refactored with helper functions and SetProjectProfile()
- armel/i586 use mobile-6.0 rootstraps
- x86_64/aarch64 use tizen-8.0 rootstraps

Submodule (externals/skia):
- Add x64 and arm64 target_cpu branches to GN BUILDCONFIG.gn
- x86_64 uses tizen-8.0-emulator64.core rootstrap
- aarch64 uses tizen-8.0-device64.core rootstrap

Packaging:
- Add tizen-x64 and tizen-arm64 entries to IncludeNativeAssets targets
- Add x86_64 and aarch64 PackageFile entries to NativeAssets.Tizen csproj

RIDs match Samsung's official RuntimeIdentifierGraph.json.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow
mattleibow force-pushed the dev/tizen-x64-arm64 branch from 4ecd2cd to 41aeee4 Compare April 9, 2026 00:00
@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

📦 Try the packages from this PR

Warning

Do not run these scripts without first reviewing the code in this PR.

Step 1 — Download the packages

bash / macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 3620

PowerShell / Windows:

iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 3620"

Step 2 — Add the local NuGet source

dotnet nuget add source ~/.skiasharp/hives/pr-3620/packages --name skiasharp-pr-3620
More options
Option Description
--successful-only / -SuccessfulOnly Only use successful builds
--force / -Force Overwrite previously downloaded packages
--list / -List List available artifacts without downloading
--build-id ID / -BuildId ID Download from a specific build

Or download manually from Azure Pipelines — look for the nuget artifact on the build for this PR.

Remove the source when you're done:

dotnet nuget remove source skiasharp-pr-3620

github-actions Bot pushed a commit that referenced this pull request Apr 9, 2026
@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation for this PR has been deployed and is available at:

🔗 View Staging Site
🔗 View Staging Docs
🔗 View Staging Gallery

This preview will be updated automatically when you push new commits to this PR.


This comment is automatically updated by the documentation staging workflow.

…rop defaults

The SetProjectProfile regex check threw when the replacement value matched
the existing content (e.g. first armel build with mobile-6.0 already set).
Use IsMatch before Replace instead of comparing before/after strings.

Also update project_def.prop default profiles to tizen-8.0 (the build
dynamically sets the correct profile per architecture anyway).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Apr 9, 2026
mattleibow added a commit to mono/skia that referenced this pull request Apr 9, 2026
Context: mono/SkiaSharp#3620

Add x64 and arm64 target_cpu branches to the Tizen `is_tizen` block in
gn/BUILDCONFIG.gn, enabling 64-bit native library builds for Tizen 8.0.

  * x64: x86_64-tizen-linux-gnu target with tizen-{ver}-emulator64.core rootstrap
  * arm64: aarch64-tizen-linux-gnu target with tizen-{ver}-device64.core rootstrap

The default ncli_version is bumped from 4.0 to 8.0 since the 64-bit
rootstraps require Tizen 8.0. Callers targeting older rootstraps (mobile
6.0 for armel/i586) override ncli_version via GN args, so existing
32-bit builds are unaffected.
Point externals/skia to 8c99e432ff (the squash-merge of PR #175 onto
the skiasharp branch) instead of the feature branch commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow
mattleibow merged commit 642ba30 into main Apr 9, 2026
3 of 4 checks passed
@mattleibow
mattleibow deleted the dev/tizen-x64-arm64 branch April 9, 2026 16:15
github-actions Bot pushed a commit that referenced this pull request Apr 9, 2026
github-actions Bot pushed a commit that referenced this pull request Apr 9, 2026
mattleibow added a commit that referenced this pull request Apr 15, 2026
Split the single Tizen native build job (which builds arm, x86, x64, and
arm64 sequentially) into 4 separate parallel jobs, one per architecture.

This matches the pattern used by Android, Win32, WinUI, and ANGLE builds.
The single-job approach was hitting the 3-hour AzDO worker timeout now that
x64 and arm64 architectures were added in #3620.

The cake build already supports --buildarch filtering via the Skip() function
in native-shared.cake, so no build script changes are needed.

Updated templates:
- azure-templates-stages-native-windows.yml (active, produces merge artifacts)
- azure-templates-stages-native-macos.yml (active)
- azure-templates-stages-native-linux.yml (disabled, kept consistent)
- azure-templates-stages-native-merge.yml (now references 4 per-arch artifacts)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow added a commit that referenced this pull request Apr 15, 2026
Split the single Tizen native build job (which builds arm, x86, x64, and
arm64 sequentially) into 4 separate parallel jobs, one per architecture.

This matches the pattern used by Android, Win32, WinUI, and ANGLE builds.
The single-job approach was hitting the 3-hour AzDO worker timeout now that
x64 and arm64 architectures were added in #3620.

The cake build already supports --buildarch filtering via the Skip() function
in native-shared.cake, so no build script changes are needed.

Updated templates:
- azure-templates-stages-native-windows.yml (active, produces merge artifacts)
- azure-templates-stages-native-macos.yml (active)
- azure-templates-stages-native-linux.yml (disabled, kept consistent)
- azure-templates-stages-native-merge.yml (now references 4 per-arch artifacts)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow added a commit that referenced this pull request Apr 15, 2026
Split the single Tizen native build job (which builds arm, x86, x64, and
arm64 sequentially) into 4 separate parallel jobs, one per architecture.

This matches the pattern used by Android, Win32, WinUI, and ANGLE builds.
The single-job approach was hitting the 3-hour AzDO worker timeout now that
x64 and arm64 architectures were added in #3620.

The cake build already supports --buildarch filtering via the Skip() function
in native-shared.cake, so no build script changes are needed.

Updated templates:
- azure-templates-stages-native-windows.yml (active, produces merge artifacts)
- azure-templates-stages-native-macos.yml (active)
- azure-templates-stages-native-linux.yml (disabled, kept consistent)
- azure-templates-stages-native-merge.yml (now references 4 per-arch artifacts)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow added a commit that referenced this pull request Apr 15, 2026
[build] Split Tizen native CI into per-architecture jobs (#3672)

Context: #2933
Context: #3620

After #3620 added x64 and arm64 Tizen build support, the single Tizen CI
job built all 4 architectures sequentially (arm, x86, x64, arm64), hitting
the 3-hour AzDO worker timeout. This was the sole failure in 5 of the last
6 main builds.

Split the monolithic Tizen job into 4 parallel per-architecture jobs on
both macOS and Windows, matching the existing pattern used by Android,
Win32, WinUI, and ANGLE. The already-disabled Linux Tizen job (#2933) is
removed entirely. The merge stage now references the 4 per-arch Windows
artifact names.
@mattleibow mattleibow added this to the 4.x Preview 1 milestone May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant