• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 2022 Huawei Technologies Co, Ltd.
3#
4
5project(LumeMetaAPI LANGUAGES CXX)
6
7#
8# Dependencies
9#
10if (NOT TARGET AGPBaseAPI)
11    find_package(AGPBaseAPI REQUIRED)
12endif()
13if (NOT TARGET AGPEngineAPI)
14    find_package(AGPEngineAPI REQUIRED)
15endif()
16
17#
18# API
19#
20set(PLUGIN_NAME LumeMeta)
21add_library(${PLUGIN_NAME}Base INTERFACE)
22target_sources(${PLUGIN_NAME}Base PUBLIC
23    meta/base/algorithms.h
24    meta/base/bit_field.h
25    meta/base/capture.h
26    meta/base/expected.h
27    meta/base/ids.h
28    meta/base/interface_macros.h
29    meta/base/interface_traits.h
30    meta/base/interface_utils.h
31    meta/base/macros.h
32    meta/base/meta_types.h
33    meta/base/namespace.h
34    meta/base/object_traits.h
35    meta/base/plugin.h
36    meta/base/ref_uri.h
37    meta/base/time_span.h
38    meta/base/type_traits.h
39    meta/base/types.h
40    meta/base/version.h
41)
42
43target_include_directories(${PLUGIN_NAME}Base INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/)
44target_link_libraries(${PLUGIN_NAME}Base INTERFACE AGPBase::AGPBaseAPI AGPEngine::AGPEngineAPI)
45
46# Meta object interface (for users of meta objects)
47add_library(${PLUGIN_NAME}API INTERFACE)
48add_library(${PLUGIN_NAME}::API ALIAS ${PLUGIN_NAME}API)
49target_sources(${PLUGIN_NAME}API PUBLIC
50    meta/interface/animation/builtin_animations.h
51    meta/interface/animation/intf_animation.h
52    meta/interface/animation/intf_animation_controller.h
53    meta/interface/animation/intf_animation_modifier.h
54    meta/interface/animation/intf_interpolator.h
55    meta/interface/animation/modifiers/intf_loop.h
56    meta/interface/animation/modifiers/intf_speed.h
57    meta/interface/builtin_objects.h
58    meta/interface/curves/intf_bezier.h
59    meta/interface/curves/intf_curve.h
60    meta/interface/curves/intf_curve_1d.h
61    meta/interface/curves/intf_curve_2d.h
62    meta/interface/curves/intf_easing_curve.h
63    meta/interface/detail/any.h
64    meta/interface/detail/any_pointer_compatibility.h
65    meta/interface/detail/array_property.h
66    meta/interface/detail/enum.h
67    meta/interface/detail/multi_type_any.h
68    meta/interface/detail/property.h
69    meta/interface/engine/intf_engine_data.h
70    meta/interface/engine/intf_engine_input_property_manager.h
71    meta/interface/engine/intf_engine_type.h
72    meta/interface/engine/intf_engine_value.h
73    meta/interface/engine/intf_engine_value_manager.h
74    meta/interface/enum_macros.h
75    meta/interface/event.h
76    meta/interface/interface_helpers.h
77    meta/interface/interface_macros.h
78    meta/interface/intf_any.h
79    meta/interface/intf_attach.h
80    meta/interface/intf_attachment.h
81    meta/interface/intf_attachment_container.h
82    meta/interface/intf_call_context.h
83    meta/interface/intf_callable.h
84    meta/interface/intf_class_registry.h
85    meta/interface/intf_clock.h
86    meta/interface/intf_cloneable.h
87    meta/interface/intf_comparable.h
88    meta/interface/intf_connector.h
89    meta/interface/intf_containable.h
90    meta/interface/intf_container.h
91    meta/interface/intf_container_observer.h
92    meta/interface/intf_container_query.h
93    meta/interface/intf_content.h
94    meta/interface/intf_derived.h
95    meta/interface/intf_enum.h
96    meta/interface/intf_event.h
97    meta/interface/intf_function.h
98    meta/interface/intf_future.h
99    meta/interface/intf_iterable.h
100    meta/interface/intf_lifecycle.h
101    meta/interface/intf_lockable.h
102    meta/interface/intf_manual_clock.h
103    meta/interface/intf_meta_object_lib.h
104    meta/interface/intf_metadata.h
105    meta/interface/intf_named.h
106    meta/interface/intf_notify_on_change.h
107    meta/interface/intf_object.h
108    meta/interface/intf_object_context.h
109    meta/interface/intf_object_factory.h
110    meta/interface/intf_object_flags.h
111    meta/interface/intf_object_hierarchy_observer.h
112    meta/interface/intf_object_registry.h
113    meta/interface/intf_promise.h
114    meta/interface/intf_proxy_object.h
115    meta/interface/intf_recyclable.h
116    meta/interface/intf_required_interfaces.h
117    meta/interface/intf_startable.h
118    meta/interface/intf_startable_controller.h
119    meta/interface/intf_static_metadata.h
120    meta/interface/intf_task_queue.h
121    meta/interface/intf_task_queue_extend.h
122    meta/interface/intf_task_queue_registry.h
123    meta/interface/intf_tickable.h
124    meta/interface/intf_tickable_controller.h
125    meta/interface/intf_value.h
126    meta/interface/loaders/intf_class_content_loader.h
127    meta/interface/loaders/intf_content_loader.h
128    meta/interface/loaders/intf_dynamic_content_loader.h
129    meta/interface/loaders/intf_file_content_loader.h
130    meta/interface/metadata_query.h
131    meta/interface/model/data_model_index.h
132    meta/interface/model/intf_data_model.h
133    meta/interface/model/intf_object_provider.h
134    meta/interface/object_macros.h
135    meta/interface/object_type_info.h
136    meta/interface/property/array_property.h
137    meta/interface/property/construct_array_property.h
138    meta/interface/property/construct_property.h
139    meta/interface/property/intf_bind.h
140    meta/interface/property/intf_modifier.h
141    meta/interface/property/intf_property.h
142    meta/interface/property/intf_property_internal.h
143    meta/interface/property/intf_property_register.h
144    meta/interface/property/intf_stack_property.h
145    meta/interface/property/intf_stack_resetable.h
146    meta/interface/property/property.h
147    meta/interface/property/property_events.h
148    meta/interface/resource/intf_dynamic_resource.h
149    meta/interface/resource/intf_resource.h
150    meta/interface/serialization/intf_export_context.h
151    meta/interface/serialization/intf_exporter.h
152    meta/interface/serialization/intf_global_serialization_data.h
153    meta/interface/serialization/intf_import_context.h
154    meta/interface/serialization/intf_importer.h
155    meta/interface/serialization/intf_ser_input.h
156    meta/interface/serialization/intf_ser_node.h
157    meta/interface/serialization/intf_ser_output.h
158    meta/interface/serialization/intf_ser_transformation.h
159    meta/interface/serialization/intf_serializable.h
160    meta/interface/serialization/intf_value_serializer.h
161    meta/interface/serialization/ser_metadata.h
162    meta/interface/simple_event.h
163    meta/interface/static_object_metadata.h
164    meta/interface/threading/primitive_api.h
165)
166
167target_include_directories(${PLUGIN_NAME}API INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/)
168target_link_libraries(${PLUGIN_NAME}API INTERFACE ${PLUGIN_NAME}Base)
169
170# Meta object helper implementations. (for implementers of meta objects)
171add_library(${PLUGIN_NAME}HighLevelAPI INTERFACE)
172add_library(${PLUGIN_NAME}::HighLevelAPI ALIAS ${PLUGIN_NAME}HighLevelAPI)
173target_sources(${PLUGIN_NAME}HighLevelAPI PUBLIC
174    meta/api/animation.h
175    meta/api/array_util.h
176    meta/api/call_context.h
177    meta/api/compatible_value_util.h
178    meta/api/connector.h
179    meta/api/container/find_cache.h
180    meta/api/container/find_containers.h
181    meta/api/container/observer.h
182    meta/api/curves.h
183    meta/api/deferred_callback.h
184    meta/api/engine/util.h
185    meta/api/event_handler.h
186    meta/api/function.h
187    meta/api/future.h
188    meta/api/internal/breadth_first_iteration.h
189    meta/api/internal/depth_first_iteration.h
190    meta/api/internal/iteration.h
191    meta/api/internal/iteration_types.h
192    meta/api/interface_object.h
193    meta/api/iteration.h
194    meta/api/locking.h
195    meta/api/make_callback.h
196    meta/api/number.h
197    meta/api/object.h
198    meta/api/property/array_element_bind.h
199    meta/api/property/array_property_changes_recognizer.h
200    meta/api/property/array_property_event_handler.h
201    meta/api/property/binding.h
202    meta/api/property/custom_value.h
203    meta/api/property/default_value_bind.h
204    meta/api/property/property_event_handler.h
205    meta/api/property/property_info.h
206    meta/api/task.h
207    meta/api/task_queue.h
208    meta/api/threading/mutex.h
209    meta/api/threading/primitive_api.h
210    meta/api/timer.h
211    meta/api/util.h
212)
213
214target_include_directories(${PLUGIN_NAME}HighLevelAPI INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/)
215target_link_libraries(${PLUGIN_NAME}HighLevelAPI INTERFACE ${PLUGIN_NAME}API)
216
217# Meta object helper implementations. (for implementers of meta objects)
218add_library(${PLUGIN_NAME}ExtAPI INTERFACE)
219add_library(${PLUGIN_NAME}::ExtAPI ALIAS ${PLUGIN_NAME}ExtAPI)
220target_sources(${PLUGIN_NAME}ExtAPI PUBLIC
221    meta/ext/animation/interpolator.h
222    meta/ext/any_builder.h
223    meta/ext/attachment/attachment.h
224    meta/ext/attachment/behavior.h
225    meta/ext/base_object.h
226    meta/ext/base_object_fwd.h
227    meta/ext/engine/core_any.h
228    meta/ext/engine/core_enum_any.h
229    meta/ext/engine/internal_access.h
230    meta/ext/event_impl.h
231    meta/ext/event_util.h
232    meta/ext/implementation_macros.h
233    meta/ext/metadata_helpers.h
234    meta/ext/minimal_object.h
235    meta/ext/object.h
236    meta/ext/object_container.h
237    meta/ext/object_factory.h
238    meta/ext/object_fwd.h
239    meta/ext/resolve_helper.h
240    meta/ext/serialization/common_value_serializers.h
241    meta/ext/serialization/serializer.h
242    meta/ext/serialization/value_serializer.h
243    meta/ext/task_queue.h
244)
245
246target_include_directories(${PLUGIN_NAME}ExtAPI INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/)
247target_link_libraries(${PLUGIN_NAME}ExtAPI INTERFACE ${PLUGIN_NAME}API ${PLUGIN_NAME}HighLevelAPI)
248
249set_target_properties(${PLUGIN_NAME}Base PROPERTIES
250    CXX_STANDARD 17
251    CXX_EXTENSIONS off
252    CXX_VISIBILITY_PRESET hidden
253    VISIBILITY_INLINES_HIDDEN 1
254)
255
256set_target_properties(${PLUGIN_NAME}API PROPERTIES
257    CXX_STANDARD 17
258    CXX_EXTENSIONS off
259    CXX_VISIBILITY_PRESET hidden
260    VISIBILITY_INLINES_HIDDEN 1
261)
262
263set_target_properties(${PLUGIN_NAME}HighLevelAPI PROPERTIES
264    CXX_STANDARD 17
265    CXX_EXTENSIONS off
266    CXX_VISIBILITY_PRESET hidden
267    VISIBILITY_INLINES_HIDDEN 1
268)
269
270set_target_properties(${PLUGIN_NAME}ExtAPI PROPERTIES
271    CXX_STANDARD 17
272    CXX_EXTENSIONS off
273    CXX_VISIBILITY_PRESET hidden
274    VISIBILITY_INLINES_HIDDEN 1
275)
276
277#
278# IDE project tree
279#
280get_target_property(BASE_PATH ${PLUGIN_NAME}Base INTERFACE_INCLUDE_DIRECTORIES)
281get_target_property(BASE_SOURCES ${PLUGIN_NAME}Base INTERFACE_SOURCES)
282source_group(TREE ${BASE_PATH} FILES ${BASE_SOURCES})
283
284get_target_property(API_PATH ${PLUGIN_NAME}API INTERFACE_INCLUDE_DIRECTORIES)
285get_target_property(API_SOURCES ${PLUGIN_NAME}API INTERFACE_SOURCES)
286source_group(TREE ${API_PATH} FILES ${API_SOURCES})
287
288get_target_property(HIGHLEVEL_API_PATH ${PLUGIN_NAME}HighLevelAPI INTERFACE_INCLUDE_DIRECTORIES)
289get_target_property(HIGHLEVEL_API_SOURCES ${PLUGIN_NAME}HighLevelAPI INTERFACE_SOURCES)
290source_group(TREE ${HIGHLEVEL_API_PATH} FILES ${HIGHLEVEL_API_SOURCES})
291
292get_target_property(EXT_API_PATH ${PLUGIN_NAME}ExtAPI INTERFACE_INCLUDE_DIRECTORIES)
293get_target_property(EXT_API_SOURCES ${PLUGIN_NAME}ExtAPI INTERFACE_SOURCES)
294source_group(TREE ${EXT_API_PATH} FILES ${EXT_API_SOURCES})