Home | History | Annotate | Download | only in openssl
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # Config for us and everybody else depending on openssl.
      6 config("openssl_config") {
      7   include_dirs = []
      8   if (cpu_arch == "x64") {
      9     # Ensure the 64-bit opensslconf.h header is used in preference to the one
     10     # in openssl/include.
     11     include_dirs += [ "config/x64" ]
     12   }
     13 
     14   include_dirs += [ "openssl/include" ]
     15 }
     16 
     17 # Config internal to this build file.
     18 config("openssl_internal_config") {
     19   visibility = ":*"  # Only targets in this file can depend on this.
     20 }
     21 
     22 # The list of OpenSSL files is kept in openssl.gypi. Read it.
     23 gypi_values = exec_script(
     24     "//build/gypi_to_gn.py",
     25     [ rebase_path("//third_party/openssl/openssl.gypi") ],
     26     "scope",
     27     [ "//third_party/openssl/openssl.gypi" ])
     28 
     29 component("openssl") {
     30   sources = gypi_values.openssl_common_sources
     31 
     32   defines = gypi_values.openssl_common_defines
     33   defines += [
     34     "PURIFY",
     35     "MONOLITH",
     36   ]
     37 
     38   direct_dependent_configs = [ ":openssl_config" ]
     39 
     40   cflags = []
     41 
     42   # Also gets the include dirs from :openssl_config
     43   include_dirs = [
     44     ".",
     45     "openssl",
     46     "openssl/crypto",
     47     "openssl/crypto/asn1",
     48     "openssl/crypto/evp",
     49     "openssl/crypto/modes",
     50   ]
     51 
     52   if (is_posix && !is_android) {
     53     defines += [
     54       # ENGINESDIR must be defined if OPENSSLDIR is.
     55       "ENGINESDIR=\"/dev/null\"",
     56       # Set to ubuntu default path for convenience. If necessary, override
     57       # this at runtime with the SSL_CERT_DIR environment variable.
     58       "OPENSSLDIR=\"/etc/ssl\"",
     59     ]
     60   }
     61 
     62   if (cpu_arch == "x64") {
     63     sources += gypi_values.openssl_x86_64_sources
     64     sources -= gypi_values.openssl_x86_64_source_excludes
     65     defines += gypi_values.openssl_x86_64_defines
     66   } else if (cpu_arch == "x86") {
     67     sources += gypi_values.openssl_x86_sources
     68     sources -= gypi_values.openssl_x86_source_excludes
     69     defines += gypi_values.openssl_x86_defines
     70   } else if (cpu_arch == "arm") {
     71     # The ARM sources do not compile with full warnings enabled.
     72     configs -= [ "//build/config/compiler:chromium_code" ]
     73     configs += [ "//build/config/compiler:no_chromium_code" ]
     74 
     75     sources += gypi_values.openssl_arm_sources
     76     sources -= gypi_values.openssl_arm_source_excludes
     77     defines += gypi_values.openssl_arm_defines
     78   } else if (cpu_arch == "mips") {
     79     sources += gypi_values.openssl_mips_sources
     80     sources -= gypi_values.openssl_mips_source_excludes
     81     defines += gypi_values.openssl_mips_defines
     82   }
     83 
     84   if (is_clang) {
     85     cflags += [
     86       # OpenSSL has a few |if ((foo == NULL))| checks.
     87       "-Wno-parentheses-equality",
     88       # OpenSSL uses several function-style macros and then ignores the
     89       # returned value.
     90       "-Wno-unused-value",
     91     ]
     92   } else {
     93     cflags += [
     94       "-Wno-unused-variable",
     95     ]
     96   }
     97 }
     98