Skip to content

build: install AccessKit/ANGLE deps and fix build script arguments - #237

Merged
Naruto merged 1 commit into
developfrom
fix/build-scripts-godot-4-7
Jul 22, 2026
Merged

Naruto merged 1 commit into
developfrom
fix/build-scripts-godot-4-7

Conversation

@Naruto

@Naruto Naruto commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Description

Godot 4.7 links two prebuilt SDKs that are not part of the engine source tree: AccessKit (screen reader support) and ANGLE (the OpenGL ES rendering driver). When they are missing, scons only prints a warning and silently disables those drivers, so the editor/templates we build lack features the official Godot builds ship with:

WARNING: The screen reader support driver requires dependencies to be installed.
WARNING: The ANGLE rendering driver requires dependencies to be installed.

build.sh / build.ps1 now install them before invoking scons, using the installers from the godot/ checkout so the dependency versions always match the engine revision being built. A new deps=<yes|no> option (default yes) controls this; already-installed dependencies are skipped, mobile/web platforms use neither, and ANGLE is additionally skipped on Linux.

While verifying the 4.7 build, a few build-script defects surfaced and are fixed here as well:

  • build.sh ignored cpus= and always passed the default value to scons -j ($build_default_opts[cpus] instead of ${opts[cpus]}).
  • build.ps1 seeded its scons argument string from an undefined $internal_opts (emitting an empty platform=) and then concatenated the whole string onto itself (+= with the full string).
  • build.ps1 forwarded release-windows.ps1's strip=yes to scons instead of consuming it as a build-script option. It is now a recognized option, documented as a no-op on MSVC (debug info lives in a separate .pdb).
  • .github/actions/setup-godot fetched ANGLE pinned at chromium/6601.2 (4.7 needs chromium/7219) and unpacked it outside build_deps. Those steps are removed since the build scripts now cover it; the Vulkan SDK and D3D12 steps are kept.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Verification

Verified on macOS (arm64) against godot @ 4.7 (v4.7.2.rc) and godot-cpp @ master:

Check Result
./scripts/build.sh (custom module, target=editor) Succeeds; both warnings gone, links with ANGLE_ENABLED
./scripts/build-extension.sh (GDExtension, api_version=4.7) Succeeds
Built Godot.app: SpriteStudioPlayer2D / SSABResource registered and instantiable OK
Re-running build.sh with dependencies present Skips both downloads (no re-fetch)

Windows and Linux are not verified by an actual build; build.ps1 was checked by parser validation and a dry run of its scons argument assembly.

Notes

  • Linking now emits duplicate symbol warnings for Rust symbols (rust_eh_personality, __rust_alloc, ...) shared between libssruntime, libssconverter and 4.7's new libaccesskit. The link succeeds; recorded here as a known 4.7 artifact.
  • build.sh still carries a dead if [[ ${VERSION} =~ ^3\..* ]] branch for Godot 3.x. Left untouched to keep this change scoped.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Godot 4.7 links two prebuilt SDKs that are not part of the engine source
tree: AccessKit (screen reader support) and ANGLE (OpenGL ES driver).
When they are missing scons only prints a warning and silently disables
those drivers, so the produced editor/templates lack features the
official builds ship with.

build.sh / build.ps1 now install them before building, using the
installers from the godot/ checkout so the dependency versions always
match the engine revision. Controlled by the new deps=<yes|no> option
(default yes); mobile and web platforms use neither and are skipped, as
is ANGLE on Linux.

Also fixes defects found while verifying the 4.7 build:

- build.sh ignored cpus= and always passed the default value to scons -j.
- build.ps1 seeded its scons argument string from an undefined
  $internal_opts (emitting an empty platform=) and then concatenated the
  whole string onto itself.
- build.ps1 forwarded release-windows.ps1's strip=yes to scons instead of
  consuming it as a build-script option.
- setup-godot fetched ANGLE pinned at chromium/6601.2 (4.7 needs
  chromium/7219) and unpacked it outside build_deps; the build scripts
  now cover this.
@Naruto
Naruto merged commit 7a1012c into develop Jul 22, 2026
2 of 4 checks passed
@Naruto
Naruto deleted the fix/build-scripts-godot-4-7 branch July 22, 2026 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant