diff options
| author | ruki <[email protected]> | 2021-02-08 23:24:25 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-02-08 23:24:25 +0800 |
| commit | b4420e51c372cd46367852a354855555b044b21c (patch) | |
| tree | d146572d440f815dccfc0df938b7b60c50e800bd | |
| parent | 21f54de18ca93ef952e5c5711fa491330cf9f49f (diff) | |
support toolchain@packages syntax
| -rw-r--r-- | tests/projects/package/toolchain_gnu_rm/xmake.lua | 2 | ||||
| -rw-r--r-- | tests/projects/package/toolchain_llvm/xmake.lua | 2 | ||||
| -rw-r--r-- | tests/projects/package/toolchain_llvm_mingw/xmake.lua | 2 | ||||
| -rw-r--r-- | tests/projects/package/toolchain_muslcc/xmake.lua | 4 | ||||
| -rw-r--r-- | tests/projects/package/toolchain_zig/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/core/tool/toolchain.lua | 38 | ||||
| -rw-r--r-- | xmake/toolchains/gnu-rm/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/llvm/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/mingw/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/muslcc/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/zig/xmake.lua | 3 |
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") |
