From 124712a6f09985679a5bdadab82adfbb93009a5b Mon Sep 17 00:00:00 2001 From: Andre Sailer <andre.philippe.sailer@cern.ch> Date: Fri, 16 Aug 2019 11:47:07 +0200 Subject: [PATCH] PluginManager: only use boost filesystem before cxx17, otherwise use cxx filesystem library --- CMakeLists.txt | 13 ++++++------- GaudiPluginService/CMakeLists.txt | 24 ++++++++++-------------- cmake/DD4hep.cmake | 4 ---- cmake/DD4hepBuild.cmake | 30 ++++++++++++++++++++++++++++++ cmake/MakeGaudiMap.cmake | 4 ++-- 5 files changed, 48 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58e8ef1a8..91a5c196e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,18 +97,17 @@ find_package (ROOT 6.08 REQUIRED) DD4HEP_SETUP_ROOT_TARGETS() # Configure BOOST -find_package(Boost 1.49 REQUIRED COMPONENTS filesystem system) -SET_TARGET_PROPERTIES(Boost::boost - PROPERTIES - INTERFACE_COMPILE_DEFINITIONS BOOST_SPIRIT_USE_PHOENIX_V3 - ) -GET_TARGET_PROPERTY(BOOST_FILESYSTEM_LOC Boost::filesystem IMPORTED_LOCATION) -GET_FILENAME_COMPONENT(BOOST_DIR ${BOOST_FILESYSTEM_LOC} DIRECTORY) +find_package(Boost 1.49 REQUIRED) +DD4HEP_SETUP_BOOST_TARGETS() # Configure Geant4 if(DD4HEP_USE_GEANT4) find_package( Geant4 10.2.2 REQUIRED gdml ui_all vis_all ) DD4HEP_SETUP_GEANT4_TARGETS() + # Geant4 sets the CLHEP include directory to include_directories, we undo this here + # we don't do this inside DD4hep_SETUP_GEANT4_TARGETS, because that is also used in + # DD4hepConfig by users of DD4hep + SET_DIRECTORY_PROPERTIES(PROPERTIES INCLUDE_DIRECTORIES "") endif() if(DD4HEP_USE_LCIO) diff --git a/GaudiPluginService/CMakeLists.txt b/GaudiPluginService/CMakeLists.txt index b02354c25..8b2e25090 100644 --- a/GaudiPluginService/CMakeLists.txt +++ b/GaudiPluginService/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(GaudiPluginService) add_library(DD4hepGaudiPluginMgr SHARED src/PluginServiceV1.cpp src/PluginServiceV2.cpp interface/DD4hepV1.cpp interface/DD4hepV2.cpp) -target_compile_definitions(DD4hepGaudiPluginMgr PUBLIC Gaudi=DD4hep_Flavor USE_BOOST_FILESYSTEM) +target_compile_definitions(DD4hepGaudiPluginMgr PUBLIC Gaudi=DD4hep_Flavor) target_include_directories(DD4hepGaudiPluginMgr PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> @@ -11,24 +11,20 @@ target_include_directories(DD4hepGaudiPluginMgr PUBLIC if( APPLE ) target_compile_definitions(DD4hepGaudiPluginMgr PUBLIC APPLE) endif() -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-shadow) -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-unused) -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-unused-parameter) -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-deprecated) -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-keyword-macro) -target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-return-type-c-linkage) +target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-shadow + -Wno-unused + -Wno-unused-parameter + -Wno-deprecated + -Wno-keyword-macro + -Wno-return-type-c-linkage + ) -target_link_libraries(DD4hepGaudiPluginMgr PUBLIC Boost::filesystem Boost::system ${CMAKE_DL_LIBS}) +target_link_libraries(DD4hepGaudiPluginMgr PUBLIC ${FS_LIBRARIES} ${CMAKE_DL_LIBS}) SET_TARGET_PROPERTIES(DD4hepGaudiPluginMgr PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) -if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) - SET ( GaudiPluginService_LIBRARIES DD4hepGaudiPluginMgr PARENT_SCOPE ) - SET ( GaudiPluginService_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE ) -endif() - add_executable(listcomponents src/listcomponents.cpp ) add_executable(DD4hep::listcomponents ALIAS listcomponents) -target_link_libraries(listcomponents PUBLIC DD4hepGaudiPluginMgr ${CMAKE_DL_LIBS}) +target_link_libraries(listcomponents PUBLIC DD4hepGaudiPluginMgr ${FS_LIBRARIES} ${CMAKE_DL_LIBS}) target_compile_options(listcomponents PRIVATE -Wno-deprecated) INSTALL(TARGETS listcomponents DD4hepGaudiPluginMgr EXPORT DD4hep diff --git a/cmake/DD4hep.cmake b/cmake/DD4hep.cmake index 1b3426bbd..d0d70e205 100644 --- a/cmake/DD4hep.cmake +++ b/cmake/DD4hep.cmake @@ -97,9 +97,6 @@ function(dd4hep_generate_rootmap_notapple library) set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_LIBRARY_SUFFIX}) #message(STATUS "DD4hep_DIR = ${DD4hep_DIR}" ) - GET_TARGET_PROPERTY(boost_filesystem_loc Boost::filesystem IMPORTED_LOCATION) - GET_FILENAME_COMPONENT(boost_dir ${boost_filesystem_loc} DIRECTORY) - add_custom_command(OUTPUT ${rootmapfile} DEPENDS ${library} POST_BUILD @@ -107,7 +104,6 @@ function(dd4hep_generate_rootmap_notapple library) -Dgenmap_install_dir=${LIBRARY_OUTPUT_PATH} -DROOT_VERSION=${ROOT_VERSION} -DDD4hep_DIR=${DD4hep_DIR} - -DLD_PATH=${boost_dir} -P ${DD4hep_DIR}/cmake/MakeGaudiMap.cmake) add_custom_target(Components_${library} ALL DEPENDS ${rootmapfile}) SET( install_destination "lib" ) diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index 2dbfce0c0..0057ed4d7 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -1294,6 +1294,36 @@ macro(DD4HEP_SETUP_ROOT_TARGETS) dd4hep_debug("ROOT INCL DIRS ${ROOT_INCLUDE_DIRS}") dd4hep_debug("ROOT_VERSION: ${ROOT_VERSION}" ) +ENDMACRO() + +# +# Do some processing of the imported Boost Targets +# Some libraries are only needed for cxx std 14 +# we also have to make sure the boost library location is known in that case +# +# + +MACRO(DD4HEP_SETUP_BOOST_TARGETS) + + SET_TARGET_PROPERTIES(Boost::boost + PROPERTIES + INTERFACE_COMPILE_DEFINITIONS BOOST_SPIRIT_USE_PHOENIX_V3 + ) + +IF(${CMAKE_CXX_STANDARD} EQUAL 14) + find_package(Boost 1.49 REQUIRED COMPONENTS filesystem system) + SET(FS_LIBRARIES Boost::filesystem Boost::system) +SET_TARGET_PROPERTIES(Boost::filesystem + PROPERTIES + INTERFACE_COMPILE_DEFINITIONS USE_BOOST_FILESYSTEM + ) + GET_TARGET_PROPERTY(BOOST_FILESYSTEM_LOC Boost::filesystem IMPORTED_LOCATION) + GET_FILENAME_COMPONENT(BOOST_DIR ${BOOST_FILESYSTEM_LOC} DIRECTORY) +ELSE() + SET(FS_LIBRARIES stdc++fs) +ENDIF() + + ENDMACRO() # diff --git a/cmake/MakeGaudiMap.cmake b/cmake/MakeGaudiMap.cmake index fd5c7d13b..1c753d3b5 100644 --- a/cmake/MakeGaudiMap.cmake +++ b/cmake/MakeGaudiMap.cmake @@ -1,6 +1,6 @@ message(STATUS " *** Gaudi listcomponents: Generate map for ${libname} ..." ) # - # Running listcomponents from Gaudi + # Running listcomponents from DD4hep # FIND_PROGRAM( Gaudi_listcomponents_CMD listcomponents PATHS ${genmap_install_dir}/../bin ${DD4hep_DIR}/bin NO_DEFAULT_PATH NO_CMAKE_PATH) @@ -9,7 +9,7 @@ message(STATUS " *** Gaudi listcomponents: Generate map for ${libname} ..." ) WORKING_DIRECTORY ${genmap_install_dir} " ) if(APPLE) - SET ( ENV{DYLD_LIBRARY_PATH} ${genmap_install_dir}:${LD_PATH}:$ENV{DYLD_LIBRARY_PATH}:$ENV{DD4HEP_LIBRARY_PATH} ) + SET ( ENV{DYLD_LIBRARY_PATH} ${genmap_install_dir}:$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} ${genmap_install_dir}:$ENV{LD_LIBRARY_PATH} ) -- GitLab