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})