Skip to content

Commit c3f5391

Browse files
SebastianBoeAnas Nashif
authored andcommitted
mbedtls: Added support for using an externally built mbedtls
Kbuild supported CONFIG_MBEDTLS_LIBRARY and CONFIG_MBEDTLS_INSTALL_PATH to allow users to link in an externally built mbedtls. This was not ported over to CMake, causing build failures when it was kconfig-enabled. This patch implements this support. This support has been tested as well as MBEDTLS_LIBRARY was tested in CI. Signed-off-by: Sebastian Bøe <[email protected]> Signed-off-by: Ding Tao <[email protected]>
1 parent 61cf3b0 commit c3f5391

File tree

2 files changed

+97
-77
lines changed

2 files changed

+97
-77
lines changed

ext/lib/crypto/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
add_subdirectory_if_kconfig(tinycrypt)
2-
add_subdirectory_ifdef(CONFIG_MBEDTLS_BUILTIN mbedtls)
2+
add_subdirectory_ifdef(CONFIG_MBEDTLS mbedtls)

ext/lib/crypto/mbedtls/CMakeLists.txt

Lines changed: 96 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,109 @@
11
zephyr_interface_library_named(mbedTLS)
2-
target_compile_definitions(mbedTLS INTERFACE
2+
3+
if(CONFIG_MBEDTLS_BUILTIN)
4+
target_compile_definitions(mbedTLS INTERFACE
35
MBEDTLS_CONFIG_FILE="${CONFIG_MBEDTLS_CFG_FILE}"
46
)
57

6-
target_include_directories(mbedTLS INTERFACE
8+
target_include_directories(mbedTLS INTERFACE
79
include
810
configs
911
)
1012

13+
zephyr_library()
14+
zephyr_library_sources(zephyr_init.c)
15+
16+
zephyr_library_sources(library/aes.c)
17+
zephyr_library_sources(library/aesni.c)
18+
zephyr_library_sources(library/arc4.c)
19+
zephyr_library_sources(library/asn1parse.c)
20+
zephyr_library_sources(library/asn1write.c)
21+
zephyr_library_sources(library/base64.c)
22+
zephyr_library_sources(library/bignum.c)
23+
zephyr_library_sources(library/blowfish.c)
24+
zephyr_library_sources(library/camellia.c)
25+
zephyr_library_sources(library/ccm.c)
26+
zephyr_library_sources(library/certs.c)
27+
zephyr_library_sources(library/cipher.c)
28+
zephyr_library_sources(library/cipher_wrap.c)
29+
zephyr_library_sources(library/cmac.c)
30+
zephyr_library_sources(library/ctr_drbg.c)
31+
zephyr_library_sources(library/debug.c)
32+
zephyr_library_sources(library/des.c)
33+
zephyr_library_sources(library/dhm.c)
34+
zephyr_library_sources(library/ecdh.c)
35+
zephyr_library_sources(library/ecdsa.c)
36+
zephyr_library_sources(library/ecjpake.c)
37+
zephyr_library_sources(library/ecp.c)
38+
zephyr_library_sources(library/ecp_curves.c)
39+
zephyr_library_sources(library/entropy.c)
40+
zephyr_library_sources(library/entropy_poll.c)
41+
zephyr_library_sources(library/error.c)
42+
zephyr_library_sources(library/gcm.c)
43+
zephyr_library_sources(library/havege.c)
44+
zephyr_library_sources(library/hmac_drbg.c)
45+
zephyr_library_sources(library/md.c)
46+
zephyr_library_sources(library/md2.c)
47+
zephyr_library_sources(library/md4.c)
48+
zephyr_library_sources(library/md5.c)
49+
zephyr_library_sources(library/md_wrap.c)
50+
zephyr_library_sources(library/memory_buffer_alloc.c)
51+
zephyr_library_sources(library/net_sockets.c)
52+
zephyr_library_sources(library/oid.c)
53+
zephyr_library_sources(library/padlock.c)
54+
zephyr_library_sources(library/pem.c)
55+
zephyr_library_sources(library/pk.c)
56+
zephyr_library_sources(library/pk_wrap.c)
57+
zephyr_library_sources(library/pkcs11.c)
58+
zephyr_library_sources(library/pkcs12.c)
59+
zephyr_library_sources(library/pkcs5.c)
60+
zephyr_library_sources(library/pkparse.c)
61+
zephyr_library_sources(library/pkwrite.c)
62+
zephyr_library_sources(library/platform.c)
63+
zephyr_library_sources(library/ripemd160.c)
64+
zephyr_library_sources(library/rsa.c)
65+
zephyr_library_sources(library/sha1.c)
66+
zephyr_library_sources(library/sha256.c)
67+
zephyr_library_sources(library/sha512.c)
68+
zephyr_library_sources(library/ssl_cache.c)
69+
zephyr_library_sources(library/ssl_ciphersuites.c)
70+
zephyr_library_sources(library/ssl_cli.c)
71+
zephyr_library_sources(library/ssl_cookie.c)
72+
zephyr_library_sources(library/ssl_srv.c)
73+
zephyr_library_sources(library/ssl_ticket.c)
74+
zephyr_library_sources(library/ssl_tls.c)
75+
zephyr_library_sources(library/threading.c)
76+
zephyr_library_sources(library/timing.c)
77+
zephyr_library_sources(library/version.c)
78+
zephyr_library_sources(library/version_features.c)
79+
zephyr_library_sources(library/x509.c)
80+
zephyr_library_sources(library/x509_create.c)
81+
zephyr_library_sources(library/x509_crl.c)
82+
zephyr_library_sources(library/x509_crt.c)
83+
zephyr_library_sources(library/x509_csr.c)
84+
zephyr_library_sources(library/x509write_crt.c)
85+
zephyr_library_sources(library/x509write_csr.c)
86+
zephyr_library_sources(library/xtea.c)
1187

12-
zephyr_library()
13-
zephyr_library_sources(zephyr_init.c)
88+
zephyr_library_link_libraries(mbedTLS)
89+
else()
90+
assert(CONFIG_MBEDTLS_LIBRARY "MBEDTLS was enabled, but neither BUILTIN or LIBRARY was selected.")
1491

15-
zephyr_library_sources(library/aes.c)
16-
zephyr_library_sources(library/aesni.c)
17-
zephyr_library_sources(library/arc4.c)
18-
zephyr_library_sources(library/asn1parse.c)
19-
zephyr_library_sources(library/asn1write.c)
20-
zephyr_library_sources(library/base64.c)
21-
zephyr_library_sources(library/bignum.c)
22-
zephyr_library_sources(library/blowfish.c)
23-
zephyr_library_sources(library/camellia.c)
24-
zephyr_library_sources(library/ccm.c)
25-
zephyr_library_sources(library/certs.c)
26-
zephyr_library_sources(library/cipher.c)
27-
zephyr_library_sources(library/cipher_wrap.c)
28-
zephyr_library_sources(library/cmac.c)
29-
zephyr_library_sources(library/ctr_drbg.c)
30-
zephyr_library_sources(library/debug.c)
31-
zephyr_library_sources(library/des.c)
32-
zephyr_library_sources(library/dhm.c)
33-
zephyr_library_sources(library/ecdh.c)
34-
zephyr_library_sources(library/ecdsa.c)
35-
zephyr_library_sources(library/ecjpake.c)
36-
zephyr_library_sources(library/ecp.c)
37-
zephyr_library_sources(library/ecp_curves.c)
38-
zephyr_library_sources(library/entropy.c)
39-
zephyr_library_sources(library/entropy_poll.c)
40-
zephyr_library_sources(library/error.c)
41-
zephyr_library_sources(library/gcm.c)
42-
zephyr_library_sources(library/havege.c)
43-
zephyr_library_sources(library/hmac_drbg.c)
44-
zephyr_library_sources(library/md.c)
45-
zephyr_library_sources(library/md2.c)
46-
zephyr_library_sources(library/md4.c)
47-
zephyr_library_sources(library/md5.c)
48-
zephyr_library_sources(library/md_wrap.c)
49-
zephyr_library_sources(library/memory_buffer_alloc.c)
50-
zephyr_library_sources(library/net_sockets.c)
51-
zephyr_library_sources(library/oid.c)
52-
zephyr_library_sources(library/padlock.c)
53-
zephyr_library_sources(library/pem.c)
54-
zephyr_library_sources(library/pk.c)
55-
zephyr_library_sources(library/pk_wrap.c)
56-
zephyr_library_sources(library/pkcs11.c)
57-
zephyr_library_sources(library/pkcs12.c)
58-
zephyr_library_sources(library/pkcs5.c)
59-
zephyr_library_sources(library/pkparse.c)
60-
zephyr_library_sources(library/pkwrite.c)
61-
zephyr_library_sources(library/platform.c)
62-
zephyr_library_sources(library/ripemd160.c)
63-
zephyr_library_sources(library/rsa.c)
64-
zephyr_library_sources(library/sha1.c)
65-
zephyr_library_sources(library/sha256.c)
66-
zephyr_library_sources(library/sha512.c)
67-
zephyr_library_sources(library/ssl_cache.c)
68-
zephyr_library_sources(library/ssl_ciphersuites.c)
69-
zephyr_library_sources(library/ssl_cli.c)
70-
zephyr_library_sources(library/ssl_cookie.c)
71-
zephyr_library_sources(library/ssl_srv.c)
72-
zephyr_library_sources(library/ssl_ticket.c)
73-
zephyr_library_sources(library/ssl_tls.c)
74-
zephyr_library_sources(library/threading.c)
75-
zephyr_library_sources(library/timing.c)
76-
zephyr_library_sources(library/version.c)
77-
zephyr_library_sources(library/version_features.c)
78-
zephyr_library_sources(library/x509.c)
79-
zephyr_library_sources(library/x509_create.c)
80-
zephyr_library_sources(library/x509_crl.c)
81-
zephyr_library_sources(library/x509_crt.c)
82-
zephyr_library_sources(library/x509_csr.c)
83-
zephyr_library_sources(library/x509write_crt.c)
84-
zephyr_library_sources(library/x509write_csr.c)
85-
zephyr_library_sources(library/xtea.c)
92+
# NB: CONFIG_MBEDTLS_LIBRARY is not regression tested and is
93+
# therefore susceptible to bit rot
94+
95+
target_include_directories(mbedTLS INTERFACE
96+
${CONFIG_MBEDTLS_INSTALL_PATH}
97+
)
8698

87-
zephyr_library_link_libraries(mbedTLS)
99+
zephyr_link_libraries(
100+
mbedtls_external
101+
-L${CONFIG_MBEDTLS_INSTALL_PATH}
102+
gcc
103+
)
104+
# Lib mbedtls_external depends on libgcc (I assume?) so to allow
105+
# mbedtls_external to link with gcc we need to ensure it is placed
106+
# after mbedtls_external on the linkers command line.
107+
endif()
88108

89109
target_link_libraries(mbedTLS INTERFACE zephyr_interface)

0 commit comments

Comments
 (0)