From 3fb16b11d4ab1dabd34c203dbd97873cfa244911 Mon Sep 17 00:00:00 2001
From: Florian Uhlig <f.uhlig@gsi.de>
Date: Fri, 18 Nov 2022 09:52:23 +0100
Subject: [PATCH] Prepare for FairRoot v18.8

Use the same target names as provided by FairRoot with version v18.8.

Add the new target FairRoot::Online which is a new library conatining the
online related code which was previously part of the Base library.
In case of older FairRoot versions the target is only an alias for the target
FairRoot::Base such that the same dependencies already work with FairRoot
v18.6 which is our current default version.

Add the new target FairRoot::Online in all CMakeLists.txt where it is needed.

The FindFairRoot macro is also used when compiling NicaFemto. Since there is a
problem with the target definitions in NicaFemto the targets are not defined
when compiling NicaFemto.
---
 MQ/hitbuilder/CMakeLists.txt        |  1 +
 MQ/mcbm/CMakeLists.txt              |  6 +--
 MQ/source/CMakeLists.txt            | 12 ++---
 cmake/modules/CheckCompiler.cmake   |  2 +-
 cmake/modules/FairRootTargets.cmake | 83 ++++++++++++++++++++---------
 cmake/modules/FindFairRoot.cmake    |  6 ++-
 fles/mcbm2018/CMakeLists.txt        |  1 +
 fles/star2019/CMakeLists.txt        |  1 +
 reco/base/CMakeLists.txt            |  1 +
 reco/detectors/trd/CMakeLists.txt   |  1 +
 reco/mq/CMakeLists.txt              |  1 +
 reco/tasks/CMakeLists.txt           |  1 +
 sim/response/CMakeLists.txt         |  2 +-
 sim/transport/steer/CMakeLists.txt  |  4 +-
 14 files changed, 83 insertions(+), 39 deletions(-)

diff --git a/MQ/hitbuilder/CMakeLists.txt b/MQ/hitbuilder/CMakeLists.txt
index 9010a72074..147e90be15 100644
--- a/MQ/hitbuilder/CMakeLists.txt
+++ b/MQ/hitbuilder/CMakeLists.txt
@@ -32,6 +32,7 @@ set(PRIVATE_DEPENDENCIES
   CbmTofReco  
   FairMQ::Tools
   FairRoot::ParBase
+  FairRoot::Online
   ROOT::Core
   ROOT::Graf
   ROOT::Hist
diff --git a/MQ/mcbm/CMakeLists.txt b/MQ/mcbm/CMakeLists.txt
index 75a34bbe58..25e526bf5b 100644
--- a/MQ/mcbm/CMakeLists.txt
+++ b/MQ/mcbm/CMakeLists.txt
@@ -84,7 +84,7 @@ set(EXE_NAME McbmEventBuilderWin)
 set(SRCS CbmDeviceMcbmEventBuilderWin.cxx runMcbmEvtBuilderWin.cxx)
 
 set(PUBLIC_DEPENDENCIES ${PUBLIC_DEPS}) 
-set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPS}) 
+set(PRIVATE_DEPENDENCIES "${PRIVATE_DEPS};FairRoot::Online")
 set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
 
 generate_cbm_executable()
@@ -93,7 +93,7 @@ set(EXE_NAME McbmEventSink)
 set(SRCS CbmDeviceMcbmEventSink.cxx runMcbmEventSink.cxx)
 
 set(PUBLIC_DEPENDENCIES ${PUBLIC_DEPS}) 
-set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPS}) 
+set(PRIVATE_DEPENDENCIES "${PRIVATE_DEPS};FairRoot::Online")
 set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
 
 generate_cbm_executable()
@@ -121,7 +121,7 @@ set(EXE_NAME DigiEventSink)
 set(SRCS CbmDeviceDigiEventSink.cxx runDigiEventSink.cxx)
 
 set(PUBLIC_DEPENDENCIES ${PUBLIC_DEPS}) 
-set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPS}) 
+set(PRIVATE_DEPENDENCIES "${PRIVATE_DEPS};FairRoot::Online")
 set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
 
 generate_cbm_executable()
diff --git a/MQ/source/CMakeLists.txt b/MQ/source/CMakeLists.txt
index 5bf553df75..8b0186d0f5 100644
--- a/MQ/source/CMakeLists.txt
+++ b/MQ/source/CMakeLists.txt
@@ -92,13 +92,13 @@ set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
 
   generate_cbm_executable()
 
-set(EXE_NAME MCPointSource)
-set(SRCS CbmMCPointSource.cxx runMCPointSource.cxx)
-set(PUBLIC_DEPENDENCIES ${PUBLIC_DEPS}) 
-set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPS}) 
-set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
+#set(EXE_NAME MCPointSource)
+#set(SRCS CbmMCPointSource.cxx runMCPointSource.cxx)
+#set(PUBLIC_DEPENDENCIES ${PUBLIC_DEPS})
+#set(PRIVATE_DEPENDENCIES ${PRIVATE_DEPS})
+#set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS})
 
-  generate_cbm_executable()
+#  generate_cbm_executable()
 
 set(EXE_NAME TsConsumerReqExample)
 set(SRCS CbmTsConsumerReqDevExample.cxx runTsConsumerReqExample.cxx)
diff --git a/cmake/modules/CheckCompiler.cmake b/cmake/modules/CheckCompiler.cmake
index 07c9c7d992..e243944398 100644
--- a/cmake/modules/CheckCompiler.cmake
+++ b/cmake/modules/CheckCompiler.cmake
@@ -19,7 +19,7 @@ endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
 # the compiler and compiler flags used to install fairsoft.
 # Compare compiler and compiler flags used to compile fairsoft with the compiler and flags used now
 # In case of differences print a warning
-Find_Program(FAIRSOFT_CONFIG fairsoft-config PATHS $ENV{SIMPATH}/bin $ENV{FAIRSOFT_ROOT}/bin NO_DEFAULT_PATH)
+Find_Program(FAIRSOFT_CONFIG fairsoft-config PATHS ${SIMPATH}/bin NO_DEFAULT_PATH)
 
 If(FAIRSOFT_CONFIG)
   Message(STATUS "fairsoft-config found")
diff --git a/cmake/modules/FairRootTargets.cmake b/cmake/modules/FairRootTargets.cmake
index 5a4f37aaa0..91bb7bab48 100644
--- a/cmake/modules/FairRootTargets.cmake
+++ b/cmake/modules/FairRootTargets.cmake
@@ -1,16 +1,16 @@
 macro(define_fairroot_targets)
 
-  # Define FairRoot::FairTools target
-  add_library(FairRoot::FairTools SHARED IMPORTED GLOBAL)
-  set_target_properties(FairRoot::FairTools PROPERTIES
+  # Define FairRoot::Tools target
+  add_library(FairRoot::Tools SHARED IMPORTED GLOBAL)
+  set_target_properties(FairRoot::Tools PROPERTIES
     IMPORTED_LOCATION
     ${FAIRROOT_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}FairTools${CMAKE_SHARED_LIBRARY_SUFFIX}
   )
-  target_include_directories(FairRoot::FairTools INTERFACE
+  target_include_directories(FairRoot::Tools INTERFACE
     ${FAIRROOT_INCLUDE_DIR}   
   )
 
-  target_link_libraries(FairRoot::FairTools INTERFACE
+  target_link_libraries(FairRoot::Tools INTERFACE
     FairLogger::FairLogger
     ROOT::Core
     ROOT::Graf
@@ -31,7 +31,7 @@ macro(define_fairroot_targets)
   )
 
   target_link_libraries(FairRoot::Alignment INTERFACE
-    FairRoot::FairTools
+    FairRoot::Tools
 
     ROOT::Geom
   )
@@ -47,7 +47,7 @@ macro(define_fairroot_targets)
   )
   
   target_link_libraries(FairRoot::ParBase INTERFACE
-    FairRoot::FairTools
+    FairRoot::Tools
 
     ROOT::Core
     ROOT::RIO
@@ -64,7 +64,7 @@ macro(define_fairroot_targets)
   ) 
 
   target_link_libraries(FairRoot::ParBase INTERFACE
-    FairRoot::FairTools
+    FairRoot::Tools
 
     ROOT::Core
     ROOT::MathCore
@@ -94,7 +94,7 @@ macro(define_fairroot_targets)
 
   target_link_libraries(FairRoot::Base INTERFACE
     FairRoot::Alignment
-    FairRoot::FairTools
+    FairRoot::Tools
     FairRoot::ParBase
     FairRoot::GeoBase
     Boost::serialization
@@ -117,6 +117,41 @@ macro(define_fairroot_targets)
     ROOT::Gdml
   )
 
+
+  # The Online library was added with FairRoot v18.8.0 and contains the
+  # FairRunOnline class and some other online realted classes. Before this
+  # FairRoot version the code was contained in the Base library.
+  # If the FairRoot version contains the library define the target, if the
+  # FairRoot version doesn't contain the library create an alias to
+  # FairRoot::Base. This allows to already use the target FairRoot::Online
+  # already before
+  FairRootVersion()
+  if(${FairRoot_VERSION} VERSION_LESS 18.8)
+    add_library(FairRoot::Online ALIAS FairRoot::Base)
+  else()
+    # Define FairRoot::Online target
+    add_library(FairRoot::Online SHARED IMPORTED GLOBAL)
+    set_target_properties(FairRoot::Online PROPERTIES
+      IMPORTED_LOCATION
+      ${FAIRROOT_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Online${CMAKE_SHARED_LIBRARY_SUFFIX}
+    )
+    target_include_directories(FairRoot::Online INTERFACE
+      ${FAIRROOT_INCLUDE_DIR}
+    )
+
+    target_link_libraries(FairRoot::Online INTERFACE
+      FairRoot::Tools
+      FairRoot::Base
+      FairRoot::ParBase
+      FairRoot::MbsAPI
+
+      ROOT::RHTTP # THttpServer
+      ROOT::Core
+      ROOT::Geom
+      ROOT::Net # TSocket
+    )
+  endif()
+
   # Define FairRoot::EventDisplay target
   add_library(FairRoot::EventDisplay SHARED IMPORTED GLOBAL)
   set_target_properties(FairRoot::EventDisplay PROPERTIES
@@ -128,7 +163,7 @@ macro(define_fairroot_targets)
   )
 
   target_link_libraries(FairRoot::EventDisplay INTERFACE
-    FairRoot::FairTools
+    FairRoot::Tools
     FairRoot::Base # FairRootManager, FairRunAna, FairTSBufferFunctional, FairTimeStamp, FairEventManager
 
     ROOT::Core
@@ -147,19 +182,19 @@ macro(define_fairroot_targets)
     ROOT::XMLParser   # TXMLNode, TXMLAttr, TDOMParser
   )
 
-  # Define FairRoot::TrkBase target
-  add_library(FairRoot::TrkBase SHARED IMPORTED GLOBAL)
-  set_target_properties(FairRoot::TrkBase PROPERTIES
+  # Define FairRoot::TrackBase target
+  add_library(FairRoot::TrackBase SHARED IMPORTED GLOBAL)
+  set_target_properties(FairRoot::TrackBase PROPERTIES
     IMPORTED_LOCATION
     ${FAIRROOT_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}TrkBase${CMAKE_SHARED_LIBRARY_SUFFIX}
   )
-  target_include_directories(FairRoot::TrkBase INTERFACE
+  target_include_directories(FairRoot::TrackBase INTERFACE
     ${FAIRROOT_INCLUDE_DIR}
     
   )
 
-  target_link_libraries(FairRoot::TrkBase INTERFACE
-    FairRoot::FairTools
+  target_link_libraries(FairRoot::TrackBase INTERFACE
+    FairRoot::Tools
     FairRoot::Base # FairRunAna, FairField
 
     ROOT::Core
@@ -168,19 +203,19 @@ macro(define_fairroot_targets)
     ROOT::Matrix
   )
 
-  # Define FairRoot::Gen target
-  add_library(FairRoot::Gen SHARED IMPORTED GLOBAL)
-  set_target_properties(FairRoot::Gen PROPERTIES
+  # Define FairRoot::Generators target
+  add_library(FairRoot::Generators SHARED IMPORTED GLOBAL)
+  set_target_properties(FairRoot::Generators PROPERTIES
     IMPORTED_LOCATION
     ${FAIRROOT_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Gen${CMAKE_SHARED_LIBRARY_SUFFIX}
   )
-  target_include_directories(FairRoot::Gen INTERFACE
+  target_include_directories(FairRoot::Generators INTERFACE
     ${FAIRROOT_INCLUDE_DIR}    
   )
 
-  target_link_libraries(FairRoot::Gen INTERFACE
+  target_link_libraries(FairRoot::Generators INTERFACE
     FairRoot::Base # FairPrimaryGenerator, FairGenerator, FairIon, FairParticle, FairRunSim
-    FairRoot::FairTools
+    FairRoot::Tools
 
     ROOT::Core
     ROOT::EG
@@ -202,7 +237,7 @@ macro(define_fairroot_targets)
   target_link_libraries(FairRoot::BaseMQ INTERFACE
     FairRoot::Base # FairTask, FairRunAna, FairRootFileSink, FairFileSource
     FairRoot::ParBase # FairParRootFileIo, FairRuntimeDb
-    FairRoot::FairTools
+    FairRoot::Tools
     FairRoot::MbsAPI
 
     FairMQ::FairMQ
@@ -230,7 +265,7 @@ macro(define_fairroot_targets)
     FairRoot::Base # FairRunIdGenerator
     FairRoot::BaseMQ # Serialization policies
     FairRoot::ParBase # FairRuntimeDb, ...
-    FairRoot::FairTools # FairLogger
+    FairRoot::Tools # FairLogger
 
     FairMQ::FairMQ
 
diff --git a/cmake/modules/FindFairRoot.cmake b/cmake/modules/FindFairRoot.cmake
index d67687216a..fc7b8f3547 100644
--- a/cmake/modules/FindFairRoot.cmake
+++ b/cmake/modules/FindFairRoot.cmake
@@ -64,5 +64,7 @@ else(FAIRROOT_INCLUDE_DIR AND FAIRROOT_LIBRARY_DIR)
    MESSAGE(FATAL_ERROR "FairRoot installation not found")
 endif (FAIRROOT_INCLUDE_DIR AND FAIRROOT_LIBRARY_DIR)
 
-include(FairRootTargets)
-define_fairroot_targets()
+if(${CMAKE_PROJECT_NAME} MATCHES CBMROOT)
+  include(FairRootTargets)
+  define_fairroot_targets()
+endif()
diff --git a/fles/mcbm2018/CMakeLists.txt b/fles/mcbm2018/CMakeLists.txt
index 23625e64f9..4ed7d71706 100644
--- a/fles/mcbm2018/CMakeLists.txt
+++ b/fles/mcbm2018/CMakeLists.txt
@@ -110,6 +110,7 @@ set(PRIVATE_DEPENDENCIES
   CbmTofBase
   FairLogger::FairLogger
   FairRoot::ParBase
+  FairRoot::Online
   cppzmq
   external::fles_logging
   ROOT::Gpad
diff --git a/fles/star2019/CMakeLists.txt b/fles/star2019/CMakeLists.txt
index 1a20a9bcc7..c072d88f4d 100644
--- a/fles/star2019/CMakeLists.txt
+++ b/fles/star2019/CMakeLists.txt
@@ -43,6 +43,7 @@ set(PRIVATE_DEPENDENCIES
   CbmFlibFlesTools
   CbmFlibMcbm2018
   FairRoot::Base
+  FairRoot::Online
   ROOT::Gpad
   ROOT::Graf
   ROOT::Hist
diff --git a/reco/base/CMakeLists.txt b/reco/base/CMakeLists.txt
index 7bf68d3758..3b94ac71eb 100644
--- a/reco/base/CMakeLists.txt
+++ b/reco/base/CMakeLists.txt
@@ -40,6 +40,7 @@ set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
 set(PUBLIC_DEPENDENCIES
   CbmData
   FairRoot::Base
+  FairRoot::Online
   ROOT::Core
   )
 
diff --git a/reco/detectors/trd/CMakeLists.txt b/reco/detectors/trd/CMakeLists.txt
index 20aeac51a2..6d3ecfd2dd 100644
--- a/reco/detectors/trd/CMakeLists.txt
+++ b/reco/detectors/trd/CMakeLists.txt
@@ -92,6 +92,7 @@ set(PRIVATE_DEPENDENCIES
   CbmTrdSim
   CbmRecoBase
   FairRoot::ParBase
+  FairRoot::Online
   L1
   ROOT::EG
   ROOT::Geom
diff --git a/reco/mq/CMakeLists.txt b/reco/mq/CMakeLists.txt
index 8587f5045d..96f5138e8c 100644
--- a/reco/mq/CMakeLists.txt
+++ b/reco/mq/CMakeLists.txt
@@ -30,6 +30,7 @@ set(PUBLIC_DEPS
 
 set(PRIVATE_DEPS
   FairRoot::Base
+  FairRoot::Online
   Algo
   )
 
diff --git a/reco/tasks/CMakeLists.txt b/reco/tasks/CMakeLists.txt
index 97fe8cf946..80d8698852 100644
--- a/reco/tasks/CMakeLists.txt
+++ b/reco/tasks/CMakeLists.txt
@@ -34,6 +34,7 @@ set(PUBLIC_DEPENDENCIES
 set(PRIVATE_DEPENDENCIES
   CbmBase
   FairLogger::FairLogger
+  FairRoot::Online
   external::yaml-cpp
   ROOT::Hist
   ROOT::RHTTP
diff --git a/sim/response/CMakeLists.txt b/sim/response/CMakeLists.txt
index 86185d5aa2..1be37594c6 100644
--- a/sim/response/CMakeLists.txt
+++ b/sim/response/CMakeLists.txt
@@ -30,7 +30,7 @@ set(PRIVATE_DEPENDENCIES
   CbmTofSim
   CbmTrdSim
   CbmTzdSim
-  FairRoot::FairTools
+  FairRoot::Tools
   FairRoot::ParBase
   )
 
diff --git a/sim/transport/steer/CMakeLists.txt b/sim/transport/steer/CMakeLists.txt
index cf6c9e6d54..09ea11a22f 100644
--- a/sim/transport/steer/CMakeLists.txt
+++ b/sim/transport/steer/CMakeLists.txt
@@ -37,8 +37,8 @@ set(PRIVATE_DEPENDENCIES
   CbmField
   CbmSimGenerators
   FairRoot::Base
-  FairRoot::FairTools
-  FairRoot::Gen
+  FairRoot::Tools
+  FairRoot::Generators
   FairRoot::ParBase
   geant321
   geant4vmc
-- 
GitLab