# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../build/webrtc.gni")

group("xmpp") {
  deps = [
    ":rtc_xmpp",
  ]
}

config("xmpp_warnings_config") {
  # GN orders flags on a target before flags from configs. The default config
  # adds these flags so to cancel them out they need to come from a config and
  # cannot be on the target directly.
  if (is_android) {
    cflags = [ "-Wno-error" ]
  }
}

config("xmpp_inherited_config") {
  defines = [
    "FEATURE_ENABLE_SSL",
    "FEATURE_ENABLE_VOICEMAIL",
  ]
}

source_set("rtc_xmpp") {
  cflags = []
  sources = [
    "asyncsocket.h",
    "constants.cc",
    "constants.h",
    "jid.cc",
    "jid.h",
    "plainsaslhandler.h",
    "prexmppauth.h",
    "saslcookiemechanism.h",
    "saslhandler.h",
    "saslmechanism.cc",
    "saslmechanism.h",
    "saslplainmechanism.h",
    "xmppclient.cc",
    "xmppclient.h",
    "xmppclientsettings.h",
    "xmppengine.h",
    "xmppengineimpl.cc",
    "xmppengineimpl.h",
    "xmppengineimpl_iq.cc",
    "xmpplogintask.cc",
    "xmpplogintask.h",
    "xmppstanzaparser.cc",
    "xmppstanzaparser.h",
    "xmpptask.cc",
    "xmpptask.h",
  ]

  defines = [ "FEATURE_ENABLE_SSL" ]

  deps = [
    "../../base:rtc_base",
    "../xmllite",
  ]

  if (rtc_build_expat) {
    deps += [ "//third_party/expat" ]
    public_deps = [
      "//third_party/expat",
    ]
  }

  configs += [
    "../..:common_config",
    ":xmpp_warnings_config",
  ]

  public_configs = [
    "../..:common_inherited_config",
    ":xmpp_inherited_config",
  ]

  if (build_with_chromium) {
    if (is_nacl) {
      deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
    }
  } else {
    sources += [
      "chatroommodule.h",
      "chatroommoduleimpl.cc",
      "discoitemsquerytask.cc",
      "discoitemsquerytask.h",
      "hangoutpubsubclient.cc",
      "hangoutpubsubclient.h",
      "iqtask.cc",
      "iqtask.h",
      "module.h",
      "moduleimpl.cc",
      "moduleimpl.h",
      "mucroomconfigtask.cc",
      "mucroomconfigtask.h",
      "mucroomdiscoverytask.cc",
      "mucroomdiscoverytask.h",
      "mucroomlookuptask.cc",
      "mucroomlookuptask.h",
      "mucroomuniquehangoutidtask.cc",
      "mucroomuniquehangoutidtask.h",
      "pingtask.cc",
      "pingtask.h",
      "presenceouttask.cc",
      "presenceouttask.h",
      "presencereceivetask.cc",
      "presencereceivetask.h",
      "presencestatus.cc",
      "presencestatus.h",
      "pubsub_task.cc",
      "pubsub_task.h",
      "pubsubclient.cc",
      "pubsubclient.h",
      "pubsubstateclient.cc",
      "pubsubstateclient.h",
      "pubsubtasks.cc",
      "pubsubtasks.h",
      "receivetask.cc",
      "receivetask.h",
      "rostermodule.h",
      "rostermoduleimpl.cc",
      "rostermoduleimpl.h",
      "xmppauth.cc",
      "xmppauth.h",
      "xmpppump.cc",
      "xmpppump.h",
      "xmppsocket.cc",
      "xmppsocket.h",
      "xmppthread.cc",
      "xmppthread.h",
    ]

    defines += [
      "FEATURE_ENABLE_VOICEMAIL",
      "FEATURE_ENABLE_PSTN",
    ]

    if (is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      configs -= [ "//build/config/clang:find_bad_constructs" ]
    }
  }

  if (is_posix && is_debug) {
    # The Chromium build/common.gypi defines this for all posix
    # _except_ for ios & mac.  We want it there as well, e.g.
    # because ASSERT and friends trigger off of it.
    defines += [ "_DEBUG" ]
  }
}