-
Notifications
You must be signed in to change notification settings - Fork 36
/
CMakeLists.txt
35 lines (26 loc) · 1.5 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 2.9)
project(hello-webgpu)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wno-nonportable-include-path -fno-exceptions -fno-rtti")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -D_DEBUG=1 -Wno-unused -O0")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g0 -DNDEBUG=1 -flto -O3")
file(GLOB sources src/*.cpp)
file(GLOB_RECURSE headers src/*.h)
if (EMSCRIPTEN)
file(GLOB_RECURSE platform_sources src/ems/*.cpp)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
# TODO: all the debug flags are link only
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -s DEMANGLE_SUPPORT=1 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s DISABLE_EXCEPTION_CATCHING=1")
# --closure 1
set(CMAKE_EXE_LINKER_FLAGS "-s ASSERTIONS=0 -s WASM=1 -s USE_WEBGPU=1 -s NO_EXIT_RUNTIME=1 -s STRICT=1 --shell-file ${CMAKE_CURRENT_LIST_DIR}/src/ems/shell.html")
# -s EVAL_CTORS=1
# Linker flags to optimize for smallest output code size
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ENVIRONMENT=web -s TEXTDECODER=2 -s ABORTING_MALLOC=0 -s ALLOW_MEMORY_GROWTH=0 -s MALLOC=emmalloc -s NO_FILESYSTEM=1 --output_eol=linux")
# -s MINIMAL_RUNTIME=2
elseif (WIN32)
file(GLOB_RECURSE platform_sources src/win/*)
elseif (APPLE)
file(GLOB_RECURSE platform_sources src/mac/*)
endif()
add_executable(hello-webgpu ${sources} ${platform_sources} ${headers})
target_include_directories(hello-webgpu PRIVATE "${CMAKE_CURRENT_LIST_DIR}/inc")