Skip to content
Snippets Groups Projects
  • Administrator's avatar
    a3091a5f
    Fix linking of externals · a3091a5f
    Administrator authored and Florian Uhlig's avatar Florian Uhlig committed
    Add patch needed to for NicaFemto which adds missing library dependencies.
    
    Add missing link directory and library dependency for fles logging library.
    
    Use Vc from FairSoft if available
    Only build the internal Vc version if none is found in FairSoft installation.
    This solves the problem with failing macros due to incosistent versions
    of Vc library and header files.
    a3091a5f
    History
    Fix linking of externals
    Administrator authored and Florian Uhlig's avatar Florian Uhlig committed
    Add patch needed to for NicaFemto which adds missing library dependencies.
    
    Add missing link directory and library dependency for fles logging library.
    
    Use Vc from FairSoft if available
    Only build the internal Vc version if none is found in FairSoft installation.
    This solves the problem with failing macros due to incosistent versions
    of Vc library and header files.
InstallKFParticle.cmake 2.99 KiB
set(KFPARTICLE_LIBNAME "${CMAKE_SHARED_LIBRARY_PREFIX}KFParticle${CMAKE_SHARED_LIBRARY_SUFFIX}")

set(KFPARTICLE_SRC_URL "https://github.com/cbmsw/KFParticle.git")
set(KFPARTICLE_DESTDIR "${CMAKE_BINARY_DIR}/external/KFPARTICLE-prefix")

# GIT_TAG is a hash for KFParticle tag cbm/v1.1-1 
download_project_if_needed(PROJECT         kfparticle_source
                           GIT_REPOSITORY  ${KFPARTICLE_SRC_URL}
                           GIT_TAG         "1eddb796b01d91ac7faf020e3b616556c28da4d0"
                           SOURCE_DIR      ${CMAKE_CURRENT_SOURCE_DIR}/KFParticle
                           TEST_FILE       CMakeLists.txt
                          )

If(ProjectUpdated)
  File(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/external/KFPARTICLE-prefix)
  Message("KFParticle source directory was changed so build directory was deleted")  
EndIf()

ExternalProject_Add(KFPARTICLE
  DEPENDS ${KF_DEPENDS_ON}
  BUILD_IN_SOURCE 0
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/KFParticle
  BUILD_BYPRODUCTS ${KFPARTICLE_LIBRARY}
  LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
  CMAKE_ARGS -G ${CMAKE_GENERATOR}
             -DCMAKE_BUILD_TYPE=RELWITHDEBINFO
             -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
             -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
             -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
             -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
             -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
             -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
             -DVc_INCLUDE_DIR=${Vc_INCLUDE_DIR}
             -DVc_LIBRARIES=${Vc_LIBRARY}
             -DFIXTARGET=TRUE
             -DROOTSYS=${SIMPATH}
             -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
  INSTALL_COMMAND  ${CMAKE_COMMAND} --build . --target install
)

add_library(KFParticle SHARED IMPORTED)
set_target_properties(KFParticle PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib)
add_dependencies(KFParticle KFPARTICLE)

set(KFParticle_LIB_DIR ${CMAKE_BINARY_DIR}/lib PARENT_SCOPE)
set(KFParticle_LIBRARIES KFParticle PARENT_SCOPE)
set(KFParticle_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include" PARENT_SCOPE)
set(KFParticle_FOUND TRUE PARENT_SCOPE)

Install(FILES ${CMAKE_BINARY_DIR}/lib/${KFPARTICLE_LIBNAME} 
              ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}KFParticle.rootmap
              ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}KFParticle_rdict.pcm
        DESTINATION lib
       )

Install(FILES ${CMAKE_BINARY_DIR}/include/KFParticleBase.h 
              ${CMAKE_BINARY_DIR}/include/KFParticle.h
              ${CMAKE_BINARY_DIR}/include/KFVertex.h
        DESTINATION include/KFParticle
       )
Install(FILES ${CMAKE_BINARY_DIR}/include/KFMCParticle.h
              ${CMAKE_BINARY_DIR}/include/KFPartEfficiencies.h
        DESTINATION include/KFParticlePerformance
       )
Install(FILES ${CMAKE_BINARY_DIR}/include/KFParticleTest.h
        DESTINATION include/KFParticleTest
       )
Install(FILES ${CMAKE_BINARY_DIR}/include/KFPVertex.h
              ${CMAKE_BINARY_DIR}/include/KFMCCounter.h
        DESTINATION include
       )