# 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" ]
  }

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

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

  sources = [
    "authcert.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",
    "SSLerrs.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",
    "bodge/secitem_array.c",
  ]

  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) {
    cflags += [ "/wd4267" ]  # Disable warning: Conversion from size_t to 'type'.

    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_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" ]
  }
}
