diff options
| author | ruki <[email protected]> | 2021-02-16 23:43:57 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-02-16 23:43:57 +0800 |
| commit | 5ec37d1979611aad83348afc8fc8c3adabbbc5b7 (patch) | |
| tree | 29de062fe30b7888ac9d69c375854f579d45515b | |
| parent | 7209d292659792a6d92071959537c09a2bd48c4c (diff) | |
improve cross/bindir/sdkdir for toolchains
| -rw-r--r-- | xmake/core/tool/toolchain.lua | 6 | ||||
| -rw-r--r-- | xmake/languages/dlang/load.lua | 4 | ||||
| -rw-r--r-- | xmake/rules/qt/deploy/android.lua | 1 | ||||
| -rw-r--r-- | xmake/toolchains/cross/check.lua | 7 | ||||
| -rw-r--r-- | xmake/toolchains/dlang/check.lua | 13 | ||||
| -rw-r--r-- | xmake/toolchains/dlang/xmake.lua | 2 | ||||
| -rw-r--r-- | xmake/toolchains/llvm/check.lua | 11 | ||||
| -rw-r--r-- | xmake/toolchains/mingw/check.lua | 11 | ||||
| -rw-r--r-- | xmake/toolchains/mingw/xmake.lua | 2 | ||||
| -rw-r--r-- | xmake/toolchains/ndk/check.lua | 27 | ||||
| -rw-r--r-- | xmake/toolchains/ndk/load.lua | 18 | ||||
| -rw-r--r-- | xmake/toolchains/sdcc/check.lua | 9 | ||||
| -rw-r--r-- | xmake/toolchains/tinyc/xmake.lua | 9 |
13 files changed, 64 insertions, 56 deletions
diff --git a/xmake/core/tool/toolchain.lua b/xmake/core/tool/toolchain.lua index fdcf10325..43782f2e8 100644 --- a/xmake/core/tool/toolchain.lua +++ b/xmake/core/tool/toolchain.lua @@ -204,12 +204,12 @@ end -- get the cross function _instance:cross() - return config.get("cross") or self:info():get("cross") + return self:config("cross") or config.get("cross") or self:info():get("cross") end -- get the bin directory function _instance:bindir() - local bindir = config.get("bin") or self:info():get("bindir") + local bindir = self:config("bindir") or config.get("bin") or self:info():get("bindir") if not bindir and self:cross() and self:sdkdir() and os.isdir(path.join(self:sdkdir(), "bin")) then bindir = path.join(self:sdkdir(), "bin") end @@ -218,7 +218,7 @@ end -- get the sdk directory function _instance:sdkdir() - return config.get("sdk") or self:info():get("sdkdir") + return self:config("sdkdir") or config.get("sdk") or self:info():get("sdkdir") end -- get cachekey diff --git a/xmake/languages/dlang/load.lua b/xmake/languages/dlang/load.lua index fd547b488..97ef5346a 100644 --- a/xmake/languages/dlang/load.lua +++ b/xmake/languages/dlang/load.lua @@ -23,11 +23,7 @@ import("api") -- load it function main() - - -- init apis _g.apis = api.apis() - - -- ok return _g end diff --git a/xmake/rules/qt/deploy/android.lua b/xmake/rules/qt/deploy/android.lua index b9ecdaa85..b4dde3721 100644 --- a/xmake/rules/qt/deploy/android.lua +++ b/xmake/rules/qt/deploy/android.lua @@ -24,6 +24,7 @@ import("core.base.option") import("core.base.semver") import("core.project.config") import("core.project.depend") +import("core.tool.toolchain") import("private.utils.progress") -- escape path diff --git a/xmake/toolchains/cross/check.lua b/xmake/toolchains/cross/check.lua index 98cda65cc..815b95fd7 100644 --- a/xmake/toolchains/cross/check.lua +++ b/xmake/toolchains/cross/check.lua @@ -48,9 +48,10 @@ function main(toolchain) end end if cross_toolchain then - config.set("cross", cross_toolchain.cross, {readonly = true, force = true}) - config.set("bin", cross_toolchain.bindir, {readonly = true, force = true}) - config.set("sdk", cross_toolchain.sdkdir, {readonly = true, force = true}) + toolchain:config_set("cross", cross_toolchain.cross) + toolchain:config_set("bindir", cross_toolchain.bindir) + toolchain:config_set("sdkdir", cross_toolchain.sdkdir) + toolchain:configs_save() -- init default target os if not config.get("target_os") then config.set("target_os", "linux", {readonly = true, force = true}) diff --git a/xmake/toolchains/dlang/check.lua b/xmake/toolchains/dlang/check.lua index 782675351..fb0dc0aaa 100644 --- a/xmake/toolchains/dlang/check.lua +++ b/xmake/toolchains/dlang/check.lua @@ -31,9 +31,9 @@ function main(toolchain) end -- we need find ldc2 and gdc in the given toolchain sdk directory - local sdkdir = config.get("sdk") - local bindir = config.get("bin") - local cross = config.get("cross") + local sdkdir = toolchain:sdkdir() + local bindir = toolchain:bindir() + local cross = toolchain:cross() if not sdkdir and not bindir and not cross then return end @@ -41,9 +41,10 @@ function main(toolchain) -- find cross toolchain local cross_toolchain = find_cross_toolchain(sdkdir, {bindir = bindir, cross = cross}) if cross_toolchain then - config.set("cross", cross_toolchain.cross, {readonly = true, force = true}) - config.set("bin", cross_toolchain.bindir, {readonly = true, force = true}) - config.set("sdkdir", cross_toolchain.sdkdir, {readonly = true, force = true}) + toolchain:config_set("cross", cross_toolchain.cross) + toolchain:config_set("bindir", cross_toolchain.bindir) + toolchain:config_set("sdkdir", cross_toolchain.sdkdir) + toolchain:configs_save() else raise("cross toolchain not found!") end diff --git a/xmake/toolchains/dlang/xmake.lua b/xmake/toolchains/dlang/xmake.lua index f12fe9f99..17e5f36b1 100644 --- a/xmake/toolchains/dlang/xmake.lua +++ b/xmake/toolchains/dlang/xmake.lua @@ -35,7 +35,7 @@ toolchain("dlang") import("core.project.config") -- get cross prefix - local cross = config.get("cross") or "" + local cross = toolchain:cross() or "" -- set toolset toolchain:add("toolset", "dc", "$(env DC)", "dmd", "ldc2", cross .. "gdc") diff --git a/xmake/toolchains/llvm/check.lua b/xmake/toolchains/llvm/check.lua index 44ea1ae2d..690a6ea30 100644 --- a/xmake/toolchains/llvm/check.lua +++ b/xmake/toolchains/llvm/check.lua @@ -28,7 +28,7 @@ function _find_xcode(toolchain) -- find xcode local xcode_sdkver = toolchain:config("xcode_sdkver") or config.get("xcode_sdkver") - local xcode = find_xcode(config.get("xcode"), {force = true, verbose = true, + local xcode = find_xcode(toolchain:config("xcode") or config.get("xcode"), {force = true, verbose = true, find_codesign = false, sdkver = xcode_sdkver, plat = toolchain:plat(), @@ -54,8 +54,8 @@ end function main(toolchain) -- get sdk directory - local sdkdir = config.get("sdk") - local bindir = config.get("bin") + local sdkdir = toolchain:sdkdir() + local bindir = toolchain:bindir() if not sdkdir and not bindir then if toolchain:is_plat("linux") and os.isfile("/usr/bin/llvm-ar") then sdkdir = "/usr" @@ -77,8 +77,9 @@ function main(toolchain) end end if cross_toolchain then - config.set("cross", cross_toolchain.cross, {readonly = true, force = true}) - config.set("bin", cross_toolchain.bindir, {readonly = true, force = true}) + toolchain:config_set("cross", cross_toolchain.cross) + toolchain:config_set("bindir", cross_toolchain.bindir) + toolchain:configs_save() else raise("llvm toolchain not found!") end diff --git a/xmake/toolchains/mingw/check.lua b/xmake/toolchains/mingw/check.lua index 9500341ca..22a13fadd 100644 --- a/xmake/toolchains/mingw/check.lua +++ b/xmake/toolchains/mingw/check.lua @@ -24,12 +24,12 @@ import("detect.sdks.find_mingw") -- check the mingw toolchain function main(toolchain) - local mingw = find_mingw(config.get("mingw"), {verbose = true, bindir = config.get("bin"), cross = config.get("cross")}) + local mingw = find_mingw(toolchain:config("mingw") or config.get("mingw"), {verbose = true, bindir = toolchain:bindir(), cross = toolchain:cross()}) if not mingw then for _, package in ipairs(toolchain:packages()) do local installdir = package:installdir() if installdir and os.isdir(installdir) then - mingw = find_mingw(installdir, {verbose = true, cross = config.get("cross")}) + mingw = find_mingw(installdir, {verbose = true, cross = toolchain:cross()}) if mingw then break end @@ -37,9 +37,10 @@ function main(toolchain) end end if mingw then - config.set("mingw", mingw.sdkdir, {force = true, readonly = true}) - config.set("cross", mingw.cross, {readonly = true, force = true}) - config.set("bin", mingw.bindir, {readonly = true, force = true}) + toolchain:config_set("mingw", mingw.sdkdir) + toolchain:config_set("cross", mingw.cross) + toolchain:config_set("bindir", mingw.bindir) + toolchain:configs_save() else -- failed cprint("${bright color.error}please run:") diff --git a/xmake/toolchains/mingw/xmake.lua b/xmake/toolchains/mingw/xmake.lua index 3007093ea..3ddd5c103 100644 --- a/xmake/toolchains/mingw/xmake.lua +++ b/xmake/toolchains/mingw/xmake.lua @@ -48,7 +48,7 @@ toolchain("mingw") elseif toolchain:is_arch("armv7", "arm.*") then cross = "armv7-w64-mingw32-" else - cross = config.get("cross") or "" + cross = toolchain:cross() or "" end -- add bin search library for loading some dependent .dll files windows diff --git a/xmake/toolchains/ndk/check.lua b/xmake/toolchains/ndk/check.lua index e5e36fbf7..66bfe72f3 100644 --- a/xmake/toolchains/ndk/check.lua +++ b/xmake/toolchains/ndk/check.lua @@ -24,13 +24,17 @@ import("detect.sdks.find_ndk") import("detect.sdks.find_android_sdk") -- check the ndk toolchain -function _check_ndk() - local ndk = find_ndk(config.get("ndk"), {force = true, verbose = true}) +function _check_ndk(toolchain) + local ndk = find_ndk(toolchain:config("ndk") or config.get("ndk"), {force = true, verbose = true}) if ndk then - config.set("ndk", ndk.sdkdir, {force = true, readonly = true}) - config.set("bin", ndk.bindir, {force = true, readonly = true}) - config.set("cross", ndk.cross, {force = true, readonly = true}) - config.set("gcc_toolchain", ndk.gcc_toolchain, {force = true, readonly = true}) + toolchain:config_set("ndk", ndk.sdkdir) + toolchain:config_set("bindir", ndk.bindir) + toolchain:config_set("cross", ndk.cross) + toolchain:config_set("gcc_toolchain", ndk.gcc_toolchain) + toolchain:config_set("ndkver", ndk.ndkver) + toolchain:config_set("ndk_sdkver", ndk.sdkver) + toolchain:config_set("ndk_toolchains_ver", ndk.toolchains_ver) + toolchain:configs_save() else -- failed cprint("${bright color.error}please run:") @@ -41,16 +45,17 @@ function _check_ndk() end -- check the android sdk -function _check_android_sdk() - local sdk = find_android_sdk(config.get("android_sdk"), {force = true, verbose = true}) +function _check_android_sdk(toolchain) + local sdk = find_android_sdk(toolchain:config("android_sdk") or config.get("android_sdk"), {force = true, verbose = true}) if sdk then - config.set("sdk", sdk.sdkdir, {force = true, readonly = true}) + toolchain:config_set("android_sdk", sdk.sdkdir) + toolchain:configs_save() end end -- main entry function main(toolchain) - _check_android_sdk() - _check_ndk() + _check_android_sdk(toolchain) + _check_ndk(toolchain) return true end diff --git a/xmake/toolchains/ndk/load.lua b/xmake/toolchains/ndk/load.lua index c4e53ced2..a21b9fbf2 100644 --- a/xmake/toolchains/ndk/load.lua +++ b/xmake/toolchains/ndk/load.lua @@ -30,11 +30,11 @@ import("core.project.config") function main(toolchain) -- get cross - local cross = config.get("cross") or "" + local cross = toolchain:cross() or "" -- get gcc toolchain bin directory local gcc_toolchain_bin = nil - local gcc_toolchain = config.get("gcc_toolchain") + local gcc_toolchain = toolchain:config("gcc_toolchain") if gcc_toolchain then gcc_toolchain_bin = path.join(gcc_toolchain, "bin") end @@ -62,7 +62,7 @@ function main(toolchain) -- use llvm directory? e.g. android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin local isllvm = false - local bindir = config.get("bin") + local bindir = toolchain:bindir() if bindir and bindir:find("llvm", 1, true) then isllvm = true end @@ -91,7 +91,7 @@ function main(toolchain) toolchain:add("shflags", "-target " .. targets[arch]) -- add gcc toolchain - local gcc_toolchain = config.get("gcc_toolchain") + local gcc_toolchain = toolchain:config("gcc_toolchain") if gcc_toolchain then toolchain:add("cxflags", "-gcc-toolchain " .. gcc_toolchain) toolchain:add("asflags", "-gcc-toolchain " .. gcc_toolchain) @@ -116,9 +116,9 @@ function main(toolchain) toolchain:add("binary.cxflags", "-fPIE", "-pie") -- add flags for the sdk directory of ndk - local ndk = config.get("ndk") - local ndkver = config.get("ndkver") - local ndk_sdkver = config.get("ndk_sdkver") + local ndk = toolchain:config("ndk") + local ndkver = toolchain:config("ndkver") + local ndk_sdkver = toolchain:config("ndk_sdkver") if ndk and ndk_sdkver then -- the sysroot archs @@ -200,8 +200,8 @@ function main(toolchain) -- get gnu c++ stl sdk directory local cxxstl_sdkdir_gnustl = nil - if config.get("ndk_toolchains_ver") then - cxxstl_sdkdir_gnustl = path.translate(format("%s/sources/cxx-stl/gnu-libstdc++/%s", ndk, config.get("ndk_toolchains_ver"))) + if toolchain:config("ndk_toolchains_ver") then + cxxstl_sdkdir_gnustl = path.translate(format("%s/sources/cxx-stl/gnu-libstdc++/%s", ndk, toolchain:config("ndk_toolchains_ver"))) end -- get stlport c++ sdk directory diff --git a/xmake/toolchains/sdcc/check.lua b/xmake/toolchains/sdcc/check.lua index 368b80cd8..18f9a7f99 100644 --- a/xmake/toolchains/sdcc/check.lua +++ b/xmake/toolchains/sdcc/check.lua @@ -24,12 +24,13 @@ import("detect.sdks.find_cross_toolchain") -- check the cross toolchain function main(toolchain) - local sdkdir = config.get("sdk") - local bindir = config.get("bin") + local sdkdir = toolchain:sdkdir() + local bindir = toolchain:bindir() local cross_toolchain = find_cross_toolchain(sdkdir, {bindir = bindir}) if cross_toolchain then - config.set("cross", cross_toolchain.cross, {readonly = true, force = true}) - config.set("bin", cross_toolchain.bindir, {readonly = true, force = true}) + toolchain:config_set("cross", cross_toolchain.cross) + toolchain:config_set("bindir", cross_toolchain.bindir) + toolchain:configs_save() else raise("sdcc toolchain not found!") end diff --git a/xmake/toolchains/tinyc/xmake.lua b/xmake/toolchains/tinyc/xmake.lua index 20d7eedf1..e64e68167 100644 --- a/xmake/toolchains/tinyc/xmake.lua +++ b/xmake/toolchains/tinyc/xmake.lua @@ -42,15 +42,16 @@ toolchain("tinyc") import("lib.detect.find_tool") -- find tcc - local sdkdir = config.get("sdk") + local sdkdir = toolchain:sdkdir() if not sdkdir and is_host("windows") then local winenv_tccsdk = path.join(os.programdir(), "winenv", "tcc") if os.isdir(winenv_tccsdk) then sdkdir = winenv_tccsdk end end - if find_tool("tcc", {paths = config.get("bin") or sdkdir}) then - config.set("__tcc_sdkdir", sdkdir) + if find_tool("tcc", {paths = toolchain:bindir() or sdkdir}) then + toolchain:config_set("sdkdir", sdkdir) + toolchain:configs_save() return true end end) @@ -77,7 +78,7 @@ toolchain("tinyc") end -- init linkdirs and sysincludedirs - local sdkdir = config.get("__tcc_sdkdir") or toolchain:sdkdir() + local sdkdir = toolchain:sdkdir() if sdkdir then local includedir = path.join(sdkdir, "include") if os.isdir(includedir) then |
