Back to home page

EIC code displayed by LXR

 
 

    


Warning, /irt/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
0002 
0003 project(IRT2
0004   VERSION 2.1.0
0005   LANGUAGES CXX
0006 )
0007 
0008 cmake_policy(SET CMP0079 NEW) # allow `target_link_libraries` from any dir
0009 
0010 #----------------------------------------------------------------------------
0011 # options
0012 option(EVALUATION  "Build evaluation programs"                          OFF)
0013 option(DELPHES     "Delphes card production"                            ON)
0014 option(IRT_ROOT_IO "Generate dictionary for ROOT I/O of libIRT objects" ON)
0015 
0016 #----------------------------------------------------------------------------
0017 # dependencies
0018 
0019 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
0020 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
0021 find_package(ROOT 6 REQUIRED COMPONENTS Core EG Hist MathCore RIO Tree)
0022 include(${ROOT_USE_FILE})
0023 
0024 #----------------------------------------------------------------------------
0025 # flags
0026 
0027 include(GNUInstallDirs) # standard GNU installation
0028 include(CheckCXXCompilerFlag)
0029 
0030 set(CMAKE_CXX_FLAGS "-std=c++0x")
0031 
0032 check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17)
0033 if(HAVE_FLAG_STD_CXX17)
0034   # Have -std=c++17, use it;    
0035   set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
0036 else()
0037   check_cxx_compiler_flag(-std=c++11 HAVE_FLAG_STD_CXX11)
0038   if(HAVE_FLAG_STD_CXX11)
0039     # Have -std=c++11, use it;  
0040     set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
0041   endif()
0042 endif()
0043 
0044 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-vla-cxx-extension")
0045     
0046 #----------------------------------------------------------------------------
0047 # IRT library
0048 
0049 # headers
0050 include_directories(
0051   ${PROJECT_SOURCE_DIR}/include 
0052   ${ROOT_INCLUDE_DIRS}
0053 
0054   # For now assume that newly installed edm4eic::(CherenkovPID, ...) event structures are available 
0055   # in the same place where IRT is supposed to be installed;
0056   ${CMAKE_INSTALL_PREFIX}/include
0057 
0058   # Help ePIC installation find json.hpp if needed;
0059   #/opt/local/include
0060 )
0061 file(GLOB HEADERS ${PROJECT_SOURCE_DIR}/include/*.h)
0062 list(FILTER HEADERS EXCLUDE REGEX "LinkDef\\.h$")
0063 
0064 #if(DEFINED EICRECON)
0065 #   set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEICRECON")
0066 #endif()
0067 
0068 # sources
0069 set(IRT_SRC
0070   ${PROJECT_SOURCE_DIR}/source/ParametricSurface.cc
0071   ${PROJECT_SOURCE_DIR}/source/SphericalSurface.cc
0072   ${PROJECT_SOURCE_DIR}/source/ToricSurface.cc
0073   ${PROJECT_SOURCE_DIR}/source/CylindricalSurface.cc
0074   ${PROJECT_SOURCE_DIR}/source/ConicalSurface.cc
0075   ${PROJECT_SOURCE_DIR}/source/FlatSurface.cc
0076   ${PROJECT_SOURCE_DIR}/source/IRT.cc
0077   ${PROJECT_SOURCE_DIR}/source/ChargedParticle.cc
0078   ${PROJECT_SOURCE_DIR}/source/CherenkovRadiator.cc
0079 
0080   ${PROJECT_SOURCE_DIR}/source/DigitizedHit.cc
0081   ${PROJECT_SOURCE_DIR}/source/GeantImport.cc
0082   #${PROJECT_SOURCE_DIR}/source/Configuration.cc
0083   ${PROJECT_SOURCE_DIR}/source/Calibration.cc
0084   ${PROJECT_SOURCE_DIR}/source/Digitization.cc
0085   ${PROJECT_SOURCE_DIR}/source/ReconstructionFactory.cc
0086 )
0087 if(IRT_ROOT_IO)
0088   set(IRT_DICT G__${CMAKE_PROJECT_NAME})
0089   list(APPEND IRT_SRC ${IRT_DICT}.cxx)
0090 endif()
0091 
0092 # library target
0093 add_library(${CMAKE_PROJECT_NAME} SHARED ${IRT_SRC} )
0094 target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wno-misleading-indentation)
0095 if(NOT IRT_ROOT_IO)
0096   # disable calling of `ClassDef` etc. if not generating ROOT dictionary
0097   message(STATUS "NOTE: disabling ROOT dictionary generation")
0098   target_compile_definitions(${CMAKE_PROJECT_NAME} PUBLIC DISABLE_ROOT_IO)
0099 endif()
0100 target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
0101   $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
0102   $<INSTALL_INTERFACE:include>
0103 )
0104 
0105 # ROOT I/O dictionary generation
0106 if(IRT_ROOT_IO)
0107   set(IRT_ROOTMAP
0108     ${CMAKE_CURRENT_BINARY_DIR}/lib${CMAKE_PROJECT_NAME}_rdict.pcm
0109     ${CMAKE_CURRENT_BINARY_DIR}/lib${CMAKE_PROJECT_NAME}.rootmap
0110   )
0111   root_generate_dictionary(${IRT_DICT} ${HEADERS} LINKDEF include/irtLinkDef.h)
0112 endif()
0113 
0114 # linking
0115 target_link_libraries(${CMAKE_PROJECT_NAME} ROOT::Core ROOT::EG ROOT::Hist ROOT::RIO ROOT::MathCore ROOT::Tree)
0116 
0117 #----------------------------------------------------------------------------
0118 # optional targets
0119 
0120 if(EVALUATION)
0121   add_subdirectory(evaluation)
0122 endif()
0123 
0124 if(DELPHES)
0125   add_subdirectory(delphes)
0126 endif()
0127 
0128 #----------------------------------------------------------------------------
0129 # installation
0130 
0131 install(FILES
0132   ${HEADERS}
0133   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
0134 )
0135 install(TARGETS ${CMAKE_PROJECT_NAME}
0136   EXPORT ${CMAKE_PROJECT_NAME}Targets
0137   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
0138   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
0139   RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
0140   INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
0141 )
0142 if(IRT_ROOT_IO)
0143   install(FILES
0144     ${IRT_ROOTMAP}
0145     DESTINATION ${CMAKE_INSTALL_LIBDIR}
0146   )
0147 endif()
0148 
0149 #----------------------------------------------------------------------------
0150 # package config
0151 
0152 include(CMakePackageConfigHelpers)
0153 
0154 install(EXPORT ${CMAKE_PROJECT_NAME}Targets
0155   FILE ${CMAKE_PROJECT_NAME}Targets.cmake
0156   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
0157 )
0158 
0159 set(TARGETS_INSTALL_PATH ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}/${CMAKE_PROJECT_NAME}Targets.cmake)
0160 
0161 configure_package_config_file(
0162   cmake/${CMAKE_PROJECT_NAME}Config.cmake.in
0163   ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
0164   INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
0165   PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR TARGETS_INSTALL_PATH
0166 )
0167 
0168 write_basic_package_version_file(
0169   "${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
0170   VERSION ${VERSION}
0171   COMPATIBILITY SameMajorVersion
0172 )
0173 
0174 install(FILES
0175   ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
0176   ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
0177   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
0178 )
0179