this-city/engine/modules/mbedtls/SCsub
2026-07-10 17:04:34 +02:00

202 lines
6.7 KiB
Python

#!/usr/bin/env python
from misc.utility.scons_hints import *
Import("env")
Import("env_modules")
def _escape_define(env, config):
return f"<{config}>" if env["ninja"] and env.msvc else f'\\"{config}\\"'
env_mbed_tls = env_modules.Clone()
env_mbed_tls.AddMethod(_escape_define, "EscapeDefine")
# Thirdparty source files
thirdparty_obj = []
configs = []
if env["builtin_mbedtls"]:
env_mbed_tls.Append(
CPPDEFINES=[
("TF_PSA_CRYPTO_CONFIG_FILE", env_mbed_tls.EscapeDefine("godot_psa_config.h")),
("MBEDTLS_CONFIG_FILE", env_mbed_tls.EscapeDefine("godot_mbedtls_config.h")),
]
)
configs = ["#thirdparty/mbedtls/godot/godot_psa_config.h", "#thirdparty/mbedtls/godot/godot_mbedtls_config.h"]
env_mbed_tls.Prepend(
CPPPATH=[
"#thirdparty/mbedtls/godot/",
"#thirdparty/mbedtls/include/",
"#thirdparty/mbedtls/tf-psa-crypto/include/",
"#thirdparty/mbedtls/tf-psa-crypto/drivers/builtin/include/",
]
)
# tf-psa-crypto
env_psa = env_mbed_tls.Clone()
psa_obj = []
psa_sources = [
# Drivers builtin
"drivers/builtin/src/aes.c",
"drivers/builtin/src/aesce.c",
"drivers/builtin/src/aesni.c",
"drivers/builtin/src/aria.c",
"drivers/builtin/src/bignum.c",
"drivers/builtin/src/bignum_core.c",
"drivers/builtin/src/bignum_mod.c",
"drivers/builtin/src/bignum_mod_raw.c",
"drivers/builtin/src/block_cipher.c",
"drivers/builtin/src/camellia.c",
"drivers/builtin/src/ccm.c",
"drivers/builtin/src/chacha20.c",
"drivers/builtin/src/chacha20_neon.c",
"drivers/builtin/src/chachapoly.c",
"drivers/builtin/src/cipher.c",
"drivers/builtin/src/cipher_wrap.c",
"drivers/builtin/src/cmac.c",
"drivers/builtin/src/ctr_drbg.c",
"drivers/builtin/src/ecdsa.c",
"drivers/builtin/src/ecjpake.c",
"drivers/builtin/src/ecp.c",
"drivers/builtin/src/ecp_curves.c",
"drivers/builtin/src/ecp_curves_new.c",
"drivers/builtin/src/entropy.c",
"drivers/builtin/src/entropy_poll.c",
"drivers/builtin/src/gcm.c",
"drivers/builtin/src/hmac_drbg.c",
"drivers/builtin/src/md5.c",
"drivers/builtin/src/poly1305.c",
"drivers/builtin/src/psa_crypto_aead.c",
"drivers/builtin/src/psa_crypto_cipher.c",
"drivers/builtin/src/psa_crypto_ecp.c",
"drivers/builtin/src/psa_crypto_ffdh.c",
"drivers/builtin/src/psa_crypto_hash.c",
"drivers/builtin/src/psa_crypto_mac.c",
"drivers/builtin/src/psa_crypto_pake.c",
"drivers/builtin/src/psa_crypto_rsa.c",
"drivers/builtin/src/psa_crypto_xof.c",
"drivers/builtin/src/psa_util_internal.c",
"drivers/builtin/src/ripemd160.c",
"drivers/builtin/src/rsa.c",
"drivers/builtin/src/rsa_alt_helpers.c",
"drivers/builtin/src/sha1.c",
"drivers/builtin/src/sha256.c",
"drivers/builtin/src/sha3.c",
"drivers/builtin/src/sha512.c",
# Extras
"extras/lmots.c",
"extras/lms.c",
"extras/md.c",
"extras/nist_kw.c",
"extras/pk.c",
"extras/pk_ecc.c",
"extras/pk_rsa.c",
"extras/pk_wrap.c",
"extras/pkparse.c",
"extras/pkwrite.c",
# Platform
"platform/memory_buffer_alloc.c",
"platform/platform.c",
"platform/platform_util.c",
"platform/threading.c",
# Utilities
"utilities/asn1parse.c",
"utilities/asn1write.c",
"utilities/base64.c",
"utilities/constant_time.c",
"utilities/oid.c",
"utilities/pem.c",
"utilities/pkcs5.c",
# Core
"core/psa_crypto.c",
"core/psa_crypto_client.c",
"core/psa_crypto_random.c",
"core/psa_crypto_slot_management.c",
"core/psa_crypto_storage.c",
"core/psa_its_file.c",
"core/psa_util.c",
"core/tf_psa_crypto_config.c",
"core/tf_psa_crypto_version.c",
"core/psa_crypto_driver_wrappers_no_static.c",
]
psa_dir = "#thirdparty/mbedtls/tf-psa-crypto/"
psa_sources = [psa_dir + file for file in psa_sources]
env_psa.Prepend(CPPPATH=[psa_dir + "drivers/builtin/src/"])
env_psa.Prepend(CPPPATH=[psa_dir + "platform/"])
env_psa.Prepend(CPPPATH=[psa_dir + "utilities/"])
env_psa.Prepend(CPPPATH=[psa_dir + "extras/"])
env_psa.Prepend(CPPPATH=[psa_dir + "dispatch/"])
env_psa.Prepend(CPPPATH=[psa_dir + "core/"])
env_psa.disable_warnings()
env_psa.add_source_files(psa_obj, psa_sources)
env_psa.Depends(psa_obj, configs)
env.modules_sources += psa_obj
# mbedTLS
mbedtls_sources = [
# mbedx509
"library/error.c",
"library/mbedtls_config.c",
"library/pkcs7.c",
"library/x509.c",
"library/x509_create.c",
"library/x509_crl.c",
"library/x509_crt.c",
"library/x509_csr.c",
"library/x509_oid.c",
"library/x509write.c",
"library/x509write_crt.c",
"library/x509write_csr.c",
# mbedtls
"library/debug.c",
"library/mps_reader.c",
"library/mps_trace.c",
"library/net_sockets.c",
"library/ssl_cache.c",
"library/ssl_ciphersuites.c",
"library/ssl_client.c",
"library/ssl_cookie.c",
"library/ssl_debug_helpers_generated.c",
"library/ssl_msg.c",
"library/ssl_ticket.c",
"library/ssl_tls.c",
"library/ssl_tls12_client.c",
"library/ssl_tls12_server.c",
"library/ssl_tls13_keys.c",
"library/ssl_tls13_server.c",
"library/ssl_tls13_client.c",
"library/ssl_tls13_generic.c",
"library/timing.c",
"library/version.c",
"library/version_features.c",
]
mbedtls_dir = "#thirdparty/mbedtls/"
mbedtls_sources = [mbedtls_dir + file for file in mbedtls_sources]
env_library = env_psa.Clone()
env_library.Prepend(CPPPATH=["#thirdparty/mbedtls/library/"])
env_library.disable_warnings()
env_library.add_source_files(thirdparty_obj, mbedtls_sources)
env_library.Depends(thirdparty_obj, psa_obj + configs)
env.modules_sources += thirdparty_obj
# Godot source files
module_obj = []
env_mbed_tls.add_source_files(module_obj, "*.cpp")
env_mbed_tls.add_source_files(module_obj, "./mbedtls_cpp_compat.c")
if env["tests"]:
env_mbed_tls.add_source_files(module_obj, "./tests/*.cpp")
env.modules_sources += module_obj
env.Depends(module_obj, configs)
# Needed to force rebuilding the module files when the thirdparty library is updated.
env.Depends(module_obj, thirdparty_obj + configs)