## @file
#  library for the MbedTls.
#
#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = MbedTlsLib
  FILE_GUID                      = BB8E7D92-3E14-4907-A890-B28C7A0A1931
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = MbedTlsLib

[Sources]
  Include/mbedtls/mbedtls_config.h
  mbedtls/library/aes.c
  mbedtls/library/asn1parse.c
  mbedtls/library/asn1write.c
  mbedtls/library/base64.c
  mbedtls/library/bignum.c
  mbedtls/library/ccm.c
  mbedtls/library/chacha20.c
  mbedtls/library/chachapoly.c
  mbedtls/library/cipher.c
  mbedtls/library/cipher_wrap.c
  mbedtls/library/cmac.c
  mbedtls/library/ctr_drbg.c
  mbedtls/library/debug.c
  mbedtls/library/des.c
  mbedtls/library/dhm.c
  EcSm2Null.c
  mbedtls/library/error.c
  mbedtls/library/gcm.c
  mbedtls/library/hkdf.c
  mbedtls/library/hmac_drbg.c
  mbedtls/library/md.c
  mbedtls/library/md5.c
  mbedtls/library/ssl_msg.c
  mbedtls/library/ssl_tls12_client.c
  mbedtls/library/ssl_tls12_server.c
  mbedtls/library/ssl_client.c
  mbedtls/library/ssl_debug_helpers_generated.c
  mbedtls/library/rsa_alt_helpers.c
  mbedtls/library/pk_ecc.c
  mbedtls/library/x509write.c
  mbedtls/library/bignum_core.c
  mbedtls/library/constant_time.c
  mbedtls/library/memory_buffer_alloc.c
  mbedtls/library/nist_kw.c
  mbedtls/library/oid.c
  mbedtls/library/padlock.c
  mbedtls/library/pem.c
  mbedtls/library/pk.c
  mbedtls/library/pkcs12.c
  mbedtls/library/pkcs5.c
  mbedtls/library/pkparse.c
  mbedtls/library/pkwrite.c
  mbedtls/library/pk_wrap.c
  mbedtls/library/poly1305.c
  mbedtls/library/ripemd160.c
  mbedtls/library/rsa.c
  mbedtls/library/sha1.c
  mbedtls/library/sha3.c
  mbedtls/library/sha256.c
  mbedtls/library/sha512.c
  mbedtls/library/ssl_cache.c
  mbedtls/library/ssl_ciphersuites.c
  mbedtls/library/ssl_cookie.c
  mbedtls/library/ssl_ticket.c
  mbedtls/library/ssl_tls.c
  mbedtls/library/threading.c
  mbedtls/library/version.c
  mbedtls/library/version_features.c
  mbedtls/library/x509.c
  mbedtls/library/x509write_crt.c
  mbedtls/library/x509write_csr.c
  mbedtls/library/x509_create.c
  mbedtls/library/x509_crl.c
  mbedtls/library/x509_crt.c
  mbedtls/library/x509_csr.c
  mbedtls/library/pkcs7.c
  mbedtls/library/platform_util.c
  CrtWrapper.c

[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  MemoryAllocationLib

[BuildOptions]
  #
  # Disables the following Visual Studio compiler warnings brought by Mbedtls source,
  # warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
  # warning C4132: 'S': const object should be initialized
  # warning C4245: '=': conversion from 'int' to 'mbedtls_mpi_uint', signed/unsigned mismatch
  # warning C4310: cast truncates constant value
  # warning C4204: nonstandard extension used
  # warning C4389: '==': signed/unsigned mismatch
  # /U_WIN32     : Avoid redfineded with WIN API
  #
  MSFT:*_*_IA32_CC_FLAGS   = /U_WIN32 /DEFI32 /wd4244 /wd4132 /wd4245 /wd4310 /wd4204 /wd4389
  MSFT:*_*_X64_CC_FLAGS   = /U_WIN32 /DEFI32 /wd4244 /wd4132 /wd4245 /wd4310 /wd4204 /wd4389

  #
  # Disable following Visual Studio 2015 compiler warnings brought by mbedtls source,
  # so we do not break the build with /WX option:
  #   C4718: recursive call has no side effects, deleting
  #
  MSFT:*_VS2015x86_IA32_CC_FLAGS = /wd4718
  MSFT:*_VS2015x86_X64_CC_FLAGS  = /wd4718

  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64  /w
  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64  /w

  #
  # Suppress the following build warnings in mbedtls so we don't break the build with -Werror
  #   -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized.
  #   -Werror=format: Check calls to printf and scanf, etc., to make sure that the arguments supplied have
  #                   types appropriate to the format string specified.
  #   -Werror=unused-but-set-variable: Warn whenever a local variable is assigned to, but otherwise unused (aside from its declaration).
  #
  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 -U_MSC_VER -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
  GCC:*_*_AARCH64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
  GCC:*_*_RISCV64_CC_FLAGS =  -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
  GCC:*_*_LOONGARCH64_CC_FLAGS =  -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=gnu99 -Wno-error=uninitialized
  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize -D__USE_MINGW_ANSI_STDIO=0

  # suppress the following warnings in mbedtls so we don't break the build with warnings-as-errors:
  # 1295: Deprecated declaration <entity> - give arg types
  #  550: <entity> was set but never used
  # 1293: assignment in condition
  #  111: statement is unreachable (invariably "break;" after "return X;" in case statement)
  #   68: integer conversion resulted in a change of sign ("if (Status == -1)")
  #  177: <entity> was declared but never referenced
  #  223: function <entity> declared implicitly
  #  144: a value of type <type> cannot be used to initialize an entity of type <type>
  #  513: a value of type <type> cannot be assigned to an entity of type <type>
  #  188: enumerated type mixed with another type (i.e. passing an integer as an enum without a cast)
  # 1296: Extended constant initialiser used
  #  128: loop is not reachable - may be emitted inappropriately if code follows a conditional return
  #       from the function that evaluates to true at compile time
  #  546: transfer of control bypasses initialization - may be emitted inappropriately if the uninitialized
  #       variable is never referenced after the jump
  #    1: ignore "#1-D: last line of file ends without a newline"
  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64   -w -std=c99 -Wno-error=uninitialized
  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64   -w -std=c99 -Wno-error=uninitialized

  #
  # AARCH64 uses strict alignment and avoids SIMD registers for code that may execute
  # with the MMU off. This involves SEC, PEI_CORE and PEIM modules as well as BASE
  # libraries, given that they may be included into such modules.
  # This library, even though of the BASE type, is never used in such cases, and
  # avoiding the SIMD register file (which is shared with the FPU) prevents the
  # compiler from successfully building some of the mbedtls source files that
  # use floating point types, so clear the flags here.
  #
  GCC:*_*_AARCH64_CC_XIPFLAGS ==
