examples/tlm: build shared common sources once via OBJECT library - #176
Open
AmeyaVS wants to merge 1 commit into
Open
examples/tlm: build shared common sources once via OBJECT library#176AmeyaVS wants to merge 1 commit into
AmeyaVS wants to merge 1 commit into
Conversation
Each TLM example listed the shared ../common/src/*.cpp helpers directly in its own add_executable(), so CMake compiled the same source once per target: report.cpp 11x, memory.cpp 10x, traffic_generator.cpp 9x, etc. (~60 redundant compilations of ~15 files during a regression/check build). Add examples/tlm/common/CMakeLists.txt building the used helpers once as an OBJECT library (tlm_common), mirroring the autotools libtlm20examples convenience library, and link the examples against it. at_extension_optional keeps its own private copies because it compiles the helpers with -DUSING_EXTENSION_OPTIONAL, which produces different object code. Common-source compilations drop from 60 to 22 (each helper now built at most twice: shared + the macro variant). Verified with ENABLE_REGRESSION=ON: full build is warning-clean under -Werror and the check target passes 916/916 regression and 35/35 example tests. Signed-off-by: Ameya Vikram Singh <ameya.v.singh@gmail.com>
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.
Each TLM example listed the shared ../common/src/*.cpp helpers directly in its own add_executable(), so CMake compiled the same source once per target: report.cpp 11x, memory.cpp 10x, traffic_generator.cpp 9x, etc. (~60 redundant compilations of ~15 files during a regression/check build).
Add examples/tlm/common/CMakeLists.txt building the used helpers once as an OBJECT library (tlm_common), mirroring the autotools libtlm20examples convenience library, and link the examples against it. at_extension_optional keeps its own private copies because it compiles the helpers with -DUSING_EXTENSION_OPTIONAL, which produces different object code.
Common-source compilations drop from 60 to 22 (each helper now built at most twice: shared + the macro variant). Verified with ENABLE_REGRESSION=ON: full build is warning-clean under -Werror and the check target passes 916/916 regression and 35/35 example tests.