Warning, /EICrecon/src/services/io/podio/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # Automatically set plugin name the same as the directory name
0002 get_filename_component(PLUGIN_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
0003
0004 # Function creates ${PLUGIN_NAME}_plugin and ${PLUGIN_NAME}_library targets
0005 # Setting default includes, libraries and installation paths
0006 plugin_add(${PLUGIN_NAME})
0007
0008 # The macro grabs sources as *.cc *.cpp *.c and headers as *.h *.hh *.hpp Then
0009 # correctly sets sources for ${_name}_plugin and ${_name}_library targets Adds
0010 # headers to the correct installation directory
0011 plugin_glob_all(${PLUGIN_NAME})
0012
0013 # Get properties at configuration evaluation time. The `$<TARGET_PROPERTY`
0014 # generator expression would include multiple additional paths from transitive
0015 # dependencies such as PODIO and ROOT.
0016 get_target_property(EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES EDM4HEP::edm4hep
0017 INTERFACE_INCLUDE_DIRECTORIES)
0018 get_target_property(EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES EDM4EIC::edm4eic
0019 INTERFACE_INCLUDE_DIRECTORIES)
0020
0021 # Get the datamodel version headers
0022 set(EDM_VERSION_INCLUDES
0023 ${EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES}/edm4eic/EDM4eicVersion.h)
0024 if(${EDM4HEP_VERSION} VERSION_GREATER_EQUAL "0.9")
0025 list(APPEND EDM_VERSION_INCLUDES
0026 ${EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES}/edm4hep/EDM4hepVersion.h)
0027 endif()
0028
0029 # Get relative source dir
0030 file(RELATIVE_PATH DATAMODEL_RELATIVE_PATH ${PROJECT_SOURCE_DIR}/src
0031 ${CMAKE_CURRENT_SOURCE_DIR})
0032
0033 # Generate the datamodel header files.
0034 add_custom_command(
0035 OUTPUT ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}
0036 COMMAND ${CMAKE_COMMAND} -E make_directory
0037 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}
0038 COMMENT Create datamodel glue directory)
0039 add_custom_command(
0040 OUTPUT
0041 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_glue.h
0042 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_includes.h
0043 COMMAND
0044 python3 ${CMAKE_CURRENT_SOURCE_DIR}/make_datamodel_glue.py
0045 WORKING_DIR=${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}
0046 EDM4HEP_INCLUDE_DIR=${EDM4HEP_INTERFACE_INCLUDE_DIRECTORIES}
0047 EDM4EIC_INCLUDE_DIR=${EDM4EIC_INTERFACE_INCLUDE_DIRECTORIES}
0048 MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/make_datamodel_glue.py
0049 DEPENDS ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}
0050 ${EDM_VERSION_INCLUDES}
0051 COMMENT Create datamodel glue headers)
0052
0053 # Install datamodel_glue headers
0054 install(
0055 FILES
0056 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_glue.h
0057 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_includes.h
0058 DESTINATION
0059 ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${DATAMODEL_RELATIVE_PATH})
0060
0061 # Add include directories (works same as target_include_directories)
0062 plugin_include_directories(${PLUGIN_NAME} PRIVATE ${PROJECT_BINARY_DIR}/include)
0063
0064 # Add libraries (works same as target_include_directories)
0065 plugin_link_libraries(
0066 ${PLUGIN_NAME}
0067 fmt::fmt
0068 EDM4HEP::edm4hep
0069 EDM4HEP::edm4hepDict
0070 EDM4EIC::edm4eic
0071 EDM4EIC::edm4eic_utils
0072 podio::podioRootIO)
0073
0074 # Create a ROOT dictionary with the vector<edm4hep::XXXData> types defined.
0075 # Without this, root will complain about not having a compiled CollectionProxy.
0076 root_generate_dictionary(
0077 G__datamodel_vectors
0078 ${PROJECT_BINARY_DIR}/include/${DATAMODEL_RELATIVE_PATH}/datamodel_includes.h
0079 MODULE ${PLUGIN_NAME}_plugin LINKDEF datamodel_LinkDef.h)
0080
0081 # Install root dictionaries made by PODIO
0082 set(my_root_dict_files
0083 ${CMAKE_CURRENT_BINARY_DIR}/lib${PLUGIN_NAME}_plugin_rdict.pcm
0084 ${CMAKE_CURRENT_BINARY_DIR}/lib${PLUGIN_NAME}_plugin.rootmap)
0085 install(FILES ${my_root_dict_files} DESTINATION ${PLUGIN_OUTPUT_DIRECTORY})