Parcourir la source

add libidn2 (#770)

* add libidn2

* improve libiconv

* use packagedeps

* fix packagedeps
Hoildkv il y a 3 ans
Parent
commit
4c9e0ebbce

+ 6 - 0
packages/l/libiconv/xmake.lua

@@ -16,6 +16,12 @@ package("libiconv")
             "d09e4212040f5adf1faa5cf5a9a18f6f79d4cdce9affb05f2e75df2ea3b3d686")
     end
 
+    on_fetch("macosx", "linux", function (package, opt)
+        if opt.system then
+            return package:find_package("system::iconv", {includes = "iconv.h"})
+        end
+    end)
+
     on_load(function (package)
         package:addenv("PATH", "bin")
     end)

+ 28 - 0
packages/l/libidn2/xmake.lua

@@ -0,0 +1,28 @@
+package("libidn2")
+
+    set_homepage("https://www.gnu.org/software/libidn/")
+    set_description("Libidn2 is an implementation of the IDNA2008 + TR46 specifications.")
+    set_license("LGPL-3.0")
+
+    add_urls("https://ftp.gnu.org/gnu/libidn/libidn2-$(version).tar.gz",
+             "https://ftpmirror.gnu.org/libidn/libidn2-$(version).tar.gz")
+    add_versions("2.3.2", "76940cd4e778e8093579a9d195b25fff5e936e9dc6242068528b437a76764f91")
+
+    add_deps("libunistring")
+    if is_plat("linux") then
+        add_extsources("apt::libidn2-dev")
+    end
+
+    on_install("macosx", "linux", function (package)
+        local configs = {"--disable-dependency-tracking"}
+        table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
+        table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
+        if package:config("pic") ~= false then
+            table.insert(configs, "--with-pic")
+        end
+        import("package.tools.autoconf").install(package, configs, {packagedeps = {"libunistring"}})
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("idn2_to_ascii_8z", {includes = "idn2.h"}))
+    end)

+ 6 - 8
packages/l/libunistring/xmake.lua

@@ -10,15 +10,13 @@ package("libunistring")
     add_deps("libiconv")
 
     on_install("linux", "macosx", function (package)
-        local configs = {"--disable-dependency-tracking", "--with-pic"}
-        if package:config("shared") then
-            table.insert(configs, "--enable-shared=yes")
-            table.insert(configs, "--enable-static=no")
-        else
-            table.insert(configs, "--enable-static=yes")
-            table.insert(configs, "--enable-shared=no")
+        local configs = {"--disable-dependency-tracking"}
+        table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
+        table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
+        if package:config("pic") ~= false then
+            table.insert(configs, "--with-pic")
         end
-        import("package.tools.autoconf").install(package, configs)
+        import("package.tools.autoconf").install(package, configs, {packagedeps = {"libiconv"}})
     end)
 
     on_test(function (package)