summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-02-08 23:24:25 +0800
committerruki <[email protected]>2021-02-08 23:24:25 +0800
commitb4420e51c372cd46367852a354855555b044b21c (patch)
treed146572d440f815dccfc0df938b7b60c50e800bd
parent21f54de18ca93ef952e5c5711fa491330cf9f49f (diff)
support toolchain@packages syntax
-rw-r--r--tests/projects/package/toolchain_gnu_rm/xmake.lua2
-rw-r--r--tests/projects/package/toolchain_llvm/xmake.lua2
-rw-r--r--tests/projects/package/toolchain_llvm_mingw/xmake.lua2
-rw-r--r--tests/projects/package/toolchain_muslcc/xmake.lua4
-rw-r--r--tests/projects/package/toolchain_zig/xmake.lua3
-rw-r--r--xmake/core/tool/toolchain.lua38
-rw-r--r--xmake/toolchains/gnu-rm/xmake.lua3
-rw-r--r--xmake/toolchains/llvm/xmake.lua3
-rw-r--r--xmake/toolchains/mingw/xmake.lua3
-rw-r--r--xmake/toolchains/muslcc/xmake.lua3
-rw-r--r--xmake/toolchains/zig/xmake.lua3
11 files changed, 39 insertions, 27 deletions
diff --git a/tests/projects/package/toolchain_gnu_rm/xmake.lua b/tests/projects/package/toolchain_gnu_rm/xmake.lua
index d00bc859c..0857f6b90 100644
--- a/tests/projects/package/toolchain_gnu_rm/xmake.lua
+++ b/tests/projects/package/toolchain_gnu_rm/xmake.lua
@@ -4,4 +4,4 @@ add_requires("gnu-rm")
target("test")
set_kind("binary")
add_files("src/*.c")
- set_toolchains("gnu-rm")
+ set_toolchains("@gnu-rm")
diff --git a/tests/projects/package/toolchain_llvm/xmake.lua b/tests/projects/package/toolchain_llvm/xmake.lua
index 5e2f17b3c..974430856 100644
--- a/tests/projects/package/toolchain_llvm/xmake.lua
+++ b/tests/projects/package/toolchain_llvm/xmake.lua
@@ -4,4 +4,4 @@ add_requires("llvm 11.0.0", {alias = "llvm-11"})
target("test")
set_kind("binary")
add_files("src/*.c")
- set_toolchains("llvm", {packages = "llvm-11"})
+ set_toolchains("llvm@llvm-11")
diff --git a/tests/projects/package/toolchain_llvm_mingw/xmake.lua b/tests/projects/package/toolchain_llvm_mingw/xmake.lua
index 0373bd96b..da5c71225 100644
--- a/tests/projects/package/toolchain_llvm_mingw/xmake.lua
+++ b/tests/projects/package/toolchain_llvm_mingw/xmake.lua
@@ -4,4 +4,4 @@ add_requires("llvm-mingw")
target("test")
set_kind("binary")
add_files("src/*.c")
- set_toolchains("mingw")
+ set_toolchains("mingw@llvm-mingw")
diff --git a/tests/projects/package/toolchain_muslcc/xmake.lua b/tests/projects/package/toolchain_muslcc/xmake.lua
index 9bfa0de28..688cb241c 100644
--- a/tests/projects/package/toolchain_muslcc/xmake.lua
+++ b/tests/projects/package/toolchain_muslcc/xmake.lua
@@ -2,10 +2,10 @@ add_rules("mode.debug", "mode.release")
-- set muslcc as global toolchain
add_requires("muslcc")
-set_toolchains("muslcc")
+set_toolchains("@muslcc")
-- explicitly specify the package toolchain
-add_requires("zlib", {configs = {toolchains = "muslcc"}})
+add_requires("zlib", {configs = {toolchains = "@muslcc"}})
-- use global toolchain: muslcc
add_requires("pcre2")
diff --git a/tests/projects/package/toolchain_zig/xmake.lua b/tests/projects/package/toolchain_zig/xmake.lua
index 095e2cba0..330c09640 100644
--- a/tests/projects/package/toolchain_zig/xmake.lua
+++ b/tests/projects/package/toolchain_zig/xmake.lua
@@ -3,5 +3,6 @@ add_requires("zig 0.7.x")
target("test")
set_kind("binary")
- add_files("src/*.zig") -- we use builtin zig toolchain
+ add_files("src/*.zig")
+ set_toolchains("@zig")
diff --git a/xmake/core/tool/toolchain.lua b/xmake/core/tool/toolchain.lua
index cd71245bf..ee3412f07 100644
--- a/xmake/core/tool/toolchain.lua
+++ b/xmake/core/tool/toolchain.lua
@@ -274,8 +274,8 @@ function _instance:packages()
local packages = self._PACKAGES
if packages == nil then
local project = require("project/project")
- -- we will get packages from `set_toolchains("", {packages})` or `toolchain().add_packages()`
- for _, pkgname in ipairs(table.wrap(self:config("packages") or self:info():get("packages"))) do
+ -- we will get packages from `set_toolchains("foo", {packages})` or `set_toolchains("foo@packages")`
+ for _, pkgname in ipairs(table.wrap(self:config("packages"))) do
local requires = project.requires()
if requires then
local pkginfo = requires[pkgname]
@@ -456,6 +456,24 @@ function toolchain._cachekey(name, opt)
return cachekey
end
+-- parse toolchain and package name
+--
+-- format: toolchain@package
+-- e.g. "clang@llvm-10", "@muslcc", zig
+--
+function toolchain._parsename(name)
+ local splitinfo = name:split('@', {plain = true, strict = true})
+ local toolchain_name = splitinfo[1]
+ if toolchain_name == "" then
+ toolchain_name = nil
+ end
+ local packages = splitinfo[2]
+ if packages == "" then
+ packages = nil
+ end
+ return toolchain_name or packages, packages
+end
+
-- get toolchain apis
function toolchain.apis()
return
@@ -467,10 +485,8 @@ function toolchain.apis()
, "toolchain.set_bindir"
, "toolchain.set_sdkdir"
, "toolchain.set_archs"
- , "toolchain.set_packages"
, "toolchain.set_homepage"
, "toolchain.set_description"
- , "toolchain.add_packages"
}
, keyvalues =
{
@@ -502,8 +518,13 @@ end
-- load toolchain
function toolchain.load(name, opt)
- -- init cache key
+ -- get toolchain name and packages
opt = opt or {}
+ local packages
+ name, packages = toolchain._parsename(name)
+ opt.packages = opt.packages or packages
+
+ -- get cache key
opt.plat = opt.plat or config.get("plat") or os.host()
opt.arch = opt.arch or config.get("arch") or os.arch()
local cachekey = toolchain._cachekey(name, opt)
@@ -556,8 +577,13 @@ end
-- load toolchain from the give toolchain info
function toolchain.load_withinfo(name, info, opt)
- -- init cache key
+ -- get toolchain name and packages
opt = opt or {}
+ local packages
+ name, packages = toolchain._parsename(name)
+ opt.packages = opt.packages or packages
+
+ -- get cache key
opt.plat = opt.plat or config.get("plat") or os.host()
opt.arch = opt.arch or config.get("arch") or os.arch()
local cachekey = toolchain._cachekey(name, opt)
diff --git a/xmake/toolchains/gnu-rm/xmake.lua b/xmake/toolchains/gnu-rm/xmake.lua
index 492b00caa..4a1751172 100644
--- a/xmake/toolchains/gnu-rm/xmake.lua
+++ b/xmake/toolchains/gnu-rm/xmake.lua
@@ -28,9 +28,6 @@ toolchain("gnu-rm")
-- mark as cross-complation toolchain
set_kind("cross")
- -- add packages
- add_packages("gnu-rm")
-
-- on load
on_load(function (toolchain)
diff --git a/xmake/toolchains/llvm/xmake.lua b/xmake/toolchains/llvm/xmake.lua
index 37915d7d2..86ab4a13d 100644
--- a/xmake/toolchains/llvm/xmake.lua
+++ b/xmake/toolchains/llvm/xmake.lua
@@ -28,9 +28,6 @@ toolchain("llvm")
-- mark as standalone toolchain
set_kind("standalone")
- -- add packages
- add_packages("llvm")
-
-- set toolset
set_toolset("cc", "clang")
set_toolset("cxx", "clang", "clang++")
diff --git a/xmake/toolchains/mingw/xmake.lua b/xmake/toolchains/mingw/xmake.lua
index 0d80cc643..3007093ea 100644
--- a/xmake/toolchains/mingw/xmake.lua
+++ b/xmake/toolchains/mingw/xmake.lua
@@ -28,9 +28,6 @@ toolchain("mingw")
-- mark as standalone toolchain
set_kind("standalone")
- -- add packages, TODO maybe we still add mingw package in xmake-repo
- add_packages("llvm-mingw")
-
-- check toolchain
on_check("check")
diff --git a/xmake/toolchains/muslcc/xmake.lua b/xmake/toolchains/muslcc/xmake.lua
index c3dcb50a9..cec5ecbdb 100644
--- a/xmake/toolchains/muslcc/xmake.lua
+++ b/xmake/toolchains/muslcc/xmake.lua
@@ -28,9 +28,6 @@ toolchain("muslcc")
-- mark as cross-compilation toolchain
set_kind("cross")
- -- add packages
- add_packages("muslcc")
-
-- on load
on_load(function (toolchain)
diff --git a/xmake/toolchains/zig/xmake.lua b/xmake/toolchains/zig/xmake.lua
index f7717938a..97dd940b7 100644
--- a/xmake/toolchains/zig/xmake.lua
+++ b/xmake/toolchains/zig/xmake.lua
@@ -25,9 +25,6 @@ toolchain("zig")
set_homepage("https://ziglang.org/")
set_description("Zig Programming Language Compiler")
- -- add packages
- add_packages("zig")
-
-- on check
on_check(function (toolchain)
import("lib.detect.find_tool")