-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
139 lines (131 loc) · 5.23 KB
/
CMakeLists.txt
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
127
128
129
130
131
132
133
134
135
136
137
138
139
find_package(
Python3
COMPONENTS Interpreter
REQUIRED)
# Library
add_library(
zwave_command_classes
platform/${COMPATIBLE_PLATFORM}/platform_date_time.c
platform/${COMPATIBLE_PLATFORM}/platform_exec.c
src/zwave_command_class_agi.cpp
src/zwave_command_class_alarm_sensor.c
src/zwave_command_class_association.cpp
src/zwave_command_class_association_send.cpp
src/zwave_command_class_basic.c
src/zwave_command_class_barrier_operator.c
src/zwave_command_class_binary_switch.cpp
src/zwave_command_class_battery.cpp
src/zwave_command_class_central_scene.c
src/zwave_command_class_configuration_control.c
src/zwave_command_class_crc16.cpp
src/zwave_command_class_device_reset_locally.cpp
src/zwave_command_class_door_lock_control.cpp
src/zwave_command_class_firmware_update.c
src/zwave_command_class_humidity_control_mode.c
src/zwave_command_class_humidity_control_operating_state.c
src/zwave_command_class_humidity_control_setpoint.c
src/zwave_command_class_indicator.c
src/zwave_command_class_indicator_control.cpp
src/zwave_command_class_manufacturer_specific.c
src/zwave_command_class_manufacturer_specific_control.cpp
src/zwave_command_class_meter_control.c
src/zwave_command_class_multi_channel.c
src/zwave_command_class_multi_command.c
src/zwave_command_class_multi_channel_association.cpp
src/zwave_command_class_multilevel_sensor.c
src/zwave_command_class_node_info_resolver.c
src/zwave_command_class_granted_keys_resolver.c
src/zwave_command_class_notification.cpp
src/zwave_command_class_powerlevel.c
src/zwave_command_class_scene_activation_control.c
src/zwave_command_class_scene_actuator_configuration_control.c
src/zwave_command_class_scene_controller_configuration_control.c
src/zwave_command_class_security_0.c
src/zwave_command_class_security_2.c
src/zwave_command_class_supervision.c
src/zwave_command_class_supervision_process.cpp
src/zwave_command_class_sound_switch.c
src/zwave_command_class_switch_color.cpp
src/zwave_command_class_switch_multilevel.c
src/zwave_command_class_thermostat_mode.c
src/zwave_command_class_thermostat_fan_mode.c
src/zwave_command_class_thermostat_fan_state.c
src/zwave_command_class_thermostat_setpoint.cpp
src/zwave_command_class_thermostat_operating_state.c
src/zwave_command_class_time_parameters.cpp
src/zwave_command_class_time.c
src/zwave_command_class_user_code.c
src/zwave_command_class_version.c
src/zwave_command_class_wake_up.c
src/zwave_command_class_zwave_plus_info.c
src/zwave_command_classes_fixt.c
src/zwave_command_classes_utils.c
src/zwave_command_class_inclusion_controller.cpp
src/zwave_command_class_transport_service.c
src/zwave_command_class_protocol.c)
install(TARGETS zwave_command_classes LIBRARY DESTINATION lib)
target_include_directories(
zwave_command_classes
PUBLIC include ${CMAKE_BINARY_DIR}/include/
PRIVATE src platform)
# ########### Autogenerated files ##############
message(STATUS "CMAKE_CURRENT_SOURCE_DIR is '${CMAKE_CURRENT_SOURCE_DIR}'")
message(STATUS "CMAKE_CURRENT_BINARY_DIR is '${CMAKE_CURRENT_BINARY_DIR}'")
execute_process(
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND
${Python3_EXECUTABLE} scripts/generator.py -x
assets/ZWave_custom_cmd_classes.xml -t
templates/zwave_{{_name}}_attribute_id.h -t
templates/zwave_{{_name}}_attribute_id.uam -t
templates/zwave_{{_name}}_handlers.cpp -t
templates/zwave_{{_name}}_handlers.h -m assets/modificators.json -o
${CMAKE_CURRENT_BINARY_DIR}/src-gen -d
OUTPUT_VARIABLE ZWAVE_COMMAND_CLASS_AUTOGEN_FILES_STR
COMMAND_ERROR_IS_FATAL ANY
)
string(REPLACE "\n" ";" ZWAVE_COMMAND_CLASS_AUTOGEN_FILES
${ZWAVE_COMMAND_CLASS_AUTOGEN_FILES_STR})
file(GLOB GEN_SCRIPTS scripts/* templates/*)
add_custom_command(
OUTPUT ${ZWAVE_COMMAND_CLASS_AUTOGEN_FILES}
DEPENDS ${GEN_SCRIPTS} assets/ZWave_custom_cmd_classes.xml
assets/modificators.json
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/src-gen
COMMAND
${Python3_EXECUTABLE} scripts/generator.py -x
assets/ZWave_custom_cmd_classes.xml -t
templates/zwave_{{_name}}_attribute_id.h -t
templates/zwave_{{_name}}_attribute_id.uam -t
templates/zwave_{{_name}}_handlers.cpp -t
templates/zwave_{{_name}}_handlers.h -m assets/modificators.json -o
${CMAKE_CURRENT_BINARY_DIR}/src-gen)
add_library(zwave_handlers ${ZWAVE_COMMAND_CLASS_AUTOGEN_FILES})
target_link_libraries(zwave_handlers unify zpc_attribute_store
zwave_command_handler)
target_include_directories(
zwave_handlers PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/src-gen src include)
target_compile_options(zwave_handlers PRIVATE -Wno-unused-variable
-Wno-unused-function)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(zwave_handlers PRIVATE -Wno-unused-but-set-variable)
endif()
target_link_libraries(zwave_command_classes
PUBLIC
zwave_handlers
PRIVATE
zpc_attribute_store
zpc_attribute_resolver
zwave_command_handler
zwave_security_validation
zpc_utils
zpc_scripts
unify
zwave_definitions)
if(BUILD_TESTING)
# Mocks
target_add_mock(zwave_command_classes)
# Unit test subdirectory
add_subdirectory(test)
endif()