[v3,2/2] package/drogon: new package

Message ID 20260102182445.365668-2-dario.binacchi@amarulasolutions.com
State New
Headers show
Series
  • [v3,1/2] package/jsoncpp: add host variant
Related show

Commit Message

Dario Binacchi Jan. 2, 2026, 6:24 p.m. UTC
Drogon is a C++17/20 based HTTP application framework. It can be used to
easily build various types of web application server programs using C++.

Project page: https://github.com/drogonframework/drogon

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

Changes v2 -> v3:
- The PRs related to the patches have all been merged. The first PR was
  merged by combining the three patches into a single one. Replace all
  Upstream: links with the link to the final commit.
- Add help text to the added KConfig options.
- Select external libraries for BROTLI and YAML_CONFIG options.
- Drop the host configurations. Files too.
- Always add -DBUILD_CTL=ON to HOST_DROGON_CONF_OPTS (together with
  -DBUILD_TESTS=OFF and -DBUILD_EXAMPLES=OFF).

Changes v1 -> v2:
- Drop BR2_ARCH_IS_64 dependency. It has been tested on imx6ull platform.
- Add DROGON_INSTALL_STAGING
- Add 0004-Fix-building-error-for-Werror-unused-value.patch for trantor
  submodule.

 DEVELOPERS                                    |  1 +
 package/Config.in                             |  1 +
 .../0001-Fix-cross-compiling-2389.patch       | 76 +++++++++++++++++++
 ...ilding-error-for-Werror-unused-value.patch | 42 ++++++++++
 package/drogon/Config.in                      | 50 ++++++++++++
 package/drogon/drogon.mk                      | 63 +++++++++++++++
 6 files changed, 233 insertions(+)
 create mode 100644 package/drogon/0001-Fix-cross-compiling-2389.patch
 create mode 100644 package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
 create mode 100644 package/drogon/Config.in
 create mode 100644 package/drogon/drogon.mk

Comments

Dario Binacchi Feb. 17, 2026, 4:52 p.m. UTC | #1
Hi all

On Fri, Jan 2, 2026 at 7:24 PM Dario Binacchi
<dario.binacchi@amarulasolutions.com> wrote:
>
> Drogon is a C++17/20 based HTTP application framework. It can be used to
> easily build various types of web application server programs using C++.
>
> Project page: https://github.com/drogonframework/drogon
>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
>
> ---
>
> Changes v2 -> v3:
> - The PRs related to the patches have all been merged. The first PR was
>   merged by combining the three patches into a single one. Replace all
>   Upstream: links with the link to the final commit.
> - Add help text to the added KConfig options.
> - Select external libraries for BROTLI and YAML_CONFIG options.
> - Drop the host configurations. Files too.
> - Always add -DBUILD_CTL=ON to HOST_DROGON_CONF_OPTS (together with
>   -DBUILD_TESTS=OFF and -DBUILD_EXAMPLES=OFF).
>
> Changes v1 -> v2:
> - Drop BR2_ARCH_IS_64 dependency. It has been tested on imx6ull platform.
> - Add DROGON_INSTALL_STAGING
> - Add 0004-Fix-building-error-for-Werror-unused-value.patch for trantor
>   submodule.
>
>  DEVELOPERS                                    |  1 +
>  package/Config.in                             |  1 +
>  .../0001-Fix-cross-compiling-2389.patch       | 76 +++++++++++++++++++
>  ...ilding-error-for-Werror-unused-value.patch | 42 ++++++++++
>  package/drogon/Config.in                      | 50 ++++++++++++
>  package/drogon/drogon.mk                      | 63 +++++++++++++++
>  6 files changed, 233 insertions(+)
>  create mode 100644 package/drogon/0001-Fix-cross-compiling-2389.patch
>  create mode 100644 package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
>  create mode 100644 package/drogon/Config.in
>  create mode 100644 package/drogon/drogon.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index f448c3b5820c..70ea6f8e023f 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -815,6 +815,7 @@ F:  package/babeld/
>  F:     package/bc/
>  F:     package/cmocka/
>  F:     package/connman/
> +F:     package/drogon/
>  F:     package/empty/
>  F:     package/iana-assignments/
>  F:     package/inih/
> diff --git a/package/Config.in b/package/Config.in
> index 2b9e31ebb30d..998042ed2610 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1979,6 +1979,7 @@ menu "Networking"
>         source "package/davici/Config.in"
>         source "package/dht/Config.in"
>         source "package/dpdk/Config.in"
> +       source "package/drogon/Config.in"
>         source "package/enet/Config.in"
>         source "package/filemq/Config.in"
>         source "package/fmlib/Config.in"
> diff --git a/package/drogon/0001-Fix-cross-compiling-2389.patch b/package/drogon/0001-Fix-cross-compiling-2389.patch
> new file mode 100644
> index 000000000000..f6df0a435006
> --- /dev/null
> +++ b/package/drogon/0001-Fix-cross-compiling-2389.patch
> @@ -0,0 +1,76 @@
> +From 06508006812881c91eebd80307aa465d5abd0e55 Mon Sep 17 00:00:00 2001
> +From: Dario Binacchi <45538935+passgat@users.noreply.github.com>
> +Date: Wed, 24 Sep 2025 09:21:12 +0200
> +Subject: [PATCH] Fix cross compiling (#2389)
> +
> +Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> +Upstream: https://github.com/drogonframework/drogon/commit/06508006812881c91eebd80307aa465d5abd0e55
> +---
> + CMakeLists.txt            | 9 +++++++++
> + drogon_ctl/CMakeLists.txt | 3 ++-
> + examples/CMakeLists.txt   | 8 ++++++++
> + 3 files changed, 19 insertions(+), 1 deletion(-)
> +
> +diff --git a/CMakeLists.txt b/CMakeLists.txt
> +index 9cbc6d732a33..7cf091e90ef7 100644
> +--- a/CMakeLists.txt
> ++++ b/CMakeLists.txt
> +@@ -524,6 +524,15 @@ if (BUILD_EXAMPLES)
> + endif (BUILD_EXAMPLES)
> +
> + if (BUILD_CTL)
> ++    if (CMAKE_CROSSCOMPILING)
> ++        find_program(HOST_DROGON_CTL _drogon_ctl)
> ++        if (NOT HOST_DROGON_CTL)
> ++            message(FATAL_ERROR "_drogon_ctl not found on host system")
> ++        endif()
> ++        set(DROGON_CTL "${HOST_DROGON_CTL}")
> ++    else (CMAKE_CROSSCOMPILING)
> ++        set(DROGON_CTL "$<TARGET_FILE:_drogon_ctl>")
> ++    endif (CMAKE_CROSSCOMPILING)
> +     add_subdirectory(drogon_ctl)
> + endif (BUILD_CTL)
> +
> +diff --git a/drogon_ctl/CMakeLists.txt b/drogon_ctl/CMakeLists.txt
> +index 04b790d3741b..f6b12bddab60 100755
> +--- a/drogon_ctl/CMakeLists.txt
> ++++ b/drogon_ctl/CMakeLists.txt
> +@@ -43,7 +43,7 @@ foreach(cspFile ${SCP_LIST})
> +   get_filename_component(classname ${cspFile} NAME_WE)
> +   message(STATUS "view classname:" ${classname})
> +   add_custom_command(OUTPUT ${classname}.h ${classname}.cc
> +-                     COMMAND $<TARGET_FILE:_drogon_ctl>
> ++                     COMMAND ${DROGON_CTL}
> +                              ARGS
> +                              create
> +                              view
> +@@ -63,6 +63,7 @@ if(APPLE)
> +   target_link_libraries(drogon_ctl PRIVATE resolv)
> + endif()
> + message(STATUS "bin:" ${INSTALL_BIN_DIR})
> ++install(TARGETS _drogon_ctl RUNTIME DESTINATION ${INSTALL_BIN_DIR})
> + install(TARGETS drogon_ctl RUNTIME DESTINATION ${INSTALL_BIN_DIR})
> + if(WIN32)
> +   set(CTL_FILE $<TARGET_FILE:drogon_ctl>)
> +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
> +index dca122f424ba..61e65d8323aa 100755
> +--- a/examples/CMakeLists.txt
> ++++ b/examples/CMakeLists.txt
> +@@ -50,6 +50,14 @@ set(example_targets
> +     async_stream
> +     cors)
> +
> ++foreach(target ${example_targets})
> ++    set_target_properties(${target} PROPERTIES
> ++        RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
> ++endforeach()
> ++
> ++install(TARGETS ${example_targets}
> ++    RUNTIME DESTINATION ${INSTALL_BIN_DIR})
> ++
> + # Add warnings for our example targets--some warnings (such as -Wunused-parameter) only appear
> + # when the templated functions are instantiated at their point of use.
> + if(NOT ${CMAKE_PLATFORM_NAME} STREQUAL "Windows" AND CMAKE_CXX_COMPILER_ID MATCHES GNU)
> +--
> +2.43.0
> +
> diff --git a/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch b/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
> new file mode 100644
> index 000000000000..16c6ba6b4217
> --- /dev/null
> +++ b/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
> @@ -0,0 +1,42 @@
> +From 7134f2f8e07b89450dd2407e7a21a7b9cea6b192 Mon Sep 17 00:00:00 2001
> +From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> +Date: Sat, 8 Nov 2025 19:39:01 +0100
> +Subject: [PATCH] Fix building error for -Werror=unused-value
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Compiling trantor in Buildroot raises the following error:
> +
> +In file included from output/host/include/openssl/ssl.h:30,
> +                 from output/build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc:6:
> +build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc: In member function ‘ssize_t OpenSSLProvider::sendTLSData()’:
> +output/host/include/openssl/bio.h:629:34: error: value computed is not used [-Werror=unused-value]
> +  629 | # define BIO_reset(b)            (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
> +      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +output/build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc:777:9: note: in expansion of macro ‘BIO_reset’
> +  777 |         BIO_reset(wbio_);
> +      |         ^~~~~~~~~
> +
> +Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> +Upstream: https://github.com/an-tao/trantor/commit/5714e8f68d3016c9a6a5abd23c627cf5d98eab81
> +---
> + trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc b/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
> +index f91e9cde75bd..787cbc405436 100644
> +--- a/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
> ++++ b/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
> +@@ -774,7 +774,7 @@ struct OpenSSLProvider : public TLSProvider, public NonCopyable
> +         {
> +             appendToWriteBuffer((char *)data + n, len - n);
> +         }
> +-        BIO_reset(wbio_);
> ++        (void)BIO_reset(wbio_);
> +         if (n < 0)
> +             return -1;
> +         return len;
> +--
> +2.43.0
> +
> diff --git a/package/drogon/Config.in b/package/drogon/Config.in
> new file mode 100644
> index 000000000000..d5b03cf61767
> --- /dev/null
> +++ b/package/drogon/Config.in
> @@ -0,0 +1,50 @@
> +config BR2_PACKAGE_DROGON
> +       bool "drogon"
> +       depends on BR2_INSTALL_LIBSTDCPP
> +       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_11 # C++17/20
> +       depends on BR2_TOOLCHAIN_HAS_THREADS
> +       select BR2_PACKAGE_JSONCPP
> +       select BR2_PACKAGE_UTIL_LINUX
> +       select BR2_PACKAGE_UTIL_LINUX_LIBUUID
> +       select BR2_PACKAGE_ZLIB
> +       help
> +         Drogon is a C++17/20 based HTTP application framework.
> +         Drogon can be used to easily build various types of web
> +         application server programs using C++.
> +
> +         https://github.com/drogonframework/drogon
> +
> +if BR2_PACKAGE_DROGON
> +
> +config BR2_PACKAGE_DROGON_BROTLI
> +       bool "build Brotli"
> +       select BR2_PACKAGE_BROTLI
> +       help
> +         Add support for brotli compression.
> +
> +config BR2_PACKAGE_DROGON_CTL
> +       bool "build drogon_ctl"
> +       help
> +         drogon_ctl is a command-line tool used to generate
> +         project skeletons and source code.
> +
> +config BR2_PACKAGE_DROGON_EXAMPLES
> +       bool "build examples"
> +
> +config BR2_PACKAGE_DROGON_ORM
> +       bool "build orm"
> +       help
> +         Enable the ORM module for typed database access.
> +
> +config BR2_PACKAGE_DROGON_YAML_CONFIG
> +       bool "build yaml config"
> +       select BR2_PACKAGE_YAML_CPP
> +       help
> +         Add support for YAML configuration via yaml-cpp.
> +
> +endif
> +
> +comment "drogon needs a toolchain w/ C++, threads, gcc >= 11"
> +       depends on !BR2_INSTALL_LIBSTDCPP || \
> +               !BR2_TOOLCHAIN_GCC_AT_LEAST_11 || \
> +               !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/drogon/drogon.mk b/package/drogon/drogon.mk
> new file mode 100644
> index 000000000000..06354280db07
> --- /dev/null
> +++ b/package/drogon/drogon.mk
> @@ -0,0 +1,63 @@
> +################################################################################
> +#
> +# drogon
> +#
> +################################################################################
> +
> +DROGON_VERSION = v1.9.11
> +DROGON_SITE = https://github.com/drogonframework/drogon
> +DROGON_SITE_METHOD = git
> +DROGON_GIT_SUBMODULES = YES
> +DROGON_LICENSE = MIT
> +DROGON_LICENSE_FILES = LICENSE
> +DROGON_INSTALL_STAGING = YES
> +
> +DROGON_DEPENDENCIES = jsoncpp util-linux zlib
> +HOST_DROGON_DEPENDENCIES = host-jsoncpp host-util-linux host-zlib
> +
> +DROGON_CONF_OPTS = \
> +       -DBUILD_TESTS=OFF
> +
> +HOST_DROGON_CONF_OPTS = \
> +       -DBUILD_CTL=ON \
> +       -DBUILD_EXAMPLES=OFF \
> +       -DBUILD_TESTS=OFF
> +
> +ifeq ($(BR2_PACKAGE_DROGON_BROTLI),y)
> +DROGON_DEPENDENCIES += brotli
> +DROGON_CONF_OPTS += -DBUILD_BROTLI=ON
> +else
> +DROGON_CONF_OPTS += -DBUILD_BROTLI=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_DROGON_CTL),y)
> +# When we have drogon_ctl for the target, we need to build the
> +# _drogon_ctl tool with host-drogon support so that it can be
> +# run during the building process
> +DROGON_DEPENDENCIES += host-drogon
> +DROGON_CONF_OPTS += -DBUILD_CTL=ON
> +else
> +DROGON_CONF_OPTS += -DBUILD_CTL=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_DROGON_EXAMPLES),y)
> +DROGON_CONF_OPTS += -DBUILD_EXAMPLES=ON
> +else
> +DROGON_CONF_OPTS += -DBUILD_EXMPLES=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_DROGON_ORM),y)
> +DROGON_CONF_OPTS += -DBUILD_ORM=ON
> +else
> +DROGON_CONF_OPTS += -DBUILD_ORM=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_DROGON_YAML_CONFIG),y)
> +DROGON_DEPENDENCIES += yaml-cpp
> +DROGON_CONF_OPTS += -DBUILD_YAML_CONFIG=ON
> +else
> +DROGON_CONF_OPTS += -DBUILD_YAML_CONFIG=OFF
> +endif
> +
> +$(eval $(cmake-package))
> +$(eval $(host-cmake-package))
> --
> 2.43.0
>

A gentle ping on this series, as it has been pending for a while now.
Could someone please kindly take a look and provide a review?

Thanks and regards,
Dario

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index f448c3b5820c..70ea6f8e023f 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -815,6 +815,7 @@  F:	package/babeld/
 F:	package/bc/
 F:	package/cmocka/
 F:	package/connman/
+F:	package/drogon/
 F:	package/empty/
 F:	package/iana-assignments/
 F:	package/inih/
diff --git a/package/Config.in b/package/Config.in
index 2b9e31ebb30d..998042ed2610 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1979,6 +1979,7 @@  menu "Networking"
 	source "package/davici/Config.in"
 	source "package/dht/Config.in"
 	source "package/dpdk/Config.in"
+	source "package/drogon/Config.in"
 	source "package/enet/Config.in"
 	source "package/filemq/Config.in"
 	source "package/fmlib/Config.in"
diff --git a/package/drogon/0001-Fix-cross-compiling-2389.patch b/package/drogon/0001-Fix-cross-compiling-2389.patch
new file mode 100644
index 000000000000..f6df0a435006
--- /dev/null
+++ b/package/drogon/0001-Fix-cross-compiling-2389.patch
@@ -0,0 +1,76 @@ 
+From 06508006812881c91eebd80307aa465d5abd0e55 Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <45538935+passgat@users.noreply.github.com>
+Date: Wed, 24 Sep 2025 09:21:12 +0200
+Subject: [PATCH] Fix cross compiling (#2389)
+
+Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Upstream: https://github.com/drogonframework/drogon/commit/06508006812881c91eebd80307aa465d5abd0e55
+---
+ CMakeLists.txt            | 9 +++++++++
+ drogon_ctl/CMakeLists.txt | 3 ++-
+ examples/CMakeLists.txt   | 8 ++++++++
+ 3 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9cbc6d732a33..7cf091e90ef7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -524,6 +524,15 @@ if (BUILD_EXAMPLES)
+ endif (BUILD_EXAMPLES)
+ 
+ if (BUILD_CTL)
++    if (CMAKE_CROSSCOMPILING)
++        find_program(HOST_DROGON_CTL _drogon_ctl)
++        if (NOT HOST_DROGON_CTL)
++            message(FATAL_ERROR "_drogon_ctl not found on host system")
++        endif()
++        set(DROGON_CTL "${HOST_DROGON_CTL}")
++    else (CMAKE_CROSSCOMPILING)
++        set(DROGON_CTL "$<TARGET_FILE:_drogon_ctl>")
++    endif (CMAKE_CROSSCOMPILING)
+     add_subdirectory(drogon_ctl)
+ endif (BUILD_CTL)
+ 
+diff --git a/drogon_ctl/CMakeLists.txt b/drogon_ctl/CMakeLists.txt
+index 04b790d3741b..f6b12bddab60 100755
+--- a/drogon_ctl/CMakeLists.txt
++++ b/drogon_ctl/CMakeLists.txt
+@@ -43,7 +43,7 @@ foreach(cspFile ${SCP_LIST})
+   get_filename_component(classname ${cspFile} NAME_WE)
+   message(STATUS "view classname:" ${classname})
+   add_custom_command(OUTPUT ${classname}.h ${classname}.cc
+-                     COMMAND $<TARGET_FILE:_drogon_ctl>
++                     COMMAND ${DROGON_CTL}
+                              ARGS
+                              create
+                              view
+@@ -63,6 +63,7 @@ if(APPLE)
+   target_link_libraries(drogon_ctl PRIVATE resolv)
+ endif()
+ message(STATUS "bin:" ${INSTALL_BIN_DIR})
++install(TARGETS _drogon_ctl RUNTIME DESTINATION ${INSTALL_BIN_DIR})
+ install(TARGETS drogon_ctl RUNTIME DESTINATION ${INSTALL_BIN_DIR})
+ if(WIN32)
+   set(CTL_FILE $<TARGET_FILE:drogon_ctl>)
+diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
+index dca122f424ba..61e65d8323aa 100755
+--- a/examples/CMakeLists.txt
++++ b/examples/CMakeLists.txt
+@@ -50,6 +50,14 @@ set(example_targets
+     async_stream
+     cors)
+ 
++foreach(target ${example_targets})
++    set_target_properties(${target} PROPERTIES
++        RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
++endforeach()
++
++install(TARGETS ${example_targets}
++    RUNTIME DESTINATION ${INSTALL_BIN_DIR})
++
+ # Add warnings for our example targets--some warnings (such as -Wunused-parameter) only appear
+ # when the templated functions are instantiated at their point of use.
+ if(NOT ${CMAKE_PLATFORM_NAME} STREQUAL "Windows" AND CMAKE_CXX_COMPILER_ID MATCHES GNU)
+-- 
+2.43.0
+
diff --git a/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch b/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
new file mode 100644
index 000000000000..16c6ba6b4217
--- /dev/null
+++ b/package/drogon/0002-Fix-building-error-for-Werror-unused-value.patch
@@ -0,0 +1,42 @@ 
+From 7134f2f8e07b89450dd2407e7a21a7b9cea6b192 Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Date: Sat, 8 Nov 2025 19:39:01 +0100
+Subject: [PATCH] Fix building error for -Werror=unused-value
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Compiling trantor in Buildroot raises the following error:
+
+In file included from output/host/include/openssl/ssl.h:30,
+                 from output/build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc:6:
+build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc: In member function ‘ssize_t OpenSSLProvider::sendTLSData()’:
+output/host/include/openssl/bio.h:629:34: error: value computed is not used [-Werror=unused-value]
+  629 | # define BIO_reset(b)            (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
+      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+output/build/host-drogon-v1.9.11/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc:777:9: note: in expansion of macro ‘BIO_reset’
+  777 |         BIO_reset(wbio_);
+      |         ^~~~~~~~~
+
+Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Upstream: https://github.com/an-tao/trantor/commit/5714e8f68d3016c9a6a5abd23c627cf5d98eab81
+---
+ trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc b/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
+index f91e9cde75bd..787cbc405436 100644
+--- a/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
++++ b/trantor/trantor/net/inner/tlsprovider/OpenSSLProvider.cc
+@@ -774,7 +774,7 @@ struct OpenSSLProvider : public TLSProvider, public NonCopyable
+         {
+             appendToWriteBuffer((char *)data + n, len - n);
+         }
+-        BIO_reset(wbio_);
++        (void)BIO_reset(wbio_);
+         if (n < 0)
+             return -1;
+         return len;
+-- 
+2.43.0
+
diff --git a/package/drogon/Config.in b/package/drogon/Config.in
new file mode 100644
index 000000000000..d5b03cf61767
--- /dev/null
+++ b/package/drogon/Config.in
@@ -0,0 +1,50 @@ 
+config BR2_PACKAGE_DROGON
+	bool "drogon"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_11 # C++17/20
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_JSONCPP
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_ZLIB
+	help
+	  Drogon is a C++17/20 based HTTP application framework.
+	  Drogon can be used to easily build various types of web
+	  application server programs using C++.
+
+	  https://github.com/drogonframework/drogon
+
+if BR2_PACKAGE_DROGON
+
+config BR2_PACKAGE_DROGON_BROTLI
+	bool "build Brotli"
+	select BR2_PACKAGE_BROTLI
+	help
+	  Add support for brotli compression.
+
+config BR2_PACKAGE_DROGON_CTL
+	bool "build drogon_ctl"
+	help
+	  drogon_ctl is a command-line tool used to generate
+	  project skeletons and source code.
+
+config BR2_PACKAGE_DROGON_EXAMPLES
+	bool "build examples"
+
+config BR2_PACKAGE_DROGON_ORM
+	bool "build orm"
+	help
+	  Enable the ORM module for typed database access.
+
+config BR2_PACKAGE_DROGON_YAML_CONFIG
+	bool "build yaml config"
+	select BR2_PACKAGE_YAML_CPP
+	help
+	  Add support for YAML configuration via yaml-cpp.
+
+endif
+
+comment "drogon needs a toolchain w/ C++, threads, gcc >= 11"
+	depends on !BR2_INSTALL_LIBSTDCPP || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_11 || \
+		!BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/drogon/drogon.mk b/package/drogon/drogon.mk
new file mode 100644
index 000000000000..06354280db07
--- /dev/null
+++ b/package/drogon/drogon.mk
@@ -0,0 +1,63 @@ 
+################################################################################
+#
+# drogon
+#
+################################################################################
+
+DROGON_VERSION = v1.9.11
+DROGON_SITE = https://github.com/drogonframework/drogon
+DROGON_SITE_METHOD = git
+DROGON_GIT_SUBMODULES = YES
+DROGON_LICENSE = MIT
+DROGON_LICENSE_FILES = LICENSE
+DROGON_INSTALL_STAGING = YES
+
+DROGON_DEPENDENCIES = jsoncpp util-linux zlib
+HOST_DROGON_DEPENDENCIES = host-jsoncpp host-util-linux host-zlib
+
+DROGON_CONF_OPTS = \
+	-DBUILD_TESTS=OFF
+
+HOST_DROGON_CONF_OPTS = \
+	-DBUILD_CTL=ON \
+	-DBUILD_EXAMPLES=OFF \
+	-DBUILD_TESTS=OFF
+
+ifeq ($(BR2_PACKAGE_DROGON_BROTLI),y)
+DROGON_DEPENDENCIES += brotli
+DROGON_CONF_OPTS += -DBUILD_BROTLI=ON
+else
+DROGON_CONF_OPTS += -DBUILD_BROTLI=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_DROGON_CTL),y)
+# When we have drogon_ctl for the target, we need to build the
+# _drogon_ctl tool with host-drogon support so that it can be
+# run during the building process
+DROGON_DEPENDENCIES += host-drogon
+DROGON_CONF_OPTS += -DBUILD_CTL=ON
+else
+DROGON_CONF_OPTS += -DBUILD_CTL=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_DROGON_EXAMPLES),y)
+DROGON_CONF_OPTS += -DBUILD_EXAMPLES=ON
+else
+DROGON_CONF_OPTS += -DBUILD_EXMPLES=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_DROGON_ORM),y)
+DROGON_CONF_OPTS += -DBUILD_ORM=ON
+else
+DROGON_CONF_OPTS += -DBUILD_ORM=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_DROGON_YAML_CONFIG),y)
+DROGON_DEPENDENCIES += yaml-cpp
+DROGON_CONF_OPTS += -DBUILD_YAML_CONFIG=ON
+else
+DROGON_CONF_OPTS += -DBUILD_YAML_CONFIG=OFF
+endif
+
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))