| # Ensure submodules are initialised - no longer needed as there are no submodules |
| find_package(Git QUIET) |
| if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") |
| # Update submodules as needed |
| option(GIT_SUBMODULE "Check submodules during build" OFF) |
| if(GIT_SUBMODULE) |
| message(STATUS "Submodule update") |
| execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init lib/mbedtls |
| WORKING_DIRECTORY ${PICO_SDK_PATH} |
| RESULT_VARIABLE GIT_SUBMOD_RESULT) |
| if(NOT GIT_SUBMOD_RESULT EQUAL "0") |
| message("git submodule update --init lib/mbedtls failed with ${GIT_SUBMOD_RESULT}") |
| endif() |
| endif() |
| endif() |
| |
| |
| set(JSON_BuildTests OFF CACHE INTERNAL "") |
| add_subdirectory(nlohmann_json EXCLUDE_FROM_ALL) |
| |
| add_subdirectory(whereami EXCLUDE_FROM_ALL) |
| |
| # Taken from pico-sdk/src/rp2_common/pico_mbedtls/CMakeLists.txt |
| if (DEFINED ENV{PICO_MBEDTLS_PATH} AND (NOT PICO_MBEDTLS_PATH)) |
| set(PICO_MBEDTLS_PATH $ENV{PICO_MBEDTLS_PATH}) |
| message("Using PICO_MBEDTLS_PATH from environment ('${PICO_MBEDTLS_PATH}')") |
| endif() |
| |
| set(MBEDTLS_TEST_PATH "library/aes.c") |
| if (NOT PICO_MBEDTLS_PATH) |
| set(PICO_MBEDTLS_PATH ${PICO_SDK_PATH}/lib/mbedtls) |
| elseif (NOT EXISTS "${PICO_MBEDTLS_PATH}/${MBEDTLS_TEST_PATH}") |
| message(WARNING "PICO_MBEDTLS_PATH specified but content not present.") |
| endif() |
| |
| if(EXISTS "${PICO_MBEDTLS_PATH}/${MBEDTLS_TEST_PATH}") |
| # Support version 2.28.8 or 3.6.2 |
| if (EXISTS ${PICO_MBEDTLS_PATH}/library/ssl_cli.c) |
| set(MBEDTLS_VERSION_MAJOR 2) |
| elseif (EXISTS ${PICO_MBEDTLS_PATH}/library/ssl_client.c) |
| set(MBEDTLS_VERSION_MAJOR 3) |
| else() |
| message(WARNING "Cannot determine the version of mbedtls") |
| endif() |
| |
| function(src_crypto_list) |
| set(src_crypto |
| aes.c |
| aesni.c |
| aria.c |
| asn1parse.c |
| asn1write.c |
| base64.c |
| bignum.c |
| camellia.c |
| ccm.c |
| chacha20.c |
| chachapoly.c |
| cipher.c |
| cipher_wrap.c |
| constant_time.c |
| cmac.c |
| ctr_drbg.c |
| des.c |
| dhm.c |
| ecdh.c |
| ecdsa.c |
| ecjpake.c |
| ecp.c |
| ecp_curves.c |
| entropy.c |
| entropy_poll.c |
| error.c |
| gcm.c |
| hkdf.c |
| hmac_drbg.c |
| md.c |
| md5.c |
| memory_buffer_alloc.c |
| mps_reader.c |
| mps_trace.c |
| nist_kw.c |
| oid.c |
| padlock.c |
| pem.c |
| pk.c |
| pk_wrap.c |
| pkcs12.c |
| pkcs5.c |
| pkparse.c |
| pkwrite.c |
| platform.c |
| platform_util.c |
| poly1305.c |
| psa_crypto.c |
| psa_crypto_aead.c |
| psa_crypto_cipher.c |
| psa_crypto_client.c |
| psa_crypto_ecp.c |
| psa_crypto_hash.c |
| psa_crypto_mac.c |
| psa_crypto_rsa.c |
| psa_crypto_se.c |
| psa_crypto_slot_management.c |
| psa_crypto_storage.c |
| psa_its_file.c |
| ripemd160.c |
| rsa.c |
| sha1.c |
| sha256.c |
| sha512.c |
| threading.c |
| timing.c |
| version.c |
| version_features.c |
| ) |
| if (MBEDTLS_VERSION_MAJOR EQUAL 2) |
| list(APPEND src_crypto |
| arc4.c |
| blowfish.c |
| havege.c |
| md2.c |
| md4.c |
| psa_crypto_driver_wrappers.c |
| rsa_internal.c xtea.c |
| ) |
| elseif (MBEDTLS_VERSION_MAJOR EQUAL 3) |
| list(APPEND src_crypto |
| bignum_core.c |
| rsa_alt_helpers.c |
| pk_ecc.c |
| ) |
| endif() |
| list(TRANSFORM src_crypto PREPEND ${PICO_MBEDTLS_PATH}/library/) |
| set(src_crypto ${src_crypto} PARENT_SCOPE) |
| endfunction() |
| |
| src_crypto_list() |
| |
| |
| # Create library |
| add_library(mbedtls STATIC ${src_crypto}) |
| |
| if(WIN32) |
| target_link_libraries(mbedtls ws2_32 bcrypt) |
| endif(WIN32) |
| |
| target_compile_definitions(mbedtls PUBLIC MBEDTLS_CONFIG_FILE="picotool_mbedtls_config.h") |
| target_include_directories(mbedtls SYSTEM PUBLIC ${PICO_MBEDTLS_PATH}/include) |
| target_include_directories(mbedtls PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) |
| endif() |