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 6 )
0010 SET( ${PROJECT_NAME}_VERSION_MINOR 0 )
0011 SET( ${PROJECT_NAME}_VERSION_PATCH 1 )
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 REQUIRED)
0032 include_directories(${podio_INCLUDE_DIR})
0033 
0034 find_package(EDM4HEP 0.10.3 REQUIRED)
0035 
0036 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
0037 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
0038 find_package(ROOT 6 REQUIRED COMPONENTS Core RIO Tree)
0039 include(${ROOT_USE_FILE})
0040 
0041 PODIO_GENERATE_DATAMODEL(edm4eic edm4eic.yaml headers sources
0042   UPSTREAM_EDM edm4hep:${EDM4HEP_DATA_DIR}/edm4hep.yaml
0043   IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS}
0044   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0045   )
0046 
0047 PODIO_ADD_DATAMODEL_CORE_LIB(edm4eic "${headers}" "${sources}"
0048   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0049 )
0050 # It's our responsibility to link to upstream datamodel
0051 target_link_libraries(edm4eic PUBLIC EDM4HEP::edm4hep)
0052 
0053 PODIO_ADD_ROOT_IO_DICT(edm4eicDict edm4eic "${headers}" src/selection.xml
0054   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0055 )
0056 
0057 add_library(edm4eic::edm4eicDict ALIAS edm4eicDict )
0058 
0059 list(APPEND EDM4EIC_INSTALL_LIBS edm4eic edm4eicDict)
0060 
0061 add_subdirectory(utils)
0062 add_subdirectory(test)
0063 
0064 install(TARGETS ${EDM4EIC_INSTALL_LIBS}
0065   EXPORT ${PROJECT_NAME}Targets
0066   RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
0067   LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
0068   PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/edm4eic"
0069   COMPONENT dev)
0070 
0071 install(FILES
0072   "${PROJECT_BINARY_DIR}/edm4eicDictDict.rootmap"
0073   DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0074 
0075 install(FILES
0076   edm4eic.yaml
0077   DESTINATION "${CMAKE_INSTALL_DATADIR}/edm4eic" COMPONENT dev)
0078 
0079 install(FILES
0080   "${PROJECT_BINARY_DIR}/libedm4eicDict_rdict.pcm"
0081   DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0082 
0083 # -------------------------
0084 # install class documentation
0085 
0086 file(RELATIVE_PATH CMAKE_CURRENT_BINARY_RELATIVE_DIR
0087   ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
0088 configure_file(
0089   ${CMAKE_SOURCE_DIR}/docs/Doxyfile.in
0090   ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0091   @ONLY)
0092 
0093 find_package(Doxygen COMPONENTS dot)
0094 if(DOXYGEN_FOUND)
0095   add_custom_target(docs ALL
0096     DEPENDS edm4eic.yaml ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0097     COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0098     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
0099     COMMENT "Generating API documentation with Doxygen"
0100     VERBATIM)
0101 else()
0102   message(STATUS "Doxygen not found; no documentation will be built.")
0103 endif()
0104 
0105 # -------------------------
0106 # add version files
0107 
0108 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/EDM4eicVersion.h.in
0109                ${CMAKE_CURRENT_BINARY_DIR}/EDM4eicVersion.h )
0110 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/EDM4eicVersion.h
0111   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/edm4eic )
0112 
0113 # -------------------------
0114 # install library config
0115 include(CMakePackageConfigHelpers)
0116 
0117 # Install and export targets
0118 install(EXPORT ${PROJECT_NAME}Targets
0119   FILE ${PROJECT_NAME}Targets.cmake
0120   NAMESPACE ${PROJECT_NAME}::
0121   DESTINATION lib/${PROJECT_NAME}
0122   )
0123 
0124 set(TARGETS_INSTALL_PATH lib/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake)
0125 
0126 configure_package_config_file(
0127   cmake/${PROJECT_NAME}Config.cmake.in
0128   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
0129   INSTALL_DESTINATION lib/${PROJECT_NAME}
0130   PATH_VARS TARGETS_INSTALL_PATH
0131   )
0132 
0133 write_basic_package_version_file(
0134   ${PROJECT_NAME}ConfigVersion.cmake
0135   VERSION ${${PROJECT_NAME}_VERSION}
0136   COMPATIBILITY AnyNewerVersion
0137   )
0138 
0139 install(FILES
0140   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
0141   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
0142   DESTINATION lib/${PROJECT_NAME}
0143   )