-
Notifications
You must be signed in to change notification settings - Fork 61
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
base: main
Are you sure you want to change the base?
Conversation
SConstruct
Outdated
@@ -9,6 +9,7 @@ libname = "EXTENSION-NAME" | |||
projectdir = "demo" | |||
|
|||
localEnv = Environment(tools=["default"], PLATFORM="") | |||
localEnv["build_profile"] = "build_profile.json" |
There was a problem hiding this comment.
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:
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
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 runningscons --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.