-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
116 lines (90 loc) · 4.12 KB
/
CMakeLists.txt
File metadata and controls
116 lines (90 loc) · 4.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Toolchain-RaspberryPi.cmake)
cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_C_STANDARD 20)
set(CMAKE_CXX_STANDARD 20)
# Disable the GCC warning from the json library.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
set(TARGET PrinterServiceController)
project(PrinterServiceController VERSION 0.1.1)
include(CTest)
enable_testing()
# Find Protobuf.
find_package(Protobuf REQUIRED)
# Find all proto files and configure directories.
file(GLOB PROTO_FILES CONFIGURE_DEPENDS "proto/*.proto")
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/proto PROTOMODEL_PATH)
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto PROTOBINDING_PATH)
# Compile the proto files.
FOREACH(proto ${PROTO_FILES})
EXECUTE_PROCESS(COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} --proto_path=${PROTOMODEL_PATH} --cpp_out=${PROTOBINDING_PATH} ${proto}
RESULT_VARIABLE rv)
# Optional, but that can show the user if something have gone wrong with the proto generation.
IF(${rv})
MESSAGE("Generation of data model returned ${rv} for proto ${proto}")
ENDIF()
ENDFOREACH(proto)
# Move generated proto headers in header directory.
file(GLOB GENERATED_HEADERS CONFIGURE_DEPENDS ${PROTOBINDING_PATH}/*.h)
EXECUTE_PROCESS(COMMAND mv ${GENERATED_HEADERS} ${CMAKE_CURRENT_SOURCE_DIR}/include/proto/)
# Find all generated proto headers and sources to add them to the target.
file(GLOB PROTO_HEADERS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/include/proto/*.h)
file(GLOB PROTO_SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/*.cc)
file(GLOB U_WEBSOCKETS_FILES CONFIGURE_DEPENDS "include/uWebSockets/*")
include_directories(LibIncludes)
include_directories(LibIncludes/uWebSockets)
include_directories(include)
add_subdirectory(src)
add_subdirectory(include)
add_executable(${TARGET})
target_sources(${TARGET} PRIVATE
main.cpp
./src/ButtonController.cpp
./src/Buzzer.cpp
./src/DisplayController.cpp
./src/FanController.cpp
./src/HttpProtoServer.cpp
./src/LightController.cpp
./src/Logger.cpp
./src/MqttClient.cpp
./src/PrintConfigs.cpp
./src/PrinterState.cpp
./src/ServiceController.cpp
./src/Timing.cpp
./include/ButtonController.hpp
./include/Buzzer.hpp
./include/DisplayController.hpp
./include/FanController.hpp
./include/HttpProtoServer.hpp
./include/LightController.hpp
./include/Logger.hpp
./include/MqttClient.hpp
./include/PrintConfigs.hpp
./include/PrinterState.hpp
./include/ServiceController.hpp
./include/Timing.hpp
# Include generated proto files
${PROTO_HEADERS}
${PROTO_SOURCES}
${U_WEBSOCKETS_FILES}
)
set(PROTO_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/proto)
# Add the include path to the target
target_include_directories(${TARGET} PUBLIC ${PROTO_INCLUDE_DIR})
link_directories(${CMAKE_SOURCE_DIR}/Libraries)
add_library(ssd1306 SHARED IMPORTED)
add_library(pigpiod_if2 SHARED IMPORTED)
add_library(pigpio SHARED IMPORTED)
add_library(libhueplusplusshared SHARED IMPORTED)
add_library(libmosquitto SHARED IMPORTED)
add_library(libmosquittopp SHARED IMPORTED)
set_target_properties(ssd1306 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/Libraries/libssd1306_i2c.so)
set_target_properties(pigpiod_if2 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/Libraries/libpigpiod_if2.so)
set_target_properties(pigpio PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/Libraries/libpigpio.so)
set_target_properties(libhueplusplusshared PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/Libraries/libhueplusplusshared.so)
set_target_properties(libmosquitto PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/.devcontainer/rootfs/usr/lib/libmosquitto.so)
set_target_properties(libmosquittopp PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/.devcontainer/rootfs/usr/lib/libmosquittopp.so)
target_link_libraries(${TARGET} PRIVATE ssd1306 pthread z pigpio pigpiod_if2 libhueplusplusshared libmosquitto libmosquittopp ${PROTOBUF_LIBRARIES} "${CMAKE_SOURCE_DIR}/Libraries/uSockets.a")
add_definitions(-Wall -g)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)