publish_headers(infiniband include/infiniband/acm_prov.h ) # FIXME: Fixup the include scheme to not require all these -Is include_directories("include") include_directories("src") include_directories("linux") include_directories(${NL_INCLUDE_DIRS}) # NOTE: ibacm exports symbols from its own binary for use by ibacm rdma_sbin_executable(ibacm src/acm.c src/acm_util.c ) target_link_libraries(ibacm LINK_PRIVATE ibverbs ibumad ${NL_LIBRARIES} ${SYSTEMD_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} ) # FIXME: We should probably list the symbols we want to export.. set_target_properties(ibacm PROPERTIES ENABLE_EXPORTS TRUE) # This is a plugin module that dynamically links to ibacm add_library(ibacmp MODULE prov/acmp/src/acmp.c ) rdma_set_library_map(ibacmp "prov/acmp/src/libibacmp.map") target_link_libraries(ibacmp LINK_PRIVATE ibacm ibverbs ibumad ${CMAKE_THREAD_LIBS_INIT} ) set_target_properties(ibacmp PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}") install(TARGETS ibacmp DESTINATION "${ACM_PROVIDER_DIR}") # ACM providers are linked into a subdir so that IN_PLACE can work. file(MAKE_DIRECTORY "${BUILD_LIB}/ibacm/") rdma_create_symlink("../libibacmp.so" "${BUILD_LIB}/ibacm/libibacmp.so") rdma_executable(ib_acme src/acme.c src/libacm.c src/parse.c ) target_link_libraries(ib_acme LINK_PRIVATE ibverbs ) target_compile_definitions(ib_acme PRIVATE "-DACME_PRINTS") rdma_man_pages( man/ib_acme.1 man/ibacm.7 man/ibacm.8 man/ibacm_prov.7.in ) # FIXME: update the .init.in rdma_subst_install(FILES "ibacm.init.in" DESTINATION "${CMAKE_INSTALL_INITDDIR}" RENAME "ibacm" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) rdma_subst_install(FILES "ibacm.service.in" DESTINATION "${CMAKE_INSTALL_SYSTEMD_SERVICEDIR}" RENAME ibacm.service PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) install(FILES "ibacm.socket" DESTINATION "${CMAKE_INSTALL_SYSTEMD_SERVICEDIR}" RENAME ibacm.socket PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)