cmake_minimum_required(VERSION 3.20)
project(MyWasmProject)

# Emscripten を使う
#set(CMAKE_C_COMPILER emcc)
#set(CMAKE_CXX_COMPILER em++)

# 出力形式（ESM + MODULARIZE）
set(CMAKE_EXECUTABLE_SUFFIX ".js")

#include_directories(
#    F:/VSCode/emsdk/upstream/emscripten/system/include
#)

file(GLOB_RECURSE SRC_FILES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.c"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.h"
)

add_executable(app ${SRC_FILES})

# Emscripten のオプション
set_target_properties(app PROPERTIES
    LINK_FLAGS "-O3 -s WASM=1 -s MODULARIZE=1 -s EXPORT_ES6=1"
)
target_compile_options(app PRIVATE
    "-O3"
    "-g"
    "-gsource-map"
    "-msimd128"
)
target_link_options(app PRIVATE
    #"-sVERBOSE=1"
    #"--no-progress"
    "-sASSERTIONS"
    "-sINITIAL_MEMORY=16777216"
    "-sALLOW_MEMORY_GROWTH=0"
    "-sSHARED_MEMORY=1"
    "-sIMPORTED_MEMORY=1"
    "-sERROR_ON_UNDEFINED_SYMBOLS=0"
    "-sUSE_PTHREADS=1"
    "-sEXPORTED_FUNCTIONS=['_malloc','_free']"
    "-sEXPORTED_RUNTIME_METHODS=['cwrap','ccall','UTF8ToString','HEAPU8', 'wasmMemory' ]"
    "-gsource-map"
    #"--source-map-base=http://localhost:8000/wasm/"
    "--source-map-base=./"
)

#emcc process.cpp -o process.js \
#  -s SHARED_MEMORY=1 \
#  -s ALLOW_MEMORY_GROWTH=0 \
#  -s INITIAL_MEMORY=67108864 \ # 必要なメモリ量を指定（例: 64MB）
#  -s EXPORTED_RUNTIME_METHODS='["wasmMemory"]' \
#  -s EXPORTED_FUNCTIONS='["_get_bitmap_ptr", "_update"]'
