Bläddra i källkod

Add zstr. (#6764)

* add zstr.

* Update xmake.lua
RedbeanW 4 månader sedan
förälder
incheckning
1366c5e96d

+ 25 - 0
packages/z/zstr/patches/fix-build-on-android-ndksdk-21.patch

@@ -0,0 +1,25 @@
+From 67086fc4aed5cd3b9b67edb1e9e123523507c684 Mon Sep 17 00:00:00 2001
+From: Redbeanw44602 <[email protected]>
+Date: Sun, 30 Mar 2025 18:46:46 +0800
+Subject: [PATCH] fix build on android ndksdk-21
+
+---
+ src/strict_fstream.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/strict_fstream.hpp b/src/strict_fstream.hpp
+index 7d03ea6..56146fd 100644
+--- a/src/strict_fstream.hpp
++++ b/src/strict_fstream.hpp
+@@ -64,7 +64,7 @@ static std::string strerror()
+     } else {
+         return "Unknown error (" + std::to_string(err_num) + ")";
+     }
+-#elif ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__APPLE__) || defined(__FreeBSD__)) && ! _GNU_SOURCE) || defined(__MUSL__)
++#elif ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__APPLE__) || defined(__FreeBSD__)) && ! _GNU_SOURCE) || defined(__MUSL__) || defined(__ANDROID_API__)
+ // XSI-compliant strerror_r()
+     const int err_num = errno; // See above
+     if (strerror_r(err_num, buff.data(), buff.size()) == 0) {
+-- 
+2.49.0
+

+ 28 - 0
packages/z/zstr/xmake.lua

@@ -0,0 +1,28 @@
+package("zstr")
+    set_kind("library", {headeronly = true})
+
+    set_homepage("https://github.com/mateidavid/zstr")
+    set_description("A C++ header-only ZLib wrapper.")
+    set_license("MIT")
+
+    add_urls("https://github.com/mateidavid/zstr/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/mateidavid/zstr.git")
+    add_versions("v1.0.7", "8d2ddae68ff7bd0a6fce6150a8f52ad9ce1bed2c4056c8846f4dec4f2dc60819")
+
+    add_patches("v1.0.7", "patches/fix-build-on-android-ndksdk-21.patch", "66468d9aab3443c488b7fadde7fb2547f1501c73d89e00c672834652ce61a047")
+
+    add_deps("zlib")
+    on_install(function (package)
+        os.cp("src/*.hpp", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                std::stringbuf buf;
+                zstr::ostream os{&buf};
+
+                os << "Hello World!";
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "zstr.hpp"}))
+    end)