Browse Source

llhttp: add v9.2.1 version (#5415)

* llhttp: add v9.2.1 version

* http_parser: improve xmake.lua
star9029 1 year ago
parent
commit
dd6c45ee9e
3 changed files with 67 additions and 45 deletions
  1. 5 8
      packages/h/http_parser/xmake.lua
  2. 34 0
      packages/l/llhttp/port/xmake.lua
  3. 28 37
      packages/l/llhttp/xmake.lua

+ 5 - 8
packages/h/http_parser/xmake.lua

@@ -1,10 +1,11 @@
 package("http_parser")
 package("http_parser")
-
     set_homepage("https://github.com/nodejs/http-parser")
     set_homepage("https://github.com/nodejs/http-parser")
     set_description("Parser for HTTP messages written in C.")
     set_description("Parser for HTTP messages written in C.")
+    set_license("MIT")
 
 
-    add_urls("https://github.com/nodejs/http-parser/archive/$(version).tar.gz",
+    add_urls("https://github.com/nodejs/http-parser/archive/refs/tags/$(version).tar.gz",
              "https://github.com/nodejs/http-parser.git")
              "https://github.com/nodejs/http-parser.git")
+
     add_versions("v2.9.4", "467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f")
     add_versions("v2.9.4", "467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f")
 
 
     on_install(function (package)
     on_install(function (package)
@@ -34,13 +35,9 @@ package("http_parser")
                 add_files("http_parser.c")
                 add_files("http_parser.c")
                 add_headerfiles("http_parser.h")
                 add_headerfiles("http_parser.h")
         ]])
         ]])
-        local configs = {}
-        if package:config("shared") then
-            configs.kind = "shared"
-        end
-        import("package.tools.xmake").install(package, configs)
+        import("package.tools.xmake").install(package)
     end)
     end)
 
 
     on_test(function (package)
     on_test(function (package)
         assert(package:has_cfuncs("http_parser_version", {includes = "http_parser.h"}))
         assert(package:has_cfuncs("http_parser_version", {includes = "http_parser.h"}))
-    end)
+    end)

+ 34 - 0
packages/l/llhttp/port/xmake.lua

@@ -0,0 +1,34 @@
+option("export_symbol", {default = false})
+
+add_rules("mode.debug", "mode.release")
+
+target("llhttp")
+    set_kind("$(kind)")
+    add_files("src/*.c")
+    add_includedirs("include")
+    add_headerfiles("include/llhttp.h")
+
+    if has_config("export_symbol") and is_kind("shared") and is_plat("windows") then
+        local funcs = {
+            "llhttp_init",
+            "llhttp_settings_init",
+            "llhttp_execute",
+            "llhttp_finish",
+            "llhttp_message_needs_eof",
+            "llhttp_should_keep_alive",
+            "llhttp_pause",
+            "llhttp_resume",
+            "llhttp_resume_after_upgrade",
+            "llhttp_get_errno",
+            "llhttp_get_error_reason",
+            "llhttp_set_error_reason",
+            "llhttp_get_error_pos",
+            "llhttp_errno_name",
+            "llhttp_method_name",
+            "llhttp_set_lenient_headers",
+            "llhttp_set_lenient_chunked_length"
+        }
+        for _, func in ipairs(funcs) do
+            add_shflags("/export:" .. func)
+        end
+    end

+ 28 - 37
packages/l/llhttp/xmake.lua

@@ -1,51 +1,42 @@
 package("llhttp")
 package("llhttp")
-
     set_homepage("https://github.com/nodejs/llhttp")
     set_homepage("https://github.com/nodejs/llhttp")
     set_description("Port of http_parser to llparse")
     set_description("Port of http_parser to llparse")
     set_license("MIT")
     set_license("MIT")
 
 
-    add_urls("https://github.com/nodejs/llhttp/archive/release/$(version).tar.gz")
-    add_versions("v3.0.0", "02931556e69f8d075edb5896127099e70a093c104a994a57b4d72c85b48d25b0")
+    add_urls("https://github.com/nodejs/llhttp/archive/refs/tags/release/$(version).tar.gz")
+
+    add_versions("v9.2.1", "3c163891446e529604b590f9ad097b2e98b5ef7e4d3ddcf1cf98b62ca668f23e")
     add_versions("v8.1.0", "9da0d23453e8e242cf3b2bc5d6fb70b1517b8a70520065fcbad6be787e86638e")
     add_versions("v8.1.0", "9da0d23453e8e242cf3b2bc5d6fb70b1517b8a70520065fcbad6be787e86638e")
+    add_versions("v3.0.0", "02931556e69f8d075edb5896127099e70a093c104a994a57b4d72c85b48d25b0")
+
+    on_load(function (package)
+        if package:version():ge("9.2.1") then
+            package:add("deps", "cmake")
+        end
+    end)
 
 
     on_install(function (package)
     on_install(function (package)
-        io.writefile("xmake.lua", [[
-            add_rules("mode.debug", "mode.release")
-            target("llhttp")
-                set_kind("$(kind)")
-                if is_kind("shared") and is_plat("windows") then
-                    local funcs = {"llhttp_init",
-                                   "llhttp_settings_init",
-                                   "llhttp_execute",
-                                   "llhttp_finish",
-                                   "llhttp_message_needs_eof",
-                                   "llhttp_should_keep_alive",
-                                   "llhttp_pause",
-                                   "llhttp_resume",
-                                   "llhttp_resume_after_upgrade",
-                                   "llhttp_get_errno",
-                                   "llhttp_get_error_reason",
-                                   "llhttp_set_error_reason",
-                                   "llhttp_get_error_pos",
-                                   "llhttp_errno_name",
-                                   "llhttp_method_name",
-                                   "llhttp_set_lenient_headers",
-                                   "llhttp_set_lenient_chunked_length"}
-                    for _, func in ipairs(funcs) do
-                        add_shflags("/export:" .. func)
-                    end
-                end
-                add_files("src/*.c")
-                add_includedirs("include")
-                add_headerfiles("include/llhttp.h")
-        ]])
-        local configs = {}
+        local xmake_configs = {}
+        if package:version():ge("9.2.1") then
+            -- Get cmake config file
+            local configs = {}
+            table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+            table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+            table.insert(configs, "-DBUILD_STATIC_LIBS=" .. (package:config("shared") and "OFF" or "ON"))
+            import("package.tools.cmake").install(package, configs)
+        else
+            xmake_configs.export_symbol = true
+        end
+        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
+        import("package.tools.xmake").install(package, xmake_configs)
+
         if package:config("shared") then
         if package:config("shared") then
-            configs.kind = "shared"
+            io.replace(package:installdir("include/llhttp.h"), "__declspec(dllexport)", "__declspec(dllimport)", {plain = true})
+        else
+            io.replace(package:installdir("include/llhttp.h"), "__declspec(dllexport)", "", {plain = true})
         end
         end
-        import("package.tools.xmake").install(package, configs)
     end)
     end)
 
 
     on_test(function (package)
     on_test(function (package)
         assert(package:has_cfuncs("llhttp_init", {includes = "llhttp.h"}))
         assert(package:has_cfuncs("llhttp_init", {includes = "llhttp.h"}))
-    end)
+    end)