@@ -9,11 +9,9 @@ set(FILEPATH_PROJECT_ROOT "${PROJECT_ROOT}/${FILENAME}")
9
9
include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/find_gpu.cmake" )
10
10
11
11
# Check if the file exists in the current directory
12
- find_project_root(${CMAKE_CURRENT_SOURCE_DIR} ${FILEPATH_CURRENT_DIR}
13
- ${TARGET_FILE_PATH} )
12
+ find_project_root(${CMAKE_CURRENT_SOURCE_DIR} ${FILENAME} TARGET_FILE_PATH)
14
13
if ("${TARGET_FILE_PATH} " STREQUAL "" )
15
- find_project_root(${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_ROOT}
16
- ${TARGET_FILE_PATH} )
14
+ find_project_root(${FILEPATH_CURRENT_DIR} ${FILENAME} TARGET_FILE_PATH)
17
15
if ("${TARGET_FILE_PATH} " STREQUAL "" )
18
16
message (
19
17
FATAL_ERROR
@@ -45,49 +43,27 @@ target_include_directories(gpu INTERFACE ${TARGET_FILE_PATH})
45
43
# Add headers webgpu.h
46
44
target_include_directories (wgpu
47
45
INTERFACE ${TARGET_FILE_PATH} /third_party/headers)
48
- # FetchContent_Declare( DAWN_EXT GIT_REPOSITORY
49
- # "https://dawn.googlesource.com/dawn" GIT_TAG "main" INSTALL_DIR
50
- # "${TARGET_FILE_PATH}/third_party/dawn" CONFIGURE_COMMAND "python3
51
- # tools/fetch_dawn_dependencies.py" CMAKE_ARGS "-DDAWN_ENABLE_INSTALL=ON
52
- # -DDAWN_BUILD_MONOLITHIC_LIBRARY=ON -DCMAKE_BUILD_TYPE=Debug
53
- # -DBUILD_SAMPLES=OFF" )
46
+ include (ExternalProject)
54
47
55
- # FetchContent_MakeAvailable(DAWN_EXT )
48
+ set (DAWN_EXT_PREFIX " ${TARGET_FILE_PATH} /third_party/local/dawn" )
56
49
57
- if (WIN32 )
58
- set (DLL_PATH
59
- "${TARGET_FILE_PATH} /third_party/lib/libdawn_${ARCH} _${BUILD_TYPE} .dll" )
60
- if (EXISTS ${DLL_PATH} )
61
- file (COPY ${DLL_PATH} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
62
- target_link_libraries (webgpulib INTERFACE ${DLL_PATH} )
63
- else ()
64
- message (FATAL_ERROR "libdawn dll not found at: ${DLL_PATH} " )
65
- endif ()
66
- else ()
67
- find_library (LIBDAWN dawn PATHS "${TARGET_FILE_PATH} /third_party/lib" )
68
- if (LIBDAWN)
69
- message (STATUS "Found libdawn: ${LIBDAWN} " ) # Link against libdawn
70
- target_link_libraries (webgpulib INTERFACE ${LIBDAWN} )
71
- # if not found, try download from release else()
72
- message ("libdawn not found, try downloading from the release" )
73
- if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
74
- set (libdawn_ext "dylib" )
75
- elseif (UNIX )
76
- set (libdawn_ext "so" )
77
- endif ()
78
- FetchContent_Declare(
79
- libdawn
80
- URL https://github.com/austinvhuang/dawn-artifacts/releases/download/prerelease/libdawn.${libdawn_ext}
81
- DOWNLOAD_NO_EXTRACT TRUE
82
- SOURCE_DIR "${TARGET_FILE_PATH} /third_party/lib" )
83
- FetchContent_MakeAvailable(libdawn)
84
- find_library (LIBDAWN dawn REQUIRED
85
- PATHS "${TARGET_FILE_PATH} /third_party/lib" )
86
- if (LIBDAWN)
87
- message (STATUS "Found libdawn: ${LIBDAWN} " ) # Link against libdawn
88
- target_link_libraries (webgpulib INTERFACE ${LIBDAWN} )
89
- else ()
90
- message (FATAL_ERROR "libdawn not found" )
91
- endif ()
92
- endif ()
93
- endif ()
50
+ ExternalProject_Add(
51
+ dawn_project
52
+ PREFIX ${DAWN_EXT_PREFIX}
53
+ GIT_REPOSITORY "https://dawn.googlesource.com/dawn"
54
+ GIT_TAG "main"
55
+ SOURCE_DIR "${DAWN_EXT_PREFIX} /source"
56
+ BINARY_DIR "${DAWN_EXT_PREFIX} /build"
57
+ INSTALL_DIR "${DAWN_EXT_PREFIX} /install"
58
+ GIT_SUBMODULES ""
59
+ # setting cmake args doesn't work and I don't know why
60
+ CONFIGURE_COMMAND
61
+ ${CMAKE_COMMAND} -S ${DAWN_EXT_PREFIX} /source -B
62
+ ${DAWN_EXT_PREFIX} /build -DDAWN_FETCH_DEPENDENCIES=ON
63
+ -DDAWN_ENABLE_INSTALL=ON -DDAWN_BUILD_MONOLITHIC_LIBRARY=ON
64
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -G ${CMAKE_GENERATOR}
65
+ INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix
66
+ ${DAWN_EXT_PREFIX} /install
67
+ LOG_INSTALL ON )
68
+ find_library (LIBDAWN dawn PATHS "${DAWN_EXT_PREFIX} /install/lib" )
69
+ target_link_libraries (webgpulib INTERFACE ${LIBDAWN} )
0 commit comments