Skip to content

Deprecation proposal for SCons support (emscons) #27835

Open

Description

@sbc100

Tracking issue for the deprecation and removal of built-in SCons support
(emscons and tools/scons/site_scons/site_tools/emscripten).

SCons sees very little usage in the C/C++ and WebAssembly ecosystem these days,
and maintaining built-in integration in Emscripten carries ongoing maintenance
and CI overhead (such as keeping a hardcoded list of Emscripten environment
variables in sync in tools/scons and running SCons tests in CI).

Notably, the only major project using SCons with Emscripten today appears to be
the Godot Engine, and they do not use emscons or Emscripten's built-in SCons
tool (instead configuring emcc/em++/emar/emranlib directly in their own
platform/web/detect.py). A GitHub code search for emscons
and EMSCRIPTEN_TOOL_PATH similarly shows very few active projects using it.

Projects that still wish to use SCons with Emscripten can either configure
CC, CXX, AR, and RANLIB directly in their SConstruct file, or vendor
the small emscripten.py tool script directly into their own
project's site_scons/site_tools/ directory.

The process for deprecating and removing features from emscripten is laid out
in docs/process.md.

At any point in the process we may decide to delay or abort the deprecation and
close this issue.

Deprecation checklist:

  • Open an issue (this)
  • Send message to emscripten-discuss
  • Add "deprecation" warning to emscons / SCons tool
  • Perform global search for usage in public repos
  • Wait at least 4 releases or 2 months
  • Remove feature from codebase

Activity

  1. self-assigned this
    on Oct 1, 2026
  2. phongn commented on Oct 9, 2026

    @phongn

    My company actually users SCons heavily (via the Parts overlay system) and we are preparing to use move our proof-of-concept test builds over to it. Our internal branch is significantly ahead of upstream, but we do have a backport PR open.

    I've read much of emsdk's documentation before, and probably could either vendor the existing deprecated caller or more formally integrate those environment variables.

  3. sbc100 commented on Oct 9, 2026

    @sbc100
    CollaboratorAuthor

    Is the support you are referring too in sconsparts actually using the upstream emscripten SCons support? I tried to figure out and it doesn't look like it is maybe? But perhaps you can confirm. If its not using out internal scons support then removing to won't effect you. This is the case for the godot engine, for example.

  4. sbc100 commented on Oct 9, 2026

    @sbc100
    CollaboratorAuthor

    According the AI analysis non of the scons support you refer to in the sconsparts project or your PR depends on emscripten's builtin SCons support so should not be effected by this change.

  5. sbc100 commented on Oct 9, 2026

    @sbc100
    CollaboratorAuthor

    Global GitHub Code Search Results (AI-generated)

    Global GitHub code searches across public repositories (excluding clones/forks
    of Emscripten itself) for:

    1. Projects Using emscons / site_tools/emscripten

    Across all of GitHub, only a handful of distinct projects use emscons or
    EMSCRIPTEN_TOOL_PATH, and only one appears to be actively maintaining its
    WebAssembly SCons build:

    2. Downstream Packaging & Tool Wrappers

    Several downstream package definitions and tool wrappers list emscons alongside
    other Emscripten entry points (emcc, em++, emcmake, emmake, etc.) when
    creating symlinks or install manifests, and will simply drop emscons when
    upgrading:

    • OS package repos (FreeBSD ports, NetBSD pkgsrc-wip, Nixpkgs, Alpine aports, Debian, Gentoo oiledmachine-overlay)
    • zackees/clang-tool-chain

    3. Projects Using SCons with Emscripten Without emscons

    • godotengine/godot: Configures emcc/em++/emar/emranlib
      directly in its own platform/web/detect.py.
    • sconsparts/parts (PR #18): Implements its own standalone
      emsdk SCons toolchain via $EMSDK rather than using emscons or
      site_tools/emscripten.
  6. LordOfDragons commented on Oct 10, 2026

    @LordOfDragons

    What is the best way forward here? I don't mind including a site_tools from emscripten if this is the recommended way to avoid build breakage.

  7. sbc100 commented on Oct 10, 2026

    @sbc100
    CollaboratorAuthor

    yes, perhaps if you are the last user of these tools you could just copy them into your tree? We don't have a lot of scons knowledge or expertese upstream in emscripten so that could make sense.

    If more users come out the woodwork we could also delay of cancel this plan.

  8. bdbaddog commented on Oct 19, 2026

    @bdbaddog

    You can contribute that tool to scons-contrib repo?
    https://github.com/SCons/scons-contrib

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions