@@ -32,6 +32,26 @@ _app_root = get_path_info(".", "abspath")
32
32
#
33
33
# Forwards all the remaining variables to the source_set.
34
34
#
35
+ #
36
+ #
37
+ # Additional underlying source sets that will be provided
38
+ #
39
+ # - ${name}-endpoint-metadata
40
+ # contains HEADERS that define endpoint metadata from zap/matter files:
41
+ # - zap-generated/gen_config.h
42
+ # - zap-generated/endpoint_config.h
43
+ # - zap-generated/access.h
44
+ # - PluginApplicationCallbacks.h
45
+ # - ${name}-callbacks
46
+ # contains the callback implementation for cluster init:
47
+ # - cluster-init-callback.cpp
48
+ # - callback-stub.cpp (contains __weak__ implementations. TODO: we should not be using
49
+ # weak linkage over time at all)
50
+ # - ${name}-command-dispatch:
51
+ # contains the implementation of `DispatchServerCommand` which forwards data to
52
+ # `emberAf....Cluster...Callback` callbacks
53
+ # - zap-generated/IMClusterCommandHandler.cpp
54
+ #
35
55
template (" chip_data_model" ) {
36
56
_data_model_name = target_name
37
57
@@ -87,6 +107,79 @@ template("chip_data_model") {
87
107
]
88
108
}
89
109
110
+ # where generated files reside
111
+ # TODO: where can this reside?
112
+ if (chip_code_pre_generated_directory == " " ) {
113
+ _zapgen_gen_dir = " ${ target_gen_dir } /zapgen"
114
+ _codegen_gen_dir = " ${ target_gen_dir } "
115
+ } else {
116
+ # NOTE: if zap and matter file will reside in different locations
117
+ # this path will change between zapgen and codegen
118
+ _pregen_dir =
119
+ chip_code_pre_generated_directory + " /" +
120
+ string_replace (rebase_path (invoker .zap_file , chip_root ), " .zap" , " " )
121
+
122
+ _zapgen_gen_dir = " ${ _pregen_dir } /zap/app-templates"
123
+ _codegen_gen_dir = " ${ _pregen_dir } /codegen/cpp-app"
124
+ }
125
+
126
+ # Fixed source sets for allowing reasonable dependencies on things:
127
+ source_set (" ${ _data_model_name } -endpoint-metadata" ) {
128
+ sources = [
129
+ " ${ _codegen_gen_dir } /app/PluginApplicationCallbacks.h" ,
130
+ " ${ _zapgen_gen_dir } /zap-generated/access.h" ,
131
+ " ${ _zapgen_gen_dir } /zap-generated/endpoint_config.h" ,
132
+ " ${ _zapgen_gen_dir } /zap-generated/gen_config.h" ,
133
+ ]
134
+
135
+ deps = [ " ${ chip_root } /src/lib/core:chip_config_header" ]
136
+
137
+ if (chip_code_pre_generated_directory == " " ) {
138
+ deps += [
139
+ " :${ _data_model_name } _codegen_generate" ,
140
+ " :${ _data_model_name } _zapgen_generate" ,
141
+ ]
142
+ }
143
+ }
144
+
145
+ source_set (" ${ _data_model_name } -callbacks" ) {
146
+ sources = [
147
+ " ${ _codegen_gen_dir } /app/callback-stub.cpp" ,
148
+ " ${ _codegen_gen_dir } /app/cluster-init-callback.cpp" ,
149
+ ]
150
+
151
+ deps = [
152
+ " ${ chip_root } /src/app/common:ids" ,
153
+ " ${ chip_root } /src/lib/support:span" ,
154
+ " ${ chip_root } /src/protocols/interaction_model" ,
155
+ ]
156
+
157
+ if (chip_code_pre_generated_directory == " " ) {
158
+ deps += [ " :${ _data_model_name } _codegen_generate" ]
159
+ }
160
+ }
161
+
162
+ if (! chip_build_controller_dynamic_server ) {
163
+ source_set (" ${ _data_model_name } -command-dispatch" ) {
164
+ sources =
165
+ [ " ${ _zapgen_gen_dir } /zap-generated/IMClusterCommandHandler.cpp" ]
166
+
167
+ deps = [
168
+ " ${ chip_root } /src/app" ,
169
+ " ${ chip_root } /src/app:interaction-model" ,
170
+ " ${ chip_root } /src/app/common:cluster-objects" ,
171
+ " ${ chip_root } /src/app/common:enums" ,
172
+ " ${ chip_root } /src/app/common:ids" ,
173
+ " ${ chip_root } /src/lib/core" ,
174
+ " ${ chip_root } /src/lib/support" ,
175
+ ]
176
+
177
+ if (chip_code_pre_generated_directory == " " ) {
178
+ deps += [ " :${ _data_model_name } _zapgen_generate" ]
179
+ }
180
+ }
181
+ }
182
+
90
183
source_set (_data_model_name ) {
91
184
forward_variables_from (invoker ,
92
185
" *" ,
0 commit comments