Back to home page

EIC code displayed by LXR

 
 

    


Warning, /EICrecon/src/services/io/podio/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # Get properties at configuration evaluation time. The `$<TARGET_PROPERTY`
0002 # generator expression would include multiple additional paths from transitive
0003 # dependencies such as PODIO and ROOT.
0004 get_target_property(EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES EDM4HEP::edm4hep
0005                     INTERFACE_INCLUDE_DIRECTORIES)
0006 get_target_property(EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES EDM4EIC::edm4eic
0007                     INTERFACE_INCLUDE_DIRECTORIES)
0008 
0009 # Get the datamodel version headers
0010 set(EDM_VERSION_INCLUDES
0011     ${EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES}/edm4eic/EDM4eicVersion.h)
0012 if(${EDM4HEP_VERSION} VERSION_GREATER_EQUAL "0.9")
0013   list(APPEND EDM_VERSION_INCLUDES
0014        ${EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES}/edm4hep/EDM4hepVersion.h)
0015 endif()
0016 
0017 # Get relative source dir
0018 file(RELATIVE_PATH DATAMODEL_RELATIVE_PATH ${PROJECT_SOURCE_DIR}/src
0019      ${CMAKE_CURRENT_SOURCE_DIR})
0020 
0021 # Generate the datamodel header files.
0022 add_custom_command(
0023   OUTPUT
0024     ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_glue.h
0025     ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_includes.h
0026   COMMAND
0027     python3 ${CMAKE_CURRENT_SOURCE_DIR}/make_datamodel_glue.py
0028     WORKING_DIR=${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}
0029     EDM4HEP_INCLUDE_DIR=${EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES}
0030     EDM4EIC_INCLUDE_DIR=${EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES}
0031   MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/make_datamodel_glue.py
0032   DEPENDS ${EDM_VERSION_INCLUDES}
0033   COMMENT "Create datamodel glue headers")
0034 add_custom_target(
0035   podio_datamodel_glue
0036   DEPENDS
0037     ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_glue.h
0038   COMMENT "Create datamodel glue headers")
0039 
0040 # Install datamodel_glue header
0041 install(
0042   FILES
0043     ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_glue.h
0044   DESTINATION
0045     ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${DATAMODEL_RELATIVE_PATH})
0046 
0047 # Automatically set plugin name the same as the directory name
0048 get_filename_component(PLUGIN_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
0049 
0050 # Function creates ${PLUGIN_NAME}_plugin and ${PLUGIN_NAME}_library targets
0051 # Setting default includes, libraries and installation paths
0052 plugin_add(${PLUGIN_NAME})
0053 
0054 # The macro grabs sources as *.cc *.cpp *.c and headers as *.h *.hh *.hpp Then
0055 # correctly sets sources for ${_name}_plugin and ${_name}_library targets Adds
0056 # headers to the correct installation directory
0057 plugin_glob_all(${PLUGIN_NAME})
0058 
0059 # Add include directories (works same as target_include_directories)
0060 plugin_include_directories(${PLUGIN_NAME} PRIVATE ${PROJECT_BINARY_DIR}/include)
0061 
0062 # Add libraries (works same as target_include_directories)
0063 plugin_link_libraries(
0064   ${PLUGIN_NAME}
0065   fmt::fmt
0066   EDM4HEP::edm4hep
0067   EDM4HEP::edm4hepDict
0068   EDM4EIC::edm4eic
0069   EDM4EIC::edm4eic_utils
0070   podio::podioRootIO)