14
14
#
15
15
# The targets in this file will be built if EXECUTORCH_BUILD_VULKAN is ON
16
16
17
+ if (NOT PYTHON_EXECUTABLE)
18
+ message (
19
+ "WARNING: PYTHON_EXECUTABLE is not set! A failure is likely imminent."
20
+ )
21
+ endif ()
22
+
23
+ if (NOT EXECUTORCH_ROOT)
24
+ message ("WARNING: EXECUTORCH_ROOT is not set! A failure is likely imminent." )
25
+ endif ()
26
+
17
27
if (ANDROID)
18
28
if (NOT ANDROID_NDK)
19
29
message (FATAL_ERROR "ANDROID_NDK not set" )
@@ -37,30 +47,67 @@ endif()
37
47
# Required to enable linking with --whole-archive
38
48
include (${EXECUTORCH_ROOT} /build /Utils.cmake)
39
49
40
- # Convenience macro to generate a SPIR-V shader library target. Given the path
41
- # to the shaders to compile and the name of the library, it will create a static
42
- # library containing the generated SPIR-V shaders. The generated_spv_cpp
43
- # variable can be used to reference the generated CPP file outside the macro.
44
- macro (VULKAN_SHADER_LIBRARY shaders_path library_name)
50
+ function (gen_vulkan_shader_lib_cpp shaders_path)
45
51
set (VULKAN_SHADERGEN_ENV "" )
46
- set (VULKAN_SHADERGEN_OUT_PATH ${CMAKE_BINARY_DIR} /${library_name } )
52
+ set (VULKAN_SHADERGEN_OUT_PATH ${CMAKE_BINARY_DIR} /${ARGV1 } )
47
53
48
54
execute_process (
49
55
COMMAND
50
56
"${PYTHON_EXECUTABLE} "
51
- ${CMAKE_CURRENT_SOURCE_DIR} / runtime/api/gen_vulkan_spv.py --glsl- path
52
- ${shaders_path} --output -path ${VULKAN_SHADERGEN_OUT_PATH}
57
+ ${EXECUTORCH_ROOT} /backends/vulkan/ runtime/api/gen_vulkan_spv.py
58
+ --glsl- path ${shaders_path} --output -path ${VULKAN_SHADERGEN_OUT_PATH}
53
59
--glslc-path =${GLSLC_PATH} --tmp-dir-path =${VULKAN_SHADERGEN_OUT_PATH}
54
60
--env ${VULKAN_GEN_ARG_ENV}
55
61
RESULT_VARIABLE error_code
56
62
)
57
- set (ENV{PYTHONPATH} ${PYTHONPATH} )
63
+
64
+ set (generated_spv_cpp
65
+ ${VULKAN_SHADERGEN_OUT_PATH} /spv.cpp
66
+ PARENT_SCOPE
67
+ )
68
+ endfunction ()
69
+
70
+ function (vulkan_shader_lib library_name generated_spv_cpp)
71
+ add_library (${library_name} STATIC ${generated_spv_cpp} )
72
+ target_include_directories (
73
+ ${library_name}
74
+ PRIVATE
75
+ ${EXECUTORCH_ROOT} /..
76
+ ${EXECUTORCH_ROOT} /backends/vulkan/third-party/Vulkan-Headers/include
77
+ ${EXECUTORCH_ROOT} /backends/vulkan/third-party/volk
78
+ )
79
+ target_link_libraries (${library_name} vulkan_backend)
80
+ target_compile_options (${library_name} PRIVATE ${VULKAN_CXX_FLAGS} )
81
+ # Link this library with --whole-archive due to dynamic shader registrations
82
+ target_link_options_shared_lib(${library_name} )
83
+ endfunction ()
84
+
85
+ # Convenience macro to generate a SPIR-V shader library target. Given the path
86
+ # to the shaders to compile and the name of the library, it will create a static
87
+ # library containing the generated SPIR-V shaders. The generated_spv_cpp
88
+ # variable can be used to reference the generated CPP file outside the macro.
89
+ macro (vulkan_shader_library shaders_path library_name)
90
+ set (VULKAN_SHADERGEN_ENV "" )
91
+ set (VULKAN_SHADERGEN_OUT_PATH ${CMAKE_BINARY_DIR} /${library_name} )
92
+
93
+ # execute_process( COMMAND "${PYTHON_EXECUTABLE}"
94
+ # ${EXECUTORCH_ROOT}/backends/vulkan/runtime/api/gen_vulkan_spv.py --glsl-path
95
+ # ${shaders_path} --output-path ${VULKAN_SHADERGEN_OUT_PATH}
96
+ # --glslc-path=${GLSLC_PATH} --tmp-dir-path=${VULKAN_SHADERGEN_OUT_PATH} --env
97
+ # ${VULKAN_GEN_ARG_ENV} RESULT_VARIABLE error_code ) set(ENV{PYTHONPATH}
98
+ # ${PYTHONPATH})
58
99
59
100
set (generated_spv_cpp ${VULKAN_SHADERGEN_OUT_PATH} /spv.cpp)
60
101
61
102
add_library (${library_name} STATIC ${generated_spv_cpp} )
62
- target_include_directories (${library_name} PRIVATE ${COMMON_INCLUDES} )
63
- target_link_libraries (${library_name} vulkan_graph_lib)
103
+ target_include_directories (
104
+ ${library_name}
105
+ PRIVATE
106
+ ${EXECUTORCH_ROOT} /..
107
+ ${EXECUTORCH_ROOT} /backends/vulkan/third-party/Vulkan-Headers/include
108
+ ${EXECUTORCH_ROOT} /backends/vulkan/third-party/volk
109
+ )
110
+ target_link_libraries (${library_name} vulkan_backend)
64
111
target_compile_options (${library_name} PRIVATE ${VULKAN_CXX_FLAGS} )
65
112
# Link this library with --whole-archive due to dynamic shader registrations
66
113
target_link_options_shared_lib(${library_name} )
0 commit comments