CNA-BUG-230: cna_define_shared_runtime_deferred's comment says cna_graphics_ext and cna_devices_ext exist only with CNA_CNAEXT; modules/CMakeLists.txt always creates both
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The shared-library composition keeps an if(TARGET) filter justified by a comment that the extension targets are optional, but both are defined unconditionally, so the comment misstates the module model.
- Identifier
CNA-BUG-230- Category
- Bug
- Subsystem
- Documentation & release tooling
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- cmake/SharedRuntimeLibrary.cmake cna_define_shared_runtime_deferred (composition of libcna.so under CNA_SHARED_LIBRARY)
Expected behaviour
The comment should say why a runtime part might not exist; a maintainer changing the CNA_SHARED_LIBRARY composition relies on it to know which targets are optional.
Actual behaviour at TARGET
cmake/SharedRuntimeLibrary.cmake (cna_define_shared_runtime_deferred) says "cna_graphics_ext and cna_devices_ext exist only with CNA_CNAEXT, and the umbrella has always tolerated naming them regardless". modules/CMakeLists.txt adds devices-ext and graphics-ext unconditionally, both module files create their targets unconditionally, and CNA_CNAEXT / CNA_DEVICES only select compile definitions and guarded code. For the two targets the comment names, the filter therefore never triggers; the reason given for it is not the one that holds.
Source locations
cmake/SharedRuntimeLibrary.cmake— cna_define_shared_runtime_deferred - the comment and the if(TARGET) filtermodules/CMakeLists.txt— add_subdirectory(devices-ext), add_subdirectory(graphics-ext), _cna_runtime_partsmodules/graphics-ext/CMakeLists.txt— cna_add_module(cna_graphics_ext ...) - unconditionalmodules/devices-ext/CMakeLists.txt— cna_add_module(cna_devices_ext ...) - unconditional
Evidence
Checked by reading at 009d40f5; not executed. The comment has no behavioural effect.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
None; the shared-library composition is exercised by CNA_SHARED_LIBRARY builds, not by a comment check.
Regression test
None applies; correct the comment (or drop the filter if no optional part remains).
Blast radius
Maintainers reading the shared-library code; builds are unaffected.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Architecture
- Build architecture: the shared runtime library
- Internals
- Module graph: optional modules
- Known issues
- Bug index