summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-11-12 23:15:48 +0800
committerruki <[email protected]>2018-11-12 13:34:49 +0800
commita4f4d5ef608799058b8d93907815bcac0a3dba2a (patch)
tree65e857056a7bf0191bcaa13eabb56fa692cd0cf7
parent0d6defd8520b2a93e02a5872a067a611d1b839cc (diff)
improve all platform flags
-rw-r--r--xmake/core/sandbox/modules/insert.lua28
-rw-r--r--xmake/platforms/android/load.lua77
-rw-r--r--xmake/platforms/cross/load.lua9
-rw-r--r--xmake/platforms/linux/load.lua55
-rw-r--r--xmake/platforms/mingw/load.lua19
-rw-r--r--xmake/platforms/windows/xmake.lua28
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