diff options
| author | ruki <[email protected]> | 2018-11-12 23:15:48 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-11-12 13:34:49 +0800 |
| commit | a4f4d5ef608799058b8d93907815bcac0a3dba2a (patch) | |
| tree | 65e857056a7bf0191bcaa13eabb56fa692cd0cf7 | |
| parent | 0d6defd8520b2a93e02a5872a067a611d1b839cc (diff) | |
improve all platform flags
| -rw-r--r-- | xmake/core/sandbox/modules/insert.lua | 28 | ||||
| -rw-r--r-- | xmake/platforms/android/load.lua | 77 | ||||
| -rw-r--r-- | xmake/platforms/cross/load.lua | 9 | ||||
| -rw-r--r-- | xmake/platforms/linux/load.lua | 55 | ||||
| -rw-r--r-- | xmake/platforms/mingw/load.lua | 19 | ||||
| -rw-r--r-- | xmake/platforms/windows/xmake.lua | 28 |
6 files changed, 82 insertions, 134 deletions
diff --git a/xmake/core/sandbox/modules/insert.lua b/xmake/core/sandbox/modules/insert.lua deleted file mode 100644 index 23c8dea82..000000000 --- a/xmake/core/sandbox/modules/insert.lua +++ /dev/null @@ -1,28 +0,0 @@ ---!A cross-platform build utility based on Lua --- --- Licensed to the Apache Software Foundation (ASF) under one --- or more contributor license agreements. See the NOTICE file --- distributed with this work for additional information --- regarding copyright ownership. The ASF licenses this file --- to you under the Apache License, Version 2.0 (the --- "License"); you may not use this file except in compliance --- with the License. You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- --- Copyright (C) 2015 - 2018, TBOOX Open Source Group. --- --- @author ruki --- @file insert.lua --- - --- return module -return require("sandbox/modules/table").insert - - diff --git a/xmake/platforms/android/load.lua b/xmake/platforms/android/load.lua index 230233ea5..963edc881 100644 --- a/xmake/platforms/android/load.lua +++ b/xmake/platforms/android/load.lua @@ -26,26 +26,22 @@ import("core.project.config") -- load it -function main() +function main(platform) -- init flags local arch = config.get("arch") if arch:startswith("arm64") then - _g.cxflags = {} - _g.asflags = {} - _g.ldflags = {"-llog"} - _g.shflags = {"-llog"} - _g.cxxflags = {} + platform:add("ldflags", "-llog") + platform:add("shflags", "-llog") else - _g.cxflags = { "-march=" .. arch, "-mthumb"} - _g.asflags = { "-march=" .. arch, "-mthumb"} - _g.ldflags = { "-march=" .. arch, "-llog", "-mthumb"} - _g.shflags = { "-march=" .. arch, "-llog", "-mthumb"} - _g.cxxflags = {} + platform:add("cxflags", "-march=" .. arch, "-mthumb") + platform:add("asflags", "-march=" .. arch, "-mthumb") + platform:add("ldflags", "-march=" .. arch, "-llog", "-mthumb") + platform:add("shflags", "-march=" .. arch, "-llog", "-mthumb") end -- init cxflags for the target kind: binary - _g.binary = { cxflags = {"-fPIE", "-pie"} } + platform:add("binary.cxflags", "-fPIE", "-pie") -- add flags for the sdk directory of ndk local ndk = config.get("ndk") @@ -83,32 +79,32 @@ function main() , ["i386"] = "i686-linux-android" , ["x86_64"] = "x86_64-linux-android" } - insert(_g.cxflags, "-D__ANDROID_API__=" .. ndk_sdkver) - insert(_g.asflags, "-D__ANDROID_API__=" .. ndk_sdkver) - insert(_g.cxflags, "--sysroot=" .. ndk_sysroot_be_r14) - insert(_g.asflags, "--sysroot=" .. ndk_sysroot_be_r14) - insert(_g.cxflags, "-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) - insert(_g.asflags, "-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) + platform:add("cxflags", "-D__ANDROID_API__=" .. ndk_sdkver) + platform:add("asflags", "-D__ANDROID_API__=" .. ndk_sdkver) + platform:add("cxflags", "--sysroot=" .. ndk_sysroot_be_r14) + platform:add("asflags", "--sysroot=" .. ndk_sysroot_be_r14) + platform:add("cxflags", "-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) + platform:add("asflags", "-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) else if arch:startswith("arm64") then - insert(_g.cxflags, format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - insert(_g.asflags, format("--sysroot=%s/arch-arm64", ndk_sdkdir)) + platform:add("cxflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) + platform:add("asflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) else - insert(_g.cxflags, format("--sysroot=%s/arch-arm", ndk_sdkdir)) - insert(_g.asflags, format("--sysroot=%s/arch-arm", ndk_sdkdir)) + platform:add("cxflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) + platform:add("asflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) end end if arch:startswith("arm64") then - insert(_g.ldflags, format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - insert(_g.shflags, format("--sysroot=%s/arch-arm64", ndk_sdkdir)) + platform:add("ldflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) + platform:add("shflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) else - insert(_g.ldflags, format("--sysroot=%s/arch-arm", ndk_sdkdir)) - insert(_g.shflags, format("--sysroot=%s/arch-arm", ndk_sdkdir)) + platform:add("ldflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) + platform:add("shflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) end -- add "-fPIE -pie" to ldflags - insert(_g.ldflags, "-fPIE") - insert(_g.ldflags, "-pie") + platform:add("ldflags", "-fPIE") + platform:add("ldflags", "-pie") -- only for c++ stl local ndk_toolchains_ver = config.get("ndk_toolchains_ver") @@ -128,13 +124,13 @@ function main() } -- add search directories for c++ stl - insert(_g.cxxflags, format("-I%s/include", cxxstl_sdkdir)) + platform:add("cxxflags", format("-I%s/include", cxxstl_sdkdir)) if toolchains_archs[arch] then - insert(_g.cxxflags, format("-I%s/libs/%s/include", cxxstl_sdkdir, toolchains_archs[arch])) - insert(_g.ldflags, format("-L%s/libs/%s", cxxstl_sdkdir, toolchains_archs[arch])) - insert(_g.shflags, format("-L%s/libs/%s", cxxstl_sdkdir, toolchains_archs[arch])) - insert(_g.ldflags, format("-lgnustl_static")) - insert(_g.shflags, format("-lgnustl_static")) + platform:add("cxxflags", format("-I%s/libs/%s/include", cxxstl_sdkdir, toolchains_archs[arch])) + platform:add("ldflags", format("-L%s/libs/%s", cxxstl_sdkdir, toolchains_archs[arch])) + platform:add("shflags", format("-L%s/libs/%s", cxxstl_sdkdir, toolchains_archs[arch])) + platform:add("ldflags", "-lgnustl_static") + platform:add("shflags", "-lgnustl_static") end end end @@ -150,20 +146,17 @@ function main() } -- init flags for rust - _g.rcflags = { "--target=" .. targets[arch] } - _g["rc-shflags"] = { "-C link-args=\"" .. (table.concat(_g.shflags, " "):gsub("%-march=.-%s", "") .. "\"")} - _g["rc-ldflags"] = { "-C link-args=\"" .. (table.concat(_g.ldflags, " "):gsub("%-march=.-%s", "") .. "\"")} + platform:add("rcflags", "--target=" .. targets[arch]) + platform:add("rc-shflags", "-C link-args=\"" .. (table.concat(platform:get("shflags"), " "):gsub("%-march=.-%s", "") .. "\"")) + platform:add("rc-ldflags", "-C link-args=\"" .. (table.concat(platform:get("ldflags"), " "):gsub("%-march=.-%s", "") .. "\"")) local sh = config.get("sh") if sh then - table.insert(_g["rc-shflags"], "-C linker=" .. sh) + platform:add("rc-shflags", "-C linker=" .. sh) end local ld = config.get("ld") if ld then - table.insert(_g["rc-ldflags"], "-C linker=" .. ld) + platform:add("rc-ldflags", "-C linker=" .. ld) end - - -- ok - return _g end diff --git a/xmake/platforms/cross/load.lua b/xmake/platforms/cross/load.lua index 67856712c..576925931 100644 --- a/xmake/platforms/cross/load.lua +++ b/xmake/platforms/cross/load.lua @@ -26,13 +26,13 @@ import("core.project.config") -- load it -function main() +function main(platform) -- init linkdirs and includedirs local sdkdir = config.get("sdk") if sdkdir then - _g.includedirs = {path.join(sdkdir, "include")} - _g.linkdirs = {path.join(sdkdir, "lib")} + platform:add("includedirs", path.join(sdkdir, "include")) + platform:add("linkdirs", path.join(sdkdir, "lib")) end -- add bin search library for loading some dependent .dll files windows @@ -40,8 +40,5 @@ function main() if bindir and is_host("windows") then os.addenv("PATH", bindir) end - - -- ok - return _g end diff --git a/xmake/platforms/linux/load.lua b/xmake/platforms/linux/load.lua index 95cb376cf..e6af9a61a 100644 --- a/xmake/platforms/linux/load.lua +++ b/xmake/platforms/linux/load.lua @@ -26,7 +26,7 @@ import("core.project.config") -- load it -function main() +function main(platform) -- cross toolchains? if config.get("cross") or config.get("bin") or config.get("sdk") then @@ -34,12 +34,12 @@ function main() -- init linkdirs and includedirs local sdkdir = config.get("sdk") if sdkdir then - _g.includedirs = {path.join(sdkdir, "include")} - _g.linkdirs = {path.join(sdkdir, "lib")} + platform:add("includedirs", path.join(sdkdir, "include")) + platform:add("linkdirs", path.join(sdkdir, "lib")) end -- ok - return _g + return end -- init flags for architecture @@ -52,48 +52,41 @@ function main() end -- init flags for c/c++ - _g.cxflags = { archflags, "-I/usr/local/include", "-I/usr/include" } - _g.ldflags = { archflags, "-L/usr/local/lib", "-L/usr/lib" } - _g.shflags = { archflags, "-L/usr/local/lib", "-L/usr/lib" } + platform:add("cxflags", archflags, "-I/usr/local/include", "-I/usr/include") + platform:add("ldflags", archflags, "-L/usr/local/lib", "-L/usr/lib") + platform:add("shflags", archflags, "-L/usr/local/lib", "-L/usr/lib") - -- init flags for objc/c++ (with _g.ldflags and _g.shflags) - _g.mxflags = { archflags } + -- init flags for objc/c++ (with ldflags and shflags) + platform:add("mxflags", archflags) -- init flags for asm - local as = config.get("as") - if as == "yasm" then - _g.asflags = { "-f", arch == "x86_64" and "elf64" or "elf32" } - else - _g.asflags = { archflags } - end + platform:add("yasm.asflags", "-f", arch == "x86_64" and "elf64" or "elf32") + platform:add("asflags", archflags) -- init flags for golang - _g["gc-ldflags"] = {} + platform:set("gc-ldflags", "") -- init flags for dlang local dc_archs = { i386 = "-m32", x86_64 = "-m64" } - _g.dcflags = { dc_archs[arch] or "" } - _g["dc-shflags"] = { dc_archs[arch] or "" } - _g["dc-ldflags"] = { dc_archs[arch] or "" } + platform:add("dcflags", dc_archs[arch] or "") + platform:add("dc-shflags", dc_archs[arch] or "") + platform:add("dc-ldflags", dc_archs[arch] or "") -- init flags for rust - _g["rc-shflags"] = {} - _g["rc-ldflags"] = {} + platform:set("rc-shflags", "") + platform:set("rc-ldflags", "") -- init flags for cuda local cu_archs = { i386 = "-m32 -Xcompiler -m32", x86_64 = "-m64 -Xcompiler -m64" } - _g.cuflags = {cu_archs[arch] or ""} - _g["cu-shflags"] = {cu_archs[arch] or ""} - _g["cu-ldflags"] = {cu_archs[arch] or ""} + platform:add("cuflags", cu_archs[arch] or "") + platform:add("cu-shflags", cu_archs[arch] or "") + platform:add("cu-ldflags", cu_archs[arch] or "") local cuda_dir = config.get("cuda") if cuda_dir then - table.insert(_g.cuflags, "-I" .. os.args(path.join(cuda_dir, "include"))) - table.insert(_g["cu-ldflags"], "-L" .. os.args(path.join(cuda_dir, "lib"))) - table.insert(_g["cu-shflags"], "-L" .. os.args(path.join(cuda_dir, "lib"))) - table.insert(_g["cu-ldflags"], "-Xlinker -rpath=" .. os.args(path.join(cuda_dir, "lib"))) + platform:add("cuflags", "-I" .. os.args(path.join(cuda_dir, "include"))) + platform:add("cu-ldflags", "-L" .. os.args(path.join(cuda_dir, "lib"))) + platform:add("cu-shflags", "-L" .. os.args(path.join(cuda_dir, "lib"))) + platform:add("cu-ldflags", "-Xlinker -rpath=" .. os.args(path.join(cuda_dir, "lib"))) end - - -- ok - return _g end diff --git a/xmake/platforms/mingw/load.lua b/xmake/platforms/mingw/load.lua index 58ff46c0e..d37977143 100644 --- a/xmake/platforms/mingw/load.lua +++ b/xmake/platforms/mingw/load.lua @@ -26,7 +26,7 @@ import("core.project.config") -- load it -function main() +function main(platform) -- init flags for architecture local archflags = nil @@ -37,16 +37,18 @@ function main() else archflags = "-arch " .. arch end end - _g.cxflags = { archflags } - _g.asflags = { archflags } - _g.ldflags = { archflags } - _g.shflags = { archflags } + if archflags then + platform:add("cxflags", archflags) + platform:add("asflags", archflags) + platform:add("ldflags", archflags) + platform:add("shflags", archflags) + end -- init linkdirs and includedirs local sdkdir = config.get("sdk") if sdkdir then - _g.includedirs = {path.join(sdkdir, "include")} - _g.linkdirs = {path.join(sdkdir, "lib")} + platform:add("includedirs", path.join(sdkdir, "include")) + platform:add("linkdirs", path.join(sdkdir, "lib")) end -- add bin search library for loading some dependent .dll files windows @@ -54,8 +56,5 @@ function main() if bindir and is_host("windows") then os.addenv("PATH", bindir) end - - -- ok - return _g end diff --git a/xmake/platforms/windows/xmake.lua b/xmake/platforms/windows/xmake.lua index 7d28792fa..29750cd7b 100644 --- a/xmake/platforms/windows/xmake.lua +++ b/xmake/platforms/windows/xmake.lua @@ -44,7 +44,7 @@ platform("windows") on_check("check") -- on load - on_load(function () + on_load(function (platform) -- imports import("core.project.config") @@ -53,31 +53,25 @@ platform("windows") local arch = config.get("arch") or os.arch() -- init flags for asm - local as = config.get("as") - if as and as:find("yasm", 1, true) then - _g.asflags = { "-f", arch == "x64" and "win64" or "win32" } - end + platform:add("yasm.asflags", "-f", arch == "x64" and "win64" or "win32") -- init flags for dlang local dc_archs = { x86 = "-m32", x64 = "-m64" } - _g.dcflags = { dc_archs[arch] } - _g["dc-shflags"] = { dc_archs[arch] } - _g["dc-ldflags"] = { dc_archs[arch] } + platform:add("dcflags", dc_archs[arch]) + platform:add("dc-shflags", dc_archs[arch]) + platform:add("dc-ldflags", dc_archs[arch]) -- init flags for cuda local cu_archs = { x86 = "-m32 -Xcompiler -m32", x64 = "-m64 -Xcompiler -m64" } - _g.cuflags = {cu_archs[arch] or ""} - _g["cu-shflags"] = {cu_archs[arch] or ""} - _g["cu-ldflags"] = {cu_archs[arch] or ""} + platform:add("cuflags", cu_archs[arch] or "") + platform:add("cu-shflags", cu_archs[arch] or "") + platform:add("cu-ldflags", cu_archs[arch] or "") local cuda_dir = config.get("cuda") if cuda_dir then - table.insert(_g.cuflags, "-I" .. os.args(path.join(cuda_dir, "include"))) - table.insert(_g["cu-ldflags"], "-L" .. os.args(path.join(cuda_dir, "lib"))) - table.insert(_g["cu-shflags"], "-L" .. os.args(path.join(cuda_dir, "lib"))) + platform:add("cuflags", "-I" .. os.args(path.join(cuda_dir, "include"))) + platform:add("cu-ldflags", "-L" .. os.args(path.join(cuda_dir, "lib"))) + platform:add("cu-shflags", "-L" .. os.args(path.join(cuda_dir, "lib"))) end - - -- ok - return _g end) -- set menu |
