From patchwork Tue Sep 23 15:55:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4357 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 841873F145 for ; Tue, 23 Sep 2025 17:55:14 +0200 (CEST) Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-632d1317f48sf4789655a12.0 for ; Tue, 23 Sep 2025 08:55:14 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1758642914; cv=pass; d=google.com; s=arc-20240605; b=eKwuYURfSd4LxDWq8iuOAq6Ej3MAr1PxGnjUBzllY1Vp/7b8mCzxaHopE+PhNkBQSb Fx06iDtP3VguYhD5IodiGgsonYgF0BGCTq+TZQSO454vs00s4WvpY1t2UmCAYGCgvwsk 5IWvrAzVyqQ0MQJ1uTZ48wbnDKYIbiwg+AhPbuseelVEnlnLcIrstcvWfCEKIRAVMjRJ 3dwQPXA7FsbjZvqdNJ26fI9o26lIJTPo/azVgY0STOR37gqCn3KD4C7OW3obazaMNJgp cVYg/QEf1QsqpJL9Xk7946CW2y6pSLqQVp+tQjK2uVcFacsphMp0ETKnM5D2Wcvn/2sc h3YQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xMAjKNyMpI6WNJAEIgf8lk7cvVKKeyZ9TxjuIJPXrEM=; fh=Qlm58FGOfDoyIx0BWTxtlrWRc4ebghv7N7DIfKJxL80=; b=VDTZvCsighwT4NYSDNvBqXoNjvZ483sBJzqRe6Gy+u7ZJYGpc4NXyXVamivqY0cXSR ItCzMl79mX61I838HGjqoOK1vqEqiHtYa7S3z5E0zgwlyWUFxEXECvurkWT8DRo9JQjb 0ttuYu5p7nkzcfrLsjzLcpAr0HR7JTGAx253QbKio/UWyG4OmAcdxCeOfzymaUsGMqaR lCQlZcsohcIilJmmJWtXx3VMb5kdyiZ1Q0pwvynf70ZbIV+2l2ixyuRgn34ruqhIGnvt cKyVqKf3h5MfwXW9Jt9onrqA1fcAnU3qVNHoA1kgqrCJK44Yf2RW1qq6/pVk7H0YnGH0 guQg==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=TJlfbl1C; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1758642914; x=1759247714; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=xMAjKNyMpI6WNJAEIgf8lk7cvVKKeyZ9TxjuIJPXrEM=; b=rGc7V81rSW5hyKH0FNToUDmDWTfDlbdLYCs3F9bapxIUAtT0qAbP8NmfTY5jdAZZhr cq0h4eHUjJu24ZvQPk1X2iBhPM+BOjOZa2EFGTH68oNk35RxO+LXVUhmFb1qVhCu9+VI yWAAWH0lSA258wSPNjMjCOKTVeXPvaXN92N/Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758642914; x=1759247714; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=xMAjKNyMpI6WNJAEIgf8lk7cvVKKeyZ9TxjuIJPXrEM=; b=LJfMBLQ6MCNnMRaOAK9bjhLap7P6kBUPDnTgAxaNcMjPBXHlgwGz+ehQLCgYBO0szA OpIekT+h5kMQWsefQcaPX9WTnfpPBcn9i5buYa+llSrBr6FoLXA1E4xk/IRorWwZNOf9 08a47oWUAHyJqFXbtV4jK6U02LceNIdBwVRAvQcn8QXfEzP3n7rBR2YsKZVlf+H/K7mi QN20Mor5xqsIORTG0qzqT8hVebWFetIqHg3SCRaNPhUgxfqcOdUAbzANWPUqvrzqp8QV Chcv5cnLiOen43Q75QG1Ol3scyng/eYUX/sjWZCv3IjuCPXzUV8fhhZelhWPneS1LW57 DIlg== X-Forwarded-Encrypted: i=2; AJvYcCXOlEqQdq7IJ3FNLQw/xJKdJi8ZEzlFdJmDrURKnNJBtPTPPEwAbUP42NB7i+j7c7Bq+wtumQqHbHn4lXUB@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0Yx0Mi9cocI6Q5LLPg2FXxacubW/CqjyO0JKaNvQgFY4avBRZlBo 8nMYydUC0fhpPWV5l0Obne7RJXgrAQmO08jLmEkIukLAVu7NWkPJYALpURmKHp30BNpdmg== X-Google-Smtp-Source: AGHT+IFHlXM5olgHCbnuvj+xgFIiM7B4Mwu2QPnUat2iD2R9u0uDe8fikkGKzvlbwtjyf7nrDsFjHw== X-Received: by 2002:a05:6402:2108:b0:634:66c8:9e73 with SMTP id 4fb4d7f45d1cf-63467678dd0mr2362275a12.1.1758642913904; Tue, 23 Sep 2025 08:55:13 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h=ARHlJd5UKQ+3dfaNzck3oT+nQ8heMgsZci7K9ViyYdx8NVoO/Q== Received: by 2002:a05:6402:46cc:b0:61c:8922:33b1 with SMTP id 4fb4d7f45d1cf-62fa771ba92ls9253015a12.2.-pod-prod-03-eu; Tue, 23 Sep 2025 08:55:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWa7f8u+Q/jtej5gjFhlwPDMXZF6utQ5nt6MOw0hy2/RcCzpL0A5XvSHyAnK83bwy28og8t8XWw/TYJbJ00@amarulasolutions.com X-Received: by 2002:a17:907:7e93:b0:b2c:fa32:51d3 with SMTP id a640c23a62f3a-b302726041emr318134366b.3.1758642911448; Tue, 23 Sep 2025 08:55:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1758642911; cv=none; d=google.com; s=arc-20240605; b=dQSwGIh024HfyrpTHOM/aSf4MZ0tD3cZpJTGkj1Vb30wepNCwwYok+X537WvSWbcS6 7iuNxBHW5TowT8k0D6Zf8BKPr+KHYqEYsIavfOoL+BF1sDuyGVW2mph5aHVXt0xZqwQc 4/IyWJEQbXHSFP+trUSceLKlmqmA32rjCjbkn77JN5D2j+ovjOlK3+/BNCPn8jsvdLV9 ZVZxdsNU8iRL6pvWLKVby+tc/fkfp0OFz55vVk4rfCKBuJFs6o7pJMnqPuNvZPadYHY0 /fca41qFw/d5GkSP9wcAky9RR1BDR3thk50tbbNYwYXAt+ncA4xRTL4lMXl0icytAVkh prqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Ey5bJP7f8b754ZmMAJtPW8JEfA02ZZsWcjCxH4Yro5E=; fh=3XrXP0VsceVgXaFe+PIf3fcGmSX1tv/W6NPSmiombYg=; b=Cz41pS8G+uPgJc/XK4PT/GePgFNOMWQgH8LcJ54kRKi2KRqhlPUVzfeKi3UkCXnott tcvWzdujEyCJCCO11oLW467kBOUNrZPB3HA8+XvvbBvnT42nj7sg2Azq0Cm2yFd12G4l 9xBpA3nJk3TkB8o95UK3CbUgo0/CGdXV+I5nUKQEV1lXo6TY6VGmd7M46Xc7rwe+G9/B tzOFvSnMYUe1xZmcsLNFCI96qRY/zC5lapq34T4zAMsCDdsstL3cYXpLV3Vryih8LB/D 6yt6TIHAArgWlUbRatO17q8G4ljLjF4DInvcYHtGQGRNdLWPyoc2Skz4NP8s5OjE9Tgz SxAA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=TJlfbl1C; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-b2f37168448sor186049666b.14.2025.09.23.08.55.11 for (Google Transport Security); Tue, 23 Sep 2025 08:55:11 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Forwarded-Encrypted: i=1; AJvYcCVKv+qLTE/JNfiZy5F/LCu76iTTw2qlBwbNnOPY9FEjP5IEyOeXtTsjToG/3lW9rRIVxDD6CUwLneoZURAT@amarulasolutions.com X-Gm-Gg: ASbGncv2VLRlga/S9EmvAy8Rh4HEGKM5Zyw47Xkv4ppH9RUJBCdQ7nPUzAA8RN8qX+5 fuYtlvo4ep6se5vIGMW2kKEr8jPJj6Y+QQ4i1jb0A3Jc2EahGywtJbEGxy0yQLZZDK0V+fqxt4p okFdCOW3UYc48cTJ+CcNqGunIO25juSXSxYeJ7V1BmyywZLcTDkDL7YysKs5YaB6zyrFGbgpUY7 c6x+7Yad0+r+pA7koNVriKAgJUm9U5cUqUlp2vBNnQjP10imV81fcfH1qLkJ1kRDNUfoert5DsX VKN14ki4Of0svFPUxsKBXhkqiGUgpK0AGQTmxBASpigpe/4fmkr1d1wdXNpLHjg1b1AXeV8PLlc IWCr1hlqJw7Xtlecv/B7WeLInFputAM4+YDpYR4hx+b7YHrZ6n2jHIwVCx23OwnHAVXoXFtB9EU EKKTk2QFok28nS7iHm8r0vJe+V3QinCCnhd/lUNlwq0INKLcBIenNAMTSfBM4Xe3Us X-Received: by 2002:a17:907:7247:b0:b2c:b12f:429b with SMTP id a640c23a62f3a-b302d591789mr301774566b.62.1758642910765; Tue, 23 Sep 2025 08:55:10 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-82-56-38-125.retail.telecomitalia.it. [82.56.38.125]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b2adc17af65sm628174766b.19.2025.09.23.08.55.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Sep 2025 08:55:10 -0700 (PDT) From: Dario Binacchi To: buildroot@buildroot.org Cc: Bernd Kuhls , Dario Binacchi , Eric Le Bihan , linux-amarula@amarulasolutions.com Subject: [PATCH 2/2] package/drogon: new package Date: Tue, 23 Sep 2025 17:55:04 +0200 Message-ID: <20250923155504.2870790-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250923155504.2870790-1-dario.binacchi@amarulasolutions.com> References: <20250923155504.2870790-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=TJlfbl1C; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=pass header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , 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 --- DEVELOPERS | 1 + package/Config.in | 1 + package/Config.in.host | 1 + ...e-fix-cross-compiling-for-drogon_ctl.patch | 81 +++++++++++++++++++ ...l-executables-to-bin-to-avoid-build-.patch | 47 +++++++++++ ...ples-install-the-example-executables.patch | 31 +++++++ package/drogon/Config.in | 42 ++++++++++ package/drogon/Config.in.host | 20 +++++ package/drogon/drogon.mk | 61 ++++++++++++++ 9 files changed, 285 insertions(+) create mode 100644 package/drogon/0001-cmake-fix-cross-compiling-for-drogon_ctl.patch create mode 100644 package/drogon/0002-examples-move-all-executables-to-bin-to-avoid-build-.patch create mode 100644 package/drogon/0003-examples-install-the-example-executables.patch create mode 100644 package/drogon/Config.in create mode 100644 package/drogon/Config.in.host create mode 100644 package/drogon/drogon.mk diff --git a/DEVELOPERS b/DEVELOPERS index 4c6ff40886fb..b472f5aed869 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -808,6 +808,7 @@ F: package/armadillo/ F: package/atf/ F: package/babeld/ F: package/cmocka/ +F: package/drogon/ F: package/iana-assignments/ F: package/inih/ F: package/pocketpy/ diff --git a/package/Config.in b/package/Config.in index 85928509f8f1..7748d4cb449f 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2025,6 +2025,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/Config.in.host b/package/Config.in.host index b0f7529a13f9..7850bf9c0cd6 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -30,6 +30,7 @@ menu "Host utilities" source "package/dosfstools/Config.in.host" source "package/doxygen/Config.in.host" source "package/dracut/Config.in.host" + source "package/drogon/Config.in.host" source "package/dtc/Config.in.host" source "package/e2fsprogs/Config.in.host" source "package/e2tools/Config.in.host" diff --git a/package/drogon/0001-cmake-fix-cross-compiling-for-drogon_ctl.patch b/package/drogon/0001-cmake-fix-cross-compiling-for-drogon_ctl.patch new file mode 100644 index 000000000000..70ec298cf5b8 --- /dev/null +++ b/package/drogon/0001-cmake-fix-cross-compiling-for-drogon_ctl.patch @@ -0,0 +1,81 @@ +From 3eda90ee8f46a9f309bf27e7faaf7f2dea1a7fde Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 23 Sep 2025 11:37:59 +0200 +Subject: [PATCH] cmake: fix cross-compiling for drogon_ctl + +Fix the the following errors raised by building drogon in Buildroot: + +[ 70%] Generating filter_cc.h, filter_cc.cc +cd ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl && ./_drogon_ctl create view ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl/templates/config_yaml.csp +cd ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl && ./_drogon_ctl create view ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl/templates/demoMain.csp +cd ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl && ./_drogon_ctl create view ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl/templates/filter_cc.csp +[ 71%] Generating test_main.h, test_main.cc +cd ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl && ./_drogon_ctl create view ~/buildroot/output/build/drogon-v1.9.11/drogon_ctl/templates/cmake.csp +/bin/sh: 1: ./_drogon_ctl: Exec format error +/bin/sh: 1: ./_drogon_ctl: Exec format error +make[4]: *** [drogon_ctl/CMakeFiles/drogon_ctl.dir/build.make:88: drogon_ctl/config_yaml.h] Error 126 +make[4]: *** Waiting for unfinished jobs.... +make[4]: *** [drogon_ctl/CMakeFiles/drogon_ctl.dir/build.make:95: drogon_ctl/demoMain.h] Error 126 +/bin/sh: 1: ./_drogon_ctl: Exec format error +make[4]: *** [drogon_ctl/CMakeFiles/drogon_ctl.dir/build.make:102: drogon_ctl/filter_cc.h] Error 126 +/bin/sh: 1: ./_drogon_ctl: Exec format error +make[4]: *** [drogon_ctl/CMakeFiles/drogon_ctl.dir/build.make:74: drogon_ctl/cmake.h] Error 126 + +When building drogon_ctl during cross-compilation, the host version of +_drogon_ctl must be used to generate output files, since the target +binary cannot run on the host. + +The change ensures that drogon_ctl builds correctly both for native and +cross-compiling environments. + +Signed-off-by: Dario Binacchi +Upstream: https://github.com/drogonframework/drogon/pull/2389/commits/3eda90ee8f46a9f309bf27e7faaf7f2dea1a7fde +--- + CMakeLists.txt | 9 +++++++++ + drogon_ctl/CMakeLists.txt | 3 ++- + 2 files changed, 11 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 "$") ++ 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 $ ++ 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 $) +-- +2.43.0 + diff --git a/package/drogon/0002-examples-move-all-executables-to-bin-to-avoid-build-.patch b/package/drogon/0002-examples-move-all-executables-to-bin-to-avoid-build-.patch new file mode 100644 index 000000000000..a6621195f902 --- /dev/null +++ b/package/drogon/0002-examples-move-all-executables-to-bin-to-avoid-build-.patch @@ -0,0 +1,47 @@ +From 77a8e3c91494ae094b5b1b18594ffaec11d37310 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 23 Sep 2025 17:15:56 +0200 +Subject: [PATCH] examples: move all executables to bin/ to avoid build + conflicts + +Example executables were previously created in the same folder as their +source directories. This caused the following errors when building +drogon in Buildroot: + +[ 82%] Linking CXX executable helloworld +cd ~/buildroot/output/build/drogon-custom/examples && /usr/bin/cmake -E cmake_link_script CMakeFiles/helloworld.dir/link.txt --verbose=1 +~/buildroot/output/host/bin/aarch64-buildroot-linux-gnu-g++ --sysroot=~/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1 -DNDEBUG CMakeFiles/helloworld.dir/helloworld/main.cc.o CMakeFiles/helloworld.dir/helloworld/HelloController.cc.o CMakeFiles/helloworld.dir/helloworld/HelloViewController.cc.o CMakeFiles/helloworld.dir/HelloView.cc.o -o helloworld -Wl,-rpath,~/buildroot/output/build/drogon-custom:~/buildroot/output/build/drogon-custom/trantor ../libdrogon.so.1.9.11 ../trantor/libtrantor.so.1.5.24 ~/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libjsoncpp.so +~/buildroot/output/host/lib/gcc/aarch64-buildroot-linux-gnu/13.4.0/../../../../aarch64-buildroot-linux-gnu/bin/ld: cannot open output file helloworld: Is a directory +collect2: error: ld returned 1 exit status +make[4]: *** [examples/CMakeFiles/helloworld.dir/build.make:155: examples/helloworld] Error 1 +make[3]: *** [CMakeFiles/Makefile2:385: examples/CMakeFiles/helloworld.dir/all] Error 2 + +Move all example applications to a dedicated RUNTIME_OUTPUT_DIRECTORY +(build/examples/bin) to avoid conflicts between source directories +and generated binaries. + +Signed-off-by: Dario Binacchi +Upstream: https://github.com/drogonframework/drogon/pull/2389/commits/77a8e3c91494ae094b5b1b18594ffaec11d37310 +--- + examples/CMakeLists.txt | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index dca122f424ba..9d4b91d37034 100755 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -50,6 +50,11 @@ set(example_targets + async_stream + cors) + ++foreach(target ${example_targets}) ++ set_target_properties(${target} PROPERTIES ++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) ++endforeach() ++ + # 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/0003-examples-install-the-example-executables.patch b/package/drogon/0003-examples-install-the-example-executables.patch new file mode 100644 index 000000000000..e8e7383d2ab1 --- /dev/null +++ b/package/drogon/0003-examples-install-the-example-executables.patch @@ -0,0 +1,31 @@ +From 535892bf6958c8d5619251ead204ada0002a8674 Mon Sep 17 00:00:00 2001 +From: Dario Binacchi +Date: Tue, 23 Sep 2025 17:21:28 +0200 +Subject: [PATCH] examples: install the example executables + +This allows the examples to be used on the target system without +manually copying them, improving usability. + +Signed-off-by: Dario Binacchi +Upstream: https://github.com/drogonframework/drogon/pull/2389/commits/535892bf6958c8d5619251ead204ada0002a8674 +--- + examples/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 9d4b91d37034..61e65d8323aa 100755 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -55,6 +55,9 @@ foreach(target ${example_targets}) + 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/Config.in b/package/drogon/Config.in new file mode 100644 index 000000000000..18c20950bb69 --- /dev/null +++ b/package/drogon/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_DROGON + bool "drogon" + depends on BR2_ARCH_IS_64 + 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" + +config BR2_PACKAGE_DROGON_CTL + bool "build drogon_ctl" + select BR2_PACKAGE_HOST_DROGON + +config BR2_PACKAGE_DROGON_EXAMPLES + bool "build examples" + +config BR2_PACKAGE_DROGON_ORM + bool "build orm" + +config BR2_PACKAGE_DROGON_YAML_CONFIG + bool "build yaml config" + +endif + +comment "drogon needs a toolchain w/ C++, threads, gcc >= 11" + depends on BR2_ARCH_IS_64 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_11 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/drogon/Config.in.host b/package/drogon/Config.in.host new file mode 100644 index 000000000000..b3b691e2cfe2 --- /dev/null +++ b/package/drogon/Config.in.host @@ -0,0 +1,20 @@ +config BR2_PACKAGE_HOST_DROGON + bool "drogon" + depends on BR2_HOST_INSTALL_LIBSTDCPP + depends on BR2_HOST_TOOLCHAIN_GCC_AT_LEAST_11 # C++17/20 + depends on BR2_HOST_TOOLCHAIN_HAS_THREADS + select BR2_HOST_PACKAGE_JSONCPP + select BR2_HOST_PACKAGE_UTIL_LINUX + select BR2_HOST_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_HOST_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 + +comment "drogon needs a toolchain w/ C++, threads, gcc >= 11" + depends on !BR2_HOST_INSTALL_LIBSTDCPP || \ + !BR2_HOST_TOOLCHAIN_GCC_AT_LEAST_11 || \ + !BR2_HOST_TOOLCHAIN_HAS_THREADS diff --git a/package/drogon/drogon.mk b/package/drogon/drogon.mk new file mode 100644 index 000000000000..544dc3fd5c3a --- /dev/null +++ b/package/drogon/drogon.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# drogon +# +################################################################################ + +DROGON_VERSION = v1.9.11 +# DROGON_SITE = $(call github,drogonframework,drogon,v$(DROGON_VERSION)) +DROGON_SITE = https://github.com/drogonframework/drogon +DROGON_SITE_METHOD = git +DROGON_GIT_SUBMODULES = YES +DROGON_LICENSE = MIT +DROGON_LICENSE_FILES = LICENSE + +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_TESTS=OFF \ + -DBUILD_EXAMPLES=OFF + +ifeq ($(BR2_PACKAGE_DROGON_BROTLI),y) +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 +HOST_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_CONF_OPTS += -DBUILD_YAML_CONFIG=ON +else +DROGON_CONF_OPTS += -DBUILD_YAML_CONFIG=OFF +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package))