diff --git a/CMakeLists.txt b/CMakeLists.txt index d40c7f4..ec8931f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,8 +55,8 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") find_package(SDL2 REQUIRED) - set(ENABLE_WINDOWS ON) - set(ENABLE_VULKAN ON) + set(ENABLE_WINDOWS TRUE) + set(ENABLE_VULKAN TRUE) endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore") @@ -65,6 +65,13 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore") set(ENABLE_UWP TRUE) endif() +if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") + message("Web build detected!") + + set(ENABLE_WEB TRUE) + set(ENABLE_WEBGPU TRUE) +endif() + set(CROSS_LIBS spirv-cross-core spirv-cross-glsl diff --git a/cmake/BuildShaders.cmake b/cmake/BuildShaders.cmake index fb5ba15..a243329 100755 --- a/cmake/BuildShaders.cmake +++ b/cmake/BuildShaders.cmake @@ -35,7 +35,7 @@ endfunction() # add shaders to target function(add_shaders) - if(NOT ENABLE_IOS AND NOT ENABLE_TVOS) + if(NOT ENABLE_IOS AND NOT ENABLE_TVOS AND NOT ENABLE_WEB) cmake_parse_arguments(ARGS "" "TARGET" "SHADERS" ${ARGN}) foreach(SHADER_FILENAME ${ARGS_SHADERS}) diff --git a/platforms/CMakeLists.txt b/platforms/CMakeLists.txt index 31b1272..0232765 100755 --- a/platforms/CMakeLists.txt +++ b/platforms/CMakeLists.txt @@ -16,4 +16,8 @@ endif() if(ENABLE_TVOS) add_subdirectory(tvos) +endif() + +if(ENABLE_WEB) + add_subdirectory(web) endif() \ No newline at end of file diff --git a/platforms/web/CMakeLists.txt b/platforms/web/CMakeLists.txt new file mode 100644 index 0000000..f18c40b --- /dev/null +++ b/platforms/web/CMakeLists.txt @@ -0,0 +1,34 @@ +include(../../cmake/AddPlatformExecutable.cmake) + +add_platform( + MAIN_FILE + main.cpp.in + LINK_LIBRARIES + Core +) + +function(add_platform_commands target) + set_target_properties( + ${target} + PROPERTIES + SUFFIX ".html" + ) + + set(DUMMY_NAME ${target}-CopyShaders) + + add_custom_target(${DUMMY_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/${target}-dummy) + + if(ENABLE_MACOS) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${target}-dummy + COMMAND ${CMAKE_COMMAND} -E make_directory $/../Resources/shaders + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $/../Resources/shaders + ) + else() + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${target}-dummy + COMMAND ${CMAKE_COMMAND} -E make_directory $/shaders + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $/shaders + ) + endif() + + add_dependencies(${target} ${DUMMY_NAME}) +endfunction() diff --git a/platforms/web/main.cpp.in b/platforms/web/main.cpp.in new file mode 100644 index 0000000..43ada95 --- /dev/null +++ b/platforms/web/main.cpp.in @@ -0,0 +1,7 @@ +#include + +int main(int argc, char* argv[]) { + printf("Hello, world!\n"); + + return 0; +} \ No newline at end of file