-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
126 lines (109 loc) · 3.85 KB
/
Copy pathCMakeLists.txt
File metadata and controls
126 lines (109 loc) · 3.85 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
117
118
119
120
121
122
123
124
125
126
# SinricPro SDK for Raspberry Pi Pico W
# Requires pico-sdk and PICO_SDK_PATH environment variable
cmake_minimum_required(VERSION 3.13)
# Set Pico board to Pico W (required for WiFi support)
set(PICO_BOARD pico_w CACHE STRING "Board type")
# Import Pico SDK
include(pico_sdk_import.cmake)
project(sinricpro_sdk C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# Initialize Pico SDK
pico_sdk_init()
# =============================================================================
# cJSON Library (submodule)
# =============================================================================
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/cJSON/CMakeLists.txt)
set(ENABLE_CJSON_TEST OFF CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
add_subdirectory(lib/cJSON)
else()
message(STATUS "cJSON not found. Run: git submodule add https://github.com/DaveGamble/cJSON.git lib/cJSON")
endif()
# =============================================================================
# SinricPro Library
# =============================================================================
add_library(sinricpro STATIC
# Core
src/core/sinricpro.c
src/core/sinricpro_debug.c
src/core/signature.c
src/core/message_queue.c
src/core/event_limiter.c
src/core/websocket_client.c
src/core/json_helpers.c
# Capabilities
src/capabilities/power_state.c
src/capabilities/brightness.c
src/capabilities/power_level.c
src/capabilities/color.c
src/capabilities/color_temperature.c
src/capabilities/motion_sensor.c
src/capabilities/temperature_sensor.c
src/capabilities/contact_sensor.c
src/capabilities/lock_controller.c
src/capabilities/doorbell.c
src/capabilities/door_controller.c
src/capabilities/power_sensor.c
src/capabilities/air_quality_sensor.c
src/capabilities/range_controller.c
# Devices
src/devices/sinricpro_switch.c
src/devices/sinricpro_dimswitch.c
src/devices/sinricpro_light.c
src/devices/sinricpro_motion_sensor.c
src/devices/sinricpro_temperature_sensor.c
src/devices/sinricpro_contact_sensor.c
src/devices/sinricpro_fan.c
src/devices/sinricpro_lock.c
src/devices/sinricpro_doorbell.c
src/devices/sinricpro_garagedoor.c
src/devices/sinricpro_powersensor.c
src/devices/sinricpro_airqualitysensor.c
src/devices/sinricpro_blinds.c
)
target_include_directories(sinricpro PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/lib/cJSON
)
target_include_directories(sinricpro PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(sinricpro PUBLIC
pico_stdlib
pico_cyw43_arch_lwip_poll
pico_lwip_mbedtls
pico_mbedtls
pico_rand
hardware_adc
)
if(TARGET cjson)
target_link_libraries(sinricpro PUBLIC cjson)
endif()
# =============================================================================
# Examples
# =============================================================================
option(SINRICPRO_BUILD_EXAMPLES "Build SinricPro examples" ON)
if(SINRICPRO_BUILD_EXAMPLES)
add_subdirectory(examples/switch)
add_subdirectory(examples/dimswitch)
add_subdirectory(examples/light)
add_subdirectory(examples/motion_sensor)
add_subdirectory(examples/temperature_sensor)
add_subdirectory(examples/contact_sensor)
add_subdirectory(examples/fan)
add_subdirectory(examples/lock)
add_subdirectory(examples/doorbell)
add_subdirectory(examples/garagedoor)
add_subdirectory(examples/powersensor)
add_subdirectory(examples/airqualitysensor)
add_subdirectory(examples/blinds)
endif()
# =============================================================================
# Compiler Warnings
# =============================================================================
target_compile_options(sinricpro PRIVATE
-Wall
-Wextra
-Wno-unused-parameter
)