202 lines
6.7 KiB
Python
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)
|