From f3ccf0bd1ef6ad8187dc18ba14ef71307c2e21ce Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Mon, 14 Oct 2019 11:27:32 +0200
Subject: [PATCH] CMake: streamline inclusion of DD4hep_XML_SETUP

Now just call it once when needed, otherwise it comes from the DD4hepConfig
This ensure that we do not create the Target when re compiling dd4hep packages
---
 CMakeLists.txt               | 4 ++--
 cmake/DD4hep.cmake           | 1 -
 cmake/DD4hepConfig.cmake.in  | 3 ---
 cmake/DD4hep_XML_setup.cmake | 4 ++--
 4 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e1b42d91e..ad3f2e766 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -146,8 +146,6 @@ if( DEFINED DD4HEP_WITH_GEANT4 OR DEFINED DD4HEP_WITH_GEAR )
   dd4hep_print_cmake_options( OPTIONAL "Obsolete options: only the following are allowed:" ERROR 1 )
 endif()
 
-include(DD4hep_XML_setup)
-
 IF(DD4HEP_USE_EXISTING_DD4HEP)
 
   MESSAGE(STATUS "|!!> Using pre-existing DD4hep: ${DD4HEP_USE_EXISTING_DD4HEP}")
@@ -170,6 +168,8 @@ IF(DD4HEP_USE_EXISTING_DD4HEP)
 
 ELSE()
 
+include(DD4hep_XML_setup)
+
 #These pacakges are mandatory
 FOREACH(DDPackage GaudiPluginService DDParsers DDCore)
   add_subdirectory(${DDPackage})
diff --git a/cmake/DD4hep.cmake b/cmake/DD4hep.cmake
index 9cc236721..ec3957030 100644
--- a/cmake/DD4hep.cmake
+++ b/cmake/DD4hep.cmake
@@ -22,7 +22,6 @@ endif()
 # Main functional include file
 if (NOT DD4hepBuild_included)
   include ( DD4hepBuild )
-  include ( DD4hep_XML_setup )
 endif()
 
 ##---------------------------------------------------------------------------------------------------
diff --git a/cmake/DD4hepConfig.cmake.in b/cmake/DD4hepConfig.cmake.in
index 84515388f..72abed33c 100644
--- a/cmake/DD4hepConfig.cmake.in
+++ b/cmake/DD4hepConfig.cmake.in
@@ -89,9 +89,6 @@ IF(@CMAKE_PROJECT_NAME@_FIND_COMPONENTS)
 ENDIF()
 
 #---- build with xercesc or tinyxml ?
-if(DD4HEP_USE_XERCESC)
-  set( DD4HEP_USE_XERCESC True )
-endif()
 INCLUDE( ${@CMAKE_PROJECT_NAME@_DIR}/cmake/DD4hep_XML_setup.cmake )
 
 #----- APPLE ? -------
diff --git a/cmake/DD4hep_XML_setup.cmake b/cmake/DD4hep_XML_setup.cmake
index eed371ed5..03c4f56fd 100644
--- a/cmake/DD4hep_XML_setup.cmake
+++ b/cmake/DD4hep_XML_setup.cmake
@@ -8,10 +8,10 @@ if(DD4HEP_USE_XERCESC)
   set(XML_LIBRARIES XercesC::XercesC)
 else()
   set(DD4HEP_USE_XERCESC OFF)
-  IF(NOT TARGET TinyXML)
+  IF(NOT TARGET TinyXML AND NOT TARGET DD4hep::TinyXML)
     ADD_LIBRARY(TinyXML INTERFACE)
     TARGET_COMPILE_DEFINITIONS(TinyXML INTERFACE DD4HEP_USE_TINYXML)
     INSTALL(TARGETS TinyXML EXPORT DD4hep DESTINATION lib)
   ENDIF()
-  set(XML_LIBRARIES TinyXML)
+  set(XML_LIBRARIES DD4hep::TinyXML)
 endif()
-- 
GitLab