You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

136 lines
3.1 KiB

cmake_minimum_required(VERSION 2.8)
set(APP_NAME "webgpu" CACHE STRING "Project Name")
project(${APP_NAME}_wasm)
message(${CMAKE_BUILD_TYPE})
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
endif()
set(ENGINE_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../../..)
include(${ENGINE_ROOT_DIR}/cmake/predefine.cmake)
include (${ENGINE_ROOT_DIR}/external/CMakeLists.txt)
add_definitions(-DBOOST_NO_CXX98_FUNCTION_BASE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wno-nonportable-include-path -fno-exceptions")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -D_DEBUG=1 -Wno-unused -O0 -std=c++17")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG=1 -O3 -std=c++17")
message(${CMAKE_BUILD_TYPE})
AUX_SOURCE_DIRECTORY(
./states
WGPU_STATES_SRC
)
AUX_SOURCE_DIRECTORY(
.
WGPU_IMPL_SRC
)
set(WGPU_SRC
${WGPU_STATES_SRC}
${WGPU_IMPL_SRC}
)
AUX_SOURCE_DIRECTORY(
../../../cocos/base/threading
COCOS_BASE_THREAD
)
list(FILTER COCOS_BASE_THREAD EXCLUDE REGEX "[\\w+]*.mm")
AUX_SOURCE_DIRECTORY(
../../../cocos/base
COCOS_BASE
)
list(FILTER COCOS_BASE EXCLUDE REGEX "ZipUtils.*")
AUX_SOURCE_DIRECTORY(
../../../cocos/renderer/gfx-base
GFX_BASE
)
list(FILTER GFX_BASE EXCLUDE REGEX "[\\w+]*SPIRVUtils.cpp")
AUX_SOURCE_DIRECTORY(
../../../cocos/renderer/gfx-base/states
GFX_BASE_STATES
)
AUX_SOURCE_DIRECTORY(
../../../cocos/renderer/gfx-agent
GFX_AGENT
)
AUX_SOURCE_DIRECTORY(
../../../cocos/renderer/gfx-validator
GFX_VALIDATOR
)
AUX_SOURCE_DIRECTORY(
../../../cocos/renderer/gfx-empty
GFX_EMPTY
)
# AUX_SOURCE_DIRECTORY(
# ../../../cocos/renderer/pipeline
# PIPELINE
# )
set(RENDERER
../../../cocos/renderer/GFXDeviceManager.h
${GFX_BASE}
${GFX_AGENT}
${GFX_VALIDATOR}
${GFX_EMPTY}
${GFX_BASE_STATES}
#${PIPELINE}
)
set(NATIVE_SRC
${COCOS_BASE}
${COCOS_BASE_THREAD}
${RENDERER}
${WGPU_SRC}
)
AUX_SOURCE_DIRECTORY(
./
WASM_EXPORTS
)
add_executable(${APP_NAME}_wasm ${WASM_EXPORTS} ${NATIVE_SRC})
target_include_directories(
${APP_NAME}_wasm PRIVATE "${CMAKE_CURRENT_LIST_DIR}/include"
${CC_EXTERNAL_INCLUDES}
${CMAKE_CURRENT_LIST_DIR}
${ENGINE_ROOT_DIR}
${ENGINE_ROOT_DIR}/cocos
${ENGINE_ROOT_DIR}/cocos/base
${ENGINE_ROOT_DIR}/cocos/renderer
${ENGINE_ROOT_DIR}/cocos/platform
${ENGINE_ROOT_DIR}/cocos/renderer/core
${CC_EXTERNAL_PRIVATE_INCLUDES}
)
# message(${WGPU_EMS_EXTERNAL_LIBS})
target_link_libraries(
${APP_NAME}_wasm PRIVATE PUBLIC
# ${WGPU_EMS_EXTERNAL_LIBS}
)
set(EMS_LINK_FLAGS
"-flto --bind --no-entry -O3 -s USE_ES6_IMPORT_META=0 -s EXPORT_ES6=1 -s MODULARIZE=1 -s EXPORT_NAME='wasmDevice' -s ENVIRONMENT=web -s WASM=1 -s USE_WEBGPU=1 -s NO_EXIT_RUNTIME=1 -s LLD_REPORT_UNDEFINED -s ALLOW_MEMORY_GROWTH=1"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
string(APPEND EMS_LINK_FLAGS " -g -s ASSERTIONS=2")
endif()
set_target_properties(${APP_NAME}_wasm PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ENGINE_ROOT_DIR}/external/emscripten/webgpu)
set_target_properties(${APP_NAME}_wasm PROPERTIES CXX_STANDARD 17 LINK_FLAGS ${EMS_LINK_FLAGS})