diff --git a/CMakeLists.txt b/CMakeLists.txt index 194fc360c10..26f189269d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -786,9 +786,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "cmake") if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s FORCE_FILESYSTEM=1 -s INITIAL_MEMORY=256MB -s EXIT_RUNTIME=1") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s FORCE_FILESYSTEM=1 -s INITIAL_MEMORY=256MB -s EXIT_RUNTIME=1") - set(CMAKE_EXECUTBLE_LINKER_FLAGS "${CMAKE_EXECUTBLE_LINKER_FLAGS} -s FORCE_FILESYSTEM=1 -s INITIAL_MEMORY=256MB -s EXIT_RUNTIME=1") + set(CMAKE_EXECUTBLE_LINKER_FLAGS "${CMAKE_EXECUTBLE_LINKER_FLAGS} -s FORCE_FILESYSTEM=1 -s INITIAL_MEMORY=256MB -s EXIT_RUNTIME=1 --closure 1") if(NCNN_OPENMP AND NCNN_SIMPLEOMP) # TODO better flags for emscripten @@ -871,6 +869,12 @@ if(NCNN_VULKAN) endif() endif() endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --use-port=emdawnwebgpu") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --use-port=emdawnwebgpu") + set(CMAKE_EXECUTBLE_LINKER_FLAGS "${CMAKE_EXECUTBLE_LINKER_FLAGS} --use-port=emdawnwebgpu") + endif() endif() add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 614c3b8f31f..592de53397f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,6 +42,7 @@ set(ncnn_SRCS simplestl.cpp simplemath.cpp simplevk.cpp + webgpu.cpp ) if(ANDROID) @@ -309,7 +310,9 @@ if(NCNN_VULKAN) target_link_libraries(ncnn PRIVATE "-Wl,-weak_library,${SIMPLEVK_TBD}") endif() endif() - target_link_libraries(ncnn PRIVATE ${CMAKE_DL_LIBS}) + if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + target_link_libraries(ncnn PRIVATE ${CMAKE_DL_LIBS}) + endif() else() find_package(Vulkan QUIET) if(NOT Vulkan_FOUND) diff --git a/src/webgpu.cpp b/src/webgpu.cpp new file mode 100644 index 00000000000..e0b03b52616 --- /dev/null +++ b/src/webgpu.cpp @@ -0,0 +1,11 @@ +#include "gpu.h" + +#if defined(__EMSCRIPTEN__) && NCNN_VULKAN + +#include + +namespace ncnn { + +}; + +#endif // defined(__EMSCRIPTEN__) && NCNN_VULKAN