# 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")

# Public compilation flags for external users of OpenWeave.
config("public") {
  include_dirs = [ "$target_gen_dir" ]
  cflags = [
    "-includeBuildConfig.h",

    # Suppress deprecated implicit copy constructor warnings
    "-Wno-deprecated-copy",
  ]

  # Once the file generation in mainline is fixed, we can remove this exception.
  # Until then, certain generated files have lower-case instead of upper-case paths.
  if (host_os == "mac") {
    cflags += [ "-Wno-nonportable-include-path" ]
  }
}

# Common compilation flags for all components in OpenWeave.
config("fuchsia") {
  configs = [ ":public" ]

  # Temporarily adding ignore cases for openweave warnings.
  # TODO(fxb/46070): Resolve these warnings in mainline.
  cflags = [
    # Should be removable when WARM thread routing is enabled.
    "-Wno-unused-const-variable",
    "-Wno-unused-function",
    "-Wno-conversion",
    "-Wno-implicit-fallthrough",
    "-Wno-sign-compare",
    "-Wno-unused-but-set-variable",
  ]
}

# OpenWeave installs headers into namespaces that don't map directly to their
# location in the source tree. For instance, BLE headers live in src/ble, but
# are placed in include/BleLayer at compile-time. In order to enable this, we
# provide a template here to perform this conversion.
#
# Expected usage:
#
# openweave_headers("BleLayer") {
#   source_dirstem = "relative/path/from/openweave/root" # e.g. 'src/ble'
#   dest_dirstem = "relative/include/path" # e.g. 'BleLayer'
#   sources = [
#     "Ble.h",
#     "BleLayer.h",
#     ...
#   ]
# }
#
# The above will auto-generate a target of the name 'BleLayer_headers', that
# will copy src/ble/Ble.h => include/BleLayer/Ble.h. This target can now be
# used in dependencies.
template("openweave_headers") {
  root_dirstem = rebase_path("//third_party/openweave-core")
  copy(target_name + "_headers") {
    sources = []
    foreach(source, invoker.sources) {
      sources += [ root_dirstem + "/" + invoker.source_dirstem + "/" + source ]
    }
    outputs =
        [ "$target_gen_dir/" + invoker.dest_dirstem + "/{{source_file_part}}" ]
  }
}

openweave_headers("BuildConfig") {
  source_dirstem = "build/config/fuchsia"
  dest_dirstem = "."
  sources = [ "BuildConfig.h" ]
}

openweave_headers("PlatformConfig") {
  source_dirstem = "build/config/fuchsia"
  dest_dirstem = "."
  sources = [ "WeavePlatformConfig.h" ]
}

openweave_headers("ProjectConfig") {
  source_dirstem = "build/config/fuchsia"
  dest_dirstem = "."
  sources = [
    "BleProjectConfig.h",
    "SystemProjectConfig.h",
    "WarmProjectConfig.h",
    "WeaveProjectConfig.h",
  ]
}

# BleLayer
openweave_headers("BleLayer") {
  source_dirstem = "src/ble"
  dest_dirstem = "BleLayer"
  sources = [
    "BLEEndPoint.h",
    "Ble.h",
    "BleApplicationDelegate.h",
    "BleConfig.h",
    "BleError.h",
    "BleLayer.h",
    "BlePlatformDelegate.h",
    "BleUUID.h",
    "WeaveBleServiceData.h",
    "WoBle.h",
  ]
}

# InetLayer
openweave_headers("InetLayer") {
  source_dirstem = "src/inet"
  dest_dirstem = "InetLayer"
  sources = [
    "EndPointBasis.h",
    "IANAConstants.h",
    "IPAddress.h",
    "IPEndPointBasis.h",
    "IPPrefix.h",
    "Inet.h",
    "InetBuffer.h",
    "InetConfig.h",
    "InetError.h",
    "InetFaultInjection.h",
    "InetInterface.h",
    "InetLayer.h",
    "InetLayerBasis.h",
    "InetLayerEvents.h",
    "InetTimer.h",
  ]
  if (inet_want_endpoint_dns) {
    sources += [ "DNSResolver.h" ]
  }
  if (inet_want_endpoint_raw) {
    sources += [ "RawEndPoint.h" ]
  }
  if (inet_want_endpoint_tcp) {
    sources += [ "TCPEndPoint.h" ]
  }
  if (inet_want_endpoint_udp) {
    sources += [ "UDPEndPoint.h" ]
  }
  if (inet_want_endpoint_tun) {
    sources += [ "TunEndPoint.h" ]
  }
  if (weave_system_config_use_sockets) {
    if (inet_want_endpoint_dns) {
      if (inet_config_enable_async_dns_sockets) {
        sources += [ "AsyncDNSResolverSockets.h" ]
      }
    }
  }
}

# SystemLayer
openweave_headers("SystemLayer") {
  source_dirstem = "src/system"
  dest_dirstem = "SystemLayer"
  sources = [
    "SystemAlignSize.h",
    "SystemClock.h",
    "SystemConfig.h",
    "SystemError.h",
    "SystemEvent.h",
    "SystemFaultInjection.h",
    "SystemLayer.h",
    "SystemMutex.h",
    "SystemObject.h",
    "SystemPacketBuffer.h",
    "SystemStats.h",
    "SystemTimer.h",
  ]
}

# Warm
openweave_headers("Warm") {
  source_dirstem = "src/warm"
  dest_dirstem = "Warm"
  sources = [
    "Warm.h",
    "WarmConfig.h",
  ]
}

# Weave - Core
openweave_headers("WeaveCore") {
  source_dirstem = "src/lib/core"
  dest_dirstem = "Weave/Core"
  sources = [
    "HostPortList.h",
    "WeaveBDXConfig.h",
    "WeaveBinding.h",
    "WeaveCircularTLVBuffer.h",
    "WeaveConfig.h",
    "WeaveCore.h",
    "WeaveDMConfig.h",
    "WeaveEncoding.h",
    "WeaveError.h",
    "WeaveEventLoggingConfig.h",
    "WeaveExchangeMgr.h",
    "WeaveFabricState.h",
    "WeaveGlobals.h",
    "WeaveKeyIds.h",
    "WeaveMessageLayer.h",
    "WeaveSecurityMgr.h",
    "WeaveServerBase.h",
    "WeaveStats.h",
    "WeaveTLV.h",
    "WeaveTLVData.hpp",
    "WeaveTLVDebug.hpp",
    "WeaveTLVTags.h",
    "WeaveTLVTypes.h",
    "WeaveTLVUtilities.hpp",
    "WeaveTimeConfig.h",
    "WeaveTunnelConfig.h",
    "WeaveVendorIdentifiers.hpp",
    "WeaveWRMPConfig.h",
  ]
}

openweave_headers("WeaveCommon") {
  source_dirstem = "src/lib/schema/common"
  dest_dirstem = "Weave/Common"
  sources = [ "ResourceTypeEnum.h" ]
}

# Weave - Support
openweave_headers("WeaveSupport_base") {
  source_dirstem = "src/lib/support"
  dest_dirstem = "Weave/Support"
  sources = [
    "ASN1.h",
    "ASN1Config.h",
    "ASN1Error.h",
    "ASN1Macros.h",
    "Base64.h",
    "CodeUtils.h",
    "ErrorStr.h",
    "FibonacciUtils.h",
    "FlagUtils.hpp",
    "ManagedNamespace.hpp",
    "MathUtils.h",
    "NLDLLUtil.h",
    "NestCerts.h",
    "PersistedCounter.h",
    "ProfileStringSupport.hpp",
    "RandUtils.h",
    "SerialNumberUtils.h",
    "SerializationUtils.h",
    "TimeUtils.h",
    "TraitEventUtils.h",
    "WeaveCounter.h",
    "WeaveFaultInjection.h",
    "WeaveNames.h",
    "nlargparser.hpp",
  ]
}

openweave_headers("WeaveSupport_ASN1OID") {
  source_dirstem = "build/config/fuchsia"
  dest_dirstem = "Weave/Support"
  sources = [ "ASN1OID.h" ]
}

openweave_headers("WeaveSupport_crypto") {
  source_dirstem = "src/lib/support/crypto"
  dest_dirstem = "Weave/Support/crypto"
  sources = [
    "AESBlockCipher.h",
    "CTRMode.h",
    "DRBG.h",
    "EllipticCurve.h",
    "HKDF.h",
    "HMAC.h",
    "HashAlgos.h",
    "WeaveCrypto.h",
    "WeaveRNG.h",
  ]
}

openweave_headers("WeaveSupport_logging") {
  source_dirstem = "src/lib/support/logging"
  dest_dirstem = "Weave/Support/logging"
  sources = [
    "DecodedIPPacket.h",
    "WeaveLogging.h",
  ]
}

openweave_headers("WeaveSupport_verhoeff") {
  source_dirstem = "src/lib/support/verhoeff"
  dest_dirstem = "Weave/Support/verhoeff"
  sources = [ "Verhoeff.h" ]
}

openweave_headers("WeaveSupport_pairing_code") {
  source_dirstem = "src/lib/support/pairing-code"
  dest_dirstem = "Weave/Support/pairing-code"
  sources = [ "PairingCodeUtils.h" ]
}

openweave_headers("WeaveSupport_platform") {
  source_dirstem = "src/lib/support/platform"
  dest_dirstem = "Weave/Support/platform"
  sources = [ "PersistedStorage.h" ]
}

group("WeaveSupport_headers") {
  public_deps = [
    ":WeaveSupport_ASN1OID_headers",
    ":WeaveSupport_base_headers",
    ":WeaveSupport_crypto_headers",
    ":WeaveSupport_logging_headers",
    ":WeaveSupport_pairing_code_headers",
    ":WeaveSupport_platform_headers",
    ":WeaveSupport_verhoeff_headers",
  ]
}

# Weave - Profiles
openweave_headers("WeaveProfiles_base") {
  source_dirstem = "src/lib/profiles"
  dest_dirstem = "Weave/Profiles"
  sources = [
    "ProfileCommon.h",
    "WeaveProfiles.h",
  ]
}

openweave_headers("WeaveProfiles_bulk_data_transfer_development") {
  source_dirstem = "src/lib/profiles/bulk-data-transfer/Development"
  dest_dirstem = "Weave/Profiles/bulk-data-transfer/Development"
  sources = [
    "BDXConstants.h",
    "BDXDelegate.h",
    "BDXManagedNamespace.hpp",
    "BDXMessages.h",
    "BDXNode.h",
    "BDXProtocol.h",
    "BDXTransferState.h",
    "BulkDataTransfer.h",
  ]
}

openweave_headers("WeaveProfiles_bulk_data_transfer") {
  source_dirstem = "src/lib/profiles/bulk-data-transfer"
  dest_dirstem = "Weave/Profiles/bulk-data-transfer"
  sources = [
    "BDXManagedNamespace.hpp",
    "BulkDataTransfer.h",
    "WeaveBdxDelegate.h",
  ]
}

openweave_headers("WeaveProfiles_common") {
  source_dirstem = "src/lib/profiles/common"
  dest_dirstem = "Weave/Profiles/common"
  sources = [
    "CommonProfile.h",
    "WeaveMessage.h",
  ]
}

openweave_headers("WeaveProfiles_data_management") {
  source_dirstem = "src/lib/profiles/data-management"
  dest_dirstem = "Weave/Profiles/data-management"
  sources = [
    "Binding.h",
    "ClientDataManager.h",
    "ClientNotifier.h",
    "Command.h",
    "CommandSender.h",
    "DMClient.h",
    "DMConstants.h",
    "DMPublisher.h",
    "DataManagement.h",
    "EventLogging.h",
    "EventLoggingTags.h",
    "EventLoggingTypes.h",
    "EventProcessor.h",
    "LogBDXUpload.h",
    "LoggingConfiguration.h",
    "LoggingManagement.h",
    "MessageDef.h",
    "NotificationEngine.h",
    "ProfileDatabase.h",
    "ProtocolEngine.h",
    "PublisherDataManager.h",
    "SubscriptionClient.h",
    "SubscriptionEngine.h",
    "SubscriptionHandler.h",
    "TopicIdentifier.h",
    "TraitCatalog.h",
    "TraitData.h",
    "TraitPathStore.h",
    "UpdateClient.h",
    "UpdateEncoder.h",
    "ViewClient.h",
    "WdmManagedNamespace.h",
  ]
}

openweave_headers("WeaveProfiles_data_management_legacy") {
  source_dirstem = "src/lib/profiles/data-management/Legacy"
  dest_dirstem = "Weave/Profiles/data-management/Legacy"
  sources = [
    "Binding.h",
    "ClientDataManager.h",
    "ClientNotifier.h",
    "DMClient.h",
    "DMConstants.h",
    "DMPublisher.h",
    "DataManagement.h",
    "ProfileDatabase.h",
    "ProtocolEngine.h",
    "PublisherDataManager.h",
    "TopicIdentifier.h",
    "WdmManagedNamespace.h",
  ]
}

openweave_headers("WeaveProfiles_data_management_current") {
  source_dirstem = "src/lib/profiles/data-management/Current"
  dest_dirstem = "Weave/Profiles/data-management/Current"
  sources = [
    "Command.h",
    "CommandSender.h",
    "DataManagement.h",
    "EventLogging.h",
    "EventLoggingTags.h",
    "EventLoggingTypes.h",
    "EventProcessor.h",
    "LogBDXUpload.h",
    "LoggingConfiguration.h",
    "LoggingManagement.h",
    "MessageDef.h",
    "NotificationEngine.h",
    "ResourceIdentifier.h",
    "SingleResourceTraitCatalog.h",
    "SingleResourceTraitCatalog.ipp",
    "SubscriptionClient.h",
    "SubscriptionEngine.h",
    "SubscriptionHandler.h",
    "TraitCatalog.h",
    "TraitData.h",
    "TraitPathStore.h",
    "UpdateClient.h",
    "UpdateEncoder.h",
    "ViewClient.h",
    "WdmManagedNamespace.h",
  ]
}

openweave_headers("WeaveProfiles_device_control") {
  source_dirstem = "src/lib/profiles/device-control"
  dest_dirstem = "Weave/Profiles/device-control"
  sources = [ "DeviceControl.h" ]
}

openweave_headers("WeaveProfiles_device_description") {
  source_dirstem = "src/lib/profiles/device-description"
  dest_dirstem = "Weave/Profiles/device-description"
  sources = [ "DeviceDescription.h" ]
}

openweave_headers("WeaveProfiles_echo") {
  source_dirstem = "src/lib/profiles/echo"
  dest_dirstem = "Weave/Profiles/echo"
  sources = [ "WeaveEcho.h" ]
}

openweave_headers("WeaveProfiles_echo_current") {
  source_dirstem = "src/lib/profiles/echo/Current"
  dest_dirstem = "Weave/Profiles/echo/Current"
  sources = [ "WeaveEcho.h" ]
}

openweave_headers("WeaveProfiles_echo_next") {
  source_dirstem = "src/lib/profiles/echo/Next"
  dest_dirstem = "Weave/Profiles/echo/Next"
  sources = [
    "WeaveEcho.h",
    "WeaveEchoClient.h",
    "WeaveEchoServer.h",
  ]
}

openweave_headers("WeaveProfiles_fabric_provisioning") {
  source_dirstem = "src/lib/profiles/fabric-provisioning"
  dest_dirstem = "Weave/Profiles/fabric-provisioning"
  sources = [ "FabricProvisioning.h" ]
}

openweave_headers("WeaveProfiles_heartbeat") {
  source_dirstem = "src/lib/profiles/heartbeat"
  dest_dirstem = "Weave/Profiles/heartbeat"
  sources = [ "WeaveHeartbeat.h" ]
}

openweave_headers("WeaveProfiles_locale") {
  source_dirstem = "src/lib/profiles/locale"
  dest_dirstem = "Weave/Profiles/locale"
  sources = [
    "LocaleProfile.hpp",
    "LocaleStatus.hpp",
    "LocaleTags.hpp",
  ]
}

openweave_headers("WeaveProfiles_network_provisioning") {
  source_dirstem = "src/lib/profiles/network-provisioning"
  dest_dirstem = "Weave/Profiles/network-provisioning"
  sources = [
    "NetworkInfo.h",
    "NetworkProvisioning.h",
  ]
}

openweave_headers("WeaveProfiles_security") {
  source_dirstem = "src/lib/profiles/security"
  dest_dirstem = "Weave/Profiles/security"
  sources = [
    "ApplicationKeysStructSchema.h",
    "ApplicationKeysTrait.h",
    "ApplicationKeysTraitDataSink.h",
    "WeaveAccessToken.h",
    "WeaveAppGroupGlobalIds.h",
    "WeaveApplicationKeys.h",
    "WeaveCASE.h",
    "WeaveCert.h",
    "WeaveDummyGroupKeyStore.h",
    "WeaveKeyExport.h",
    "WeaveKeyExportClient.h",
    "WeavePASE.h",
    "WeavePasscodes.h",
    "WeavePrivateKey.h",
    "WeaveProvBundle.h",
    "WeaveProvHash.h",
    "WeaveSecurity.h",
    "WeaveSecurityDebug.h",
    "WeaveSig.h",
    "WeaveTAKE.h",
  ]
}

openweave_headers("WeaveProfiles_service_directory") {
  source_dirstem = "src/lib/profiles/service-directory"
  dest_dirstem = "Weave/Profiles/service-directory"
  sources = [ "ServiceDirectory.h" ]
}

openweave_headers("WeaveProfiles_service_provisioning") {
  source_dirstem = "src/lib/profiles/service-provisioning"
  dest_dirstem = "Weave/Profiles/service-provisioning"
  sources = [ "ServiceProvisioning.h" ]
}

openweave_headers("WeaveProfiles_software_update") {
  source_dirstem = "src/lib/profiles/software-update"
  dest_dirstem = "Weave/Profiles/software-update"
  sources = [
    "SoftwareUpdateProfile.h",
    "WeaveImageAnnounceServer.h",
  ]
}

openweave_headers("WeaveProfiles_time") {
  source_dirstem = "src/lib/profiles/time"
  dest_dirstem = "Weave/Profiles/time"
  sources = [ "WeaveTime.h" ]
}

openweave_headers("WeaveProfiles_token_pairing") {
  source_dirstem = "src/lib/profiles/token-pairing"
  dest_dirstem = "Weave/Profiles/token-pairing"
  sources = [ "TokenPairing.h" ]
}

openweave_headers("WeaveProfiles_status_report") {
  source_dirstem = "src/lib/profiles/status-report"
  dest_dirstem = "Weave/Profiles/status-report"
  sources = [ "StatusReportProfile.h" ]
}

openweave_headers("WeaveProfiles_weave_tunneling") {
  source_dirstem = "src/lib/profiles/weave-tunneling"
  dest_dirstem = "Weave/Profiles/weave-tunneling"
  sources = [
    "WeaveTunnelAgent.h",
    "WeaveTunnelCommon.h",
    "WeaveTunnelConnectionMgr.h",
    "WeaveTunnelControl.h",
  ]
}

openweave_headers("WeaveProfiles_nestlabs_device_description") {
  source_dirstem = "src/lib/profiles/vendor/nestlabs/device-description"
  dest_dirstem = "Weave/Profiles/vendor/nestlabs/device-description"
  sources = [ "NestProductIdentifiers.hpp" ]
}

openweave_headers("WeaveProfiles_nestlabs_thermostat") {
  source_dirstem = "src/lib/profiles/vendor/nestlabs/thermostat"
  dest_dirstem = "Weave/Profiles/vendor/nestlabs/thermostat"
  sources = [ "NestThermostatWeaveConstants.h" ]
}

openweave_headers("WeaveProfiles_nestlabs_dropcam_legacy_pairing") {
  source_dirstem = "src/lib/profiles/vendor/nestlabs/dropcam-legacy-pairing"
  dest_dirstem = "Weave/Profiles/vendor/nestlabs/dropcam-legacy-pairing"
  sources = [ "DropcamLegacyPairing.h" ]
}

group("WeaveProfiles_headers") {
  public_deps = [
    ":WeaveProfiles_base_headers",
    ":WeaveProfiles_bulk_data_transfer_development_headers",
    ":WeaveProfiles_bulk_data_transfer_headers",
    ":WeaveProfiles_common_headers",
    ":WeaveProfiles_data_management_current_headers",
    ":WeaveProfiles_data_management_headers",
    ":WeaveProfiles_device_control_headers",
    ":WeaveProfiles_device_description_headers",
    ":WeaveProfiles_echo_current_headers",
    ":WeaveProfiles_echo_headers",
    ":WeaveProfiles_echo_next_headers",
    ":WeaveProfiles_fabric_provisioning_headers",
    ":WeaveProfiles_heartbeat_headers",
    ":WeaveProfiles_locale_headers",
    ":WeaveProfiles_nestlabs_device_description_headers",
    ":WeaveProfiles_nestlabs_dropcam_legacy_pairing_headers",
    ":WeaveProfiles_nestlabs_thermostat_headers",
    ":WeaveProfiles_network_provisioning_headers",
    ":WeaveProfiles_security_headers",
    ":WeaveProfiles_service_directory_headers",
    ":WeaveProfiles_service_provisioning_headers",
    ":WeaveProfiles_software_update_headers",
    ":WeaveProfiles_status_report_headers",
    ":WeaveProfiles_time_headers",
    ":WeaveProfiles_token_pairing_headers",
    ":WeaveProfiles_weave_tunneling_headers",
  ]
  if (weave_build_legacy_wdm) {
    public_deps += [ ":WeaveProfiles_data_management_legacy_headers" ]
  }
}

openweave_headers("DeviceLayer_common") {
  source_dirstem = "src/adaptations/device-layer/include/Weave/DeviceLayer"
  dest_dirstem = "Weave/DeviceLayer"
  sources = [
    "ConfigurationManager.h",
    "ConnectivityManager.h",
    "GeneralUtils.h",
    "NetworkTelemetryManager.h",
    "PlatformManager.h",
    "SoftwareUpdateManager.h",
    "TimeSyncManager.h",
    "TraitManager.h",
    "WeaveDeviceConfig.h",
    "WeaveDeviceError.h",
    "WeaveDeviceEvent.h",
    "WeaveDeviceLayer.h",
  ]
}

openweave_headers("DeviceLayer_internal") {
  source_dirstem =
      "src/adaptations/device-layer/include/Weave/DeviceLayer/internal"
  dest_dirstem = "Weave/DeviceLayer/internal"
  sources = [
    "BLEManager.h",
    "DeviceControlServer.h",
    "DeviceDescriptionServer.h",
    "DeviceIdentityTraitDataSource.h",
    "DeviceNetworkInfo.h",
    "EchoServer.h",
    "EventLogging.h",
    "FabricProvisioningServer.h",
    "FactoryProvisioning.h",
    "FactoryProvisioning.ipp",
    "GenericConfigurationManagerImpl.h",
    "GenericConfigurationManagerImpl.ipp",
    "GenericConnectivityManagerImpl.h",
    "GenericConnectivityManagerImpl_BLE.h",
    "GenericConnectivityManagerImpl_BLE.ipp",
    "GenericConnectivityManagerImpl_NoBLE.h",
    "GenericConnectivityManagerImpl_NoThread.h",
    "GenericConnectivityManagerImpl_NoWiFi.h",
    "GenericConnectivityManagerImpl_Thread.h",
    "GenericConnectivityManagerImpl_Thread.ipp",
    "GenericNetworkProvisioningServerImpl.h",
    "GenericNetworkProvisioningServerImpl.ipp",
    "GenericPlatformManagerImpl.h",
    "GenericPlatformManagerImpl.ipp",
    "GenericSoftwareUpdateManagerImpl.h",
    "GenericSoftwareUpdateManagerImpl.ipp",
    "GenericSoftwareUpdateManagerImpl_BDX.h",
    "GenericSoftwareUpdateManagerImpl_BDX.ipp",
    "LocaleSettingsTraitDataSink.h",
    "NetworkProvisioningServer.h",
    "ServiceDirectoryManager.h",
    "ServiceProvisioningServer.h",
    "ServiceTunnelAgent.h",
    "WeaveDeviceLayerInternal.h",
  ]
}

openweave_headers("DeviceLayer_trait_support_firmware") {
  source_dirstem = "src/adaptations/device-layer/trait-support"
  dest_dirstem = "nest/trait/firmware"
  sources = [ "nest/trait/firmware/SoftwareUpdateTrait.h" ]
}

openweave_headers("DeviceLayer_trait_support_network") {
  source_dirstem = "src/adaptations/device-layer/trait-support"
  dest_dirstem = "nest/trait/network"
  sources = [
    "nest/trait/network/TelemetryNetworkTrait.h",
    "nest/trait/network/TelemetryNetworkWifiTrait.h",
    "nest/trait/network/TelemetryNetworkWpanTrait.h",
  ]
}

openweave_headers("DeviceLayer_trait_support_common") {
  source_dirstem = "src/adaptations/device-layer/trait-support"
  dest_dirstem = "weave/common"
  sources = [ "weave/common/ProfileSpecificStatusCodeStructSchema.h" ]
}

openweave_headers("DeviceLayer_trait_support_description") {
  source_dirstem = "src/adaptations/device-layer/trait-support"
  dest_dirstem = "weave/trait/description"
  sources = [
    "weave/trait/description/DeviceIdentityTrait.h",
    "weave/trait/locale/LocaleSettingsTrait.h",
  ]
}

openweave_headers("DeviceLayer_trait_support_telemetry") {
  source_dirstem = "src/adaptations/device-layer/trait-support"
  dest_dirstem = "weave/trait/telemetry/tunnel"
  sources = [ "weave/trait/telemetry/tunnel/TelemetryTunnelTrait.h" ]
}

group("DeviceLayer_headers") {
  public_deps = [
    ":DeviceLayer_common_headers",
    ":DeviceLayer_internal_headers",
    ":DeviceLayer_trait_support_common_headers",
    ":DeviceLayer_trait_support_description_headers",
    ":DeviceLayer_trait_support_firmware_headers",
    ":DeviceLayer_trait_support_network_headers",
    ":DeviceLayer_trait_support_telemetry_headers",
  ]
}

openweave_headers("WeaveVersion") {
  source_dirstem = "build/config/fuchsia"
  dest_dirstem = "Weave"
  sources = [ "WeaveVersion.h" ]
}

# Set of public headers for libraries within OpenWeave.
group("public_headers") {
  public_deps = [
    ":BleLayer_headers",
    ":BuildConfig_headers",
    ":InetLayer_headers",
    ":PlatformConfig_headers",
    ":ProjectConfig_headers",
    ":SystemLayer_headers",
    ":Warm_headers",
    ":WeaveCommon_headers",
    ":WeaveCore_headers",
    ":WeaveProfiles_headers",
    ":WeaveSupport_headers",
    ":WeaveVersion_headers",
  ]
}

group("common") {
  public_deps = [
    ":public_headers",
    "//sdk/fidl/fuchsia.net.interfaces.admin",
    "//sdk/fidl/fuchsia.net.stack",
    "//sdk/fidl/fuchsia.net.tun",
    "//sdk/fidl/fuchsia.netstack",
    "//sdk/lib/sys/cpp",
    "//third_party/boringssl",
    "//third_party/micro-ecc",
    "//third_party/nlassert",
    "//third_party/nlio",
    "//third_party/openssl-ecjpake",
    "//zircon/public/lib/zx",
  ]
}
