Update
This commit is contained in:
@@ -1,23 +1,30 @@
|
||||
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")
|
||||
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)
|
||||
|
||||
@@ -25,24 +32,40 @@ 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)
|
||||
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_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")
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user