-
Notifications
You must be signed in to change notification settings - Fork 186
/
Copy pathwebgpu.cmake
61 lines (51 loc) · 2.1 KB
/
webgpu.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Specify the filename to search for
set(FILENAME "gpu.h")
get_filename_component(PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
get_filename_component(PROJECT_ROOT ${PROJECT_ROOT} DIRECTORY)
# Construct potential paths
set(FILEPATH_CURRENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}")
set(FILEPATH_PROJECT_ROOT "${PROJECT_ROOT}/${FILENAME}")
# Include file finding utility script
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/find_gpu.cmake")
# Check if the file exists in the current directory
find_project_root(${CMAKE_CURRENT_SOURCE_DIR} ${FILENAME} TARGET_FILE_PATH)
if("${TARGET_FILE_PATH}" STREQUAL "")
find_project_root(${FILEPATH_CURRENT_DIR} ${FILENAME} TARGET_FILE_PATH)
if("${TARGET_FILE_PATH}" STREQUAL "")
message(
FATAL_ERROR
"File ${FILENAME} not found in either ${CMAKE_CURRENT_SOURCE_DIR} or ${CMAKE_CURRENT_SOURCE_DIR}/../../"
)
endif()
endif()
include(FetchContent)
set(FETCHCONTENT_BASE_DIR "${TARGET_FILE_PATH}/third_party/fetchcontent")
set(WEBGPU_DIST_LOCAL_PATH
"${TARGET_FILE_PATH}/third_party/local/WebGPU-distribution")
if(USE_LOCAL_LIBS)
set(WEBGPU_DIST_GIT_REPO ${WEBGPU_DIST_LOCAL_PATH})
message(STATUS "Using local WebGPU distribution: ${WEBGPU_DIST_LOCAL_PATH}")
else()
set(WEBGPU_DIST_GIT_REPO
"https://github.com/eliemichel/WebGPU-distribution")
endif()
option(WEBGPU_TAG "WebGPU distribution tag to use")
if(NOT WEBGPU_TAG)
set(WEBGPU_TAG "dawn")
endif()
message(STATUS "Using WebGPU distribution tag: ${WEBGPU_TAG}")
if(WEBGPU_TAG STREQUAL "dawn")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWEBGPU_BACKEND_DAWN")
# use specific commit set(WEBGPU_TAG
# "1025b977e1927b6d0327e67352f90feb4bcf8274") set(WEBGPU_TAG
# "acf972b7b909f52e183bdae3971b93bb13d4a29e")
# add_compile_options(-UABSL_INTERNAL_AT_LEAST_CXX20) set(CMAKE_CXX_FLAGS
# "${CMAKE_CXX_FLAGS} -UABSL_INTERNAL_AT_LEAST_CXX20")
message(STATUS "Using Dawn backend")
endif()
FetchContent_Declare(
webgpu
GIT_REPOSITORY ${WEBGPU_DIST_GIT_REPO}
GIT_TAG ${WEBGPU_TAG}
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(webgpu)