72 lines
1.9 KiB
CMake
72 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
|
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
|
|
|
project(ecgsyn.js)
|
|
|
|
option(BUILD_WITH_EMSCRIPTEN "Build with Emscripten" ON)
|
|
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
|
|
|
if(BUILD_WITH_EMSCRIPTEN)
|
|
|
|
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")
|
|
|
|
set(BUILD_SHARED_LIBS OFF FORCE)
|
|
endif(BUILD_WITH_EMSCRIPTEN)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
set(PFFFT_USE_TYPE_FLOAT
|
|
OFF
|
|
CACHE BOOL "activate pffft float" FORCE)
|
|
|
|
include(CheckIPOSupported)
|
|
check_ipo_supported(RESULT ipo_supported)
|
|
if(ipo_supported)
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
|
|
endif()
|
|
|
|
if(BUILD_WITH_EMSCRIPTEN)
|
|
include_directories(BEFORE SYSTEM compat)
|
|
|
|
add_compile_options(-msimd128 -msse -mavx -fwasm-exceptions)
|
|
set(ecgsyn_link_options # -flto
|
|
-fwasm-exceptions
|
|
-sEXPORTED_FUNCTIONS=_rr_gen_new,_rr_gen_new_series,_destroy_obj,_ecgsyn,_realloc,_free
|
|
--no-entry
|
|
-sSTRICT
|
|
-sNO_ASSERTIONS
|
|
-sNO_FILESYSTEM
|
|
-sMALLOC=emmalloc)
|
|
|
|
else()
|
|
set(TARGET_C_ARCH haswell)
|
|
set(TARGET_CXX_ARCH haswell)
|
|
|
|
set(ecgsyn_defs ECGSYN_HOST_BUILD)
|
|
endif()
|
|
|
|
add_subdirectory(mini-odeint EXCLUDE_FROM_ALL)
|
|
add_subdirectory(pffft EXCLUDE_FROM_ALL)
|
|
|
|
add_executable(ecgsyn ecgsyn.cpp)
|
|
target_compile_definitions(ecgsyn PRIVATE PFFFT_ENABLE_DOUBLE ${ecgsyn_defs})
|
|
target_link_options(ecgsyn PRIVATE ${ecgsyn_link_options})
|
|
target_link_libraries(ecgsyn PRIVATE PFFFT mini-odeint)
|
|
|
|
if(BUILD_WITH_EMSCRIPTEN)
|
|
set_target_properties(ecgsyn PROPERTIES SUFFIX ".wasm")
|
|
endif(BUILD_WITH_EMSCRIPTEN)
|