Skip to content

Commit

Permalink
feat(asio): Drop esp/asio patches in favor of sock-utils
Browse files Browse the repository at this point in the history
  • Loading branch information
david-cermak committed Dec 18, 2024
1 parent 42cde46 commit ac63389
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "components/asio/asio"]
path = components/asio/asio
url = https://github.com/espressif/asio
url = https://github.com/chriskohlhoff/asio
[submodule "components/mosquitto/mosquitto"]
path = components/mosquitto/mosquitto
url = https://github.com/eclipse/mosquitto
7 changes: 4 additions & 3 deletions components/asio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ if(NOT CONFIG_LWIP_IPV6 AND NOT CMAKE_BUILD_EARLY_EXPANSION)
return()
endif()

set(asio_sources "asio/asio/src/asio.cpp")
set(asio_requires lwip)
set(asio_sources "asio/asio/src/asio.cpp" "port/src/asio_stub.cpp")
set(asio_requires lwip sock_utils)

if(CONFIG_ASIO_SSL_SUPPORT)
list(APPEND asio_sources
Expand All @@ -18,7 +18,7 @@ if(CONFIG_ASIO_SSL_SUPPORT)
endif()

idf_component_register(SRCS ${asio_sources}
INCLUDE_DIRS "asio/asio/include" "port/include"
INCLUDE_DIRS "port/include" "asio/asio/include"
PRIV_INCLUDE_DIRS ${asio_priv_includes}
PRIV_REQUIRES ${asio_requires})

Expand All @@ -30,6 +30,7 @@ target_compile_definitions(${COMPONENT_LIB} PUBLIC SA_RESTART=0x01
ASIO_STANDALONE
ASIO_HAS_PTHREADS
OPENSSL_NO_ENGINE
ASIO_DETAIL_IMPL_POSIX_EVENT_IPP # this replaces asio's posix_event constructor
)

if(NOT CONFIG_COMPILER_CXX_EXCEPTIONS)
Expand Down
2 changes: 2 additions & 0 deletions components/asio/idf_component.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ repository: https://github.com/espressif/esp-protocols.git
dependencies:
idf:
version: ">=5.0"
espressif/sock_utils:
version: "^0.1"
11 changes: 11 additions & 0 deletions components/asio/port/include/asio/detail/config.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//
// SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
//
// SPDX-License-Identifier: BSL-1.0
//
#pragma once

#include "sys/socket.h"
#include "socketpair.h"

#include_next "asio/detail/config.hpp"
12 changes: 0 additions & 12 deletions components/asio/port/include/esp_asio_config.h

This file was deleted.

2 changes: 1 addition & 1 deletion components/asio/port/mbedtls/src/mbedtls_context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
//

#include "asio/detail/config.hpp"
#include "openssl_stub.hpp"
#include "asio/ssl/detail/openssl_types.hpp"
#include <cstring>
#include "asio/detail/throw_error.hpp"
#include "asio/error.hpp"
Expand Down
2 changes: 1 addition & 1 deletion components/asio/port/mbedtls/src/mbedtls_engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

#include "asio/detail/config.hpp"
#include "openssl_stub.hpp"
#include "asio/ssl/detail/openssl_types.hpp"
#include "asio/detail/throw_error.hpp"
#include "asio/error.hpp"
#include "asio/ssl/detail/engine.hpp"
Expand Down
36 changes: 36 additions & 0 deletions components/asio/port/src/asio_stub.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//
// SPDX-FileCopyrightText: 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// SPDX-License-Identifier: BSL-1.0
//
// SPDX-FileContributor: 2024 Espressif Systems (Shanghai) CO LTD
//
#include "asio/detail/posix_event.hpp"
#include "asio/detail/throw_error.hpp"
#include "asio/error.hpp"
#include "asio/detail/push_options.hpp"
#include <unistd.h>
#include <climits>

namespace asio::detail {
// This replaces asio's posix_event constructor
// since the default POSIX version uses pthread_condattr_t operations (init, setclock, destroy),
// which are not available on all IDF versions (some are defined in compilers' headers, others in
// pthread library, but they typically return `ENOSYS` which causes trouble in the event wrapper)
// IMPORTANT: Check implementation of posix_event() when upgrading upstream asio in order not to
// miss any initialization step.
posix_event::posix_event()
: state_(0)
{
int error = ::pthread_cond_init(&cond_, nullptr);
asio::error_code ec(error, asio::error::get_system_category());
asio::detail::throw_error(ec, "event");
}
} // namespace asio::detail

extern "C" int pause (void)
{
while (true) {
::sleep(UINT_MAX);
}
}

0 comments on commit ac63389

Please sign in to comment.