blob: 1daec3edc12bc5cccdbae84a9b0f3fb1b6a31af8 [file] [log] [blame]
# 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" ]
}
}