From 990ee3972c387b03903040db08f753b9b0f10a25 Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Wed, 22 Jan 2025 17:52:33 +0100 Subject: [PATCH 1/6] fix cmake for roco2 --- cmake/InstallHwloc.cmake | 2 +- src/CMakeLists.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/InstallHwloc.cmake b/cmake/InstallHwloc.cmake index a292d8fb..98123b13 100644 --- a/cmake/InstallHwloc.cmake +++ b/cmake/InstallHwloc.cmake @@ -68,6 +68,6 @@ if (FIRESTARTER_BUILD_HWLOC) endif() endif() - include_directories(${HWLOC_INCLUDE_DIR}/include) add_dependencies(hwloc HwlocInstall) + target_include_directories(hwloc INTERFACE ${HWLOC_INCLUDE_DIR}/include) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 928ef7f3..35dc000b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,6 +30,8 @@ add_library(firestartercore STATIC firestarter/X86/Payload/SSE2Payload.cpp ) +target_include_directories(firestartercore PUBLIC ${PROJECT_SOURCE_DIR}/include) + target_link_libraries(firestartercore hwloc AsmJit::AsmJit @@ -53,6 +55,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") firestarter/Optimizer/Util/MultiObjective.cpp firestarter/Optimizer/Algorithm/NSGA2.cpp ) + + target_include_directories(firestarterlinux PUBLIC ${PROJECT_SOURCE_DIR}/include) target_link_libraries(firestarterlinux Nitro::log From e5c63baae8e29f90eb57fe4aeac66dc869377258 Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Wed, 22 Jan 2025 18:26:02 +0100 Subject: [PATCH 2/6] cmake: wworkaround for including a non exsistant directory --- cmake/InstallHwloc.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/InstallHwloc.cmake b/cmake/InstallHwloc.cmake index 98123b13..635f1f76 100644 --- a/cmake/InstallHwloc.cmake +++ b/cmake/InstallHwloc.cmake @@ -69,5 +69,9 @@ if (FIRESTARTER_BUILD_HWLOC) endif() add_dependencies(hwloc HwlocInstall) - target_include_directories(hwloc INTERFACE ${HWLOC_INCLUDE_DIR}/include) + + # Including a non exsistant directory is not allowed. This is the case when configuring and hwloc is not yet installed. + # See https://gitlab.kitware.com/cmake/cmake/-/issues/15052 + file(MAKE_DIRECTORY "${HWLOC_INCLUDE_DIR}/include") + target_include_directories(hwloc INTERFACE "${HWLOC_INCLUDE_DIR}/include") endif() From 1725ece6059bea6f05ca0c7b6ca4c9f01160f4be Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Fri, 24 Jan 2025 18:39:33 +0100 Subject: [PATCH 3/6] cmake: do not use set for options --- cmake/BuildOptions.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/BuildOptions.cmake b/cmake/BuildOptions.cmake index 59766f90..a92551c5 100644 --- a/cmake/BuildOptions.cmake +++ b/cmake/BuildOptions.cmake @@ -6,7 +6,7 @@ set_property(CACHE FIRESTARTER_BUILD_TYPE PROPERTY STRINGS FIRESTARTER FIRESTART # Static linking is not supported with GPU devices or MacOS. if(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(FIRESTARTER_LINK_STATIC "Link FIRESTARTER as a static binary. Note, dlopen is not supported in static binaries. This option is not available on macOS or with CUDA, OneAPI or HIP enabled." ON) + option(FIRESTARTER_LINK_STATIC "Link FIRESTARTER as a static binary. Note, dlopen is not supported in static binaries. This option is not available on macOS or with CUDA, OneAPI or HIP enabled." ON) endif() @@ -22,5 +22,5 @@ option(FIRESTARTER_FETCH_GOOGLETEST "Fetch the Google Test dependency." ON) # Debug feature are enabled on linux per default. if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(FIRESTARTER_DEBUG_FEATURES "Enable debug features" ON) + option(FIRESTARTER_DEBUG_FEATURES "Enable debug features" ON) endif() \ No newline at end of file From f669a1c25851a03ff764e765ad12d8f4a25ffe21 Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Fri, 24 Jan 2025 19:43:38 +0100 Subject: [PATCH 4/6] create combined firestarter library --- src/CMakeLists.txt | 52 ++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 35dc000b..c09a3298 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -64,13 +64,25 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") ) endif() - -SET(FIRESTARTER_FILES - firestarter/Main.cpp - +add_library(firestartercombined STATIC # IpcEstimateMetricData::insertValue is accesses which is part of the firestarterlinux library. # This reference should be removed there and the file moved back to the firestartercore library. firestarter/LoadWorker.cpp +) + +target_link_libraries(firestartercombined + firestartercore + ) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_link_libraries(firestartercombined + firestarterlinux + ) +endif() + + +SET(FIRESTARTER_FILES + firestarter/Main.cpp ) if ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_CUDA") @@ -80,15 +92,9 @@ if ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_CUDA") ) target_link_libraries(FIRESTARTER_CUDA - firestartercore + firestartercombined ) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(FIRESTARTER_CUDA - firestarterlinux - ) - endif() - target_link_libraries(FIRESTARTER_CUDA CUDA::cuda_driver CUDA::cudart @@ -114,15 +120,9 @@ elseif ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_ONEAPI") ) target_link_libraries(FIRESTARTER_ONEAPI - firestartercore + firestartercombined ) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(FIRESTARTER_ONEAPI - firestarterlinux - ) - endif() - target_link_libraries(FIRESTARTER_ONEAPI mkl_sycl mkl_intel_ilp64 @@ -140,15 +140,9 @@ elseif("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_HIP") ) target_link_libraries(FIRESTARTER_HIP - firestartercore + firestartercombined ) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(FIRESTARTER_HIP - firestarterlinux - ) - endif() - target_link_libraries(FIRESTARTER_HIP hip::host hip::hiprand @@ -168,15 +162,9 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") ) target_link_libraries(FIRESTARTER - firestartercore + firestartercombined ) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(FIRESTARTER - firestarterlinux - ) - endif() - target_link_libraries_darwin(NAME FIRESTARTER) # static linking is not supported on Darwin, see Apple Technical QA1118 From 80f9e2ec5517603649e342739f1bf2129d34ac5e Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Fri, 24 Jan 2025 19:54:34 +0100 Subject: [PATCH 5/6] fix linking --- src/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c09a3298..545a1c9a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -92,7 +92,9 @@ if ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_CUDA") ) target_link_libraries(FIRESTARTER_CUDA + "-Wl,--whole-archive" firestartercombined + "-Wl,--no-whole-archive" ) target_link_libraries(FIRESTARTER_CUDA @@ -120,7 +122,9 @@ elseif ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_ONEAPI") ) target_link_libraries(FIRESTARTER_ONEAPI + "-Wl,--whole-archive" firestartercombined + "-Wl,--no-whole-archive" ) target_link_libraries(FIRESTARTER_ONEAPI @@ -140,7 +144,9 @@ elseif("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_HIP") ) target_link_libraries(FIRESTARTER_HIP + "-Wl,--whole-archive" firestartercombined + "-Wl,--no-whole-archive" ) target_link_libraries(FIRESTARTER_HIP @@ -162,7 +168,9 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") ) target_link_libraries(FIRESTARTER + "-Wl,--whole-archive" firestartercombined + "-Wl,--no-whole-archive" ) target_link_libraries_darwin(NAME FIRESTARTER) From ebdbd0415989cc443391fd249a3f3ebbf5f7b6c6 Mon Sep 17 00:00:00 2001 From: Markus Schmidl Date: Thu, 30 Jan 2025 16:11:43 +0100 Subject: [PATCH 6/6] cmake: fix macos build --- src/CMakeLists.txt | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 545a1c9a..4ed17efe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -80,11 +80,22 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") ) endif() - SET(FIRESTARTER_FILES firestarter/Main.cpp ) +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(FIRESTARTER_LIBRARIES + firestartercombined + ) +else() + SET(FIRESTARTER_LIBRARIES + "-Wl,--whole-archive" + firestartercombined + "-Wl,--no-whole-archive" + ) +endif() + if ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_CUDA") add_executable(FIRESTARTER_CUDA ${FIRESTARTER_FILES} @@ -92,9 +103,7 @@ if ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_CUDA") ) target_link_libraries(FIRESTARTER_CUDA - "-Wl,--whole-archive" - firestartercombined - "-Wl,--no-whole-archive" + ${FIRESTARTER_LIBRARIES} ) target_link_libraries(FIRESTARTER_CUDA @@ -122,9 +131,7 @@ elseif ("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_ONEAPI") ) target_link_libraries(FIRESTARTER_ONEAPI - "-Wl,--whole-archive" - firestartercombined - "-Wl,--no-whole-archive" + ${FIRESTARTER_LIBRARIES} ) target_link_libraries(FIRESTARTER_ONEAPI @@ -144,9 +151,7 @@ elseif("${FIRESTARTER_BUILD_TYPE}" STREQUAL "FIRESTARTER_HIP") ) target_link_libraries(FIRESTARTER_HIP - "-Wl,--whole-archive" - firestartercombined - "-Wl,--no-whole-archive" + ${FIRESTARTER_LIBRARIES} ) target_link_libraries(FIRESTARTER_HIP @@ -168,9 +173,7 @@ elseif(${FIRESTARTER_BUILD_TYPE} STREQUAL "FIRESTARTER") ) target_link_libraries(FIRESTARTER - "-Wl,--whole-archive" - firestartercombined - "-Wl,--no-whole-archive" + ${FIRESTARTER_LIBRARIES} ) target_link_libraries_darwin(NAME FIRESTARTER)