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 # 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})