summaryrefslogtreecommitdiff
path: root/BUILD.gn
blob: d29beed4df1b295288e36b0015f9cf7f56983f61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Copyright 2014 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 for us and everybody else depending on openssl.
config("openssl_config") {
  include_dirs = []
  if (cpu_arch == "x64") {
    # Ensure the 64-bit opensslconf.h header is used in preference to the one
    # in openssl/include.
    include_dirs += [ "config/x64" ]
  }

  include_dirs += [ "openssl/include" ]
}

# Config internal to this build file.
config("openssl_internal_config") {
  visibility = ":*"  # Only targets in this file can depend on this.
}

# The list of OpenSSL files is kept in openssl.gypi. Read it.
gypi_values = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("//third_party/openssl/openssl.gypi") ],
    "scope",
    [ "//third_party/openssl/openssl.gypi" ])

component("openssl") {
  sources = gypi_values.openssl_common_sources

  defines = gypi_values.openssl_common_defines
  defines += [
    "PURIFY",
    "MONOLITH",
  ]

  direct_dependent_configs = [ ":openssl_config" ]

  cflags = []

  # Also gets the include dirs from :openssl_config
  include_dirs = [
    ".",
    "openssl",
    "openssl/crypto",
    "openssl/crypto/asn1",
    "openssl/crypto/evp",
    "openssl/crypto/modes",
  ]

  if (is_posix && !is_android) {
    defines += [
      # ENGINESDIR must be defined if OPENSSLDIR is.
      "ENGINESDIR=\"/dev/null\"",
      # Set to ubuntu default path for convenience. If necessary, override
      # this at runtime with the SSL_CERT_DIR environment variable.
      "OPENSSLDIR=\"/etc/ssl\"",
    ]
  }

  if (cpu_arch == "x64") {
    sources += gypi_values.openssl_x86_64_sources
    sources -= gypi_values.openssl_x86_64_source_excludes
    defines += gypi_values.openssl_x86_64_defines
  } else if (cpu_arch == "x86") {
    sources += gypi_values.openssl_x86_sources
    sources -= gypi_values.openssl_x86_source_excludes
    defines += gypi_values.openssl_x86_defines
  } else if (cpu_arch == "arm") {
    sources += gypi_values.openssl_arm_sources
    sources -= gypi_values.openssl_arm_source_excludes
    defines += gypi_values.openssl_arm_defines
  } else if (cpu_arch == "mips") {
    sources += gypi_values.openssl_mips_sources
    sources -= gypi_values.openssl_mips_source_excludes
    defines += gypi_values.openssl_mips_defines
  }

  if (is_clang) {
    cflags += [
      # OpenSSL has a few |if ((foo == NULL))| checks.
      "-Wno-parentheses-equality",
      # OpenSSL uses several function-style macros and then ignores the
      # returned value.
      "-Wno-unused-value",
    ]
  } else {
    cflags += [
      "-Wno-unused-variable",
    ]
  }
}