Back to home page

EIC code displayed by LXR

 
 

    


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

0001 # SPDX-License-Identifier: LGPL-3.0-or-later
0002 # Copyright (C) 2022 Whitney Armstrong, Sylvester Joosten, Wouter Deconinck
0003 
0004 cmake_minimum_required(VERSION 3.12)
0005 
0006 project(EDM4EIC
0007   LANGUAGES CXX)
0008 
0009 SET( ${PROJECT_NAME}_VERSION_MAJOR 8 )
0010 SET( ${PROJECT_NAME}_VERSION_MINOR 2 )
0011 SET( ${PROJECT_NAME}_VERSION_PATCH 0 )
0012 SET( ${PROJECT_NAME}_VERSION  "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}" )
0013 
0014 # C++ standard
0015 set(CMAKE_CXX_STANDARD 17 CACHE STRING "Set the C++ standard to be used")
0016 if(NOT CMAKE_CXX_STANDARD MATCHES "17|20")
0017   message(FATAL_ERROR "Unsupported C++ standard: ${CMAKE_CXX_STANDARD}")
0018 endif()
0019 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0020 set(CMAKE_CXX_EXTENSIONS OFF)
0021 
0022 #--- Declare options -----------------------------------------------------------
0023 option(BUILD_DATA_MODEL "Run podio class generator yaml file" ON)
0024 
0025 if(APPLE)
0026   set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
0027 endif(APPLE)
0028 
0029 include(GNUInstallDirs)
0030 
0031 find_package(podio 0.15)
0032 if(NOT podio_FOUND)
0033   find_package(podio 1.0 REQUIRED)
0034 endif()
0035 include_directories(${podio_INCLUDE_DIR})
0036 
0037 find_package(EDM4HEP 0.10.3 REQUIRED)
0038 
0039 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
0040 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
0041 find_package(ROOT 6 REQUIRED COMPONENTS Core RIO Tree)
0042 include(${ROOT_USE_FILE})
0043 
0044 PODIO_GENERATE_DATAMODEL(edm4eic edm4eic.yaml headers sources
0045   UPSTREAM_EDM edm4hep:${EDM4HEP_DATA_DIR}/edm4hep.yaml
0046   IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS}
0047   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0048   )
0049 
0050 PODIO_ADD_DATAMODEL_CORE_LIB(edm4eic "${headers}" "${sources}"
0051   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0052 )
0053 # It's our responsibility to link to upstream datamodel
0054 target_link_libraries(edm4eic PUBLIC EDM4HEP::edm4hep)
0055 
0056 PODIO_ADD_ROOT_IO_DICT(edm4eicDict edm4eic "${headers}" src/selection.xml
0057   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0058 )
0059 
0060 add_library(edm4eic::edm4eicDict ALIAS edm4eicDict )
0061 
0062 list(APPEND EDM4EIC_INSTALL_LIBS edm4eic edm4eicDict)
0063 
0064 add_subdirectory(utils)
0065 add_subdirectory(test)
0066 
0067 install(TARGETS ${EDM4EIC_INSTALL_LIBS}
0068   EXPORT ${PROJECT_NAME}Targets
0069   RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
0070   LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
0071   PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/edm4eic"
0072   COMPONENT dev)
0073 
0074 install(FILES
0075   "${PROJECT_BINARY_DIR}/edm4eicDictDict.rootmap"
0076   DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0077 
0078 install(FILES
0079   edm4eic.yaml
0080   DESTINATION "${CMAKE_INSTALL_DATADIR}/edm4eic" COMPONENT dev)
0081 
0082 install(FILES
0083   "${PROJECT_BINARY_DIR}/libedm4eicDict_rdict.pcm"
0084   DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0085 
0086 # -------------------------
0087 # install class documentation
0088 
0089 file(RELATIVE_PATH CMAKE_CURRENT_BINARY_RELATIVE_DIR
0090   ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
0091 configure_file(
0092   ${CMAKE_SOURCE_DIR}/docs/Doxyfile.in
0093   ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0094   @ONLY)
0095 
0096 find_package(Doxygen COMPONENTS dot)
0097 if(DOXYGEN_FOUND)
0098   add_custom_target(docs ALL
0099     DEPENDS edm4eic.yaml ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0100     COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0101     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
0102     COMMENT "Generating API documentation with Doxygen"
0103     VERBATIM)
0104 else()
0105   message(STATUS "Doxygen not found; no documentation will be built.")
0106 endif()
0107 
0108 # -------------------------
0109 # add version files
0110 
0111 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/EDM4eicVersion.h.in
0112                ${CMAKE_CURRENT_BINARY_DIR}/EDM4eicVersion.h )
0113 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/EDM4eicVersion.h
0114   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/edm4eic )
0115 
0116 # -------------------------
0117 # install library config
0118 include(CMakePackageConfigHelpers)
0119 
0120 # Install and export targets
0121 install(EXPORT ${PROJECT_NAME}Targets
0122   FILE ${PROJECT_NAME}Targets.cmake
0123   NAMESPACE ${PROJECT_NAME}::
0124   DESTINATION lib/${PROJECT_NAME}
0125   )
0126 
0127 set(TARGETS_INSTALL_PATH lib/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake)
0128 
0129 configure_package_config_file(
0130   cmake/${PROJECT_NAME}Config.cmake.in
0131   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
0132   INSTALL_DESTINATION lib/${PROJECT_NAME}
0133   PATH_VARS TARGETS_INSTALL_PATH
0134   )
0135 
0136 write_basic_package_version_file(
0137   ${PROJECT_NAME}ConfigVersion.cmake
0138   VERSION ${${PROJECT_NAME}_VERSION}
0139   COMPATIBILITY AnyNewerVersion
0140   )
0141 
0142 install(FILES
0143   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
0144   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
0145   DESTINATION lib/${PROJECT_NAME}
0146   )