| # Copyright 2019 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| import("//third_party/openweave-core/config.gni") |
| |
| # Builds OpenWeave with the given adaptation-layer sources. OpenWeave splits out |
| # platform-specific code into //third_party/openweave-core/src/adaptation, which |
| # may exist outside the tree. This template generates the following targets: |
| # |
| # target_name.sources: |
| # A source_set of implementation code, packaged with the headers. |
| # target_name.headers: |
| # A source_set of headers only, including openweave-core and adaptation headers. |
| # target_name.shared: |
| # A shared_library of implementation code, packaged with the headers. |
| # |
| # By default, depending on this target will return target_name.sources. Targets |
| # can depend on the shared library explicitly, but must be aware that only headers |
| # explicitly marked with NL_DLL_EXPORT will be visible. |
| template("openweave_adaptation_layer") { |
| top_builddir = rebase_path("//third_party/openweave-core") |
| _library_name = target_name |
| |
| # Implementation sources must be defined in order to build. |
| assert(defined(invoker.sources), "Sources must be defined.") |
| |
| # Create public_configs set for all sub-targets. |
| _public_configs = [ |
| ":${target_name}.openweave_config", |
| "//third_party/openweave-core/src/include:public", |
| ] |
| if (defined(invoker.public_configs)) { |
| _public_configs += invoker.public_configs |
| } |
| |
| # Create configs set for all sub-targets. |
| _configs = [] |
| if (defined(invoker.configs)) { |
| _configs += invoker.configs |
| } |
| |
| # Default target includes sources, components should depend on the sub-targets |
| # if only headers or a shared library is required. |
| group(target_name) { |
| public_deps = [ ":${_library_name}.sources" ] |
| } |
| |
| target("source_set", "${_library_name}.headers") { |
| sources = filter_include(invoker.sources, |
| [ |
| "*.h", |
| "*.hpp", |
| ]) |
| public_deps = [ ":${_library_name}.public_deps" ] |
| public_configs = _public_configs |
| deps = [ ":${_library_name}.deps" ] |
| configs += _configs |
| } |
| |
| target("source_set", "${_library_name}.sources") { |
| sources = [ |
| "$top_builddir/src/adaptations/device-layer/DeviceControlServer.cpp", |
| "$top_builddir/src/adaptations/device-layer/DeviceDescriptionServer.cpp", |
| "$top_builddir/src/adaptations/device-layer/DeviceIdentityTraitDataSource.cpp", |
| "$top_builddir/src/adaptations/device-layer/DeviceNetworkInfo.cpp", |
| "$top_builddir/src/adaptations/device-layer/EchoServer.cpp", |
| "$top_builddir/src/adaptations/device-layer/EventLogging.cpp", |
| "$top_builddir/src/adaptations/device-layer/FabricProvisioningServer.cpp", |
| "$top_builddir/src/adaptations/device-layer/Fuchsia/Logging.cpp", |
| "$top_builddir/src/adaptations/device-layer/GeneralUtils.cpp", |
| "$top_builddir/src/adaptations/device-layer/Globals.cpp", |
| "$top_builddir/src/adaptations/device-layer/LocaleSettingsTraitDataSink.cpp", |
| "$top_builddir/src/adaptations/device-layer/NetworkTelemetryManager.cpp", |
| "$top_builddir/src/adaptations/device-layer/PersistedStorage.cpp", |
| "$top_builddir/src/adaptations/device-layer/ServiceDirectoryManager.cpp", |
| "$top_builddir/src/adaptations/device-layer/ServiceProvisioningServer.cpp", |
| "$top_builddir/src/adaptations/device-layer/ServiceTunnelAgent.cpp", |
| "$top_builddir/src/adaptations/device-layer/SystemEventSupport.cpp", |
| "$top_builddir/src/adaptations/device-layer/SystemTimerSupport.cpp", |
| "$top_builddir/src/adaptations/device-layer/TimeSyncManager.cpp", |
| "$top_builddir/src/adaptations/device-layer/TraitManager.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/nest/trait/firmware/SoftwareUpdateTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/nest/trait/network/TelemetryNetworkTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/nest/trait/network/TelemetryNetworkWifiTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/nest/trait/network/TelemetryNetworkWpanTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/weave/common/ProfileSpecificStatusCodeStructSchema.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/weave/trait/description/DeviceIdentityTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/weave/trait/locale/LocaleSettingsTrait.cpp", |
| "$top_builddir/src/adaptations/device-layer/trait-support/weave/trait/telemetry/tunnel/TelemetryTunnelTrait.cpp", |
| ] |
| sources += filter_include(invoker.sources, |
| [ |
| "*.cc", |
| "*.cpp", |
| "*.ipp", |
| ]) |
| |
| public_deps = [ |
| ":${_library_name}.headers", |
| ":${_library_name}.public_deps", |
| ] |
| public_configs = _public_configs |
| deps = [ ":${_library_name}.deps" ] |
| configs += _configs |
| } |
| |
| target("shared_library", "${_library_name}.shared") { |
| public_deps = [ |
| ":${_library_name}.headers", |
| ":${_library_name}.public_deps", |
| ] |
| public_configs = _public_configs |
| deps = [ |
| ":${_library_name}.deps", |
| ":${_library_name}.sources", |
| ] |
| configs += _configs |
| |
| # Explicitly build the library with -fPIC. |
| configs += [ ":${_library_name}.linker_config" ] |
| } |
| |
| group("${_library_name}.public_deps") { |
| public_deps = [ |
| "//third_party/openweave-core/src/include:DeviceLayer_headers", |
| "//third_party/openweave-core/src/include:common", |
| ] |
| if (defined(invoker.public_deps)) { |
| public_deps += invoker.public_deps |
| } |
| } |
| |
| group("${_library_name}.deps") { |
| deps = [] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| |
| config("${_library_name}.openweave_config") { |
| include_dirs = [ |
| "$top_builddir/src/adaptations/device-layer/include", |
| "$top_builddir/src/adaptations/device-layer/trait-support", |
| ] |
| if (defined(invoker.include_dirs)) { |
| include_dirs += invoker.include_dirs |
| } |
| } |
| |
| config("${_library_name}.linker_config") { |
| cflags = [ "-fPIC" ] |
| } |
| } |