#--------------------------------------------------------------------------------------------------- # add_dd4hep_plugin ( libraryName ) # # generates the rootmap and installs the library # all other arguments ( SHARED, ${sources} ) are collected in ${ARGN} #--------------------------------------------------------------------------------------------------- function( add_dd4hep_plugin libraryName ) ADD_LIBRARY ( ${libraryName} ${ARGN} ) if(APPLE) dd4hep_generate_rootmap_apple( ${libraryName} ) else() dd4hep_generate_rootmap( ${libraryName} ) endif() install( TARGETS ${libraryName} LIBRARY DESTINATION lib ) endfunction() #--------------------------------------------------------------------------------------------------- # dd4hep_instantiate_package # calls all the function/includes/configurations that are needed to be done to create dd4hep plugins #--------------------------------------------------------------------------------------------------- function ( dd4hep_instantiate_package PackageName ) MESSAGE (STATUS "instantiating the dd4hep package ${PackageName}" ) IF ( NOT ${DD4hep_FOUND} ) MESSAGE ( FATAL "DD4HEP was not found" ) ENDIF() INCLUDE( DD4hepMacros ) #---- configure run environment --------------- configure_file( ${DD4hep_ROOT}/cmake/thisdd4hep_package.sh.in this${PackageName}.sh @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/this${PackageName}.sh DESTINATION bin ) endfunction() #--------------------------------------------------------------------------------------------------- # dd4hep_generate_rootmap(library) # # Create the .rootmap file needed by the plug-in system. #--------------------------------------------------------------------------------------------------- function(dd4hep_generate_rootmap library) if(APPLE) dd4hep_generate_rootmap_apple( ${library} ) else() dd4hep_generate_rootmap_notapple( ${library} ) endif() endfunction() function(dd4hep_generate_rootmap_notapple library) if ( NOT DD4hep_ROOT ) SET ( DD4hep_ROOT ${CMAKE_SOURCE_DIR} ) endif() find_package(ROOT QUIET) set(rootmapfile ${CMAKE_SHARED_MODULE_PREFIX}${library}.rootmap) set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_LIBRARY_SUFFIX}) add_custom_command(OUTPUT ${rootmapfile} COMMAND ${CMAKE_COMMAND} -Dlibname=${libname} -Drootmapfile=${rootmapfile} -Dgenmap_install_dir=${LIBRARY_OUTPUT_PATH} -P ${DD4hep_ROOT}/cmake/MakeRootMap.cmake DEPENDS ${library}) add_custom_target(${library}Rootmap ALL DEPENDS ${rootmapfile}) install(FILES ${LIBRARY_OUTPUT_PATH}/${rootmapfile} DESTINATION lib ) endfunction() # # function(dd4hep_generate_rootmap_apple library) # for now do the same for apple that is done for the rest dd4hep_generate_rootmap( ${library} ) endfunction() #--------------------------------------------------------------------------------------------------- # dd4hep_install_library(library) # # Install library #--------------------------------------------------------------------------------------------------- function(dd4hep_install_library library) set(installfile ${library}.install) set(rootmapfile ${CMAKE_SHARED_MODULE_PREFIX}${library}.rootmap) set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_MODULE_SUFFIX}) add_custom_command(OUTPUT ${rootmapfile} SET ( ENV{LD_LIBRARY_PATH} ./:$ENV{LD_LIBRARY_PATH} ) COMMAND echo ${library} ${LIBRARY_OUTPUT_DIR} DEPENDS ${library}) add_custom_target(${library}Install ALL DEPENDS ${installfile}) endfunction()