Skip to content

Commit 981154b

Browse files
committed
Add basic CMake implementation
1 parent 0aca334 commit 981154b

File tree

8 files changed

+165
-0
lines changed

8 files changed

+165
-0
lines changed

CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
cmake_minimum_required(VERSION 3.1)
2+
3+
project(PodEmbedded VERSION 1.0
4+
DESCRIPTION "Pod embedded")
5+
6+
add_subdirectory(embedded/app)
7+
add_subdirectory(embedded/data)
8+
add_subdirectory(embedded/drivers)
9+
add_subdirectory(embedded/examples)
10+
add_subdirectory(embedded/peripherals)
11+
add_subdirectory(embedded/utils)
12+
add_subdirectory(middleware)

embedded/app/CMakeLists.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#setup library for the stuff in src/ because it's used elsewhere >_>
2+
project(applib VERSION 1.0
3+
DESCRIPTION "main"
4+
LANGUAGES CXX)
5+
6+
#yeah, it's annoying, but glob has problems with needing to run cmake again,
7+
#and it's SUPER discouraged.
8+
set(dependecies src/bms_fault_checking.c
9+
src/nav.c
10+
src/state_machine.c
11+
src/init.c
12+
src/pressure_fault_checking.c
13+
src/states.c
14+
src/motor.c
15+
src/rms_fault_checking.c
16+
src/transitions.c)
17+
18+
#required libraries for the main pod executables
19+
set(libraries middleware
20+
data
21+
peripherals
22+
drivers
23+
Threads::Threads) #so pthreads work
24+
25+
#configure app library
26+
add_library(app ${dependecies})
27+
target_include_directories(app PUBLIC include)
28+
target_link_libraries(app PRIVATE ${libraries})
29+
30+
#export app library so it can be used externally
31+
export(TARGETS app FILE AppLibConfig.cmake)
32+
33+
#configure HV and LV executables
34+
find_package(Threads REQUIRED)
35+
add_executable(badgerloop_HV main/badgerloop_HV.cpp ${dependecies})
36+
add_executable(badgerloop_LV main/badgerloop_LV.cpp ${dependecies})
37+
38+
target_link_libraries(badgerloop_HV PRIVATE ${libraries})
39+
target_link_libraries(badgerloop_LV PRIVATE ${libraries})
40+
41+
target_include_directories(badgerloop_HV PRIVATE include)
42+
target_include_directories(badgerloop_LV PRIVATE include)

embedded/data/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
project(datalib VERSION 1.0
2+
DESCRIPTION "data"
3+
LANGUAGES CXX)
4+
5+
add_library(data src/filters.c)
6+
7+
target_include_directories(data PUBLIC include)
8+
9+
export(TARGETS data FILE DataConfig.cmake)

embedded/drivers/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
project(driverslib VERSION 1.0
2+
DESCRIPTION "Drivers for the pod"
3+
LANGUAGES C)
4+
5+
add_library(drivers src/bbgpio.c
6+
src/can.c
7+
src/i2c.c)
8+
9+
target_include_directories(drivers PUBLIC include)
10+
11+
export(TARGETS drivers FILE DriversConfig.cmake)

embedded/examples/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#Define example executables
2+
add_executable(bmsDisplay bmsDisplay.cpp)
3+
add_executable(dashTest dashTest.cpp)
4+
add_executable(navTest navTest.cpp)
5+
add_executable(solenoidTest solenoidTest.c)
6+
add_executable(brakingTest brakingTest.cpp)
7+
add_executable(gpioHvTest gpioHvTest.c)
8+
add_executable(oldMotorTest oldMotorTest.c)
9+
add_executable(retroTest retroTest.c)
10+
add_executable(stateTest stateTest.c)
11+
add_executable(can_test can_test.c)
12+
add_executable(imu_test imu_test.c)
13+
add_executable(presTest presTest.c)
14+
15+
#Link library dependencies for each example
16+
target_link_libraries(imu_test PRIVATE peripherals data)
17+
target_link_libraries(can_test PRIVATE drivers peripherals data)
18+
target_link_libraries(stateTest PRIVATE peripherals data app)
19+
target_link_libraries(retroTest PRIVATE drivers peripherals data)
20+
target_link_libraries(oldMotorTest PRIVATE drivers middleware peripherals data)
21+
target_link_libraries(presTest PRIVATE middleware peripherals data)
22+
target_link_libraries(dashTest PRIVATE middleware peripherals data app)
23+
target_link_libraries(navTest PRIVATE middleware peripherals data app)
24+
target_link_libraries(brakingTest PRIVATE drivers middleware peripherals data)
25+
target_link_libraries(bmsDisplay PRIVATE middleware peripherals data)
26+
target_link_libraries(gpioHvTest PRIVATE drivers peripherals data)
27+
target_link_libraries(solenoidTest PRIVATE drivers peripherals data)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
project(peripheralslib VERSION 1.0
2+
DESCRIPTION "Peripherals"
3+
LANGUAGES CXX)
4+
#Define sources for library
5+
add_library(peripherals src/batt.c
6+
src/braking.c
7+
src/hv_iox.c
8+
src/lv_iox.c
9+
src/lv_iox.c
10+
src/NCD9830DBR2G.c
11+
src/retro.c
12+
src/bms.c
13+
src/can_devices.c
14+
src/imu.c
15+
src/mcp23017.c
16+
src/proc_iox.c
17+
src/rms.c)
18+
19+
target_include_directories(peripherals PUBLIC include)
20+
21+
target_link_libraries(peripherals PRIVATE data app)
22+
target_link_libraries(peripherals PUBLIC drivers)
23+
24+
export(TARGETS peripherals FILE PeripheralsConfig.cmake)

embedded/utils/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#Define exectutables
2+
add_executable(gpioUtil gpioUtil.c)
3+
add_executable(rmsProg rmsProg.c)
4+
5+
#Link library dependencies
6+
target_link_libraries(gpioUtil PRIVATE drivers peripherals)
7+
target_link_libraries(rmsProg PRIVATE drivers peripherals data)

middleware/CMakeLists.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
project(middlewarelib VERSION 1.0
2+
DESCRIPTION "middleware"
3+
LANGUAGES CXX)
4+
5+
add_library(middleware src/connStat.c
6+
src/HVTCPSocket.cpp
7+
src/HV_Telem_Recv.cpp
8+
src/LVTelemetry_Loop.cpp
9+
src/data_dump.cpp
10+
src/HVTelemetry_Loop.cpp
11+
src/LVTCPSocket.cpp
12+
src/PracticalSocket.cpp)
13+
14+
target_include_directories(middleware PUBLIC include include/jsonlib)
15+
16+
target_link_libraries(middleware PRIVATE data peripherals app drivers)
17+
18+
export(TARGETS middleware FILE MiddlewareConfig.cmake)
19+
20+
#examples executables
21+
add_executable(HV_Test examples/HV_Test.cpp)
22+
add_executable(LV_DataLoop_test examples/LV_DataLoop_test.cpp)
23+
add_executable(LV_TCP_test examples/LV_TCP_test.cpp src/LVTCPSocket.cpp)
24+
25+
#link local includes
26+
target_include_directories(HV_Test PUBLIC include)
27+
target_include_directories(LV_DataLoop_test PUBLIC include)
28+
target_include_directories(LV_TCP_test PUBLIC include)
29+
30+
#link required libraries
31+
target_link_libraries(HV_Test PRIVATE middleware peripherals data)
32+
target_link_libraries(LV_DataLoop_test PRIVATE middleware peripherals)
33+
target_link_libraries(LV_TCP_test PRIVATE data peripherals)

0 commit comments

Comments
 (0)