Files
ecgsyn.js/CMakeLists.txt
2024-11-09 21:57:08 -06:00

49 lines
1.1 KiB
CMake

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")