Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update llvm to 18.1.8 #6224

Open
wants to merge 12 commits into
base: dev
Choose a base branch
from
1 change: 1 addition & 0 deletions packages/l/llvm/components/clang.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
function get_links(package)
local links = {
"libclang",
"clang-cpp",
"clang",
"clangAPINotes",
Expand Down
80 changes: 39 additions & 41 deletions packages/l/llvm/fetch.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,52 @@ import("lib.detect.find_tool")
import("core.project.target")

function main(package, opt)
if opt.system then
ArthurVasseur marked this conversation as resolved.
Show resolved Hide resolved
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
Expand Down
85 changes: 50 additions & 35 deletions packages/l/llvm/xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
ArthurVasseur marked this conversation as resolved.
Show resolved Hide resolved
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
ArthurVasseur marked this conversation as resolved.
Show resolved Hide resolved
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")
ArthurVasseur marked this conversation as resolved.
Show resolved Hide resolved
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
Expand All @@ -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")
Expand All @@ -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")
Expand All @@ -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
Expand Down Expand Up @@ -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)
Loading