[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
Dario Binacchi July 16, 2026, 1:53 p.m. UTC | #2
Hi all

On Tue, Feb 17, 2026 at 5:52 PM Dario Binacchi
<dario.binacchi@amarulasolutions.com> wrote:
>
> 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?

Following up again on this series, as it has now been pending for some
time without a review.
Could someone please take a look and provide a review?

Thanks and regards,
Dario

>
> Thanks and regards,
> Dario
> --
>
> Dario Binacchi
>
> Senior Embedded Linux Developer
>
> dario.binacchi@amarulasolutions.com
>
> __________________________________
>
>
> Amarula Solutions SRL
>
> Via Le Canevare 30, 31100 Treviso, Veneto, IT
>
> T. +39 042 243 5310
> info@amarulasolutions.com
>
> www.amarulasolutions.com
'Julien Olivain' via Amarula Linux July 18, 2026, 12:52 p.m. UTC | #3
Hi Dario,

I have few comments. See below.

On 02/01/2026 19:24, Dario Binacchi 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/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

The drogon.hash file is missing. When running the
command "make drogon-legal-info", we can see the messages:

...
WARNING: no hash file for drogon-v1.9.11-git4.tar.gz
...
WARNING: no hash file for LICENSE

Could you add the hash file please?

Also, this package is introducing build failures. There is probably
missing dependencies.
See: https://gitlab.com/jolivain/buildroot/-/pipelines/2682597534

You can also reproduce locally with the command:
utils/test-pkg -a -p drogon

While fixing those issue, could you bump to the latest 1.9.13. This
should remove some (if not all) package patches.

Could you send an updated patch addressing those issues, please?

> +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

Best regards,

Julien.

To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.

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))