Skip to content

Commit f8579ce

Browse files
committed
added mock arduino library to CMake
1 parent 4f7d5ac commit f8579ce

1 file changed

Lines changed: 61 additions & 30 deletions

File tree

pybind/CMakeLists.txt

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,73 @@
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

93
project(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
1347
set(pybind11_DIR "${CMAKE_CURRENT_SOURCE_DIR}/venv/Lib/site-packages/pybind11/share/cmake/pybind11")
1448
find_package(Python COMPONENTS Interpreter Development REQUIRED)
1549
find_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
1869
pybind11_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

Comments
 (0)