Skip to content
Snippets Groups Projects
Forked from LHCb / Moore
7865 commits behind, 2 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CMakeLists.txt 5.19 KiB
################################################################################
# Package: HltCache
################################################################################
gaudi_subdir(HltCache)

gaudi_depends_on_subdirs(Hlt/Moore
                         Phys/LoKiArrayFunctors
                         Phys/LoKiHlt
                         Phys/LoKiPhys
                         Phys/LoKiAlgo
                         Phys/LoKiCore
                         Phys/LoKiTrigger
                         Phys/TisTosTobbing
                         Phys/RelatedInfoTools
                         Hlt/HltDAQ
                         Hlt/HltRawData
                         Hlt/HltConf
                         Hlt/HltTracking
                         Hlt/HltSettings
                         Hlt/Hlt1Lines
                         Hlt/Hlt2Lines
                         Hlt/HltServices
                         Hlt/HltLine)

find_package(Boost)
find_package(ROOT)
include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS})


option(DISABLE_SETTINGS_CACHE
       "Disable building of LoKi Functors Cache for threshold settings."
       FALSE)

# TODO Can (and should) we move the to the nightly slot configuration?
if(NOT DISABLE_SETTINGS_CACHE AND NOT ($ENV{CMTCONFIG} STREQUAL $ENV{CMTOPT}))
  message(STATUS "Disabling functor cache for settings for debug platform.")
  set(DISABLE_SETTINGS_CACHE TRUE)
endif()

# Import the cache creation module
include(LoKiFunctorsCache)

set(conf_deps ${deps} MergedConfDB)

set(LOKI_FUNCTORS_CACHE_POST_ACTION_OPTS
    ${CMAKE_CURRENT_SOURCE_DIR}/options/LoKiFunctorsCacheHltPostActionOpts.py)

include(tcks.cmake)

foreach(tck ${tcks})
  set(option_file ${CMAKE_CURRENT_BINARY_DIR}/options/TCK_${tck}.py)
  add_custom_command(OUTPUT ${option_file}
                     COMMAND ${CMAKE_COMMAND} -Dtck=${tck} -Doption_file=${option_file}
                             -P ${CMAKE_CURRENT_SOURCE_DIR}/gen_tck_cache_opts.cmake)

  # Moore cache name
  set(cache_name TCK_${tck}_FunctorCache)

  # Print this cache
  MESSAGE( STATUS "Cache for TCK " ${tck} ": " ${option_file} )

  # Build !
  loki_functors_cache(${cache_name}
                      ${option_file}
                      options/Moore_TCK.py
                      options/DataTypeAndTags.py
                      options/SuppressLogMessages.py
                      FACTORIES CoreFactory TrackFunctorFactory HltFactory TrackFactory
                                LoKi__Hybrid__HltFactory
                                Hlt1CoreFactory Hlt1HltFactory Hlt1Factory Hlt1HybridFactory
                                Hlt2TrackFunctorFactory Hlt2CoreFactory Hlt2HybridFactory
                                Hlt2HltFactory
                      LINK_LIBRARIES LoKiArrayFunctorsLib LoKiHltLib LoKiTriggerLib
                      DEPENDS ${conf_deps}
                      SPLIT 10)

  set(moni_option_file ${CMAKE_CURRENT_BINARY_DIR}/options/Monitoring_${tck}.py)
  add_custom_command(OUTPUT ${moni_option_file}
                     COMMAND ${CMAKE_COMMAND} -Dtck=${tck} -P ${CMAKE_CURRENT_SOURCE_DIR}/gen_moni_cache_opts.cmake)

  MESSAGE(STATUS "Cache for TCK " ${tck} " (monitoring): " ${moni_option_file})

  set(moni_cache_name TCK_${tck}_MoniFunctorCache)

  # Build monitoring cache!
  loki_functors_cache(${moni_cache_name}
                      ${moni_option_file}
                      options/Monitoring.py
                      options/DataTypeAndTags.py
                      options/SuppressLogMessages.py
                      FACTORIES Hlt1HltFactory Hlt2HltFactory
                      LINK_LIBRARIES LoKiHltLib LoKiTriggerLib
                      DEPENDS ${conf_deps}
                      SPLIT 2)
endforeach()


if(NOT DISABLE_SETTINGS_CACHE)
  include(settings.cmake)
endif()

foreach(settings_level ${settings})
  # Split ThresholdSettings/Hlt1 into name and level
  cmake_policy(PUSH)
  cmake_policy(SET CMP0007 NEW)
  string(REPLACE "/" ";" settings_level_list ${settings_level})
  list(GET settings_level_list 0 name)
  list(GET settings_level_list 1 level)
  cmake_policy(POP)

  set(option_file ${CMAKE_CURRENT_BINARY_DIR}/options/Settings_${name}_${level}.py)
  add_custom_command(
    OUTPUT ${option_file}
    COMMAND ${CMAKE_COMMAND} -Dsettings=${name} -Dlevel=${level} -Doption_file=${option_file}
            -P ${CMAKE_CURRENT_SOURCE_DIR}/gen_settings_cache_opts.cmake
  )

  MESSAGE(STATUS "Cache for " ${name} " (" ${level} "): " ${option_file})

  set(cache_name ${name}_${level}_FunctorCache)
  loki_functors_cache(${cache_name}
                      ${option_file}
                      options/Moore_Settings.py
                      options/DataTypeAndTags.py
                      options/SuppressLogMessages.py
                      FACTORIES CoreFactory TrackFunctorFactory HltFactory TrackFactory
                                LoKi__Hybrid__HltFactory
                                Hlt1CoreFactory Hlt1HltFactory Hlt1Factory Hlt1HybridFactory
                                Hlt2TrackFunctorFactory Hlt2CoreFactory Hlt2HybridFactory
                                Hlt2HltFactory
                      LINK_LIBRARIES LoKiArrayFunctorsLib LoKiHltLib LoKiTriggerLib
                      DEPENDS ${conf_deps}
                      SPLIT 10)
endforeach()