103 lines
6.6 KiB
CMake
103 lines
6.6 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(linuxcnc_web_wasm_core LANGUAGES C CXX)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
add_library(sim_core STATIC src/sim_api.c src/sim_protocol.c src/sim_event.c src/sim_hal.c src/sim_posemath.c src/sim_interpreter.c src/sim_motion_queue.c src/sim_kinematics.c)
|
|
target_include_directories(sim_core PUBLIC include)
|
|
target_compile_definitions(sim_core PRIVATE SIM_API_BUILD=1)
|
|
|
|
add_library(sim_posemath STATIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath/_posemath.c
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath/gomath.c
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath/sincos.c
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath/posemath.cc
|
|
)
|
|
target_include_directories(sim_posemath PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/rtapi
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath
|
|
)
|
|
target_compile_definitions(sim_posemath PRIVATE ULAPI)
|
|
target_compile_options(sim_posemath PRIVATE -ffp-contract=off -fno-fast-math)
|
|
target_link_libraries(sim_core PUBLIC sim_posemath)
|
|
target_compile_options(sim_core PRIVATE -ffp-contract=off -fno-fast-math)
|
|
|
|
if(NOT EMSCRIPTEN)
|
|
add_executable(sim_api_test tests/sim_api_test.c)
|
|
target_link_libraries(sim_api_test PRIVATE sim_core)
|
|
target_include_directories(sim_api_test PRIVATE include)
|
|
|
|
enable_testing()
|
|
add_test(NAME sim_api_test COMMAND sim_api_test)
|
|
|
|
add_executable(sim_protocol_test tests/sim_protocol_test.c)
|
|
target_link_libraries(sim_protocol_test PRIVATE sim_core)
|
|
target_include_directories(sim_protocol_test PRIVATE include)
|
|
add_test(NAME sim_protocol_test COMMAND sim_protocol_test)
|
|
|
|
add_executable(sim_event_test tests/sim_event_test.c)
|
|
target_link_libraries(sim_event_test PRIVATE sim_core)
|
|
target_include_directories(sim_event_test PRIVATE include)
|
|
add_test(NAME sim_event_test COMMAND sim_event_test)
|
|
|
|
add_executable(sim_hal_test tests/sim_hal_test.c tests/sim_hal_test_main.c)
|
|
target_link_libraries(sim_hal_test PRIVATE sim_core)
|
|
target_include_directories(sim_hal_test PRIVATE include)
|
|
target_compile_options(sim_hal_test PRIVATE -UNDEBUG)
|
|
add_test(NAME sim_hal_test COMMAND sim_hal_test)
|
|
|
|
add_executable(sim_posemath_test tests/sim_posemath_test.c)
|
|
target_link_libraries(sim_posemath_test PRIVATE sim_core)
|
|
target_include_directories(sim_posemath_test PRIVATE include)
|
|
add_test(NAME sim_posemath_test COMMAND sim_posemath_test)
|
|
|
|
add_executable(sim_interpreter_test tests/sim_interpreter_test.c)
|
|
target_link_libraries(sim_interpreter_test PRIVATE sim_core)
|
|
target_include_directories(sim_interpreter_test PRIVATE include)
|
|
add_test(NAME sim_interpreter_test COMMAND sim_interpreter_test)
|
|
|
|
add_executable(sim_motion_queue_test tests/sim_motion_queue_test.c)
|
|
target_link_libraries(sim_motion_queue_test PRIVATE sim_core)
|
|
target_include_directories(sim_motion_queue_test PRIVATE include)
|
|
add_test(NAME sim_motion_queue_test COMMAND sim_motion_queue_test)
|
|
|
|
add_executable(sim_kinematics_test tests/sim_kinematics_test.c tests/sim_kinematics_test_main.c)
|
|
target_link_libraries(sim_kinematics_test PRIVATE sim_core)
|
|
target_include_directories(sim_kinematics_test PRIVATE include)
|
|
target_compile_options(sim_kinematics_test PRIVATE -UNDEBUG)
|
|
add_test(NAME sim_kinematics_test COMMAND sim_kinematics_test)
|
|
endif()
|
|
|
|
if(EMSCRIPTEN)
|
|
add_executable(sim_hal_wasm_test tests/sim_hal_test.c tests/sim_hal_test_main.c)
|
|
target_link_libraries(sim_hal_wasm_test PRIVATE sim_core)
|
|
target_include_directories(sim_hal_wasm_test PRIVATE include)
|
|
target_compile_options(sim_hal_wasm_test PRIVATE -UNDEBUG)
|
|
target_link_options(sim_hal_wasm_test PRIVATE -sSINGLE_FILE=1)
|
|
|
|
add_executable(sim_kinematics_wasm_test tests/sim_kinematics_test.c tests/sim_kinematics_test_main.c)
|
|
target_link_libraries(sim_kinematics_wasm_test PRIVATE sim_core)
|
|
target_include_directories(sim_kinematics_wasm_test PRIVATE include)
|
|
target_compile_options(sim_kinematics_wasm_test PRIVATE -UNDEBUG)
|
|
target_link_options(sim_kinematics_wasm_test PRIVATE -sSINGLE_FILE=1)
|
|
|
|
add_executable(sim_core_module src/sim_api.c src/sim_protocol.c src/sim_event.c src/sim_hal.c src/sim_posemath.c src/sim_interpreter.c src/sim_motion_queue.c src/sim_kinematics.c)
|
|
target_include_directories(sim_core_module PRIVATE
|
|
include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/rtapi
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../linuxcnc/src/libnml/posemath
|
|
)
|
|
target_compile_options(sim_core_module PRIVATE -ffp-contract=off -fno-fast-math)
|
|
target_link_libraries(sim_core_module PRIVATE sim_posemath)
|
|
set_target_properties(sim_core_module PROPERTIES
|
|
OUTPUT_NAME "linuxcnc-sim-core"
|
|
SUFFIX ".js"
|
|
LINK_FLAGS "-sMODULARIZE=1 -sEXPORT_ES6=1 -sENVIRONMENT=web,worker -sEXPORTED_FUNCTIONS=['_malloc','_free','_sim_create','_sim_load_workspace','_sim_command','_sim_step','_sim_read_snapshot','_sim_read_event','_sim_export_state','_sim_import_state','_sim_destroy','_sim_protocol_reset','_sim_protocol_accept','_sim_protocol_pause','_sim_protocol_resume','_sim_protocol_state_value','_sim_protocol_last_seq','_sim_protocol_tick','_sim_protocol_set_tick','_sim_event_reset','_sim_event_append','_sim_event_count','_sim_event_cursor','_sim_event_read','_sim_event_export','_sim_event_import','_sim_hal_reset','_sim_hal_register_pin','_sim_hal_set_pin','_sim_hal_get_pin','_sim_hal_connect','_sim_hal_register_thread','_sim_hal_register_function','_sim_hal_set_function_failure','_sim_hal_step','_sim_hal_tick','_sim_hal_function_calls','_sim_hal_pin_count','_sim_hal_thread_count','_sim_hal_function_count','_sim_posemath_normalize','_sim_posemath_dot','_sim_posemath_line_point','_sim_posemath_is_finite','_sim_posemath_pose_is_finite','_sim_posemath_pose_line_point','_sim_posemath_segment_validate','_sim_posemath_segment_point','_sim_posemath_hash_state','_sim_tp_init','_sim_tp_reset','_sim_tp_enqueue','_sim_tp_step','_sim_tp_read_state','_sim_tp_state_hash','_sim_interpreter_init','_sim_interpreter_reset','_sim_interpreter_execute','_sim_interpreter_read_state','_sim_interpreter_canonical','_sim_interpreter_state_hash','_sim_interpreter_block_hash','_sim_motion_init','_sim_motion_reset','_sim_motion_enqueue','_sim_motion_step','_sim_motion_read_state','_sim_motion_queue_depth','_sim_motion_state_hash','_sim_motion_canonical','_sim_kinematics_init','_sim_kinematics_forward','_sim_kinematics_forward_ex','_sim_kinematics_inverse','_sim_kinematics_inverse_ex','_sim_kinematics_home','_sim_kinematics_validate_pose','_sim_kinematics_state_hash'] -sEXPORTED_RUNTIME_METHODS=['ccall','cwrap']"
|
|
)
|
|
endif()
|