From 0c77866f1c30e9e3a25ce16fbfb86784c482089b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Alusarczyk?= Date: Thu, 3 Oct 2024 15:18:19 +0200 Subject: [PATCH] Install adapters by cmake --- .github/workflows/build-hw-reusable.yml | 5 +++++ cmake/helpers.cmake | 9 +++++++++ source/adapters/cuda/CMakeLists.txt | 3 ++- source/adapters/hip/CMakeLists.txt | 1 + source/adapters/level_zero/CMakeLists.txt | 4 +++- source/adapters/native_cpu/CMakeLists.txt | 1 + source/adapters/opencl/CMakeLists.txt | 1 + source/loader/CMakeLists.txt | 8 +------- test/CMakeLists.txt | 1 + test/adapters/level_zero/CMakeLists.txt | 1 + 10 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-hw-reusable.yml b/.github/workflows/build-hw-reusable.yml index fa23c38248..b8fc659b4d 100644 --- a/.github/workflows/build-hw-reusable.yml +++ b/.github/workflows/build-hw-reusable.yml @@ -87,6 +87,7 @@ jobs: -DUR_STATIC_ADAPTER_${{matrix.adapter.name}}=${{matrix.adapter.static_adapter}} -DUR_DPCXX=${{github.workspace}}/dpcpp_compiler/bin/clang++ -DUR_SYCL_LIBRARY_DIR=${{github.workspace}}/dpcpp_compiler/lib + -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install ${{ matrix.adapter.name == 'HIP' && '-DUR_CONFORMANCE_AMD_ARCH=gfx1030' || '' }} ${{ matrix.adapter.name == 'HIP' && '-DUR_HIP_PLATFORM=AMD' || '' }} @@ -94,6 +95,10 @@ jobs: # This is so that device binaries can find the sycl runtime library run: cmake --build ${{github.workspace}}/build -j $(nproc) + - name: Install + # This is to check that install command does not fail + run: cmake --install ${{github.workspace}}/build + - name: Test adapter specific working-directory: ${{github.workspace}}/build run: ctest -C ${{matrix.build_type}} --output-on-failure -L "adapter-specific" --timeout 180 diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake index 6a5700da8b..01346a62fb 100644 --- a/cmake/helpers.cmake +++ b/cmake/helpers.cmake @@ -139,6 +139,15 @@ function(add_ur_library name) endif() endfunction() +function(install_ur_library name) + install(TARGETS ${name} + EXPORT ${PROJECT_NAME}-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT unified-runtime + ) +endfunction() + include(FetchContent) function(FetchSource GIT_REPOSITORY GIT_TAG GIT_DIR DEST) diff --git a/source/adapters/cuda/CMakeLists.txt b/source/adapters/cuda/CMakeLists.txt index ca27eaa422..b6b153a5d8 100644 --- a/source/adapters/cuda/CMakeLists.txt +++ b/source/adapters/cuda/CMakeLists.txt @@ -45,6 +45,7 @@ add_ur_adapter(${TARGET_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp ) +install_ur_library(${TARGET_NAME}) set_target_properties(${TARGET_NAME} PROPERTIES VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" @@ -100,7 +101,7 @@ if (UR_ENABLE_TRACING) XPTI_ENABLE_INSTRUMENTATION XPTI_STATIC_LIBRARY ) - target_include_directories(${TARGET_NAME} PUBLIC + target_include_directories(${TARGET_NAME} PRIVATE ${XPTI_INCLUDES} ${CUDA_CUPTI_INCLUDE_DIR} ) diff --git a/source/adapters/hip/CMakeLists.txt b/source/adapters/hip/CMakeLists.txt index 2e77e434ca..9113d7b1ca 100644 --- a/source/adapters/hip/CMakeLists.txt +++ b/source/adapters/hip/CMakeLists.txt @@ -92,6 +92,7 @@ add_ur_adapter(${TARGET_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp ) +install_ur_library(${TARGET_NAME}) if(NOT MSVC) target_compile_options(${TARGET_NAME} PRIVATE diff --git a/source/adapters/level_zero/CMakeLists.txt b/source/adapters/level_zero/CMakeLists.txt index 0aadf81409..5cb974697c 100644 --- a/source/adapters/level_zero/CMakeLists.txt +++ b/source/adapters/level_zero/CMakeLists.txt @@ -50,6 +50,7 @@ if(UR_BUILD_ADAPTER_L0) ${CMAKE_CURRENT_SOURCE_DIR}/helpers/memory_helpers.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp ) + install_ur_library(ur_adapter_level_zero) if(UR_STATIC_ADAPTER_L0) target_compile_definitions(ur_adapter_level_zero PUBLIC UR_STATIC_ADAPTER_LEVEL_ZERO) @@ -57,7 +58,7 @@ if(UR_BUILD_ADAPTER_L0) # 'utils' target from 'level-zero-loader' includes path which is prefixed # in the source directory, this breaks the installation of 'utils' target. set_target_properties(utils PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "") - install(TARGETS ur_adapter_level_zero ur_umf LevelZeroLoader LevelZeroLoader-Headers ze_loader utils + install(TARGETS ur_umf LevelZeroLoader LevelZeroLoader-Headers ze_loader utils EXPORT ${PROJECT_NAME}-targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -150,6 +151,7 @@ if(UR_BUILD_ADAPTER_L0_V2) ${CMAKE_CURRENT_SOURCE_DIR}/v2/queue_immediate_in_order.cpp ${CMAKE_CURRENT_SOURCE_DIR}/v2/usm.cpp ) + install_ur_library(ur_adapter_level_zero_v2) if(NOT WIN32) # api.cpp contains NOT_SUPPORTED functions-only diff --git a/source/adapters/native_cpu/CMakeLists.txt b/source/adapters/native_cpu/CMakeLists.txt index dbe480592b..56cfc577d8 100644 --- a/source/adapters/native_cpu/CMakeLists.txt +++ b/source/adapters/native_cpu/CMakeLists.txt @@ -41,6 +41,7 @@ add_ur_adapter(${TARGET_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp ) +install_ur_library(${TARGET_NAME}) set_target_properties(${TARGET_NAME} PROPERTIES VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" diff --git a/source/adapters/opencl/CMakeLists.txt b/source/adapters/opencl/CMakeLists.txt index 7c976ec78e..8bf67239b0 100644 --- a/source/adapters/opencl/CMakeLists.txt +++ b/source/adapters/opencl/CMakeLists.txt @@ -43,6 +43,7 @@ add_ur_adapter(${TARGET_NAME} SHARED ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp ) +install_ur_library(${TARGET_NAME}) set_target_properties(${TARGET_NAME} PROPERTIES VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" diff --git a/source/loader/CMakeLists.txt b/source/loader/CMakeLists.txt index deec891775..440f72a845 100644 --- a/source/loader/CMakeLists.txt +++ b/source/loader/CMakeLists.txt @@ -19,6 +19,7 @@ add_ur_library(ur_loader "" ${CMAKE_CURRENT_BINARY_DIR}/UrLoaderVersion.rc ) +install_ur_library(ur_loader) if (MSVC) set(TARGET_LIBNAME ur_loader) @@ -101,13 +102,6 @@ if(UNIX) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libur_loader.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" COMPONENT unified-runtime) endif() -install(TARGETS ur_loader - EXPORT ${PROJECT_NAME}-targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT unified-runtime -) - target_sources(ur_loader PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ur_object.hpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3e7485820f..e7514cefd8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,6 +15,7 @@ set(UR_TEST_PLATFORMS_COUNT 1 CACHE STRING "Count of platforms on which conforma set(UR_TEST_FUZZTESTS ON CACHE BOOL "Run fuzz tests if using clang and UR_DPCXX is specified") # For Windows: Prevent overriding the parent project's compiler/linker settings set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +set(INSTALL_GTEST OFF) FetchContent_MakeAvailable(googletest) enable_testing() diff --git a/test/adapters/level_zero/CMakeLists.txt b/test/adapters/level_zero/CMakeLists.txt index a497b8e1a2..bfb02d37c2 100644 --- a/test/adapters/level_zero/CMakeLists.txt +++ b/test/adapters/level_zero/CMakeLists.txt @@ -45,6 +45,7 @@ if(UR_BUILD_ADAPTER_L0) # Make L0 use CallMap from a seprate shared lib so that we can access the map # from the tests. This only seems to work on linux add_library(zeCallMap SHARED zeCallMap.cpp) + install_ur_library(zeCallMap) target_compile_definitions(ur_adapter_level_zero PRIVATE UR_L0_CALL_COUNT_IN_TESTS) # TODO: stop exporting internals like this for tests... target_link_libraries(ur_adapter_level_zero PRIVATE zeCallMap)