@@ -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/
@@ -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"
new file mode 100644
@@ -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
+
new file mode 100644
@@ -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
+
new file mode 100644
@@ -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
new file mode 100644
@@ -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))
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