From d800083f32dd9f18ca5e9304283ad7677f2a50c0 Mon Sep 17 00:00:00 2001 From: Euripedes Rocha Date: Fri, 6 Oct 2023 09:55:43 +0200 Subject: [PATCH] feat(asio): Updates asio to 1.28 Updates ASIO version --- .github/workflows/asio__build-target-test.yml | 2 +- components/asio/CMakeLists.txt | 46 ++++++++++--------- components/asio/Kconfig | 17 ------- components/asio/asio | 2 +- .../asio/port/include/esp_asio_config.h | 39 ++-------------- 5 files changed, 29 insertions(+), 77 deletions(-) diff --git a/.github/workflows/asio__build-target-test.yml b/.github/workflows/asio__build-target-test.yml index c6bd2cda327..55c60cc5034 100644 --- a/.github/workflows/asio__build-target-test.yml +++ b/.github/workflows/asio__build-target-test.yml @@ -13,7 +13,7 @@ jobs: name: Build strategy: matrix: - idf_ver: ["latest", "release-v5.0"] + idf_ver: ["latest", "release-v5.0", "release-v5.1"] idf_target: ["esp32", "esp32s2"] example: ["asio_chat", "async_request", "socks4", "ssl_client_server", "tcp_echo_server", "udp_echo_server"] runs-on: ubuntu-20.04 diff --git a/components/asio/CMakeLists.txt b/components/asio/CMakeLists.txt index 33665459703..3ec69bac485 100644 --- a/components/asio/CMakeLists.txt +++ b/components/asio/CMakeLists.txt @@ -7,38 +7,40 @@ if(NOT CONFIG_LWIP_IPV6 AND NOT CMAKE_BUILD_EARLY_EXPANSION) endif() set(asio_sources "asio/asio/src/asio.cpp") +set(asio_requires lwip) if(CONFIG_ASIO_SSL_SUPPORT) - if(CONFIG_ASIO_USE_ESP_OPENSSL) - list(APPEND asio_sources - "port/src/asio_ssl_impl.cpp" - "port/mbedtls/src/mbedtls_context.cpp" - "port/mbedtls/src/mbedtls_engine.cpp") - set(asio_priv_includes "port/mbedtls/include") - endif() - - if(CONFIG_ASIO_USE_ESP_WOLFSSL) - list(APPEND asio_sources - "asio/asio/src/asio_ssl.cpp") - endif() + list(APPEND asio_sources + "port/src/asio_ssl_impl.cpp" + "port/mbedtls/src/mbedtls_context.cpp" + "port/mbedtls/src/mbedtls_engine.cpp") + set(asio_priv_includes "port/mbedtls/include") endif() idf_component_register(SRCS ${asio_sources} INCLUDE_DIRS "asio/asio/include" "port/include" PRIV_INCLUDE_DIRS ${asio_priv_includes} - REQUIRES lwip) + PRIV_REQUIRES ${asio_requires}) -if(CONFIG_ASIO_SSL_SUPPORT) - if(CONFIG_ASIO_USE_ESP_WOLFSSL) - idf_component_get_property(wolflib esp-wolfssl COMPONENT_LIB) - idf_component_get_property(wolfdir esp-wolfssl COMPONENT_DIR) +target_compile_definitions(${COMPONENT_LIB} PUBLIC SA_RESTART=0x01 + SA_NOCLDSTOP=0x2 + SA_NOCLDWAIT=0x4 + ASIO_DISABLE_SERIAL_PORT + ASIO_SEPARATE_COMPILATION + ASIO_STANDALONE + ASIO_HAS_PTHREADS + OPENSSL_NO_ENGINE +) + +if(NOT CONFIG_COMPILER_CXX_EXCEPTIONS) + target_compile_definitions(${COMPONENT_LIB} PUBLIC ASIO_NO_EXCEPTIONS) +endif() - target_link_libraries(${COMPONENT_LIB} PUBLIC ${wolflib}) - target_include_directories(${COMPONENT_LIB} PUBLIC ${wolfdir}/wolfssl/wolfssl) - endif() +if(NOT CONFIG_COMPILER_RTTI) + target_compile_definitions(${COMPONENT_LIB} PUBLIC ASIO_NO_TYPEID) +endif() - if(CONFIG_ASIO_USE_ESP_OPENSSL) +if(CONFIG_ASIO_SSL_SUPPORT) idf_component_get_property(mbedtls mbedtls COMPONENT_LIB) target_link_libraries(${COMPONENT_LIB} PUBLIC ${mbedtls}) - endif() endif() diff --git a/components/asio/Kconfig b/components/asio/Kconfig index 6754e1aa2f4..8b46ae06522 100644 --- a/components/asio/Kconfig +++ b/components/asio/Kconfig @@ -6,23 +6,6 @@ menu "ESP-ASIO" default n help Enable support for basic SSL/TLS features, available for mbedTLS/OpenSSL - as well as wolfSSL TLS library. - - choice ASIO_SSL_LIBRARY_CHOICE - prompt "Choose SSL/TLS library for ESP-TLS (See help for more Info)" - default ASIO_USE_ESP_OPENSSL - depends on ASIO_SSL_SUPPORT - help - The ASIO support multiple backend TLS libraries. Currently the mbedTLS with a thin ESP-OpenSSL - port layer (default choice) and WolfSSL are supported. - Different TLS libraries may support different features and have different resource - usage. Consult the ESP-TLS documentation in ESP-IDF Programming guide for more details. - config ASIO_USE_ESP_OPENSSL - bool "esp-openssl" - config ASIO_USE_ESP_WOLFSSL - depends on TLS_STACK_WOLFSSL - bool "wolfSSL (License info in wolfSSL directory README)" - endchoice config ASIO_SSL_BIO_SIZE int "Size of BIO object" diff --git a/components/asio/asio b/components/asio/asio index 58384fb6af9..9cf116aa630 160000 --- a/components/asio/asio +++ b/components/asio/asio @@ -1 +1 @@ -Subproject commit 58384fb6af92e7952b1534acb3004924f7ea0565 +Subproject commit 9cf116aa630b252fce8261143df755fe3256cbe9 diff --git a/components/asio/port/include/esp_asio_config.h b/components/asio/port/include/esp_asio_config.h index cf42183a3e2..2ad9c79c76e 100644 --- a/components/asio/port/include/esp_asio_config.h +++ b/components/asio/port/include/esp_asio_config.h @@ -1,45 +1,12 @@ /* - * SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2018-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #ifndef _ESP_ASIO_CONFIG_H_ #define _ESP_ASIO_CONFIG_H_ -// -// Enabling exceptions only when they are enabled in menuconfig -// -# include -# ifndef CONFIG_COMPILER_CXX_EXCEPTIONS -# define ASIO_NO_EXCEPTIONS -# endif // CONFIG_COMPILER_CXX_EXCEPTIONS - -# ifndef CONFIG_COMPILER_RTTI -# define ASIO_NO_TYPEID -# endif // CONFIG_COMPILER_RTTI - -// -// Use system sockets -// -# include "sys/socket.h" - -// -// Specific ASIO feature flags -// -# define ASIO_DISABLE_SERIAL_PORT -# define ASIO_SEPARATE_COMPILATION -# define ASIO_STANDALONE -# define ASIO_HAS_PTHREADS -# define ASIO_DISABLE_CONCEPTS - -# ifdef CONFIG_ASIO_USE_ESP_OPENSSL -# define ASIO_USE_ESP_OPENSSL -# define OPENSSL_NO_ENGINE -# define ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP -# include "openssl_stub.hpp" - -# elif CONFIG_ASIO_USE_ESP_WOLFSSL -# define ASIO_USE_WOLFSSL -# endif // CONFIG_ASIO_USE_ESP_OPENSSL +#define ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP +#include "openssl_stub.hpp" #endif // _ESP_ASIO_CONFIG_H_