1*61c4878aSAndroid Build Coastguard Worker# Copyright 2021 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni") 16*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/generate_toolchain.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("mbedtls.gni") 19*61c4878aSAndroid Build Coastguard Worker 20*61c4878aSAndroid Build Coastguard Workerif (dir_pw_third_party_mbedtls != "") { 21*61c4878aSAndroid Build Coastguard Worker # All source files for mbedtls-2.26.0 released on 2021-03-12 22*61c4878aSAndroid Build Coastguard Worker mbedtls_v2_sources = [ 23*61c4878aSAndroid Build Coastguard Worker "library/aes.c", 24*61c4878aSAndroid Build Coastguard Worker "library/aesni.c", 25*61c4878aSAndroid Build Coastguard Worker "library/arc4.c", 26*61c4878aSAndroid Build Coastguard Worker "library/aria.c", 27*61c4878aSAndroid Build Coastguard Worker "library/asn1parse.c", 28*61c4878aSAndroid Build Coastguard Worker "library/asn1write.c", 29*61c4878aSAndroid Build Coastguard Worker "library/base64.c", 30*61c4878aSAndroid Build Coastguard Worker "library/bignum.c", 31*61c4878aSAndroid Build Coastguard Worker "library/blowfish.c", 32*61c4878aSAndroid Build Coastguard Worker "library/camellia.c", 33*61c4878aSAndroid Build Coastguard Worker "library/ccm.c", 34*61c4878aSAndroid Build Coastguard Worker "library/certs.c", 35*61c4878aSAndroid Build Coastguard Worker "library/chacha20.c", 36*61c4878aSAndroid Build Coastguard Worker "library/chachapoly.c", 37*61c4878aSAndroid Build Coastguard Worker "library/cipher.c", 38*61c4878aSAndroid Build Coastguard Worker "library/cipher_wrap.c", 39*61c4878aSAndroid Build Coastguard Worker "library/cmac.c", 40*61c4878aSAndroid Build Coastguard Worker "library/ctr_drbg.c", 41*61c4878aSAndroid Build Coastguard Worker "library/debug.c", 42*61c4878aSAndroid Build Coastguard Worker "library/des.c", 43*61c4878aSAndroid Build Coastguard Worker "library/dhm.c", 44*61c4878aSAndroid Build Coastguard Worker "library/ecdh.c", 45*61c4878aSAndroid Build Coastguard Worker "library/ecdsa.c", 46*61c4878aSAndroid Build Coastguard Worker "library/ecjpake.c", 47*61c4878aSAndroid Build Coastguard Worker "library/ecp.c", 48*61c4878aSAndroid Build Coastguard Worker "library/ecp_curves.c", 49*61c4878aSAndroid Build Coastguard Worker "library/entropy.c", 50*61c4878aSAndroid Build Coastguard Worker "library/entropy_poll.c", 51*61c4878aSAndroid Build Coastguard Worker "library/error.c", 52*61c4878aSAndroid Build Coastguard Worker "library/gcm.c", 53*61c4878aSAndroid Build Coastguard Worker "library/havege.c", 54*61c4878aSAndroid Build Coastguard Worker "library/hkdf.c", 55*61c4878aSAndroid Build Coastguard Worker "library/hmac_drbg.c", 56*61c4878aSAndroid Build Coastguard Worker "library/md.c", 57*61c4878aSAndroid Build Coastguard Worker "library/md2.c", 58*61c4878aSAndroid Build Coastguard Worker "library/md4.c", 59*61c4878aSAndroid Build Coastguard Worker "library/md5.c", 60*61c4878aSAndroid Build Coastguard Worker "library/memory_buffer_alloc.c", 61*61c4878aSAndroid Build Coastguard Worker "library/net_sockets.c", 62*61c4878aSAndroid Build Coastguard Worker "library/nist_kw.c", 63*61c4878aSAndroid Build Coastguard Worker "library/oid.c", 64*61c4878aSAndroid Build Coastguard Worker "library/padlock.c", 65*61c4878aSAndroid Build Coastguard Worker "library/pem.c", 66*61c4878aSAndroid Build Coastguard Worker "library/pk.c", 67*61c4878aSAndroid Build Coastguard Worker "library/pk_wrap.c", 68*61c4878aSAndroid Build Coastguard Worker "library/pkcs11.c", 69*61c4878aSAndroid Build Coastguard Worker "library/pkcs12.c", 70*61c4878aSAndroid Build Coastguard Worker "library/pkcs5.c", 71*61c4878aSAndroid Build Coastguard Worker "library/pkparse.c", 72*61c4878aSAndroid Build Coastguard Worker "library/pkwrite.c", 73*61c4878aSAndroid Build Coastguard Worker "library/platform.c", 74*61c4878aSAndroid Build Coastguard Worker "library/platform_util.c", 75*61c4878aSAndroid Build Coastguard Worker "library/poly1305.c", 76*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto.c", 77*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_driver_wrappers.c", 78*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_se.c", 79*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_slot_management.c", 80*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_storage.c", 81*61c4878aSAndroid Build Coastguard Worker "library/psa_its_file.c", 82*61c4878aSAndroid Build Coastguard Worker "library/ripemd160.c", 83*61c4878aSAndroid Build Coastguard Worker "library/rsa.c", 84*61c4878aSAndroid Build Coastguard Worker "library/rsa_internal.c", 85*61c4878aSAndroid Build Coastguard Worker "library/sha1.c", 86*61c4878aSAndroid Build Coastguard Worker "library/sha256.c", 87*61c4878aSAndroid Build Coastguard Worker "library/sha512.c", 88*61c4878aSAndroid Build Coastguard Worker "library/ssl_cache.c", 89*61c4878aSAndroid Build Coastguard Worker "library/ssl_ciphersuites.c", 90*61c4878aSAndroid Build Coastguard Worker "library/ssl_cli.c", 91*61c4878aSAndroid Build Coastguard Worker "library/ssl_cookie.c", 92*61c4878aSAndroid Build Coastguard Worker "library/ssl_msg.c", 93*61c4878aSAndroid Build Coastguard Worker "library/ssl_srv.c", 94*61c4878aSAndroid Build Coastguard Worker "library/ssl_ticket.c", 95*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls.c", 96*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls13_keys.c", 97*61c4878aSAndroid Build Coastguard Worker "library/threading.c", 98*61c4878aSAndroid Build Coastguard Worker "library/timing.c", 99*61c4878aSAndroid Build Coastguard Worker "library/version.c", 100*61c4878aSAndroid Build Coastguard Worker "library/version_features.c", 101*61c4878aSAndroid Build Coastguard Worker "library/x509.c", 102*61c4878aSAndroid Build Coastguard Worker "library/x509_create.c", 103*61c4878aSAndroid Build Coastguard Worker "library/x509_crl.c", 104*61c4878aSAndroid Build Coastguard Worker "library/x509_crt.c", 105*61c4878aSAndroid Build Coastguard Worker "library/x509_csr.c", 106*61c4878aSAndroid Build Coastguard Worker "library/x509write_crt.c", 107*61c4878aSAndroid Build Coastguard Worker "library/x509write_csr.c", 108*61c4878aSAndroid Build Coastguard Worker "library/xtea.c", 109*61c4878aSAndroid Build Coastguard Worker ] 110*61c4878aSAndroid Build Coastguard Worker 111*61c4878aSAndroid Build Coastguard Worker # All source files for mbedtls-3.2.1 released on 2022-07-12 112*61c4878aSAndroid Build Coastguard Worker mbedtls_v3_sources = [ 113*61c4878aSAndroid Build Coastguard Worker "library/aes.c", 114*61c4878aSAndroid Build Coastguard Worker "library/aesce.c", 115*61c4878aSAndroid Build Coastguard Worker "library/aesni.c", 116*61c4878aSAndroid Build Coastguard Worker "library/aria.c", 117*61c4878aSAndroid Build Coastguard Worker "library/asn1parse.c", 118*61c4878aSAndroid Build Coastguard Worker "library/asn1write.c", 119*61c4878aSAndroid Build Coastguard Worker "library/base64.c", 120*61c4878aSAndroid Build Coastguard Worker "library/bignum.c", 121*61c4878aSAndroid Build Coastguard Worker "library/bignum_core.c", 122*61c4878aSAndroid Build Coastguard Worker "library/bignum_mod.c", 123*61c4878aSAndroid Build Coastguard Worker "library/bignum_mod_raw.c", 124*61c4878aSAndroid Build Coastguard Worker "library/camellia.c", 125*61c4878aSAndroid Build Coastguard Worker "library/ccm.c", 126*61c4878aSAndroid Build Coastguard Worker "library/chacha20.c", 127*61c4878aSAndroid Build Coastguard Worker "library/chachapoly.c", 128*61c4878aSAndroid Build Coastguard Worker "library/cipher.c", 129*61c4878aSAndroid Build Coastguard Worker "library/cipher_wrap.c", 130*61c4878aSAndroid Build Coastguard Worker "library/cmac.c", 131*61c4878aSAndroid Build Coastguard Worker "library/constant_time.c", 132*61c4878aSAndroid Build Coastguard Worker "library/ctr_drbg.c", 133*61c4878aSAndroid Build Coastguard Worker "library/debug.c", 134*61c4878aSAndroid Build Coastguard Worker "library/des.c", 135*61c4878aSAndroid Build Coastguard Worker "library/dhm.c", 136*61c4878aSAndroid Build Coastguard Worker "library/ecdh.c", 137*61c4878aSAndroid Build Coastguard Worker "library/ecdsa.c", 138*61c4878aSAndroid Build Coastguard Worker "library/ecjpake.c", 139*61c4878aSAndroid Build Coastguard Worker "library/ecp.c", 140*61c4878aSAndroid Build Coastguard Worker "library/ecp_curves.c", 141*61c4878aSAndroid Build Coastguard Worker "library/ecp_curves_new.c", 142*61c4878aSAndroid Build Coastguard Worker "library/entropy.c", 143*61c4878aSAndroid Build Coastguard Worker "library/entropy_poll.c", 144*61c4878aSAndroid Build Coastguard Worker "library/error.c", 145*61c4878aSAndroid Build Coastguard Worker "library/gcm.c", 146*61c4878aSAndroid Build Coastguard Worker "library/hkdf.c", 147*61c4878aSAndroid Build Coastguard Worker "library/hmac_drbg.c", 148*61c4878aSAndroid Build Coastguard Worker "library/lmots.c", 149*61c4878aSAndroid Build Coastguard Worker "library/lms.c", 150*61c4878aSAndroid Build Coastguard Worker "library/md.c", 151*61c4878aSAndroid Build Coastguard Worker "library/md5.c", 152*61c4878aSAndroid Build Coastguard Worker "library/memory_buffer_alloc.c", 153*61c4878aSAndroid Build Coastguard Worker "library/mps_reader.c", 154*61c4878aSAndroid Build Coastguard Worker "library/mps_trace.c", 155*61c4878aSAndroid Build Coastguard Worker "library/net_sockets.c", 156*61c4878aSAndroid Build Coastguard Worker "library/nist_kw.c", 157*61c4878aSAndroid Build Coastguard Worker "library/oid.c", 158*61c4878aSAndroid Build Coastguard Worker "library/padlock.c", 159*61c4878aSAndroid Build Coastguard Worker "library/pem.c", 160*61c4878aSAndroid Build Coastguard Worker "library/pk.c", 161*61c4878aSAndroid Build Coastguard Worker "library/pk_wrap.c", 162*61c4878aSAndroid Build Coastguard Worker "library/pkcs12.c", 163*61c4878aSAndroid Build Coastguard Worker "library/pkcs5.c", 164*61c4878aSAndroid Build Coastguard Worker "library/pkcs7.c", 165*61c4878aSAndroid Build Coastguard Worker "library/pkparse.c", 166*61c4878aSAndroid Build Coastguard Worker "library/pkwrite.c", 167*61c4878aSAndroid Build Coastguard Worker "library/platform.c", 168*61c4878aSAndroid Build Coastguard Worker "library/platform_util.c", 169*61c4878aSAndroid Build Coastguard Worker "library/poly1305.c", 170*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto.c", 171*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_aead.c", 172*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_cipher.c", 173*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_client.c", 174*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_driver_wrappers_no_static.c", 175*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_ecp.c", 176*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_ffdh.c", 177*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_hash.c", 178*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_mac.c", 179*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_pake.c", 180*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_rsa.c", 181*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_se.c", 182*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_slot_management.c", 183*61c4878aSAndroid Build Coastguard Worker "library/psa_crypto_storage.c", 184*61c4878aSAndroid Build Coastguard Worker "library/psa_its_file.c", 185*61c4878aSAndroid Build Coastguard Worker "library/psa_util.c", 186*61c4878aSAndroid Build Coastguard Worker "library/ripemd160.c", 187*61c4878aSAndroid Build Coastguard Worker "library/rsa.c", 188*61c4878aSAndroid Build Coastguard Worker "library/rsa_alt_helpers.c", 189*61c4878aSAndroid Build Coastguard Worker "library/sha1.c", 190*61c4878aSAndroid Build Coastguard Worker "library/sha256.c", 191*61c4878aSAndroid Build Coastguard Worker "library/sha3.c", 192*61c4878aSAndroid Build Coastguard Worker "library/sha512.c", 193*61c4878aSAndroid Build Coastguard Worker "library/ssl_cache.c", 194*61c4878aSAndroid Build Coastguard Worker "library/ssl_ciphersuites.c", 195*61c4878aSAndroid Build Coastguard Worker "library/ssl_client.c", 196*61c4878aSAndroid Build Coastguard Worker "library/ssl_cookie.c", 197*61c4878aSAndroid Build Coastguard Worker "library/ssl_debug_helpers_generated.c", 198*61c4878aSAndroid Build Coastguard Worker "library/ssl_msg.c", 199*61c4878aSAndroid Build Coastguard Worker "library/ssl_ticket.c", 200*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls.c", 201*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls12_client.c", 202*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls12_server.c", 203*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls13_client.c", 204*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls13_generic.c", 205*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls13_keys.c", 206*61c4878aSAndroid Build Coastguard Worker "library/ssl_tls13_server.c", 207*61c4878aSAndroid Build Coastguard Worker "library/threading.c", 208*61c4878aSAndroid Build Coastguard Worker "library/timing.c", 209*61c4878aSAndroid Build Coastguard Worker "library/version.c", 210*61c4878aSAndroid Build Coastguard Worker "library/version_features.c", 211*61c4878aSAndroid Build Coastguard Worker "library/x509.c", 212*61c4878aSAndroid Build Coastguard Worker "library/x509_create.c", 213*61c4878aSAndroid Build Coastguard Worker "library/x509_crl.c", 214*61c4878aSAndroid Build Coastguard Worker "library/x509_crt.c", 215*61c4878aSAndroid Build Coastguard Worker "library/x509_csr.c", 216*61c4878aSAndroid Build Coastguard Worker "library/x509write.c", 217*61c4878aSAndroid Build Coastguard Worker "library/x509write_crt.c", 218*61c4878aSAndroid Build Coastguard Worker "library/x509write_csr.c", 219*61c4878aSAndroid Build Coastguard Worker ] 220*61c4878aSAndroid Build Coastguard Worker 221*61c4878aSAndroid Build Coastguard Worker config("public_config") { 222*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "$dir_pw_third_party_mbedtls/include" ] 223*61c4878aSAndroid Build Coastguard Worker } 224*61c4878aSAndroid Build Coastguard Worker 225*61c4878aSAndroid Build Coastguard Worker config("internal_config") { 226*61c4878aSAndroid Build Coastguard Worker include_dirs = [ 227*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party_mbedtls", 228*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party_mbedtls/include", 229*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/mbedtls", 230*61c4878aSAndroid Build Coastguard Worker ] 231*61c4878aSAndroid Build Coastguard Worker cflags = [ 232*61c4878aSAndroid Build Coastguard Worker "-Wno-error=cast-qual", 233*61c4878aSAndroid Build Coastguard Worker "-Wno-error=redundant-decls", 234*61c4878aSAndroid Build Coastguard Worker "-Wno-error=implicit-function-declaration", 235*61c4878aSAndroid Build Coastguard Worker "-w", 236*61c4878aSAndroid Build Coastguard Worker ] 237*61c4878aSAndroid Build Coastguard Worker config_header_file = rebase_path(pw_third_party_mbedtls_CONFIG_HEADER, 238*61c4878aSAndroid Build Coastguard Worker get_label_info(":mbedtls", "dir")) 239*61c4878aSAndroid Build Coastguard Worker defines = [ "MBEDTLS_CONFIG_FILE=\"$config_header_file\"" ] 240*61c4878aSAndroid Build Coastguard Worker if (defined(pw_toolchain_SCOPE.is_host_toolchain) && 241*61c4878aSAndroid Build Coastguard Worker pw_toolchain_SCOPE.is_host_toolchain) { 242*61c4878aSAndroid Build Coastguard Worker defines += [ "_PW_MBEDTLS_IS_HOST=1" ] 243*61c4878aSAndroid Build Coastguard Worker } else { 244*61c4878aSAndroid Build Coastguard Worker defines += [ "_PW_MBEDTLS_IS_HOST=0" ] 245*61c4878aSAndroid Build Coastguard Worker } 246*61c4878aSAndroid Build Coastguard Worker } 247*61c4878aSAndroid Build Coastguard Worker 248*61c4878aSAndroid Build Coastguard Worker pw_source_set("mbedtls") { 249*61c4878aSAndroid Build Coastguard Worker # Skip gn check because downstream users may choose either but not 250*61c4878aSAndroid Build Coastguard Worker # both ":mbedtls" and ":mbedtls_v3" depending on if the underlying 251*61c4878aSAndroid Build Coastguard Worker # mbedtls git is 2.x or 3.x. 252*61c4878aSAndroid Build Coastguard Worker check_includes = false 253*61c4878aSAndroid Build Coastguard Worker sources = [] 254*61c4878aSAndroid Build Coastguard Worker foreach(source, mbedtls_v2_sources) { 255*61c4878aSAndroid Build Coastguard Worker sources += [ "$dir_pw_third_party_mbedtls/" + source ] 256*61c4878aSAndroid Build Coastguard Worker } 257*61c4878aSAndroid Build Coastguard Worker 258*61c4878aSAndroid Build Coastguard Worker public = [ 259*61c4878aSAndroid Build Coastguard Worker "configs/config_default.h", 260*61c4878aSAndroid Build Coastguard Worker "configs/config_pigweed_common.h", 261*61c4878aSAndroid Build Coastguard Worker ] 262*61c4878aSAndroid Build Coastguard Worker 263*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_tls_client:time" ] 264*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_config" ] 265*61c4878aSAndroid Build Coastguard Worker configs = [ ":internal_config" ] 266*61c4878aSAndroid Build Coastguard Worker } 267*61c4878aSAndroid Build Coastguard Worker 268*61c4878aSAndroid Build Coastguard Worker pw_source_set("mbedtls_v3") { 269*61c4878aSAndroid Build Coastguard Worker # Skip gn check because downstream users may choose either but not 270*61c4878aSAndroid Build Coastguard Worker # both ":mbedtls" and ":mbedtls_v3" depending on if the underlying 271*61c4878aSAndroid Build Coastguard Worker # mbedtls git is 2.x or 3.x. 272*61c4878aSAndroid Build Coastguard Worker check_includes = false 273*61c4878aSAndroid Build Coastguard Worker sources = [] 274*61c4878aSAndroid Build Coastguard Worker foreach(source, mbedtls_v3_sources) { 275*61c4878aSAndroid Build Coastguard Worker sources += [ "$dir_pw_third_party_mbedtls/" + source ] 276*61c4878aSAndroid Build Coastguard Worker } 277*61c4878aSAndroid Build Coastguard Worker 278*61c4878aSAndroid Build Coastguard Worker public = [ 279*61c4878aSAndroid Build Coastguard Worker "configs/config_default.h", 280*61c4878aSAndroid Build Coastguard Worker "configs/config_pigweed_common.h", 281*61c4878aSAndroid Build Coastguard Worker ] 282*61c4878aSAndroid Build Coastguard Worker 283*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_tls_client:time" ] 284*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_config" ] 285*61c4878aSAndroid Build Coastguard Worker configs = [ ":internal_config" ] 286*61c4878aSAndroid Build Coastguard Worker } 287*61c4878aSAndroid Build Coastguard Worker} else { 288*61c4878aSAndroid Build Coastguard Worker group("mbedtls") { 289*61c4878aSAndroid Build Coastguard Worker } 290*61c4878aSAndroid Build Coastguard Worker 291*61c4878aSAndroid Build Coastguard Worker group("mbedtls_v3") { 292*61c4878aSAndroid Build Coastguard Worker } 293*61c4878aSAndroid Build Coastguard Worker} 294