Skip to content

examples/tlm: build shared common sources once via OBJECT library - #176

Open
AmeyaVS wants to merge 1 commit into
accellera-official:mainfrom
AmeyaVS:ameya/examples-tlm-common-objlib
Open

examples/tlm: build shared common sources once via OBJECT library#176
AmeyaVS wants to merge 1 commit into
accellera-official:mainfrom
AmeyaVS:ameya/examples-tlm-common-objlib

Conversation

@AmeyaVS

@AmeyaVS AmeyaVS commented Aug 27, 2026

Copy link
Copy Markdown

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.

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant