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

Add a build profile with no disabled classes and pass it by default #82

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

unvermuthet
Copy link
Contributor

I suggested adding this file by default to hint at the fact that doing this is possible. Disabling unused classes can save a lot of time when compiling godot-cpp.

I'm not very familiar with SCons. Is localEnv a good place to set it? This way it seems to show up as the default when running scons --help.

Is the .json file extension a good idea? When exporting profiles from the editor .profile is the default. I went with .json because of language detection and syntax highlighting.

SConstruct Outdated
@@ -9,6 +9,7 @@ libname = "EXTENSION-NAME"
projectdir = "demo"

localEnv = Environment(tools=["default"], PLATFORM="")
localEnv["build_profile"] = "build_profile.json"
Copy link
Contributor

@Ivorforce Ivorforce Mar 5, 2025

Choose a reason for hiding this comment

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

I'd suggest the following:

Suggested change
localEnv["build_profile"] = "build_profile.json"
if ARGUMENTS.get("build_profile", None) is None:
# Using small build profiles decreases compile time.
# The file starts out empty. Edit it to benefit from decreased compile times.
ARGUMENTS["build_profile"] = str("build_profile.json")

(further up; at least before the env is created)

ARGUMENTS.setdefault("build_profile", "build_profile.json") should also work on new SCons versions, but my local scons actually didn't support it so I'd suggest if.

The comment above can be improved with a link to a docs entry for build profiles once we have one.

Copy link
Contributor

Choose a reason for hiding this comment

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

Another option would be to fail if the build_profile option is manually set because it probably shouldn't. But I don't see why I'd deny a user this configuration if it's explicitly requested.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

On my SCons version this code makes help show:

build_profile: Path to a file containing a feature build profile ( /path/to/build_profile )
    default: None
    actual: build_profile.json

Copy link
Contributor Author

@unvermuthet unvermuthet Mar 5, 2025

Choose a reason for hiding this comment

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

With the way it is, it show the default and can be replaced for me:

build_profile: Path to a file containing a feature build profile ( /path/to/build_profile )
    default: build_profile.json
    actual: copy.json

Copy link
Contributor

@Ivorforce Ivorforce Mar 5, 2025

Choose a reason for hiding this comment

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

Is this the case for both implementations?

The reason I'd recommend against localEnv["build_profile"] = "build_profile.json" is because it would silently ignore build_profile=some_build_profile.json arguments, overriding with the default value. This could potentially cause hard to debug problems.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah... perhaps this is because godot-cpp re-extracts the parameter after it's set?
I'm not sure which is the 'SCons' way to handle this. Yours seems better integrated, I suppose, so if it works it may be a better approach.

@paddy-exe paddy-exe added the enhancement New feature or request label Mar 5, 2025
@unvermuthet unvermuthet marked this pull request as ready for review March 5, 2025 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants