Skip to content

TotalCross/totalcross-skia-build

Repository files navigation

totalcross-skia-build

Build and release automation for TotalCross Skia prebuilts.

This repository is responsible for:

  • pinning the exact upstream Skia commit used by TotalCross
  • pinning the exact depot_tools revision used to build it
  • storing local build scripts and optional patches
  • packaging platform-specific Skia binaries
  • publishing GitHub Release assets consumed by the main TotalCross repository

Current Status

Implemented:

  • macOS arm64 build script
  • macOS x86_64 build script
  • Linux x86_64 build script
  • Linux armv7l build script
  • Android arm64-v8a build script
  • Android armeabi-v7a build script
  • dev bundle packaging for modules/skia/include and modules/skia/src/gpu/gl
  • manifest pinned to the current inputs from ~/repos/skia-build

Planned next:

  • Linux aarch64 build recipe
  • release workflow upload steps
  • patch application flow

Planned Layout

.
├── .github/workflows/
├── depot_tools/           # pinned depot_tools submodule
├── patches/
├── scripts/
├── skia/                  # upstream Skia submodule
├── LICENSE
├── README.md
├── THIRD_PARTY_NOTICES.md
└── manifest.json

Release Assets

Suggested binary assets:

  • libskia-macos-arm64.a
  • libskia-macos-x86_64.a
  • libskia-linux-aarch64.a
  • libskia-linux-armv7l.a
  • libskia-linux-x86_64.a
  • libskia-android-arm64-v8a.so
  • libskia-android-armeabi-v7a.so

Suggested shared dev bundle:

  • skia-dev-<version>.tar.gz

The dev bundle should contain:

modules/skia/
  include/
  src/gpu/gl/

Release Tag Convention

Recommended tag format:

  • skia-<upstream-commit>-r1
  • example: skia-158dc9d7-r1

Current Pins

  • skia: 158dc9d7d4cafb177b99b68c5dc502f8f4282092
  • depot_tools: e868546ad82d7d25eb0a925825d033c355e28152

These values were copied from the existing local ~/repos/skia-build setup. That repository has some historical script drift, so this repository uses the current pinned submodule revisions together with the effective macOS build configuration found in the generated args.gn.

Relationship With TotalCross

The main TotalCross repository should consume these artifacts through GitHub Releases, using fixed tags and SHA256 checksums.

Local Usage

After adding the Skia submodule, a typical local flow is:

git submodule update --init --recursive
bash scripts/build-macos-arm64.sh
bash scripts/build-macos-x86_64.sh
bash scripts/build-linux-x86_64.sh
bash scripts/build-linux-armv7l.sh
bash scripts/build-android-arm64.sh
bash scripts/build-android-armv7.sh
bash scripts/package-dev-bundle.sh

Artifacts will be written to dist/.

Release using GitHub CLI

Example usage

gh release create skia-158dc9d7-r1 \
  dist/libskia-android-arm64-v8a.so \
  dist/libskia-android-armeabi-v7a.so \
  dist/libskia-ios-universal.a \
  dist/libskia-linux-aarch64.a \
  dist/libskia-linux-armv7l.a \
  dist/libskia-linux-x86_64.a \
  dist/libskia-macos-arm64.a \
  dist/libskia-macos-x86_64.a \
  dist/skia-dev-158dc9d7.tar.gz \
  dist/SHA256SUMS \
  --repo TotalCross/totalcross-skia-build \
  --title "Skia prebuilts 158dc9d7 r1" \
  --notes "Skia prebuilts for TotalCross.

Skia commit: 158dc9d7d4cafb177b99b68c5dc502f8f4282092
depot_tools commit: e868546ad82d7d25eb0a925825d033c355e28152"

License Notes

This repository is MIT-licensed for its own scripts and automation. Upstream Skia code and generated artifacts remain subject to Skia's original license and any other applicable third-party licenses.

About

Build and release automation for TotalCross Skia prebuilts, including patched Skia sources, platform-specific artifacts, and GitHub Releases packaging.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages