Skip to content

fix(gyp): default enable_thin_lto so Node 26 win32 configure works#7

Merged
rubnogueira merged 2 commits into
masterfrom
fix/gyp-enable-thin-lto
May 19, 2026
Merged

fix(gyp): default enable_thin_lto so Node 26 win32 configure works#7
rubnogueira merged 2 commits into
masterfrom
fix/gyp-enable-thin-lto

Conversation

@rubnogueira
Copy link
Copy Markdown

Node 26's bundled common.gypi has a top-level
['enable_thin_lto=="true"', { ... }]
condition, but doesn't always inject a default for the variable itself. node-gyp 10.x (shipped inside prebuild 13.0.1) doesn't inject the default either. On Linux/macOS the include chain happens to define it elsewhere, but on Windows gyp configure fails before MSBuild even starts:

gyp: name 'enable_thin_lto' is not defined while evaluating
condition 'enable_thin_lto=="true"' in binding.gyp

Providing enable_thin_lto%='false' in our own variables block is a no-op when the variable is already set, so it's safe across all platforms and node-gyp versions. Verified locally that both 24.15.0 and 26.1.0 still build cleanly on darwin-arm64.

rubnogueira and others added 2 commits May 19, 2026 19:03
Node 26's bundled common.gypi has a top-level
  ['enable_thin_lto=="true"', { ... }]
condition, but doesn't always inject a default for the variable
itself. node-gyp 10.x (shipped inside prebuild 13.0.1) doesn't
inject the default either. On Linux/macOS the include chain
happens to define it elsewhere, but on Windows gyp configure
fails before MSBuild even starts:

  gyp: name 'enable_thin_lto' is not defined while evaluating
  condition 'enable_thin_lto=="true"' in binding.gyp

Providing `enable_thin_lto%='false'` in our own variables block
is a no-op when the variable is already set, so it's safe across
all platforms and node-gyp versions. Verified locally that both
24.15.0 and 26.1.0 still build cleanly on darwin-arm64.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Same Node 26 / node-gyp 10 issue as the previous commit, but the
error has now moved into the dependency:

  gyp: name 'enable_thin_lto' is not defined while evaluating
  condition 'enable_thin_lto=="true"' in deps\libexpat\libexpat.gyp
  while loading dependencies of binding.gyp

gyp loads each .gyp file in its own variable scope, so a `%` default
in the parent binding.gyp doesn't propagate down to dependencies.
Adding the same default to libexpat.gyp's top-level variables block.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rubnogueira rubnogueira merged commit 87d410d into master May 19, 2026
9 checks passed
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