| # Copyright 2021 The Pigweed Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| import("//build_overrides/pigweed.gni") |
| import("$dir_pw_build/target_types.gni") |
| |
| declare_args() { |
| # If compiling backends with boringssl, this variable is set to the path to the |
| # boringssl source code. When set, a pw_source_set for the boringssl library is |
| # created at "$dir_pw_third_party/boringssl". |
| dir_pw_third_party_boringssl = "" |
| } |
| |
| if (dir_pw_third_party_boringssl != "") { |
| import("$dir_pw_third_party_boringssl/BUILD.generated.gni") |
| |
| config("boringssl_public_config") { |
| include_dirs = [ |
| "$dir_pw_third_party_boringssl/src/include", |
| "public", |
| ] |
| cflags = [ |
| "-Wno-cast-qual", |
| "-Wno-ignored-qualifiers", |
| ] |
| |
| # This can be removed once boringssl threading primitives are implemented, |
| # i.e. using pw_sync, and when we have a posix style socket layer. |
| defines = |
| [ "OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED" ] |
| } |
| |
| config("boringssl_internal_config") { |
| defines = [ |
| # Enable virtual desctructor and compile-time check of pure virtual base class |
| "BORINGSSL_ALLOW_CXX_RUNTIME", |
| |
| # Code size optimiaztion |
| "OPENSSL_SMALL", |
| |
| # The ARM assembly code is only for cortex-A. |
| "OPENSSL_NO_ASM", |
| |
| # Disable assert, which may additionally link in unwanted binaries via |
| # argument evaluation. |
| "NDEBUG", |
| ] |
| cflags = [ |
| "-Wno-unused-function", |
| "-Wno-conversion", |
| "-Wno-unused-parameter", |
| "-Wno-char-subscripts", |
| ] |
| cflags_cc = [ |
| "-fpermissive", |
| "-Wno-error", # To get through the -Werror=permissive error |
| ] |
| include_dirs = [ "$dir_pw_third_party_boringssl" ] |
| } |
| |
| # Remove sources that require file system and posix socket support |
| excluded_sources = [ |
| "src/crypto/bio/connect.c", |
| "src/crypto/bio/fd.c", |
| "src/crypto/bio/socket.c", |
| "src/crypto/bio/socket_helper.c", |
| ] |
| |
| pw_source_set("boringssl") { |
| sources = [ "crypto_sysrand.cc" ] |
| foreach(source, crypto_sources - excluded_sources + ssl_sources) { |
| sources += [ "$dir_pw_third_party_boringssl/$source" ] |
| } |
| public_configs = [ ":boringssl_public_config" ] |
| configs = [ ":boringssl_internal_config" ] |
| |
| # Contains a faked "sysdeps/sys/socket.h" |
| # Can be removed once posix socket layer in Pigweed is supported. |
| include_dirs = [ "sysdeps" ] |
| } |
| } else { |
| group("boringssl") { |
| } |
| } |