Browse Source

add nghttp2 (#670)

* add nghttp2

* update fribidi

* improve libpng
Hoildkv 3 years ago
parent
commit
52f61c7e55
3 changed files with 73 additions and 3 deletions
  1. 16 1
      packages/f/fribidi/xmake.lua
  2. 25 2
      packages/l/libpng/xmake.lua
  3. 32 0
      packages/n/nghttp2/xmake.lua

+ 16 - 1
packages/f/fribidi/xmake.lua

@@ -6,11 +6,26 @@ package("fribidi")
 
     add_urls("https://github.com/fribidi/fribidi/releases/download/v$(version)/fribidi-$(version).tar.xz")
     add_versions("1.0.10", "7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01")
+    add_versions("1.0.11", "30f93e9c63ee627d1a2cedcf59ac34d45bf30240982f99e44c6e015466b4e73d")
 
-    if is_plat("linux") then
+    if is_plat("windows") then
+        add_deps("meson", "ninja")
+    elseif is_plat("linux") then
         add_extsources("apt::libfribidi-dev")
     end
 
+    on_load("windows", function (package)
+        if not package:config("shared") then
+            package:add("defines", "FRIBIDI_LIB_STATIC")
+        end
+    end)
+
+    on_install("windows", function (package)
+        local configs = {"-Ddocs=false", "-Dtests=false"}
+        table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        import("package.tools.meson").install(package, configs)
+    end)
+
     on_install("macosx", "linux", function (package)
         local configs = {}
         table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))

+ 25 - 2
packages/l/libpng/xmake.lua

@@ -2,6 +2,7 @@ package("libpng")
 
     set_homepage("http://www.libpng.org/pub/png/libpng.html")
     set_description("The official PNG reference library")
+    set_license("libpng-2.0")
 
     set_urls("https://github.com/glennrp/libpng/archive/$(version).zip",
              "https://github.com/glennrp/libpng.git")
@@ -9,7 +10,6 @@ package("libpng")
     add_versions("v1.6.36", "6274d3f761cc80f7f6e2cde6c07bed10c00bc4ddd24c4f86e25eb51affa1664d")
     add_versions("v1.6.35", "3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f")
     add_versions("v1.6.34", "7ffa5eb8f9f3ed23cf107042e5fec28699718916668bbce48b968600475208d3")
-    set_license("libpng-2.0")
 
     add_deps("zlib")
 
@@ -17,7 +17,7 @@ package("libpng")
         add_syslinks("m")
     end
 
-    on_install(function (package)
+    on_install("windows", "mingw", "android", "iphoneos", "cross", function (package)
         io.writefile("xmake.lua", [[
             add_rules("mode.debug", "mode.release")
             add_requires("zlib")
@@ -58,6 +58,29 @@ package("libpng")
         import("package.tools.xmake").install(package, configs)
     end)
 
+    on_install("macosx", "linux", function (package)
+        local configs = {}
+        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
+        local cppflags = {}
+        local ldflags = {}
+        for _, dep in ipairs(package:orderdeps()) do
+            local fetchinfo = dep:fetch()
+            if fetchinfo then
+                for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
+                    table.insert(cppflags, "-I" .. includedir)
+                end
+                for _, linkdir in ipairs(fetchinfo.linkdirs) do
+                    table.insert(ldflags, "-L" .. linkdir)
+                end
+            end
+        end
+        import("package.tools.autoconf").install(package, configs, {cppflags = cppflags, ldflags = ldflags})
+    end)
+
     on_test(function (package)
         assert(package:has_cfuncs("png_create_read_struct", {includes = "png.h"}))
     end)

+ 32 - 0
packages/n/nghttp2/xmake.lua

@@ -0,0 +1,32 @@
+package("nghttp2")
+
+    set_homepage("http://nghttp2.org/")
+    set_description("nghttp2 is an implementation of HTTP/2 and its header compression algorithm HPACK in C.")
+    set_license("MIT")
+
+    add_urls("https://github.com/nghttp2/nghttp2/releases/download/v$(version)/nghttp2-$(version).tar.gz")
+    add_versions("1.46.0", "4b6d11c85f2638531d1327fe1ed28c1e386144e8841176c04153ed32a4878208")
+
+    add_deps("cmake")
+    on_load("windows", function (package)
+        package:add("defines", "ssize_t=int")
+        if not package:config("shared") then
+            package:add("defines", "NGHTTP2_STATICLIB")
+        end
+    end)
+
+    on_install("windows", "macosx", "linux", function (package)
+        io.replace("CMakeLists.txt", "add_subdirectory(doc)", "", {plain = true})
+        local configs = {"-DENABLE_LIB_ONLY=ON"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        table.insert(configs, "-DENABLE_SHARED_LIB=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DENABLE_STATIC_LIB=" .. (package:config("shared") and "OFF" or "ON"))
+        if package:is_plat("windows") then
+            table.insert(configs, "-DENABLE_STATIC_CRT=" .. (package:config("vs_runtime"):startswith("MT") and "ON" or "OFF"))
+        end
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("nghttp2_version", {includes = "nghttp2/nghttp2.h"}))
+    end)