cmake_minimum_required(VERSION 3.20) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) set(EMSCRIPTEN_ROOT $ENV{EMSDK}) if(NOT EMSCRIPTEN_ROOT) set(EMSCRIPTEN_ROOT /usr/lib/emscripten) endif() set(EMSCRIPTEN_ROOT "${EMSCRIPTEN_ROOT}" CACHE PATH "Emscripten SDK path") set(CMAKE_TOOLCHAIN_FILE "${EMSCRIPTEN_ROOT}/cmake/Modules/Platform/Emscripten.cmake" CACHE FILEPATH "Emscripten toolchain file") project(ecgsyn.js) option(BUILD_SHARED_LIBS "Build shared libraries" OFF) set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 20) set(PFFFT_USE_TYPE_FLOAT OFF CACHE BOOL "activate pffft float" FORCE) include_directories(BEFORE SYSTEM compat) add_compile_options(-flto -msimd128 -mavx) add_link_options(-flto) add_subdirectory(mini-odeint EXCLUDE_FROM_ALL) add_subdirectory(pffft EXCLUDE_FROM_ALL) add_executable(ecgsyn ecgsyn.cpp) target_compile_options(ecgsyn PRIVATE) target_link_options( ecgsyn PRIVATE -flto -sEXPORTED_FUNCTIONS=_ecgsyn --no-entry -sSTRICT -sNO_ASSERTIONS -sNO_FILESYSTEM -sMALLOC=emmalloc) target_link_libraries(ecgsyn PRIVATE PFFFT) set_target_properties(ecgsyn PROPERTIES SUFFIX ".wasm")