| # 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") |
| import("mbedtls.gni") |
| |
| if (dir_pw_third_party_mbedtls != "") { |
| # The list currently includes all source files for build. |
| mbedtls_sources = [ |
| "library/aes.c", |
| "library/aesni.c", |
| "library/arc4.c", |
| "library/aria.c", |
| "library/asn1parse.c", |
| "library/asn1write.c", |
| "library/base64.c", |
| "library/bignum.c", |
| "library/blowfish.c", |
| "library/camellia.c", |
| "library/ccm.c", |
| "library/certs.c", |
| "library/chacha20.c", |
| "library/chachapoly.c", |
| "library/cipher.c", |
| "library/cipher_wrap.c", |
| "library/cmac.c", |
| "library/ctr_drbg.c", |
| "library/debug.c", |
| "library/des.c", |
| "library/dhm.c", |
| "library/ecdh.c", |
| "library/ecdsa.c", |
| "library/ecjpake.c", |
| "library/ecp.c", |
| "library/ecp_curves.c", |
| "library/entropy.c", |
| "library/entropy_poll.c", |
| "library/error.c", |
| "library/gcm.c", |
| "library/havege.c", |
| "library/hkdf.c", |
| "library/hmac_drbg.c", |
| "library/md.c", |
| "library/md2.c", |
| "library/md4.c", |
| "library/md5.c", |
| "library/memory_buffer_alloc.c", |
| "library/net_sockets.c", |
| "library/nist_kw.c", |
| "library/oid.c", |
| "library/padlock.c", |
| "library/pem.c", |
| "library/pk.c", |
| "library/pk_wrap.c", |
| "library/pkcs11.c", |
| "library/pkcs12.c", |
| "library/pkcs5.c", |
| "library/pkparse.c", |
| "library/pkwrite.c", |
| "library/platform.c", |
| "library/platform_util.c", |
| "library/poly1305.c", |
| "library/psa_crypto.c", |
| "library/psa_crypto_driver_wrappers.c", |
| "library/psa_crypto_se.c", |
| "library/psa_crypto_slot_management.c", |
| "library/psa_crypto_storage.c", |
| "library/psa_its_file.c", |
| "library/ripemd160.c", |
| "library/rsa.c", |
| "library/rsa_internal.c", |
| "library/sha1.c", |
| "library/sha256.c", |
| "library/sha512.c", |
| "library/ssl_cache.c", |
| "library/ssl_ciphersuites.c", |
| "library/ssl_cli.c", |
| "library/ssl_cookie.c", |
| "library/ssl_msg.c", |
| "library/ssl_srv.c", |
| "library/ssl_ticket.c", |
| "library/ssl_tls.c", |
| "library/ssl_tls13_keys.c", |
| "library/threading.c", |
| "library/timing.c", |
| "library/version.c", |
| "library/version_features.c", |
| "library/x509.c", |
| "library/x509_create.c", |
| "library/x509_crl.c", |
| "library/x509_crt.c", |
| "library/x509_csr.c", |
| "library/x509write_crt.c", |
| "library/x509write_csr.c", |
| "library/xtea.c", |
| ] |
| |
| mbedtls_configs = [ |
| { |
| name = "default" |
| config_header = "configs/config_default.h" |
| }, |
| # TODO(zyecheng): Add more working configs for code-size optimization. |
| ] |
| |
| foreach(ele, mbedtls_configs) { |
| config_name = ele.name + "_config" |
| config(config_name) { |
| # Custom config file is specified by macro MBEDTLS_CONFIG_FILE |
| # for MbedTLS |
| defines = [ "MBEDTLS_CONFIG_FILE=\"${ele.config_header}\"" ] |
| } |
| |
| srcset_name = ele.name + "_config_srcset" |
| pw_source_set(srcset_name) { |
| public = [ |
| "configs/config_pigweed_common.h", |
| ele.config_header, |
| ] |
| public_configs = [ |
| ":${config_name}", |
| ":mbedtls_common_config", |
| ] |
| } |
| } |
| |
| config("mbedtls_common_config") { |
| include_dirs = [ |
| "$dir_pw_third_party_mbedtls", |
| "$dir_pw_third_party_mbedtls/include", |
| "$dir_pw_third_party/mbedtls", |
| ] |
| cflags = [ |
| "-Wno-error=cast-qual", |
| "-Wno-error=redundant-decls", |
| "-w", |
| ] |
| } |
| |
| pw_source_set("mbedtls") { |
| sources = [] |
| foreach(source, mbedtls_sources) { |
| sources += [ "$dir_pw_third_party_mbedtls/" + source ] |
| } |
| public_deps = [ |
| ":${pw_third_party_mbedtls_CONFIG}_config_srcset", |
| "$dir_pw_tls_client:time", |
| ] |
| } |
| } else { |
| group("mbedtls") { |
| } |
| } |