From 24165f9912f153c34d78929e565b36930a3c1f9f Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Thu, 20 Feb 2020 18:11:57 +0100
Subject: [PATCH] MakeGaudiMap: use target properties to get the necessary
 command and library locations

---
 cmake/DD4hep.cmake       | 12 ++++--------
 cmake/MakeGaudiMap.cmake | 19 ++++++++-----------
 2 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/cmake/DD4hep.cmake b/cmake/DD4hep.cmake
index ec3957030..fc0b46d84 100644
--- a/cmake/DD4hep.cmake
+++ b/cmake/DD4hep.cmake
@@ -86,17 +86,14 @@ function(dd4hep_generate_rootmap_notapple library)
   if ( NOT DD4hep_DIR )
     SET ( DD4hep_DIR ${CMAKE_SOURCE_DIR} )
   endif()
-  find_package(ROOT QUIET)
   set(rootmapfile ${CMAKE_SHARED_MODULE_PREFIX}${library}.components)
 
-  set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_LIBRARY_SUFFIX})
-
   add_custom_command(OUTPUT ${rootmapfile}
                      DEPENDS ${library}
                      POST_BUILD
-                     COMMAND ${CMAKE_COMMAND} -Dlibname=${libname} -Drootmapfile=${rootmapfile}
-                             -Dgenmap_install_dir=${LIBRARY_OUTPUT_PATH}
-                             -DROOT_VERSION=${ROOT_VERSION}
+                     COMMAND ${CMAKE_COMMAND} -Dlibname=$<TARGET_FILE_NAME:${library}> -Drootmapfile=${rootmapfile}
+                             -DDD4HEP_LISTCOMPONENTS_CMD=$<TARGET_FILE:DD4hep::listcomponents>
+                             -DLIBRARY_LOCATION=$<TARGET_FILE_DIR:${library}>
                              -DDD4hep_DIR=${DD4hep_DIR}
                              -P ${DD4hep_DIR}/cmake/MakeGaudiMap.cmake)
   add_custom_target(Components_${library} ALL DEPENDS ${rootmapfile})
@@ -104,8 +101,7 @@ function(dd4hep_generate_rootmap_notapple library)
   if( CMAKE_INSTALL_LIBDIR )
     SET( install_destination ${CMAKE_INSTALL_LIBDIR} )
   endif()
-
-  install(FILES ${LIBRARY_OUTPUT_PATH}/${rootmapfile}
+  install(FILES $<TARGET_FILE_DIR:${library}>/${rootmapfile}
     DESTINATION ${install_destination}
   )
 endfunction()
diff --git a/cmake/MakeGaudiMap.cmake b/cmake/MakeGaudiMap.cmake
index b72d373d4..e683e943b 100644
--- a/cmake/MakeGaudiMap.cmake
+++ b/cmake/MakeGaudiMap.cmake
@@ -1,22 +1,19 @@
 message(STATUS " *** Gaudi listcomponents: Generate map for ${libname} ..." )
   #
   #  Running listcomponents from DD4hep
-  #   
-  FIND_PROGRAM( Gaudi_listcomponents_CMD listcomponents PATHS ${genmap_install_dir}/../bin ${DD4hep_DIR}/bin
-    NO_DEFAULT_PATH NO_CMAKE_PATH)
-  GET_FILENAME_COMPONENT(GAUDI_LISTCOMP_INSTALL ${Gaudi_listcomponents_CMD} DIRECTORY)
-  ###MESSAGE( STATUS " *** MakeRootMap ${genmap_install_dir}/../bin $ENV{DD4hep_DIR}/bin ${DD4hep_DIR}" )
-  MESSAGE( STATUS " *** MakeGaudiMap.cmake run command : ${Gaudi_listcomponents_CMD} -o ${rootmapfile} ${libname}
-                 WORKING_DIRECTORY ${genmap_install_dir} "
+  #
+  MESSAGE( STATUS " *** MakeGaudiMap.cmake run command : ${DD4HEP_LISTCOMPONENTS_CMD} -o ${rootmapfile} ${libname}
+                   WORKING_DIRECTORY ${LIBRARY_LOCATION} "
     ) 
+  GET_FILENAME_COMPONENT(GAUDI_LISTCOMP_INSTALL ${DD4HEP_LISTCOMPONENTS_CMD} DIRECTORY)
   if(APPLE)
-    SET ( ENV{DYLD_LIBRARY_PATH} ${genmap_install_dir}:$ENV{DYLD_LIBRARY_PATH}:$ENV{DD4HEP_LIBRARY_PATH} )
+    SET ( ENV{DYLD_LIBRARY_PATH} ${LIBRARY_LOCATION}:$ENV{DYLD_LIBRARY_PATH}:$ENV{DD4HEP_LIBRARY_PATH} )
     ##EXECUTE_PROCESS( COMMAND echo DYLD_LIBRARY_PATH = $ENV{DYLD_LIBRARY_PATH} )
   else()
-    SET ( ENV{LD_LIBRARY_PATH} ${GAUDI_LISTCOMP_INSTALL}/../lib:${genmap_install_dir}:$ENV{LD_LIBRARY_PATH} )
+    SET ( ENV{LD_LIBRARY_PATH} ${LIBRARY_LOCATION}:${GAUDI_LISTCOMP_INSTALL}:$ENV{LD_LIBRARY_PATH} )
   endif()
   # EXECUTE_PROCESS( COMMAND echo LD_LIBRARY_PATH = $ENV{LD_LIBRARY_PATH} )
   EXECUTE_PROCESS( COMMAND 
-    ${Gaudi_listcomponents_CMD} -o ${rootmapfile} ${libname}
-    WORKING_DIRECTORY ${genmap_install_dir}
+    ${DD4HEP_LISTCOMPONENTS_CMD} -o ${rootmapfile} ${libname}
+    WORKING_DIRECTORY ${LIBRARY_LOCATION}
     )
-- 
GitLab