feat: use KCENON feature detection for jthread and source_location#251
Merged
Conversation
- Replace LOGGER_HAS_SOURCE_LOCATION with KCENON_HAS_SOURCE_LOCATION - Replace LOGGER_HAS_JTHREAD with KCENON_HAS_JTHREAD - Include kcenon/common/config/feature_flags.h for unified detection - Keep LOGGER_HAS_* as legacy aliases for backward compatibility Closes #250
…0.0 compatibility The file/line/function overload of log() was removed from common::interfaces::ILogger in common_system v3.0.0 (Issue #217). This method is preserved for backward compatibility but no longer overrides the interface method. This fixes the build error: 'log(...)' marked 'override', but does not override
The file/line/function overload of log() was removed from ILogger interface in common_system v3.0.0 (Issue #217). Update test to call the backward-compatible method directly on logger class instead of through ILogger pointer.
Document the fix for the deprecated log method override issue and test file update.
kcenon
added a commit
to kcenon/thread_system
that referenced
this pull request
Dec 22, 2025
When building thread_system as a submodule, the KCENON_HAS_COMMON_EXECUTOR flag was not being defined, causing class layout mismatch between thread_system and consuming projects like logger_system. This resulted in Windows MSVC LNK2019 unresolved external symbol errors for thread_pool::is_running() because the header declaration (with override) and library implementation had different class layouts. Changes: - Add KCENON_HAS_COMMON_EXECUTOR=1 and KCENON_HAS_COMMON_RESULT=1 definitions in core/CMakeLists.txt when executor_interface.h exists - Ensures consistent class layout across all compilation units Fixes: kcenon/logger_system#251
Update CI workflows to use thread_system feature branch that includes the fix for KCENON_HAS_COMMON_EXECUTOR definition in submodule builds. This resolves the Windows MSVC LNK2019 unresolved external symbol error for thread_pool::is_running() that was caused by inconsistent class layout between logger_system and thread_system builds. Temporary change until thread_system PR is merged to main.
Enable UNIFIED_USE_LOCAL=ON in CI workflows to use locally checked out common_system and thread_system instead of FetchContent downloading from main branch. This ensures that the thread_system feature branch with KCENON_HAS_COMMON_EXECUTOR fix is used in the build.
Document the fix for Windows MSVC LNK2019 unresolved external symbol error for thread_pool::is_running(). Root cause: KCENON_HAS_COMMON_EXECUTOR was not defined when thread_system was built as submodule, causing class layout mismatch. Solution: - thread_system core/CMakeLists.txt defines KCENON_HAS_COMMON_EXECUTOR=1 - CI workflows use UNIFIED_USE_LOCAL=ON for local dependencies
kcenon
added a commit
that referenced
this pull request
Apr 13, 2026
) * feat: use KCENON feature detection for jthread and source_location - Replace LOGGER_HAS_SOURCE_LOCATION with KCENON_HAS_SOURCE_LOCATION - Replace LOGGER_HAS_JTHREAD with KCENON_HAS_JTHREAD - Include kcenon/common/config/feature_flags.h for unified detection - Keep LOGGER_HAS_* as legacy aliases for backward compatibility Closes #250 * docs: update changelog for KCENON feature detection migration * fix: remove override from deprecated log method for common_system v3.0.0 compatibility The file/line/function overload of log() was removed from common::interfaces::ILogger in common_system v3.0.0 (Issue #217). This method is preserved for backward compatibility but no longer overrides the interface method. This fixes the build error: 'log(...)' marked 'override', but does not override * test: update ilogger_interface_test for common_system v3.0.0 API changes The file/line/function overload of log() was removed from ILogger interface in common_system v3.0.0 (Issue #217). Update test to call the backward-compatible method directly on logger class instead of through ILogger pointer. * docs: update CHANGELOG for common_system v3.0.0 compatibility fix Document the fix for the deprecated log method override issue and test file update. * ci: use thread_system feature branch for KCENON_HAS_COMMON_EXECUTOR fix Update CI workflows to use thread_system feature branch that includes the fix for KCENON_HAS_COMMON_EXECUTOR definition in submodule builds. This resolves the Windows MSVC LNK2019 unresolved external symbol error for thread_pool::is_running() that was caused by inconsistent class layout between logger_system and thread_system builds. Temporary change until thread_system PR is merged to main. * ci: use UNIFIED_USE_LOCAL for local checkout dependencies Enable UNIFIED_USE_LOCAL=ON in CI workflows to use locally checked out common_system and thread_system instead of FetchContent downloading from main branch. This ensures that the thread_system feature branch with KCENON_HAS_COMMON_EXECUTOR fix is used in the build. * docs: update changelog with Windows MSVC linker fix Document the fix for Windows MSVC LNK2019 unresolved external symbol error for thread_pool::is_running(). Root cause: KCENON_HAS_COMMON_EXECUTOR was not defined when thread_system was built as submodule, causing class layout mismatch. Solution: - thread_system core/CMakeLists.txt defines KCENON_HAS_COMMON_EXECUTOR=1 - CI workflows use UNIFIED_USE_LOCAL=ON for local dependencies
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.
Summary
feature_flags.hfor standardized feature detectionChanges
Test Plan
Related Issues
Closes #250
Parent: kcenon/common_system#223