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)