@@ -9,11 +9,9 @@ set(FILEPATH_PROJECT_ROOT "${PROJECT_ROOT}/${FILENAME}")
99include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/find_gpu.cmake" )
1010
1111# 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 )
1413if ("${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 )
1715 if ("${TARGET_FILE_PATH} " STREQUAL "" )
1816 message (
1917 FATAL_ERROR
@@ -45,49 +43,27 @@ target_include_directories(gpu INTERFACE ${TARGET_FILE_PATH})
4543# Add headers webgpu.h
4644target_include_directories (wgpu
4745 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 )
5447
55- # FetchContent_MakeAvailable(DAWN_EXT )
48+ set (DAWN_EXT_PREFIX " ${TARGET_FILE_PATH} /third_party/local/dawn" )
5649
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