xref: /aosp_15_r20/external/executorch/backends/vulkan/test/CMakeLists.txt (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1# Copyright (c) Meta Platforms, Inc. and affiliates.
2# All rights reserved.
3#
4# This source code is licensed under the BSD-style license found in the
5# LICENSE file in the root directory of this source tree.
6
7# ### Editing this file ###
8#
9# This file should be formatted with
10# ~~~
11# cmake-format -i CMakeLists.txt
12# ~~~
13# It should also be cmake-lint clean.
14#
15# The targets in this file will be built if EXECUTORCH_BUILD_VULKAN is ON
16
17cmake_minimum_required(VERSION 3.19)
18project(executorch)
19
20find_package(executorch CONFIG REQUIRED COMPONENTS vulkan_backend)
21find_package(GTest CONFIG REQUIRED)
22
23# Only build tests if Vulkan was compiled
24find_library(LIB_VULKAN_BACKEND vulkan_backend)
25
26if(LIB_VULKAN_BACKEND)
27
28  if(NOT EXECUTORCH_ROOT)
29    set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
30  endif()
31
32  if(NOT PYTHON_EXECUTABLE)
33    set(PYTHON_EXECUTABLE python3)
34  endif()
35
36  # Include this file to access target_link_options_shared_lib This is required
37  # to provide access to target_link_options_shared_lib which allows libraries
38  # to be linked with the --whole-archive flag. This is required for libraries
39  # that perform dynamic registration via static initialization.
40  include(${EXECUTORCH_ROOT}/build/Utils.cmake)
41
42  include(../cmake/ShaderLibrary.cmake)
43
44  # Third party include paths
45
46  set(VULKAN_THIRD_PARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../third-party)
47
48  set(GTEST_INCLUDE_PATH
49      ${EXECUTORCH_ROOT}/third-party/googletest/googletest/include set
50      (PYTORCH_PATH ${EXECUTORCH_ROOT}/third-party/pytorch)
51  )
52  set(VULKAN_HEADERS_PATH ${VULKAN_THIRD_PARTY_PATH}/Vulkan-Headers/include)
53  set(VOLK_PATH ${VULKAN_THIRD_PARTY_PATH}/volk)
54  set(VMA_PATH ${VULKAN_THIRD_PARTY_PATH}/VulkanMemoryAllocator)
55
56  set(COMMON_INCLUDES ${EXECUTORCH_ROOT}/.. ${VULKAN_HEADERS_PATH} ${VOLK_PATH}
57                      ${VMA_PATH} ${GTEST_INCLUDE_PATH} ${PYTORCH_PATH}
58  )
59
60  # Test Utility files
61
62  set(TEST_UTILS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/utils)
63  file(GLOB TEST_UTILS_CPP ${CMAKE_CURRENT_SOURCE_DIR}/utils/*.cpp)
64
65  # Test shaders
66
67  set(TEST_SHADERS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/glsl)
68  gen_vulkan_shader_lib_cpp(${TEST_SHADERS_PATH})
69  vulkan_shader_lib(test_shaderlib ${generated_spv_cpp})
70
71  # API Test binary
72
73  set(COMPUTE_API_TEST_CPP
74      ${CMAKE_CURRENT_SOURCE_DIR}/vulkan_compute_api_test.cpp
75  )
76
77  target_link_options_shared_lib(vulkan_backend)
78
79  add_executable(
80    vulkan_compute_api_test ${COMPUTE_API_TEST_CPP} ${TEST_UTILS_CPP}
81  )
82  target_include_directories(vulkan_compute_api_test PRIVATE ${COMMON_INCLUDES})
83  target_link_libraries(
84    vulkan_compute_api_test PRIVATE GTest::gtest_main vulkan_backend executorch
85                                    test_shaderlib
86  )
87  target_compile_options(vulkan_compute_api_test PRIVATE ${VULKAN_CXX_FLAGS})
88
89  set_property(TARGET vulkan_compute_api_test PROPERTY CXX_STANDARD 17)
90
91endif()
92