diff --git a/packages/h/http_parser/xmake.lua b/packages/h/http_parser/xmake.lua index c5297a13a..c451f285d 100644 --- a/packages/h/http_parser/xmake.lua +++ b/packages/h/http_parser/xmake.lua @@ -1,10 +1,11 @@ package("http_parser") - set_homepage("https://github.com/nodejs/http-parser") 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") + add_versions("v2.9.4", "467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f") on_install(function (package) @@ -34,13 +35,9 @@ package("http_parser") add_files("http_parser.c") 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) on_test(function (package) assert(package:has_cfuncs("http_parser_version", {includes = "http_parser.h"})) - end) \ No newline at end of file + end) diff --git a/packages/l/llhttp/port/xmake.lua b/packages/l/llhttp/port/xmake.lua new file mode 100644 index 000000000..b7b28b6a2 --- /dev/null +++ b/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 diff --git a/packages/l/llhttp/xmake.lua b/packages/l/llhttp/xmake.lua index ad25b574f..fa05d04d6 100644 --- a/packages/l/llhttp/xmake.lua +++ b/packages/l/llhttp/xmake.lua @@ -1,51 +1,42 @@ package("llhttp") - set_homepage("https://github.com/nodejs/llhttp") set_description("Port of http_parser to llparse") 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("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) - 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 - 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 - import("package.tools.xmake").install(package, configs) end) on_test(function (package) assert(package:has_cfuncs("llhttp_init", {includes = "llhttp.h"})) - end) \ No newline at end of file + end)