new file mode 100644
@@ -0,0 +1,57 @@
+From 9cbe7e5165e8bfa1bbb632682e049e2f92f79717 Mon Sep 17 00:00:00 2001
+From: Antonin Godard <antonin.godard@bootlin.com>
+Date: Fri, 30 May 2025 13:33:39 +0200
+Subject: [PATCH] Fix arm crypto logic issue in config_asm.h
+
+The current logic for enabling or disabling the CRYPTOPP_ARM_*_AVAILABLE
+macros seems wrong, because we do an OR between all of the conditions
+following `defined(__ARM_FEATURE_CRYPTO)`. Fix the logic so that the
+CRYPTOPP_ARM_*_AVAILABLE macros are set if __ARM_FEATURE_CRYPTO is set
+_AND_ any of the following condition is true.
+
+Upstream-Status: Submitted [https://github.com/weidai11/cryptopp/pull/1324]
+Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
+---
+ config_asm.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/config_asm.h b/config_asm.h
+index 71ffb9f8..d388124f 100644
+--- a/config_asm.h
++++ b/config_asm.h
+@@ -278,9 +278,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_AES_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_AES)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-# if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++# if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+ (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+- (CRYPTOPP_MSC_VERSION >= 1916)
++ (CRYPTOPP_MSC_VERSION >= 1916))
+ # define CRYPTOPP_ARM_AES_AVAILABLE 1
+ # endif // Compilers
+ # endif // Platforms
+@@ -290,9 +290,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_PMULL)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-# if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++# if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+ (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+- (CRYPTOPP_MSC_VERSION >= 1916)
++ (CRYPTOPP_MSC_VERSION >= 1916))
+ # define CRYPTOPP_ARM_PMULL_AVAILABLE 1
+ # endif // Compilers
+ # endif // Platforms
+@@ -302,9 +302,9 @@
+ // Requires GCC 4.8, Clang 3.3 or Visual Studio 2017
+ #if !defined(CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA)
+ # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
+-# if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \
++# if defined(__ARM_FEATURE_CRYPTO) && ((CRYPTOPP_GCC_VERSION >= 40800) || \
+ (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300) || \
+- (CRYPTOPP_MSC_VERSION >= 1916)
++ (CRYPTOPP_MSC_VERSION >= 1916))
+ # define CRYPTOPP_ARM_SHA1_AVAILABLE 1
+ # define CRYPTOPP_ARM_SHA2_AVAILABLE 1
+ # endif // Compilers
new file mode 100644
@@ -0,0 +1,45 @@
+SUMMARY = "A C++ class library of cryptographic schemes"
+DESCRIPTION = "Crypto++ Library is a C++ class library of cryptographic schemes"
+CVE_PRODUCT = "cryptopp"
+HOMEPAGE = "http://www.cryptopp.com/"
+SECTION = "libs"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://License.txt;md5=51c7d279a47eba5246eb5a5123bc1b77"
+
+SRC_URI = "git://github.com/weidai11/cryptopp.git;protocol=https;branch=master \
+ file://0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch \
+ "
+SRCREV = "843d74c7c97f9e19a615b8ff3c0ca06599ca501b"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig dos2unix
+
+CXXFLAGS += "-fPIC"
+EXTRA_OEMAKE += "HAS_SOLIB_VERSION=1"
+
+do_compile() {
+ oe_runmake -f GNUmakefile-cross libcryptopp.a libcryptopp.so cryptest.exe
+}
+
+do_install() {
+ DESTDIR="${D}" \
+ BINDIR="${bindir}" \
+ DATADIR="${datadir}" \
+ INCLUDEDIR="${includedir}" \
+ LIBDIR="${libdir}" \
+ oe_runmake install
+
+ # Rename cryptest.exe to cryptest
+ if [ -f "${D}${bindir}/cryptest.exe" ]; then
+ mv "${D}${bindir}/cryptest.exe" "${D}${bindir}/cryptest"
+ fi
+}
+
+PACKAGE_BEFORE_PN += "${PN}-cryptest ${PN}-testdata ${PN}-testvectors"
+
+FILES:${PN}-cryptest = "${bindir}/cryptest"
+FILES:${PN}-testdata = "${datadir}/cryptopp/TestData"
+FILES:${PN}-testvectors = "${datadir}/cryptopp/TestVectors"
+
+BBCLASSEXTEND = "native nativesdk"
Cryptopp is a library of cryptographic schemes written in C++. Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- Note: I had no issue building with MACHINE to "qemux86-64" and TCLIBC = "musl", as reported here: https://lore.kernel.org/r/CAMKF1sreBnjjX0GW-G9+15Y+EgFQUmKUPX_cqYE7J3WaZ9=94g@mail.gmail.com Any extra steps to reproduce the issue would be appreciated. --- Changes in v4: - Make the recipe inherit dos2unix as it was preventing the patch from applied after going through the mailing list. Remove the CRLF from the patch file accordingly. - Link to v3: https://lore.kernel.org/r/20250528-add-cryptopp-v3-1-6ad49cdb41bb@bootlin.com Changes in v3: - Add 0001-Fix-arm-crypto-logic-issue-in-config_asm.h.patch to fix the arm64 build issue. - Revert UNPACKDIR -> WORKDIR. - Use += not append. - Link to v2: https://lore.kernel.org/r/20241122-add-cryptopp-v2-1-19456062f791@bootlin.com Changes in v2: - WORKDIR -> UNPACKDIR in S - remove bb.utils.contains in CXXFLAGS:append:aarch64 (forgot to remove after adding aarch64 override) - Link to v1: https://lore.kernel.org/r/20241121-add-cryptopp-v1-1-36382a60cecb@bootlin.com --- ...ix-arm-crypto-logic-issue-in-config_asm.h.patch | 57 ++++++++++++++++++++++ meta-oe/recipes-crypto/cryptopp/cryptopp_8.9.0.bb | 45 +++++++++++++++++ 2 files changed, 102 insertions(+) --- base-commit: 5df267759c953b9615290ea6b8d9051b83863bf9 change-id: 20241121-add-cryptopp-f78794be963c Best regards,