From eeeab154e42ca0c4b725fe85102bd66a69761775 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 23 Jan 2025 12:05:15 +0100 Subject: [PATCH 01/22] update llvm to 18.1.8 --- packages/l/llvm/xmake.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index a2123be3009..ff1246a6aa1 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -35,6 +35,7 @@ package("llvm") package:add("versions", "16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") package:add("versions", "17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") package:add("versions", "18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") + package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") precompiled = true else package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") @@ -44,6 +45,7 @@ package("llvm") package:add("versions", "16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") package:add("versions", "17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") package:add("versions", "18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") + package:add("versions", "18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") precompiled = true end end @@ -56,6 +58,7 @@ package("llvm") package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") + package:add("versions", "18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end) else @@ -70,6 +73,7 @@ package("llvm") add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") + add_versions("18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") precompiled = true else set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") @@ -79,6 +83,7 @@ package("llvm") add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") add_versions("17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") add_versions("18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") + add_versions("18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") precompiled = true end end @@ -91,6 +96,7 @@ package("llvm") add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") + add_versions("18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end From c73d81f965142185c58cacf95b2a830cfb68938f Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 23 Jan 2025 15:16:19 +0100 Subject: [PATCH 02/22] llvm: add ca-certificates and libffi dependencies --- packages/l/llvm/xmake.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index ff1246a6aa1..f88914ff4ec 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -113,6 +113,7 @@ package("llvm") if package:config("openmp") then package:add("deps", "libelf", {host = true}) end + package:add("deps", "ca-certificates", "libffi", {host = true}) end -- add components if package:is_library() then From 3529fb33f7c036769539e66349bd2fdfa976f959 Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Thu, 23 Jan 2025 20:30:10 +0100 Subject: [PATCH 03/22] Add OpenSSL dependency for BSD platforms in LLVM package --- packages/l/llvm/xmake.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index f88914ff4ec..b3efc45a1bf 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -113,7 +113,9 @@ package("llvm") if package:config("openmp") then package:add("deps", "libelf", {host = true}) end - package:add("deps", "ca-certificates", "libffi", {host = true}) + end + if package:is_plat("bsd") then + package:add("deps", "ca-certificates", "libffi", "openssl", {host = true}) end -- add components if package:is_library() then From 7c9fdd2a354bcfdbdfe204908aa3699d59dacd12 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 24 Jan 2025 10:31:22 +0100 Subject: [PATCH 04/22] Add OpenSSL, ca-certificates, and libffi dependencies for macosx --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index b3efc45a1bf..dac44f5a67c 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -114,7 +114,7 @@ package("llvm") package:add("deps", "libelf", {host = true}) end end - if package:is_plat("bsd") then + if package:is_plat("bsd", "macosx") then package:add("deps", "ca-certificates", "libffi", "openssl", {host = true}) end -- add components From 5ff92c0fcd2b3988227b55ca809299db90d1df45 Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Sun, 2 Feb 2025 11:17:59 +0100 Subject: [PATCH 05/22] Add libclang to links and refactor llvm fetch logic --- packages/l/llvm/components/clang.lua | 1 + packages/l/llvm/fetch.lua | 80 +++++++++++++------------- packages/l/llvm/xmake.lua | 85 ++++++++++++++++------------ 3 files changed, 90 insertions(+), 76 deletions(-) diff --git a/packages/l/llvm/components/clang.lua b/packages/l/llvm/components/clang.lua index c4c6e86efa9..773a465bf3b 100644 --- a/packages/l/llvm/components/clang.lua +++ b/packages/l/llvm/components/clang.lua @@ -1,5 +1,6 @@ function get_links(package) local links = { + "libclang", "clang-cpp", "clang", "clangAPINotes", diff --git a/packages/l/llvm/fetch.lua b/packages/l/llvm/fetch.lua index 12a1d392a75..00f661456a3 100644 --- a/packages/l/llvm/fetch.lua +++ b/packages/l/llvm/fetch.lua @@ -2,54 +2,52 @@ import("lib.detect.find_tool") import("core.project.target") function main(package, opt) - if opt.system then - local llvm_config = "llvm-config" - if package:is_plat("macosx") then - local llvm = try {function () return os.iorunv("brew", {"--prefix", "llvm"}) end} - if llvm then - local ret = find_tool("llvm-config", {paths = path.join(llvm:trim(), "bin")}) - if ret then - llvm_config = ret.program - end + local llvm_config = "llvm-config" + if package:is_plat("macosx") then + local llvm = try {function () return os.iorunv("brew", {"--prefix", "llvm"}) end} + if llvm then + local ret = find_tool("llvm-config", {paths = path.join(llvm:trim(), "bin")}) + if ret then + llvm_config = ret.program end end - local version = try {function() return os.iorunv(llvm_config, {"--version"}) end} + end + local version = try {function() return os.iorunv(llvm_config, {"--version"}) end} + if version then + version = version:trim() + end + if package:is_toolchain() then if version then - version = version:trim() + return {version = version} end - if package:is_toolchain() then - if version then - return {version = version} - end - else - local linkdir = try {function() return os.iorunv(llvm_config, {"--libdir"}) end} - local includedir = try {function() return os.iorunv(llvm_config, {"--includedir"}) end} - if linkdir and includedir then - linkdir = linkdir:trim() - includedir = includedir:trim() - local result = {version = version, links = {}, linkdirs = linkdir, includedirs = includedir} - local components = {} - for _, file in ipairs(os.files(path.join(os.scriptdir(), "components", "*.lua"))) do - local name = path.basename(file) - local links = {} - for _, link in ipairs(import("components." .. name).get_links(package)) do - local filename_static = target.filename(link, "static", {plat = package:plat(), arch = package:arch()}) - local filename_shared = target.filename(link, "shared", {plat = package:plat(), arch = package:arch()}) - if os.isfile(path.join(linkdir, filename_static)) or - os.isfile(path.join(linkdir, filename_shared)) then - table.insert(links, link) - table.insert(result.links, link) - end - end - if #links > 0 then - components[name] = components[name] or {} - components[name].links = links + else + local linkdir = try {function() return os.iorunv(llvm_config, {"--libdir"}) end} + local includedir = try {function() return os.iorunv(llvm_config, {"--includedir"}) end} + if linkdir and includedir then + linkdir = linkdir:trim() + includedir = includedir:trim() + local result = {version = version, links = {}, linkdirs = linkdir, includedirs = includedir} + local components = {} + for _, file in ipairs(os.files(path.join(os.scriptdir(), "components", "*.lua"))) do + local name = path.basename(file) + local links = {} + for _, link in ipairs(import("components." .. name).get_links(package)) do + local filename_static = target.filename(link, "static", {plat = package:plat(), arch = package:arch()}) + local filename_shared = target.filename(link, "shared", {plat = package:plat(), arch = package:arch()}) + if os.isfile(path.join(linkdir, filename_static)) or + os.isfile(path.join(linkdir, filename_shared)) then + table.insert(links, link) + table.insert(result.links, link) end end - components.__base = {linkdirs = linkdir, includedirs = includedir} - result.components = components - return result + if #links > 0 then + components[name] = components[name] or {} + components[name].links = links + end end + components.__base = {linkdirs = linkdir, includedirs = includedir} + result.components = components + return result end end end diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index dac44f5a67c..48c00174b0c 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -23,42 +23,52 @@ package("llvm") add_configs("libcxxabi", {description = "Enable libcxxabi runtime.", default = true, type = "boolean"}) add_configs("openmp", {description = "Enable openmp runtime.", default = false, type = "boolean"}) + --before adding a new version, make sure that the prebuild is containing llvm-config if on_source then on_source(function (package) - local precompiled = false - if package:is_plat("windows") then - if package:is_arch("x86") then - package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") - package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") - package:add("versions", "14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") - package:add("versions", "15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") - package:add("versions", "16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") - package:add("versions", "17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") - package:add("versions", "18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") - package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") - precompiled = true + import("core.base.semver") + local version = semver.new(package:requireinfo().version) + if version:major() <= 18 and version:minor() >= 1 then + if package:is_plat("windows") then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") + package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") else - package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") - package:add("versions", "11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") - package:add("versions", "14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") - package:add("versions", "15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") - package:add("versions", "16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") - package:add("versions", "17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") - package:add("versions", "18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") - package:add("versions", "18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") - precompiled = true + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") + package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + end + else + local precompiled = false + if package:is_plat("windows") then + if package:is_arch("x86") then + package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") + package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") + package:add("versions", "14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") + package:add("versions", "15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") + package:add("versions", "16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") + package:add("versions", "17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") + package:add("versions", "18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") + precompiled = true + else + package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") + package:add("versions", "11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") + package:add("versions", "14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") + package:add("versions", "15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") + package:add("versions", "16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") + package:add("versions", "17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") + package:add("versions", "18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") + precompiled = true + end + end + if not precompiled then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") + package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") + package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") + package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") + package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") + package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") + package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") end - end - if not precompiled then - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") - package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") - package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") - package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") - package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") - package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") - package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") - package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - package:add("versions", "18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end) else @@ -73,7 +83,6 @@ package("llvm") add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") - add_versions("18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") precompiled = true else set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") @@ -96,10 +105,10 @@ package("llvm") add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - add_versions("18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end + on_load(function (package) if not package:is_plat("windows", "msys") then package:add("deps", "cmake") @@ -115,7 +124,7 @@ package("llvm") end end if package:is_plat("bsd", "macosx") then - package:add("deps", "ca-certificates", "libffi", "openssl", {host = true}) + package:add("deps", "ca-certificates", {host = true}) end -- add components if package:is_library() then @@ -228,4 +237,10 @@ package("llvm") os.vrun("clang --version") end end + + if package:is_library() then + assert(package:check_cxxsnippets([[ + void test() {} + ]], { includes = "clang-c/Index.h" })) + end end) From 460bb856df69e5a88a24d811f373ce9751554d4a Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Sun, 2 Feb 2025 11:30:38 +0100 Subject: [PATCH 06/22] llvm: update version check to support major version 18 and above --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 48c00174b0c..ee8253d97e1 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -28,7 +28,7 @@ package("llvm") on_source(function (package) import("core.base.semver") local version = semver.new(package:requireinfo().version) - if version:major() <= 18 and version:minor() >= 1 then + if version:major() >= 18 then if package:is_plat("windows") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") From 1fd61ef419944f16faf4667eb09a1559c7616c8c Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 14:53:03 +0100 Subject: [PATCH 07/22] Update version handling --- packages/l/llvm/fetch.lua | 80 ++++++++++++++-------------- packages/l/llvm/xmake.lua | 106 ++++++++++++++++++++------------------ 2 files changed, 98 insertions(+), 88 deletions(-) diff --git a/packages/l/llvm/fetch.lua b/packages/l/llvm/fetch.lua index 00f661456a3..12a1d392a75 100644 --- a/packages/l/llvm/fetch.lua +++ b/packages/l/llvm/fetch.lua @@ -2,52 +2,54 @@ import("lib.detect.find_tool") import("core.project.target") function main(package, opt) - local llvm_config = "llvm-config" - if package:is_plat("macosx") then - local llvm = try {function () return os.iorunv("brew", {"--prefix", "llvm"}) end} - if llvm then - local ret = find_tool("llvm-config", {paths = path.join(llvm:trim(), "bin")}) - if ret then - llvm_config = ret.program + if opt.system then + local llvm_config = "llvm-config" + if package:is_plat("macosx") then + local llvm = try {function () return os.iorunv("brew", {"--prefix", "llvm"}) end} + if llvm then + local ret = find_tool("llvm-config", {paths = path.join(llvm:trim(), "bin")}) + if ret then + llvm_config = ret.program + end end end - end - local version = try {function() return os.iorunv(llvm_config, {"--version"}) end} - if version then - version = version:trim() - end - if package:is_toolchain() then + local version = try {function() return os.iorunv(llvm_config, {"--version"}) end} if version then - return {version = version} + version = version:trim() end - else - local linkdir = try {function() return os.iorunv(llvm_config, {"--libdir"}) end} - local includedir = try {function() return os.iorunv(llvm_config, {"--includedir"}) end} - if linkdir and includedir then - linkdir = linkdir:trim() - includedir = includedir:trim() - local result = {version = version, links = {}, linkdirs = linkdir, includedirs = includedir} - local components = {} - for _, file in ipairs(os.files(path.join(os.scriptdir(), "components", "*.lua"))) do - local name = path.basename(file) - local links = {} - for _, link in ipairs(import("components." .. name).get_links(package)) do - local filename_static = target.filename(link, "static", {plat = package:plat(), arch = package:arch()}) - local filename_shared = target.filename(link, "shared", {plat = package:plat(), arch = package:arch()}) - if os.isfile(path.join(linkdir, filename_static)) or - os.isfile(path.join(linkdir, filename_shared)) then - table.insert(links, link) - table.insert(result.links, link) + if package:is_toolchain() then + if version then + return {version = version} + end + else + local linkdir = try {function() return os.iorunv(llvm_config, {"--libdir"}) end} + local includedir = try {function() return os.iorunv(llvm_config, {"--includedir"}) end} + if linkdir and includedir then + linkdir = linkdir:trim() + includedir = includedir:trim() + local result = {version = version, links = {}, linkdirs = linkdir, includedirs = includedir} + local components = {} + for _, file in ipairs(os.files(path.join(os.scriptdir(), "components", "*.lua"))) do + local name = path.basename(file) + local links = {} + for _, link in ipairs(import("components." .. name).get_links(package)) do + local filename_static = target.filename(link, "static", {plat = package:plat(), arch = package:arch()}) + local filename_shared = target.filename(link, "shared", {plat = package:plat(), arch = package:arch()}) + if os.isfile(path.join(linkdir, filename_static)) or + os.isfile(path.join(linkdir, filename_shared)) then + table.insert(links, link) + table.insert(result.links, link) + end + end + if #links > 0 then + components[name] = components[name] or {} + components[name].links = links end end - if #links > 0 then - components[name] = components[name] or {} - components[name].links = links - end + components.__base = {linkdirs = linkdir, includedirs = includedir} + result.components = components + return result end - components.__base = {linkdirs = linkdir, includedirs = includedir} - result.components = components - return result end end end diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index ee8253d97e1..655868bb62b 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -23,22 +23,16 @@ package("llvm") add_configs("libcxxabi", {description = "Enable libcxxabi runtime.", default = true, type = "boolean"}) add_configs("openmp", {description = "Enable openmp runtime.", default = false, type = "boolean"}) - --before adding a new version, make sure that the prebuild is containing llvm-config + -- before adding a new version, make sure that the prebuild is containing llvm-config if on_source then on_source(function (package) - import("core.base.semver") - local version = semver.new(package:requireinfo().version) - if version:major() >= 18 then - if package:is_plat("windows") then + local precompiled = false + if package:is_plat("windows") then + if package:version():ge("18.1.8") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + precompiled = true else - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") - package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") - end - else - local precompiled = false - if package:is_plat("windows") then if package:is_arch("x86") then package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") @@ -59,56 +53,70 @@ package("llvm") precompiled = true end end - if not precompiled then - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") - package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") - package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") - package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") - package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") - package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") - package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") - package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - end + elseif package:is_isplat("linux") and package:version():ge("18.1.8") then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") + package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + precompiled = true + end + if not precompiled then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") + package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") + package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") + package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") + package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") + package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") + package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") + package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") end end) else -- After xmake v2.9.5, we'll remove it. local precompiled = false if is_plat("windows") then - if is_arch("x86") then - set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") - add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") - add_versions("14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") - add_versions("15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") - add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") - add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") - add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") + if package:version():ge("18.1.8") then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") + package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true - else - set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") - add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") - add_versions("14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") - add_versions("15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") - add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") - add_versions("17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") - add_versions("18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") - add_versions("18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") + elseif is_isplat("linux") and version():ge("18.1.8") then + set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") + add_versions("18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true + else + if is_arch("x86") then + set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") + add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") + add_versions("14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") + add_versions("15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") + add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") + add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") + add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") + precompiled = true + else + set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") + add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") + add_versions("14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") + add_versions("15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") + add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") + add_versions("17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") + add_versions("18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") + add_versions("18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") + precompiled = true + end + end + if not precompiled then + set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") + add_versions("11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + add_versions("14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") + add_versions("15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") + add_versions("16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") + add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") + add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") + add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") end - end - if not precompiled then - set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") - add_versions("11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") - add_versions("14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") - add_versions("15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") - add_versions("16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") - add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") - add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") - add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") end end - on_load(function (package) if not package:is_plat("windows", "msys") then package:add("deps", "cmake") From 3fb3f4e531683b68a4197f801d2545619bbcf354 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 14:59:35 +0100 Subject: [PATCH 08/22] Update xmake.lua --- packages/l/llvm/xmake.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 655868bb62b..413c71580fb 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -75,8 +75,8 @@ package("llvm") local precompiled = false if is_plat("windows") then if package:version():ge("18.1.8") then - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") - package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") + add_versions("18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true elseif is_isplat("linux") and version():ge("18.1.8") then set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") From 22919cf9f54caf2454da7b306900b2974fa2cd4c Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 15:05:27 +0100 Subject: [PATCH 09/22] Fix typo --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 413c71580fb..a92094c3848 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -53,7 +53,7 @@ package("llvm") precompiled = true end end - elseif package:is_isplat("linux") and package:version():ge("18.1.8") then + elseif package:is_plat("linux") and package:version():ge("18.1.8") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true From 8ba4bea7371cdd3900d178eeaefaca7886aa27af Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 15:54:34 +0100 Subject: [PATCH 10/22] add 18.1.8 version to non precompiled --- packages/l/llvm/xmake.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index a92094c3848..c4222bd3c2f 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -113,6 +113,7 @@ package("llvm") add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") + add_versions("18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end end From ec8384f29282a1cf5c48c8abde7c025229d8ae6f Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 16:40:59 +0100 Subject: [PATCH 11/22] Update xmake.lua --- packages/l/llvm/xmake.lua | 52 +++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index c4222bd3c2f..253fb8e7ed0 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -26,9 +26,13 @@ package("llvm") -- before adding a new version, make sure that the prebuild is containing llvm-config if on_source then on_source(function (package) + import("core.base.semver") + local precompiled = false + local requiredversion = semver.new(package:requireinfo().version) + if package:is_plat("windows") then - if package:version():ge("18.1.8") then + if requiredversion:major() <= 18 and requiredversion:minor() >= 1 then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true @@ -53,7 +57,7 @@ package("llvm") precompiled = true end end - elseif package:is_plat("linux") and package:version():ge("18.1.8") then + elseif package:is_plat("linux") and requiredversion:major() <= 18 and requiredversion:minor() >= 1 then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true @@ -74,35 +78,25 @@ package("llvm") -- After xmake v2.9.5, we'll remove it. local precompiled = false if is_plat("windows") then - if package:version():ge("18.1.8") then - set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") - add_versions("18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") - precompiled = true - elseif is_isplat("linux") and version():ge("18.1.8") then - set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") - add_versions("18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + if is_arch("x86") then + set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") + add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") + add_versions("14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") + add_versions("15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") + add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") + add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") + add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") precompiled = true else - if is_arch("x86") then - set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") - add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") - add_versions("14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") - add_versions("15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") - add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") - add_versions("17.0.6", "ce78b510603cb3b347788d2f52978e971cf5f55559151ca13a73fd400ad80c41") - add_versions("18.1.1", "9f59dd99d45f64a5c00b00d27da8fe8b5f162905026f5c9ef0ade6e73ae18df3") - precompiled = true - else - set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") - add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") - add_versions("14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") - add_versions("15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") - add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") - add_versions("17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") - add_versions("18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") - add_versions("18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") - precompiled = true - end + set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") + add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") + add_versions("14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") + add_versions("15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") + add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") + add_versions("17.0.6", "c480a4c280234b91f7796a1b73b18134ae62fe7c88d2d0c33312d33cb2999187") + add_versions("18.1.1", "28a9fbcd18f1e7e736ece6d663726bc15649f025343c3004dcbfc2d367b9924c") + add_versions("18.1.8", "c9ff08a5267aa0a909d8aae9d4a08562853daa2eb85eac96eb9d3e33b0be1348") + precompiled = true end if not precompiled then set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") From 5656e55105777e74ca10ef568a36523ebc16d853 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 3 Feb 2025 18:03:56 +0100 Subject: [PATCH 12/22] Update version handling --- packages/l/llvm/xmake.lua | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 253fb8e7ed0..50e24c576a1 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -27,9 +27,20 @@ package("llvm") if on_source then on_source(function (package) import("core.base.semver") - local precompiled = false - local requiredversion = semver.new(package:requireinfo().version) + local latest = "18.1.8" + + local requiredversion = (package:requireinfo() and package:requireinfo().version) or "latest" == "latest" + + if requiredversion ~= "latest" and requiredversion ~= latest then + if semver.satisfies(latest, (package:requireinfo() and package:requireinfo().version) or latest) then + requiredversion = semver.new(latest) + else + requiredversion = semver.new(requiredversion) + end + else + requiredversion = semver.new(latest) + end if package:is_plat("windows") then if requiredversion:major() <= 18 and requiredversion:minor() >= 1 then From 9f1a137755d173f2fef98c412715fe1b334e9fc3 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Feb 2025 14:25:51 +0100 Subject: [PATCH 13/22] fix package version --- packages/l/llvm/xmake.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 50e24c576a1..c4e4f34e425 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -47,7 +47,7 @@ package("llvm") package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true - else + elseif requiredversion:major() ~= 16 and requiredversion:minor() ~= 0 and requiredversion:patch() ~= 5 then if package:is_arch("x86") then package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") @@ -73,6 +73,7 @@ package("llvm") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true end + if not precompiled then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") From d581b7d3651e143b6696eca85b50905ecf3f115b Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Feb 2025 14:38:35 +0100 Subject: [PATCH 14/22] Update version checks --- packages/l/llvm/xmake.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index c4e4f34e425..1a508801a98 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -41,9 +41,8 @@ package("llvm") else requiredversion = semver.new(latest) end - if package:is_plat("windows") then - if requiredversion:major() <= 18 and requiredversion:minor() >= 1 then + if requiredversion:satisfies("18.1.8") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-pc-windows-msvc.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true @@ -68,7 +67,7 @@ package("llvm") precompiled = true end end - elseif package:is_plat("linux") and requiredversion:major() <= 18 and requiredversion:minor() >= 1 then + elseif package:is_plat("linux") and requiredversion:satisfies("18.1.8") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true From 6d8252da455f1b57823d461a86697c2f8bf70d31 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Feb 2025 16:49:08 +0100 Subject: [PATCH 15/22] Remove unnecessary whitespace --- packages/l/llvm/xmake.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 1a508801a98..0d520a72eba 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -29,9 +29,7 @@ package("llvm") import("core.base.semver") local precompiled = false local latest = "18.1.8" - local requiredversion = (package:requireinfo() and package:requireinfo().version) or "latest" == "latest" - if requiredversion ~= "latest" and requiredversion ~= latest then if semver.satisfies(latest, (package:requireinfo() and package:requireinfo().version) or latest) then requiredversion = semver.new(latest) @@ -72,7 +70,6 @@ package("llvm") package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") precompiled = true end - if not precompiled then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") From 20c2ea6166a90eec839324720f0ee3b695a52ce3 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Feb 2025 17:59:45 +0100 Subject: [PATCH 16/22] Version 11.0.0 does not exist --- packages/l/llvm/xmake.lua | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 0d520a72eba..0ab7352997b 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -71,15 +71,19 @@ package("llvm") precompiled = true end if not precompiled then - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") - package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") - package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") - package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") - package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") - package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") - package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") - package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") + if requiredversion:satisfies("11.0.0") then + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).tar.xz") + package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + else + package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") + package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") + package:add("versions", "15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") + package:add("versions", "16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863") + package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") + package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") + package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") + package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") + end end end) else From 10a4c6a33215dcb58677c11c96b148fbb3601b32 Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Tue, 4 Feb 2025 19:20:41 +0100 Subject: [PATCH 17/22] Update version hash --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 0ab7352997b..3637f9d408a 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -67,7 +67,7 @@ package("llvm") end elseif package:is_plat("linux") and requiredversion:satisfies("18.1.8") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") - package:add("versions", "18.1.8", "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8") + package:add("versions", "18.1.8", "54ec30358afcc9fb8aa74307db3046f5187f9fb89fb37064cdde906e062ebf36") precompiled = true end if not precompiled then From 384e2437c15ae4380ef8c3cae0ac4c2e0e85c70d Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Tue, 4 Feb 2025 19:52:11 +0100 Subject: [PATCH 18/22] Update version hash --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 3637f9d408a..6daef009c40 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -119,7 +119,7 @@ package("llvm") add_versions("16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") add_versions("17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") add_versions("18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - add_versions("18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") + add_versions("18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") end end end From 4bd0da2b9d0cc4669276182f95846edf95763944 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 5 Feb 2025 11:42:05 +0100 Subject: [PATCH 19/22] Update on_install when precompiled --- packages/l/llvm/xmake.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 6daef009c40..c43b6f1d09f 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -85,6 +85,7 @@ package("llvm") package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") end end + package:data_set("precompiled", precompiled) end) else -- After xmake v2.9.5, we'll remove it. @@ -160,6 +161,10 @@ package("llvm") end) on_install("linux", "macosx|x86_64", "bsd", function (package) + if package:data("precompiled") then + os.cp("*", package:installdir()) + return + end local projects = { "bolt", "clang", From 1598a10641b8d17a1431a75bf4a3e419ec83f029 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 5 Feb 2025 13:06:15 +0100 Subject: [PATCH 20/22] Update version hash --- packages/l/llvm/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index c43b6f1d09f..bef68114682 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -82,7 +82,7 @@ package("llvm") package:add("versions", "16.0.6", "ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e") package:add("versions", "17.0.6", "58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813") package:add("versions", "18.1.1", "8f34c6206be84b186b4b31f47e1b52758fa38348565953fad453d177ef34c0ad") - package:add("versions", "18.1.8", "3e46c24870921c85e3c747f7c422f41c1b7d2f92e066bb72274d6803ef0c63ba") + package:add("versions", "18.1.8", "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a") end end package:data_set("precompiled", precompiled) From 72e32c4306d3ad8cc8c570dfb366dd2d7ff4f4a4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 5 Feb 2025 17:06:35 +0100 Subject: [PATCH 21/22] Removed linux precompiled, only compatible with ubuntu 18.04 --- packages/l/llvm/xmake.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index bef68114682..0e036bd5646 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -65,10 +65,6 @@ package("llvm") precompiled = true end end - elseif package:is_plat("linux") and requiredversion:satisfies("18.1.8") then - package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/clang+llvm-$(version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz") - package:add("versions", "18.1.8", "54ec30358afcc9fb8aa74307db3046f5187f9fb89fb37064cdde906e062ebf36") - precompiled = true end if not precompiled then if requiredversion:satisfies("11.0.0") then From 2b0078c778fd9a4f36c36477b0c93199f522ef33 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 6 Feb 2025 16:14:03 +0100 Subject: [PATCH 22/22] Try remove version 11.0.0 --- packages/l/llvm/xmake.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/l/llvm/xmake.lua b/packages/l/llvm/xmake.lua index 0e036bd5646..fdb0f940b6f 100644 --- a/packages/l/llvm/xmake.lua +++ b/packages/l/llvm/xmake.lua @@ -47,7 +47,7 @@ package("llvm") elseif requiredversion:major() ~= 16 and requiredversion:minor() ~= 0 and requiredversion:patch() ~= 5 then if package:is_arch("x86") then package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") - package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") + -- package:add("versions", "11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") package:add("versions", "14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") package:add("versions", "15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") package:add("versions", "16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") @@ -56,7 +56,7 @@ package("llvm") precompiled = true else package:set("urls", "https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") - package:add("versions", "11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") + -- package:add("versions", "11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") package:add("versions", "14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") package:add("versions", "15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") package:add("versions", "16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") @@ -69,7 +69,7 @@ package("llvm") if not precompiled then if requiredversion:satisfies("11.0.0") then package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).tar.xz") - package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + -- package:add("versions", "11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") else package:set("urls", "https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") package:add("versions", "14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") @@ -89,7 +89,7 @@ package("llvm") if is_plat("windows") then if is_arch("x86") then set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win32.zip") - add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") + -- add_versions("11.0.0", "268043ae0b656cf6272ccb9b8e3f21f51170b74ed8997ddc0b99587983b821ca") add_versions("14.0.0", "63afc3c472cb279978c5a7efc25b8783a700aeb416df67886b7057eba52a8742") add_versions("15.0.7", "8dbabb2194404220f8641b4b18b24b36eca0ae751380c23fc7743097e205b95f") add_versions("16.0.6", "5e1f560f75e7a4c7a6509cf7d9a28b4543e7afcb4bcf4f747e9f208f0efa6818") @@ -98,7 +98,7 @@ package("llvm") precompiled = true else set_urls("https://github.com/xmake-mirror/llvm-windows/releases/download/$(version)/clang+llvm-$(version)-win64.zip") - add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") + -- add_versions("11.0.0", "db5b3a44f8f784ebc71f716b54eb63c0d8d21aead12449f36291ab00820271c7") add_versions("14.0.0", "c1e1ddf11aa73c58073956d9217086550544328ed5e6ec64c1a709badb231711") add_versions("15.0.7", "7d29ca82f8b73e9973209e90428ec9f3fbd3b01925bd26e34f59e959e9ea7eb3") add_versions("16.0.6", "7adb1a630b6cc676a4b983aca9b01e67f770556c6e960e9ee9aa7752c8beb8a3") @@ -109,7 +109,7 @@ package("llvm") end if not precompiled then set_urls("https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/llvm-project-$(version).src.tar.xz") - add_versions("11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") + -- add_versions("11.0.0", "b7b639fc675fa1c86dd6d0bc32267be9eb34451748d2efd03f674b773000e92b") add_versions("14.0.0", "35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23") add_versions("15.0.7", "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6") add_versions("16.0.5", "37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863")