Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: fix gyp configs in debug #53605

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

legendecas
Copy link
Member

@legendecas legendecas commented Jun 27, 2024

Gyp generated build files should be able to be built in either Release/Debug mode.

  • make: single entry build file, two configurations by cli:
    make -C out BUILDTYPE=Release and make -C out BUILDTYPE=Debug.
  • msbuild: single entry build file, two configurations by cli:
    msbuild node.sln /p:Configuration=Release and
    msbuild node.sln /p:Configuration=Debug.
  • ninja: two directories in out/, build with
    ninja -C out/Release or ninja -C out/Debug.

Variables that changes with either Release or Debug configuration
should be defined in a configuration level, instead of the root level.
Example:

node/common.gypi

Lines 132 to 133 in 8e5d88b

'configurations': {
'Debug': {

This fixes generating invalid build files.

Additionally, v8_gypfiles/toolchain.gypi duplicates defines in
v8_gypfiles/features.gypi. Remove the duplications in
toolchains.gypi

Fixes: #53446

Gyp generated build files can be built in either Release/Debug mode.

- make: single directory, two configurations by cli:
  `make -C out BUILDTYPE=Release` and `make -C out BUILDTYPE=Debug`.
- msbuild: single directory, two configurations by cli:
  `msbuild node.sln /p:Configuration=Release` and
  `msbuild node.sln /p:Configuration=Debug`.
- ninja: two directories in `out/`, build with
  `ninja -C out/Release` or `ninja -C out/Debug`.

Variables that changes with either Release or Debug configuration
should be defined in a configuration level, instead of the root level.
This fixes generating invalid build files.

Additionally, `v8_gypfiles/toolchain.gypi` duplicates defines in
`v8_gypfiles/features.gypi`. Remove the duplications in
`toolchains.gypi`
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/v8-update

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. v8 engine Issues and PRs related to the V8 dependency. labels Jun 27, 2024
@legendecas
Copy link
Member Author

./configure --debug option is not removed as it sets the default build type as well.

Comment on lines +1309 to +1310
configs['Release'][name]= release
configs['Debug'][name]= debug
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit:

Suggested change
configs['Release'][name]= release
configs['Debug'][name]= debug
configs['Release'][name] = release
configs['Debug'][name] = debug

Copy link
Member

@targos targos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but it doesn't change the fact that ./configure --ninja --debug && make still builds in Release and Debug modes, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

node_mksnapshot debug build segfault
4 participants