diff options
| author | ruki <[email protected]> | 2018-06-22 22:57:34 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-06-22 11:45:24 +0800 |
| commit | 0c615084d9d02daf7851e41bf2cf2ee55aa02824 (patch) | |
| tree | e8108c385e36bb56debf76e19e951d4afe1ace3b | |
| parent | 8cffaa773fe48eaf4afe957ff09f8d80f88f68ca (diff) | |
improve mingw platform
| -rw-r--r-- | xmake/actions/config/xmake.lua | 4 | ||||
| -rw-r--r-- | xmake/platforms/android/check.lua | 14 | ||||
| -rw-r--r-- | xmake/platforms/checker.lua | 2 | ||||
| -rw-r--r-- | xmake/platforms/cross/check.lua | 11 | ||||
| -rw-r--r-- | xmake/platforms/cross/load.lua | 6 | ||||
| -rw-r--r-- | xmake/platforms/linux/check.lua | 4 | ||||
| -rw-r--r-- | xmake/platforms/linux/load.lua | 2 | ||||
| -rw-r--r-- | xmake/platforms/mingw/check.lua | 11 | ||||
| -rw-r--r-- | xmake/platforms/mingw/load.lua | 6 |
9 files changed, 43 insertions, 17 deletions
diff --git a/xmake/actions/config/xmake.lua b/xmake/actions/config/xmake.lua index 3eee423b7..a19d7140a 100644 --- a/xmake/actions/config/xmake.lua +++ b/xmake/actions/config/xmake.lua @@ -104,12 +104,12 @@ task("config") , ".e.g" , " - i386-mingw32-" , " - arm-linux-androideabi-" } - , {nil, "toolchains", "kv", nil, "The Cross Toolchains Directory" + , {nil, "bin", "kv", nil, "The Cross Toolchains Bin Directory" , ".e.g" , " - sdk/bin (/arm-linux-gcc ..)" } , {nil, "sdk", "kv", nil, "The Cross SDK Directory" , ".e.g" - , " - sdk/bin (toolchains)" + , " - sdk/bin" , " - sdk/lib" , " - sdk/include" } diff --git a/xmake/platforms/android/check.lua b/xmake/platforms/android/check.lua index 530231371..64f487693 100644 --- a/xmake/platforms/android/check.lua +++ b/xmake/platforms/android/check.lua @@ -67,23 +67,23 @@ end -- check toolchains function _check_toolchains(config) - -- get toolchains directory - local toolchains = config.get("toolchains") - if not toolchains then + -- get toolchain bin directory + local bindir = config.get("bin") + if not bindir then -- find first toolchains for _, toolchains in ipairs(find_ndk(config.get("ndk"), config.get("arch"))) do - config.set("toolchains", toolchains.bin) + config.set("bin", toolchains.bin) config.set("cross", toolchains.cross) break end end - toolchains = config.get("toolchains") + bindir = config.get("bin") -- get toolchains version local toolchains_ver = config.get("toolchains_ver") - if not toolchains_ver and toolchains then - local toolchains_ver = toolchains:match("%-(%d*%.%d*)[/\\]") + if not toolchains_ver and bindir then + local toolchains_ver = bindir:match("%-(%d*%.%d*)[/\\]") if toolchains_ver then -- save the toolchains version diff --git a/xmake/platforms/checker.lua b/xmake/platforms/checker.lua index 46b45b582..2d9d790b0 100644 --- a/xmake/platforms/checker.lua +++ b/xmake/platforms/checker.lua @@ -47,7 +47,7 @@ function _toolchain_check(config, toolkind, toolinfo) -- attempt to check it if not program then - local tool = find_tool(name, {program = cross .. name, pathes = config.get("toolchains"), check = toolinfo.check}) + local tool = find_tool(name, {program = cross .. name, pathes = config.get("bin"), check = toolinfo.check}) if tool then program = tool.program end diff --git a/xmake/platforms/cross/check.lua b/xmake/platforms/cross/check.lua index d05a8f492..7cfc02190 100644 --- a/xmake/platforms/cross/check.lua +++ b/xmake/platforms/cross/check.lua @@ -46,11 +46,18 @@ function _toolchains(config) -- find cross toolchain local cross = "" - local toolchain = find_cross_toolchain(config.get("sdk") or config.get("toolchains"), {bin = config.get("toolchains"), cross = config.get("cross")}) + local toolchain = find_cross_toolchain(config.get("sdk") or config.get("bin"), {bin = config.get("bin"), cross = config.get("cross")}) if toolchain then + + -- save toolchain config.set("cross", toolchain.cross, {readonly = true, force = true}) - config.set("toolchains", toolchain.bin, {readonly = true, force = true}) + config.set("bin", toolchain.bin, {readonly = true, force = true}) cross = toolchain.cross + + -- add bin search library for loading some dependent .dll files windows + if toolchain.bin and is_host("windows") then + os.addenv("PATH", toolchain.bin) + end end -- init toolchains diff --git a/xmake/platforms/cross/load.lua b/xmake/platforms/cross/load.lua index 60db4b19e..67856712c 100644 --- a/xmake/platforms/cross/load.lua +++ b/xmake/platforms/cross/load.lua @@ -35,6 +35,12 @@ function main() _g.linkdirs = {path.join(sdkdir, "lib")} end + -- add bin search library for loading some dependent .dll files windows + local bindir = config.get("bin") + if bindir and is_host("windows") then + os.addenv("PATH", bindir) + end + -- ok return _g end diff --git a/xmake/platforms/linux/check.lua b/xmake/platforms/linux/check.lua index 0910ff86b..5c52b877f 100644 --- a/xmake/platforms/linux/check.lua +++ b/xmake/platforms/linux/check.lua @@ -51,10 +51,10 @@ function _toolchains(config) -- find cross toolchain local cross = "" - local toolchain = find_cross_toolchain(config.get("sdk") or config.get("toolchains"), {bin = config.get("toolchains"), cross = config.get("cross")}) + local toolchain = find_cross_toolchain(config.get("sdk") or config.get("bin"), {bin = config.get("bin"), cross = config.get("cross")}) if toolchain then config.set("cross", toolchain.cross, {readonly = true, force = true}) - config.set("toolchains", toolchain.bin, {readonly = true, force = true}) + config.set("bin", toolchain.bin, {readonly = true, force = true}) cross = toolchain.cross end diff --git a/xmake/platforms/linux/load.lua b/xmake/platforms/linux/load.lua index 5710b09d8..95cb376cf 100644 --- a/xmake/platforms/linux/load.lua +++ b/xmake/platforms/linux/load.lua @@ -29,7 +29,7 @@ import("core.project.config") function main() -- cross toolchains? - if config.get("cross") or config.get("toolchains") or config.get("sdk") then + if config.get("cross") or config.get("bin") or config.get("sdk") then -- init linkdirs and includedirs local sdkdir = config.get("sdk") diff --git a/xmake/platforms/mingw/check.lua b/xmake/platforms/mingw/check.lua index 0b2c2b870..36d0dc4be 100644 --- a/xmake/platforms/mingw/check.lua +++ b/xmake/platforms/mingw/check.lua @@ -42,11 +42,18 @@ function _toolchains(config) -- find cross toolchain local cross = "" - local toolchain = find_cross_toolchain(config.get("sdk") or config.get("toolchains"), {bin = config.get("toolchains"), cross = config.get("cross")}) + local toolchain = find_cross_toolchain(config.get("sdk") or config.get("bin"), {bin = config.get("bin"), cross = config.get("cross")}) if toolchain then + + -- save toolchain config.set("cross", toolchain.cross, {readonly = true, force = true}) - config.set("toolchains", toolchain.bin, {readonly = true, force = true}) + config.set("bin", toolchain.bin, {readonly = true, force = true}) cross = toolchain.cross + + -- add bin search library for loading some dependent .dll files windows + if toolchain.bin and is_host("windows") then + os.addenv("PATH", toolchain.bin) + end end -- make toolchains diff --git a/xmake/platforms/mingw/load.lua b/xmake/platforms/mingw/load.lua index af02d4403..58ff46c0e 100644 --- a/xmake/platforms/mingw/load.lua +++ b/xmake/platforms/mingw/load.lua @@ -49,6 +49,12 @@ function main() _g.linkdirs = {path.join(sdkdir, "lib")} end + -- add bin search library for loading some dependent .dll files windows + local bindir = config.get("bin") + if bindir and is_host("windows") then + os.addenv("PATH", bindir) + end + -- ok return _g end |
