# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("ssl_config") {
  include_dirs = [ "." ]

  if (is_mac || is_win) {
    defines = [ "NSS_PLATFORM_CLIENT_AUTH" ]
  }
}

component("libssl") {
  output_name = "crssl"

  sources = [
    "SSLerrs.h",
    "authcert.c",
    "bodge/secitem_array.c",
    "cmpcert.c",
    "derive.c",
    "dtlscon.c",
    "preenc.h",
    "prelib.c",
    "ssl.h",
    "ssl3con.c",
    "ssl3ecc.c",
    "ssl3ext.c",
    "ssl3gthr.c",
    "ssl3prot.h",
    "sslauth.c",
    "sslcon.c",
    "ssldef.c",
    "sslenum.c",
    "sslerr.c",
    "sslerr.h",
    "sslerrstrs.c",
    "sslgathr.c",
    "sslimpl.h",
    "sslinfo.c",
    "sslinit.c",
    "sslmutex.c",
    "sslmutex.h",
    "sslnonce.c",
    "sslplatf.c",
    "sslproto.h",
    "sslreveal.c",
    "sslsecur.c",
    "sslsnce.c",
    "sslsock.c",
    "sslt.h",
    "ssltrace.c",
    "sslver.c",
    "unix_err.c",
    "unix_err.h",
    "win32err.c",
    "win32err.h",
  ]

  public_configs = [ ":ssl_config" ]

  cflags = []
  defines = [
    "NO_PKCS11_BYPASS",
    "NSS_ENABLE_ECC",
    "USE_UTIL_DIRECTLY",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  if (is_win) {
    sources -= [
      "unix_err.c",
      "unix_err.h",
    ]
    if (component_mode == "shared_library") {
      ldflags = [ "/DEF:" + rebase_path("exports_win.def", root_build_dir) ]
    }
  } else if (is_linux) {
    if (component_mode == "shared_library") {
      configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
    }

    libs = [ "dl" ]

    include_dirs = [ "bodge" ]

    # Must be after ssl_config since we want our SSL headers to take
    # precedence.
    public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ]
  } else if (is_mac) {
    libs = [ "Security.framework" ]
  }

  if (is_clang) {
    # SSL triggers some of these Clang warnings.
    configs -= [ "//build/config/clang:extra_warnings" ]

    # There is a broken header guard in /usr/include/nss/secmod.h:
    # https://bugzilla.mozilla.org/show_bug.cgi?id=884072
    cflags = [ "-Wno-header-guard" ]
  }

  if (is_posix) {
    sources -= [
      "win32err.c",
      "win32err.h",
    ]
  }

  if (is_mac || is_ios) {
    defines += [
      "XP_UNIX",
      "DARWIN",
      "XP_MACOSX",
    ]
  }

  if (is_mac || is_ios || is_win) {
    sources -= [ "bodge/secitem_array.c" ]
    public_deps = [
      "//third_party/nss:nspr",
      "//third_party/nss:nss",
    ]
  }

  if (is_debug) {
    defines += [ "DEBUG" ]
  }
}
