Open
Conversation
Contributor
Author
|
Hmm looks like I have to rework it a bit. It does work right now for clean builds but scons caching isn't smart enough to know none of the generated files actually got changed so it doesn't do incremental builds, ccache does work though. Update: I got it working with the caching but it requires a separate build step now which isn't ideal. This probably needs to be reworked to use a scons Builder, I think that would make it possible to do it all in one build step. I'd have to rewrite scu_builders.py to make that work though and I kinda don't feel like doing that since it works fine and already makes my builds a minute faster as it is now. |
64eac33 to
fb9eb33
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds the "Unity Build" scons options
scu_buildandscu_limitfrom the Godot build system. For the most part this works the same way as it does in Godot.It was pretty clear to me from looking at the ClangBuildAnalyzer results that 90% of the time spent compiling godot-cpp was spent parsing redundant header files in the 900+ generated cpp files that were getting compiled individually. It told me that
class_db.hppwas being included over 1000 times and that clang was taking around 10x as much time in the frontend than it was in the backend, which usually means it's parsing the same headers over and over again instead of actually generating code.Compiling a clean build on my computer with
scons scu_build=yes scu_limit=256takes 32.93 seconds.Just using
sconstakes 124.75 seconds.This makes compile time 73% faster on my computer.