1SUMMARY = "Lightweight crypto and SSL/TLS library"
2DESCRIPTION = "mbedtls is a lean open source crypto library          \
3for providing SSL and TLS support in your programs. It offers        \
4an intuitive API and documented header files, so you can actually    \
5understand what the code does. It features:                          \
6                                                                     \
7 - Symmetric algorithms, like AES, Blowfish, Triple-DES, DES, ARC4,  \
8   Camellia and XTEA                                                 \
9 - Hash algorithms, like SHA-1, SHA-2, RIPEMD-160 and MD5            \
10 - Entropy pool and random generators, like CTR-DRBG and HMAC-DRBG   \
11 - Public key algorithms, like RSA, Elliptic Curves, Diffie-Hellman, \
12   ECDSA and ECDH                                                    \
13 - SSL v3 and TLS 1.0, 1.1 and 1.2                                   \
14 - Abstraction layers for ciphers, hashes, public key operations,    \
15   platform abstraction and threading                                \
16"
17
18HOMEPAGE = "https://tls.mbed.org/"
19
20LICENSE = "Apache-2.0 | GPL-2.0-or-later"
21LIC_FILES_CHKSUM = "file://LICENSE;md5=379d5819937a6c2f1ef1630d341e026d"
22
23SECTION = "libs"
24
25S = "${WORKDIR}/git"
26SRC_URI = "git://github.com/Mbed-TLS/mbedtls.git;protocol=https;branch=master \
27	git://github.com/Mbed-TLS/mbedtls-framework.git;protocol=https;branch=main;destsuffix=git/framework;name=framework \
28	file://run-ptest"
29
30SRCREV = "2ca6c285a0dd3f33982dd57299012dacab1ff206"
31SRCREV_framework = "750634d3a51eb9d61b59fd5d801546927c946588"
32SRCREV_FORMAT .= "_framework"
33
34UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
35
36inherit cmake update-alternatives ptest
37
38PACKAGECONFIG ??= "shared-libs programs ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
39PACKAGECONFIG[shared-libs] = "-DUSE_SHARED_MBEDTLS_LIBRARY=ON,-DUSE_SHARED_MBEDTLS_LIBRARY=OFF"
40PACKAGECONFIG[programs] = "-DENABLE_PROGRAMS=ON,-DENABLE_PROGRAMS=OFF"
41PACKAGECONFIG[werror] = "-DMBEDTLS_FATAL_WARNINGS=ON,-DMBEDTLS_FATAL_WARNINGS=OFF"
42# Make X.509 and TLS calls use PSA
43# https://github.com/Mbed-TLS/mbedtls/blob/development/docs/use-psa-crypto.md
44PACKAGECONFIG[psa] = ""
45PACKAGECONFIG[tests] = "-DENABLE_TESTING=ON,-DENABLE_TESTING=OFF"
46
47EXTRA_OECMAKE = "-DLIB_INSTALL_DIR:STRING=${libdir}"
48
49# For now the only way to enable PSA is to explicitly pass a -D via CFLAGS
50CFLAGS:append = "${@bb.utils.contains('PACKAGECONFIG', 'psa', ' -DMBEDTLS_USE_PSA_CRYPTO', '', d)}"
51
52PROVIDES += "polarssl"
53RPROVIDES:${PN} = "polarssl"
54
55PACKAGES =+ "${PN}-programs"
56FILES:${PN}-programs = "${bindir}/"
57
58ALTERNATIVE:${PN}-programs = "hello"
59ALTERNATIVE_LINK_NAME[hello] = "${bindir}/hello"
60
61BBCLASSEXTEND = "native nativesdk"
62
63CVE_PRODUCT = "mbed_tls"
64
65# Strip host paths from autogenerated test files
66do_compile:append() {
67	sed -i 's+${S}/++g' ${B}/tests/*.c 2>/dev/null || :
68	sed -i 's+${B}/++g' ${B}/tests/*.c 2>/dev/null || :
69}
70
71# Export source files/headers needed by Arm Trusted Firmware
72sysroot_stage_all:append() {
73	sysroot_stage_dir "${S}/library" "${SYSROOT_DESTDIR}/usr/share/mbedtls-source/library"
74	sysroot_stage_dir "${S}/include" "${SYSROOT_DESTDIR}/usr/share/mbedtls-source/include"
75}
76
77do_install_ptest () {
78	install -d ${D}${PTEST_PATH}/tests
79	cp -f ${B}/tests/test_suite_* ${D}${PTEST_PATH}/tests/
80	find ${D}${PTEST_PATH}/tests/ -type f -name "*.c" -delete
81	cp -fR ${S}/tests/data_files ${D}${PTEST_PATH}/tests/
82}
83