Warning, /eicd/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.12)
0002 project(EICD
0003 VERSION 1.1.0
0004 LANGUAGES CXX)
0005
0006 set(CMAKE_CXX_STANDARD 20)
0007 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0008
0009 #--- Declare options -----------------------------------------------------------
0010 option(BUILD_DATA_MODEL "Run podio class generator yaml file" ON)
0011
0012 if(APPLE)
0013 set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
0014 endif(APPLE)
0015
0016 include(GNUInstallDirs)
0017
0018 find_package(podio 0.15 REQUIRED)
0019 include_directories(${podio_INCLUDE_DIR})
0020
0021 find_package(EDM4HEP 0.4.1 REQUIRED)
0022
0023 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
0024 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
0025 find_package(ROOT 6 REQUIRED COMPONENTS Core RIO Tree)
0026 include(${ROOT_USE_FILE})
0027
0028 PODIO_GENERATE_DATAMODEL(eicd eic_data.yaml headers sources
0029 UPSTREAM_EDM edm4hep:${EDM4HEP_DATA_DIR}/edm4hep.yaml
0030 IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS}
0031 OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0032 )
0033
0034 PODIO_ADD_DATAMODEL_CORE_LIB(eicd "${headers}" "${sources}"
0035 OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0036 )
0037 # The target for the data model library is defined in podio/cmake/podioMacros.cmake
0038 # Any changes to that target name upstream may require changes to the target used here
0039 target_include_directories(eicd PUBLIC ${EDM4HEP_INCLUDE_DIR})
0040
0041 PODIO_ADD_ROOT_IO_DICT(eicdDict eicd "${headers}" src/selection.xml
0042 OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
0043 )
0044
0045 add_library(eicd::eicdDict ALIAS eicdDict )
0046
0047 list(APPEND EICD_INSTALL_LIBS eicd eicdDict)
0048
0049 add_subdirectory(utils)
0050
0051 install(TARGETS ${EICD_INSTALL_LIBS}
0052 EXPORT EICDTargets
0053 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
0054 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
0055 PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/eicd"
0056 COMPONENT dev)
0057
0058 install(FILES
0059 "${PROJECT_BINARY_DIR}/eicdDictDict.rootmap"
0060 DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0061
0062 install(FILES
0063 eic_data.yaml
0064 DESTINATION "${CMAKE_INSTALL_DATADIR}/eicd" COMPONENT dev)
0065
0066 install(FILES
0067 "${PROJECT_BINARY_DIR}/libeicdDict_rdict.pcm"
0068 DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev)
0069
0070 # -------------------------
0071 # install class documentation
0072
0073 cmake_path(RELATIVE_PATH CMAKE_CURRENT_BINARY_DIR
0074 OUTPUT_VARIABLE CMAKE_CURRENT_BINARY_RELATIVE_DIR)
0075 configure_file(
0076 ${CMAKE_SOURCE_DIR}/docs/Doxyfile.in
0077 ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0078 @ONLY)
0079
0080 find_package(Doxygen COMPONENTS dot)
0081 if(DOXYGEN_FOUND)
0082 add_custom_target(docs ALL
0083 COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
0084 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
0085 COMMENT "Generating API documentation with Doxygen"
0086 VERBATIM)
0087 else()
0088 message(STATUS "Doxygen not found; no documentation will be built.")
0089 endif()
0090
0091 # -------------------------
0092 # install library config
0093 include(CMakePackageConfigHelpers)
0094
0095 # Install and export targets
0096 install(EXPORT ${PROJECT_NAME}Targets
0097 FILE ${PROJECT_NAME}Targets.cmake
0098 NAMESPACE EICD::
0099 DESTINATION lib/EICD
0100 )
0101
0102 set(TARGETS_INSTALL_PATH lib/EICD/EICDTargets.cmake)
0103
0104 configure_package_config_file(
0105 cmake/EICDConfig.cmake.in
0106 ${CMAKE_CURRENT_BINARY_DIR}/EICDConfig.cmake
0107 INSTALL_DESTINATION lib/EICD
0108 PATH_VARS TARGETS_INSTALL_PATH
0109 )
0110
0111 write_basic_package_version_file("EICDConfigVersion.cmake"
0112 VERSION ${VERSION}
0113 COMPATIBILITY SameMajorVersion
0114 )
0115
0116 install(FILES
0117 ${CMAKE_CURRENT_BINARY_DIR}/EICDConfig.cmake
0118 ${CMAKE_CURRENT_BINARY_DIR}/EICDConfigVersion.cmake
0119 DESTINATION lib/EICD
0120 )
0121