318d13870f
## Motivation - Structured logging with proper log levels (TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL) - Better performance through compile-time formatting - Consistent formatting using fmt library - Runtime log level control via arguments and environment variables - Easier maintenance and debugging capabilities ## Technical Details - Added spdlog as a submodule and integrated it into CMake build system - Created new `rocprofiler-systems-logger` library wrapping spdlog functionality - Replaced custom logging macros (`ROCPROFSYS_VERBOSE`, `ROCPROFSYS_DEBUG`, `ROCPROFSYS_FATAL`, `ROCPROFSYS_REQUIRE`, `ROCPROFSYS_CI_THROW`, etc.) with spdlog equivalents (`LOG_DEBUG`, `LOG_WARNING`, `LOG_CRITICAL`, etc.) - Implemented log level control through command-line arguments and environment variables - Converted assertion macros to proper error handling with exceptions and std::abort()
39 wiersze
1.3 KiB
CMake
39 wiersze
1.3 KiB
CMake
include_guard(GLOBAL)
|
|
|
|
if(ROCPROFSYS_BUILD_SPDLOG)
|
|
message(STATUS "Building spdlog from source!")
|
|
|
|
include(FetchContent)
|
|
|
|
rocprofiler_systems_checkout_git_submodule(
|
|
RELATIVE_PATH external/spdlog
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/gabime/spdlog.git
|
|
TEST_FILE CMakeLists.txt
|
|
REPO_BRANCH "v1.16.0"
|
|
)
|
|
|
|
FetchContent_Declare(spdlog SOURCE_DIR ${PROJECT_SOURCE_DIR}/external/spdlog)
|
|
|
|
set(SPDLOG_BUILD_SHARED OFF CACHE BOOL "" FORCE)
|
|
set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
|
|
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
set(SPDLOG_INSTALL OFF CACHE BOOL "" FORCE)
|
|
set(SPDLOG_FMT_EXTERNAL OFF CACHE BOOL "" FORCE)
|
|
|
|
# Spdlog workaround for building static library
|
|
set(_ROCPROFSYS_BUILD_SHARED_LIBS_BACKUP ${BUILD_SHARED_LIBS})
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
|
|
FetchContent_MakeAvailable(spdlog)
|
|
|
|
set(BUILD_SHARED_LIBS ${_ROCPROFSYS_BUILD_SHARED_LIBS_BACKUP})
|
|
unset(_ROCPROFSYS_BUILD_SHARED_LIBS_BACKUP)
|
|
|
|
target_link_libraries(rocprofiler-systems-spdlog INTERFACE spdlog::spdlog)
|
|
else()
|
|
message(STATUS "Using system spdlog library")
|
|
find_package(spdlog REQUIRED)
|
|
target_link_libraries(rocprofiler-systems-spdlog INTERFACE spdlog::spdlog)
|
|
endif()
|