49 lines
1.1 KiB
CMake
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")
|