1- cmake_minimum_required (VERSION 4.1 )
2- set (CMAKE_POLICY_VERSION_MINIMUM "4.1" )
3- set (ARDUINO_INSTALL_PATH "C:/Users/jxie7/AppData/Local/Arduino15" )
4- set (ARDUINO_BOARD "Adafruit ESP32 Feather [esp32.featheresp32]" )
5-
6- # Include modules
7- include ("${CMAKE_CURRENT_SOURCE_DIR } /Arduino-toolchain.cmake" )
1+ cmake_minimum_required (VERSION 3.14 )
82
93project (BrainflowSpO2Algorithm VERSION 4.1 LANGUAGES C CXX ) # Project name becomes name of the Python module
104
5+ # GoogleTest requires at least C++17
6+ set (CMAKE_CXX_STANDARD 17)
7+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
8+
9+ # ----------------------------------------------------------------------------------------------------------
10+ # Arduino Mock Library Setup
11+ # ----------------------------------------------------------------------------------------------------------
12+
13+ include (FetchContent )
14+ FetchContent_Declare (
15+ googletest
16+ URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
17+ )
18+ # For Windows: Prevent overriding the parent project's compiler/linker settings
19+ set (gtest_force_shared_crt ON CACHE BOOL "" FORCE )
20+ FetchContent_MakeAvailable (googletest)
21+
22+ enable_testing ()
23+
24+ # Setup mock Arduino library to simulate Arduino environment
25+ add_library (ArduinoMock
26+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core/Arduino.cpp"
27+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core/ArduinoMock.cpp"
28+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core/HardwareSerial0.cpp"
29+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core/Print.cpp"
30+ )
31+ target_include_directories (ArduinoMock PUBLIC
32+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/src"
33+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core"
34+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Core-Libraries"
35+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Libraries/Adafruit_GFX"
36+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Libraries/Adafruit_SSD1306"
37+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/mock/Libraries/Encoder"
38+ )
39+ target_link_libraries (ArduinoMock PUBLIC GTest::gmock_main GTest::gmock GTest::gtest_main GTest::gtest )
40+
41+ # ----------------------------------------------------------------------------------------------------------
42+ # Algorithm/pybind11 Setup
43+ # ----------------------------------------------------------------------------------------------------------
44+
1145# See pybind11Config.cmake, instructions for pybind11_DIR
1246# According to CMake convention, find_package searches in path set in the <package_name>_DIR
1347set (pybind11_DIR "${CMAKE_CURRENT_SOURCE_DIR } /venv/Lib/site-packages/pybind11/share/cmake/pybind11" )
1448find_package (Python COMPONENTS Interpreter Development REQUIRED )
1549find_package (pybind11 CONFIG REQUIRED )
1650
51+ # Gather all source files
52+ file (GLOB SRC
53+ "${CMAKE_CURRENT_SOURCE_DIR } /../src/*.cpp"
54+ "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_ArduinoFilters/src/*.cpp"
55+ )
56+
57+ # Add local source files
58+ add_library (lib STATIC
59+ ${SRC}
60+ )
61+
62+ # Add header files to be included
63+ target_include_directories (lib PUBLIC
64+ "${CMAKE_CURRENT_SOURCE_DIR } /../src"
65+ )
66+ target_link_libraries (lib PUBLIC ArduinoMock )
67+
1768# CMake function is a convenience helper provided by the Pybind11 project
1869pybind11_add_module (BrainflowSpO2Algorithm "${CMAKE_CURRENT_SOURCE_DIR } /bindings.cpp" )
1970
20- target_link_arduino_libraries (BrainflowSpO2Algorithm AUTO_PUBLIC )
21-
22- # # gather all source files
23- # file(GLOB SRC
24- # "${CMAKE_CURRENT_SOURCE_DIR}/../src/*.cpp"
25- # "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_DSPFilters/src/*.cpp"
26- # )
27-
28- # # Add local source files
29- # add_library(lib STATIC
30- # ${SRC}
31- # )
32- # # Add header files to be included
33- # target_include_directories(lib
34- # PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../src"
35- # PUBLIC "C:/Users/jxie7/Documents/Arduino/libraries/EmotiBit_DSPFilters/src/"
36- # )
37-
38- # # CMake function is a convenience helper provided by the Pybind11 project
39- # pybind11_add_module(BrainflowSpO2Algorithm "${CMAKE_CURRENT_SOURCE_DIR}/bindings.cpp")
40-
41- # target_link_arduino_libraries(BrainflowSpO2Algorithm PRIVATE core)
42- # target_link_libraries(BrainflowSpO2Algorithm PRIVATE lib)
71+ target_link_libraries (BrainflowSpO2Algorithm PUBLIC
72+ lib
73+ )
0 commit comments