-
-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
- Loading branch information
1 parent
b475309
commit f9df6bf
Showing
4 changed files
with
188 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
# Building for desktop (WebGPU-native) with Dawn: | ||
# | ||
# git clone https://github.com/google/dawn dawn | ||
# cmake -B build -DIMGUI_DAWN_DIR=dawn | ||
# cmake --build build | ||
# | ||
# The resulting binary will be found at one of the following locations: | ||
# * build/Debug/example_emscripten_wgpu[.exe] | ||
# * build/example_emscripten_wgpu[.exe] | ||
|
||
# Building for Emscripten: | ||
# | ||
# 1. Install Emscripten SDK following the instructions: https://emscripten.org/docs/getting_started/downloads.html | ||
# 2. Install Ninja build system | ||
# 3. emcmake cmake -G Ninja -B build | ||
# 3. cmake --build build | ||
# 4. emrun build/index.html | ||
|
||
cmake_minimum_required(VERSION 3.10.2) | ||
project(imgui_example_emscripten_wgpu C CXX) | ||
|
||
if(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE) | ||
endif() | ||
|
||
set(CMAKE_CXX_STANDARD 17) # Dawn requires C++17 | ||
|
||
# Dear ImGui | ||
set(IMGUI_DIR ../../) | ||
|
||
# Libraries | ||
if(EMSCRIPTEN) | ||
set(LIBRARIES glfw) | ||
add_compile_options(-sDISABLE_EXCEPTION_CATCHING=1 -DIMGUI_DISABLE_FILE_FUNCTIONS=1) | ||
else() | ||
# Dawn wgpu desktop | ||
set(DAWN_FETCH_DEPENDENCIES ON) | ||
set(IMGUI_DAWN_DIR CACHE PATH "Path to Dawn repository") | ||
if (NOT IMGUI_DAWN_DIR) | ||
message(FATAL_ERROR "Please specify the Dawn repository by setting IMGUI_DAWN_DIR") | ||
endif() | ||
|
||
option(DAWN_FETCH_DEPENDENCIES "Use fetch_dawn_dependencies.py as an alternative to using depot_tools" ON) | ||
|
||
# Dawn builds many things by default - disable things we don't need | ||
option(DAWN_BUILD_SAMPLES "Enables building Dawn's samples" OFF) | ||
option(TINT_BUILD_CMD_TOOLS "Build the Tint command line tools" OFF) | ||
option(TINT_BUILD_DOCS "Build documentation" OFF) | ||
option(TINT_BUILD_TESTS "Build tests" OFF) | ||
if (NOT APPLE) | ||
option(TINT_BUILD_MSL_WRITER "Build the MSL output writer" OFF) | ||
endif() | ||
if(WIN32) | ||
option(TINT_BUILD_SPV_READER "Build the SPIR-V input reader" OFF) | ||
option(TINT_BUILD_WGSL_READER "Build the WGSL input reader" ON) | ||
option(TINT_BUILD_GLSL_WRITER "Build the GLSL output writer" OFF) | ||
option(TINT_BUILD_GLSL_VALIDATOR "Build the GLSL output validator" OFF) | ||
option(TINT_BUILD_SPV_WRITER "Build the SPIR-V output writer" OFF) | ||
option(TINT_BUILD_WGSL_WRITER "Build the WGSL output writer" ON) | ||
endif() | ||
|
||
add_subdirectory("${IMGUI_DAWN_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/dawn" EXCLUDE_FROM_ALL) | ||
|
||
set(LIBRARIES webgpu_dawn webgpu_cpp webgpu_glfw glfw) | ||
endif() | ||
|
||
add_executable(example_emscripten_wgpu | ||
main.cpp | ||
# backend files | ||
${IMGUI_DIR}/backends/imgui_impl_glfw.cpp | ||
${IMGUI_DIR}/backends/imgui_impl_wgpu.cpp | ||
# Dear ImGui files | ||
${IMGUI_DIR}/imgui.cpp | ||
${IMGUI_DIR}/imgui_draw.cpp | ||
${IMGUI_DIR}/imgui_demo.cpp | ||
${IMGUI_DIR}/imgui_tables.cpp | ||
${IMGUI_DIR}/imgui_widgets.cpp | ||
) | ||
target_include_directories(example_emscripten_wgpu PUBLIC | ||
${IMGUI_DIR} | ||
${IMGUI_DIR}/backends | ||
) | ||
|
||
target_link_libraries(example_emscripten_wgpu PUBLIC ${LIBRARIES}) | ||
|
||
# Emscripten settings | ||
if(EMSCRIPTEN) | ||
target_link_options(example_emscripten_wgpu PRIVATE | ||
"-sUSE_WEBGPU=1" | ||
"-sUSE_GLFW=3" | ||
"-sWASM=1" | ||
"-sALLOW_MEMORY_GROWTH=1" | ||
"-sNO_EXIT_RUNTIME=0" | ||
"-sASSERTIONS=1" | ||
"-sDISABLE_EXCEPTION_CATCHING=1" | ||
"-sNO_FILESYSTEM=1" | ||
) | ||
set_target_properties(example_emscripten_wgpu PROPERTIES OUTPUT_NAME "index") | ||
# copy our custom index.html to build directory | ||
add_custom_command(TARGET example_emscripten_wgpu POST_BUILD | ||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/web/index.html" $<TARGET_FILE_DIR:example_emscripten_wgpu> | ||
) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters