From 6c4b72f5551dc382297d7a704ce181a4473b4d87 Mon Sep 17 00:00:00 2001
From: Felix Weiglhofer <weiglhofer@fias.uni-frankfurt.de>
Date: Wed, 1 Feb 2023 13:24:09 +0000
Subject: [PATCH] cmake: Use CMAKE_LIBRARY_OUTPUT_DIRECTORY instead of
 LIBRARY_OUTPUT_PATH.

Replace usage of deprecated LIBRARY_OUTPUT_PATH variable with newer CMAKE_LIBRARY_OUTPUT_DIRECTORY.
The new variable has the advantage that it populates the LIBRARY_OUTPUT_DIRECTORY property of targets.
This property is required by xpu to figure out where the generated cuda/hip libraries should be placed.
---
 CMakeLists.txt                 |  6 +++---
 cmake/modules/CbmMacros.cmake  | 34 ++++++++++++++--------------------
 cmake/modules/ROOTMacros.cmake |  6 +++---
 3 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9eeb577562..3bb196a1cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -97,7 +97,7 @@ if(FairLogger_FOUND)
     INTERFACE_INCLUDE_DIRECTORIES "${_incDirs}/fairlogger"
     )
 endif()
-  
+
 #Searches for VMC Package
 if(ROOT_vmc_FOUND)
   set(VMCLIB ROOT::VMC)
@@ -177,7 +177,7 @@ check_external_stack()
 set_compiler_flags()
 
 # Define where the produced targets are placed in the binary directory
-Set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib")
+Set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
 Set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")
 Set(INCLUDE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
 set(CMAKE_INSTALL_LIBDIR lib)
@@ -269,5 +269,5 @@ generate_config_files()
 Install(DIRECTORY geometry input parameters
         DESTINATION share/cbmroot
         PATTERN ".git" EXCLUDE)
-        
+
 print_info()
diff --git a/cmake/modules/CbmMacros.cmake b/cmake/modules/CbmMacros.cmake
index fa3930fa70..86b13b93d9 100644
--- a/cmake/modules/CbmMacros.cmake
+++ b/cmake/modules/CbmMacros.cmake
@@ -3,7 +3,7 @@ Macro(Remove_Trailing_Slash _variable)
   String(FIND ${_variable} "/" _pos_last_slash REVERSE)
   STRING(LENGTH ${_variable} _length)
   Math(EXPR _last_pos ${_pos_last_slash}+1)
-  If(${_last_pos} EQUAL ${_length})  
+  If(${_last_pos} EQUAL ${_length})
     String(SUBSTRING ${_variable} 0 ${_pos_last_slash} _ret_val)
   Else()
     Set(_ret_val ${_variable})
@@ -50,7 +50,7 @@ Macro(FairRootVersion)
 
   Set(FairRoot_VERSION
       ${FairRoot_VERSION_MAJOR}.${FairRoot_VERSION_MINOR}.${FairRoot_VERSION_PATCH}
-     ) 
+     )
 EndMacro()
 
 Macro(FairSoftVersion)
@@ -95,10 +95,10 @@ Macro(FairSoftVersion)
 
   Set(FairSoft_VERSION
       ${FairSoft_VERSION_MAJOR}.${FairSoft_VERSION_MINOR}
-     ) 
+     )
 EndMacro()
 
-Macro(Gen_Exe_Script _ExeName) 
+Macro(Gen_Exe_Script _ExeName)
 
   set(shell_script_name "${_ExeName}.sh")
 
@@ -141,8 +141,8 @@ function(download_project_if_needed)
                    )
     If(NOT ${MY_GIT_TAG} STREQUAL ${CURRENT_SPADIC_HASH})
       If(MY_GIT_STASH)
-        Execute_Process(COMMAND git stash  WORKING_DIRECTORY ${MY_SOURCE_DIR}) 
-        Execute_Process(COMMAND git stash clear  WORKING_DIRECTORY ${MY_SOURCE_DIR}) 
+        Execute_Process(COMMAND git stash  WORKING_DIRECTORY ${MY_SOURCE_DIR})
+        Execute_Process(COMMAND git stash clear  WORKING_DIRECTORY ${MY_SOURCE_DIR})
       EndIF()
       download_project(PROJ            ${MY_PROJECT}
                        GIT_REPOSITORY  ${MY_GIT_REPOSITORY}
@@ -209,7 +209,7 @@ macro(generate_cbm_library)
 
   ######################### build the library ############################
   add_library(${LIBRARY_NAME} SHARED ${HEADERS} ${SRCS} ${NO_DICT_SRCS} ${LINKDEF})
-  
+
   target_link_libraries(${LIBRARY_NAME} PUBLIC ${DEPENDENCIES} ${PUBLIC_DEPENDENCIES} PRIVATE ${PRIVATE_DEPENDENCIES} INTERFACE ${INTERFACE_DEPENDENCIES})
   target_include_directories(${LIBRARY_NAME} PUBLIC ${INCLUDE_DIRECTORIES})
 
@@ -228,14 +228,8 @@ macro(generate_cbm_library)
 
 
   if(LINKDEF)
-    set(rootmap_file ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}.rootmap)
-    set(pcm_file ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}_rdict.pcm)
-
-    add_custom_command(TARGET ${LIBRARY_NAME} POST_BUILD
-                       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rootmap_file} ${LIBRARY_OUTPUT_PATH}
-                       COMMAND ${CMAKE_COMMAND} -E copy_if_different ${pcm_file} ${LIBRARY_OUTPUT_PATH}
-                       DEPENDS ${LIBRARY_NAME}
-                      )
+    set(rootmap_file ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}.rootmap)
+    set(pcm_file ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}_rdict.pcm)
 
     install(FILES ${rootmap_file} ${pcm_file} DESTINATION lib)
   endif(LINKDEF)
@@ -295,7 +289,7 @@ macro(print_info)
   set(BMagenta "${Esc}[1;35m")
   set(BCyan    "${Esc}[1;36m")
   set(BWhite   "${Esc}[1;37m")
-  
+
 
 message(STATUS "  ")
 message(STATUS "  ${Cyan}CXX STANDARD${CR}       ${BGreen}C++${CMAKE_CXX_STANDARD}${CR} (change with ${BMagenta}-DCMAKE_CXX_STANDARD=17${CR})")
@@ -306,19 +300,19 @@ if(packages)
   message(STATUS "  ")
   message(STATUS "  ${Cyan}PACKAGE              VERSION         OPTION${CR}")
   foreach(dep IN LISTS packages)
-   
+
     if(${${dep}_FOUND}} MATCHES "TRUE" OR ${${dep}_FOUND}} MATCHES "1" OR ${${dep}_FOUND}} MATCHES  "true")
         set(dep_found "${BGreen}-FOUND")
        else()
         set(dep_found "${Red}-NOT FOUND")
     endif()
-     
-    pad("${BYellow}${${dep}_VERSION}${CR}" 15 " " dep_version COLOR 1)      
+
+    pad("${BYellow}${${dep}_VERSION}${CR}" 15 " " dep_version COLOR 1)
     pad(${dep} 20 " " dep_name)
     pad("${dep_found}${CR}" 15 " " version_found COLOR 1)
 
     message(STATUS "  ${BWhite}${dep_name}${CR}${dep_version}${version_found}")
-    
+
     unset(dep)
     unset(dep_found)
     unset(dep_version)
diff --git a/cmake/modules/ROOTMacros.cmake b/cmake/modules/ROOTMacros.cmake
index 9cd66f679d..f6d66beef6 100644
--- a/cmake/modules/ROOTMacros.cmake
+++ b/cmake/modules/ROOTMacros.cmake
@@ -96,7 +96,7 @@ Macro(ROOT_GENERATE_DICTIONARY_NEW)
 
   Set(EXTRA_DICT_PARAMETERS "")
 
-  Set(Int_ROOTMAPFILE ${LIBRARY_OUTPUT_PATH}/lib${Int_LIB}.rootmap)
+  Set(Int_ROOTMAPFILE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${Int_LIB}.rootmap)
   Set(Int_PCMFILE G__${Int_LIB}Dict_rdict.pcm)
   Set(OUTPUT_FILES ${OUTPUT_FILES} ${Int_PCMFILE} ${Int_ROOTMAPFILE})
   Set(EXTRA_DICT_PARAMETERS ${EXTRA_DICT_PARAMETERS}
@@ -116,10 +116,10 @@ Macro(ROOT_GENERATE_DICTIONARY_NEW)
 
   Add_Custom_Command(OUTPUT  ${OUTPUT_FILES}
                      COMMAND ${CMAKE_CURRENT_BINARY_DIR}/generate_dictionary_${script_name}.sh
-                     COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${Int_PCMFILE} ${LIBRARY_OUTPUT_PATH}/${Int_PCMFILE}
+                     COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${Int_PCMFILE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${Int_PCMFILE}
                      DEPENDS ${HDRS} ${Int_LINKDEF}
                     )
-  Install(FILES ${LIBRARY_OUTPUT_PATH}/${Int_PCMFILE} ${Int_ROOTMAPFILE} DESTINATION lib)
+  Install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${Int_PCMFILE} ${Int_ROOTMAPFILE} DESTINATION lib)
 
 endmacro(ROOT_GENERATE_DICTIONARY_NEW)
 
-- 
GitLab