From 40aa184c2aa5a1768f89cb0bbe6dfe7243787ec6 Mon Sep 17 00:00:00 2001 From: Bindhiya Kanangot Balakrishnan Date: Fri, 14 Nov 2025 12:31:27 -0600 Subject: [PATCH] [SWDEV-538483] Fix C++17 fs linking for GCC<9.0 Added check for GCC versions prior to 9.0 and link with libstdc++fs when needed. This fixes undefined symbols on older systems like Deb10 with GCC 8.3.0. Signed-off-by: Bindhiya Kanangot Balakrishnan Signed-off-by: Galantsev, Dmitrii [ROCm/amdsmi commit: e1b3d5f02e090a6e73b7298dac23c7c8f343e640] --- projects/amdsmi/CMakeLists.txt | 9 +++++++++ projects/amdsmi/rocm_smi/CMakeLists.txt | 1 + projects/amdsmi/src/CMakeLists.txt | 1 + projects/amdsmi/tests/amd_smi_test/CMakeLists.txt | 7 +------ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/projects/amdsmi/CMakeLists.txt b/projects/amdsmi/CMakeLists.txt index dd6374b6c2..444ec4e56a 100644 --- a/projects/amdsmi/CMakeLists.txt +++ b/projects/amdsmi/CMakeLists.txt @@ -90,6 +90,15 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) +# Link with stdc++fs for filesystem support (only for GCC < 9.0) +set(FILESYSTEM_LIB "") +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) + set(FILESYSTEM_LIB stdc++fs) + message(STATUS "GCC ${CMAKE_CXX_COMPILER_VERSION} detected, linking with stdc++fs for filesystem support") + endif() +endif() + include(GNUInstallDirs) option(BUILD_TESTS "Build test suite" OFF) diff --git a/projects/amdsmi/rocm_smi/CMakeLists.txt b/projects/amdsmi/rocm_smi/CMakeLists.txt index a01f549efc..1e162590b1 100644 --- a/projects/amdsmi/rocm_smi/CMakeLists.txt +++ b/projects/amdsmi/rocm_smi/CMakeLists.txt @@ -49,6 +49,7 @@ target_link_libraries(${ROCM_SMI_TARGET} PRIVATE rt Threads::Threads ${CMAKE_DL_LIBS} + ${FILESYSTEM_LIB} ) target_include_directories(${ROCM_SMI_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/projects/amdsmi/src/CMakeLists.txt b/projects/amdsmi/src/CMakeLists.txt index 17f21925a1..b52ce9fb68 100644 --- a/projects/amdsmi/src/CMakeLists.txt +++ b/projects/amdsmi/src/CMakeLists.txt @@ -88,6 +88,7 @@ target_link_libraries(${AMD_SMI} PRIVATE rt Threads::Threads ${CMAKE_DL_LIBS} + ${FILESYSTEM_LIB} ) target_include_directories(${AMD_SMI} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt index 9463cf23fa..2dbb530539 100644 --- a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt +++ b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt @@ -61,12 +61,7 @@ include_directories(${TEST} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${ROCM_INC_DIR}/..) # Build rules add_executable(${TEST} ${tstSources} ${functionalSources}) -target_link_libraries(${TEST} ${AMD_SMI} GTest::gtest c stdc++ pthread) - -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" - AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9") - target_link_libraries(${TEST} stdc++fs) -endif() +target_link_libraries(${TEST} ${AMD_SMI} GTest::gtest c stdc++ pthread ${FILESYSTEM_LIB}) # Install tests install(