cmake_minimum_required(VERSION 3.25)
project(warblade_web C)
set(CMAKE_C_STANDARD 17)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_TEST_LIBRARY OFF CACHE BOOL "" FORCE)
set(SDL_TESTS OFF CACHE BOOL "" FORCE)
set(SDL_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(../deps/SDL3-3.4.18 SDL)
set(SDLIMAGE_SAMPLES OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_TESTS OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_AVIF OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_TIF OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_WEBP OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_PNG_LIBPNG OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_JPG_SAVE OFF CACHE BOOL "" FORCE)
set(SDLIMAGE_PNG_SAVE OFF CACHE BOOL "" FORCE)
add_subdirectory(../deps/SDL3_image-3.4.8 SDL_image)
set(SDLMIXER_VENDORED ON CACHE BOOL "" FORCE)
set(SDLMIXER_DEPS_SHARED OFF CACHE BOOL "" FORCE)
set(SDLMIXER_EXAMPLES OFF CACHE BOOL "" FORCE)
set(SDLMIXER_TESTS OFF CACHE BOOL "" FORCE)
foreach(format FLAC GME MIDI OPUS VORBIS_STB VORBIS_VORBISFILE VORBIS_TREMOR WAVPACK)
  set(SDLMIXER_${format} OFF CACHE BOOL "" FORCE)
endforeach()
set(SDLMIXER_MP3_MPG123 OFF CACHE BOOL "" FORCE)
set(SDLMIXER_MOD_XMP_SHARED OFF CACHE BOOL "" FORCE)
add_subdirectory(../deps/SDL3_mixer-3.2.4 SDL_mixer)
file(GLOB_RECURSE GAME_SOURCES CONFIGURE_DEPENDS src/*.c)
add_executable(warblade ${GAME_SOURCES} web_main.c)
set_target_properties(warblade PROPERTIES SUFFIX ".html")
target_include_directories(warblade PRIVATE include)
target_compile_options(warblade PRIVATE -fms-extensions -Wno-ignored-pragmas -Wno-microsoft -sUSE_ZLIB)
target_link_libraries(warblade PRIVATE SDL3::SDL3 SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer)
target_link_options(warblade PRIVATE
  -sUSE_ZLIB -sASYNCIFY -sASYNCIFY_STACK_SIZE=262144 -sALLOW_MEMORY_GROWTH
  -sINITIAL_MEMORY=134217728 -sSTACK_SIZE=2097152 -sFORCE_FILESYSTEM
  "-sEXPORTED_FUNCTIONS=['_main','_WebKey','_WebRelease','_WebMute','_WebSave']"
  "-sEXPORTED_RUNTIME_METHODS=['FS','IDBFS']" -lidbfs.js
  --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/../web-assets/data@/data"
  --shell-file "${CMAKE_CURRENT_SOURCE_DIR}/../web-shell.html")
