summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-01-23 23:35:26 +0800
committerruki <[email protected]>2021-01-23 23:35:26 +0800
commit57bf2a8ec017fe9f3b3165f3e29b0c19e12d4fd0 (patch)
tree7627c993e4a0db7bb99bdb5f66543aa4bd8ed5f8
parent0e11a96c4c81a4d3b61fd8c288af8183d72f72c6 (diff)
pass toolchains info for package/tools
-rw-r--r--xmake/modules/package/tools/autoconf.lua33
-rw-r--r--xmake/modules/package/tools/cmake.lua15
-rw-r--r--xmake/modules/package/tools/xmake.lua2
3 files changed, 44 insertions, 6 deletions
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua
index 0f50bbb6d..19cba3365 100644
--- a/xmake/modules/package/tools/autoconf.lua
+++ b/xmake/modules/package/tools/autoconf.lua
@@ -21,6 +21,8 @@
-- imports
import("core.base.option")
import("core.project.config")
+import("core.tool.linker")
+import("core.tool.compiler")
-- translate path
function _translate_path(package, p)
@@ -122,11 +124,17 @@ function buildenvs(package, opt)
envs.ASFLAGS = table.concat(asflags, ' ')
envs.LDFLAGS = table.concat(ldflags, ' ')
else
- local cflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cflags"))
- local cxxflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cxxflags"))
- local asflags = table.copy(table.wrap(package:build_getenv("asflags")))
- local ldflags = table.copy(table.wrap(package:build_getenv("ldflags")))
- local shflags = table.copy(table.wrap(package:build_getenv("shflags")))
+ local cflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cflags"))
+ local cxxflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cxxflags"))
+ local asflags = table.copy(table.wrap(package:build_getenv("asflags")))
+ local ldflags = table.copy(table.wrap(package:build_getenv("ldflags")))
+ local shflags = table.copy(table.wrap(package:build_getenv("shflags")))
+ local defines = package:build_getenv("defines")
+ local includedirs = package:build_getenv("includedirs")
+ local sysincludedirs = package:build_getenv("sysincludedirs")
+ local links = package:build_getenv("links")
+ local syslinks = package:build_getenv("syslinks")
+ local linkdirs = package:build_getenv("linkdirs")
table.join2(cflags, opt.cflags)
table.join2(cflags, opt.cxflags)
table.join2(cxxflags, opt.cxxflags)
@@ -134,6 +142,21 @@ function buildenvs(package, opt)
table.join2(asflags, opt.asflags)
table.join2(ldflags, opt.ldflags)
table.join2(shflags, opt.shflags)
+ table.join2(cflags, compiler.map_flags("c", "define", defines))
+ table.join2(cflags, compiler.map_flags("c", "includedir", includedirs))
+ table.join2(cflags, compiler.map_flags("c", "sysincludedir", sysincludedirs))
+ table.join2(asflags, compiler.map_flags("as", "define", defines))
+ table.join2(asflags, compiler.map_flags("as", "includedir", includedirs))
+ table.join2(asflags, compiler.map_flags("as", "sysincludedir", sysincludedirs))
+ table.join2(cxxflags, compiler.map_flags("cxx", "define", defines))
+ table.join2(cxxflags, compiler.map_flags("cxx", "includedir", includedirs))
+ table.join2(cxxflags, compiler.map_flags("cxx", "sysincludedir", sysincludedirs))
+ table.join2(ldflags, linker.map_flags("binary", {"cxx"}, "link", links))
+ table.join2(ldflags, linker.map_flags("binary", {"cxx"}, "syslink", syslinks))
+ table.join2(ldflags, linker.map_flags("binary", {"cxx"}, "linkdir", linkdirs))
+ table.join2(shflags, linker.map_flags("shared", {"cxx"}, "link", links))
+ table.join2(shflags, linker.map_flags("shared", {"cxx"}, "syslink", syslinks))
+ table.join2(shflags, linker.map_flags("shared", {"cxx"}, "linkdir", linkdirs))
envs.CC = package:build_getenv("cc")
envs.AS = package:build_getenv("as")
envs.AR = package:build_getenv("ar")
diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua
index e13453303..f705a4f40 100644
--- a/xmake/modules/package/tools/cmake.lua
+++ b/xmake/modules/package/tools/cmake.lua
@@ -92,6 +92,9 @@ function _get_cflags(package, opt)
if opt.cross then
table.join2(result, package:build_getenv("cflags"))
table.join2(result, package:build_getenv("cxflags"))
+ table.join2(result, compiler.map_flags("c", "define", package:build_getenv("defines")))
+ table.join2(result, compiler.map_flags("c", "includedir", package:build_getenv("includedirs")))
+ table.join2(result, compiler.map_flags("c", "sysincludedir", package:build_getenv("sysincludedirs")))
end
table.join2(result, package:config("cflags"))
table.join2(result, package:config("cxflags"))
@@ -114,6 +117,9 @@ function _get_cxxflags(package, opt)
if opt.cross then
table.join2(result, package:build_getenv("cxxflags"))
table.join2(result, package:build_getenv("cxflags"))
+ table.join2(result, compiler.map_flags("cxx", "define", package:build_getenv("defines")))
+ table.join2(result, compiler.map_flags("cxx", "includedir", package:build_getenv("includedirs")))
+ table.join2(result, compiler.map_flags("cxx", "sysincludedir", package:build_getenv("sysincludedirs")))
end
table.join2(result, package:config("cxxflags"))
table.join2(result, package:config("cxflags"))
@@ -135,6 +141,9 @@ function _get_asflags(package, opt)
local result = {}
if opt.cross then
table.join2(result, package:build_getenv("asflags"))
+ table.join2(result, compiler.map_flags("as", "define", package:build_getenv("defines")))
+ table.join2(result, compiler.map_flags("as", "includedir", package:build_getenv("includedirs")))
+ table.join2(result, compiler.map_flags("as", "sysincludedir", package:build_getenv("sysincludedirs")))
end
table.join2(result, package:config("asflags"))
if opt.asflags then
@@ -151,6 +160,9 @@ function _get_ldflags(package, opt)
local result = {}
if opt.cross then
table.join2(result, package:build_getenv("ldflags"))
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "link", package:build_getenv("links")))
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "syslink", package:build_getenv("syslinks")))
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "linkdir", package:build_getenv("linkdirs")))
end
table.join2(result, _get_ldflags_from_packagedeps(package, opt))
if opt.ldflags then
@@ -167,6 +179,9 @@ function _get_shflags(package, opt)
local result = {}
if opt.cross then
table.join2(result, package:build_getenv("shflags"))
+ table.join2(result, linker.map_flags("shared", {"cxx"}, "link", package:build_getenv("links")))
+ table.join2(result, linker.map_flags("shared", {"cxx"}, "syslink", package:build_getenv("syslinks")))
+ table.join2(result, linker.map_flags("shared", {"cxx"}, "linkdir", package:build_getenv("linkdirs")))
end
table.join2(result, _get_ldflags_from_packagedeps(package, opt))
if opt.shflags then
diff --git a/xmake/modules/package/tools/xmake.lua b/xmake/modules/package/tools/xmake.lua
index 115a5fbe8..7c2e86327 100644
--- a/xmake/modules/package/tools/xmake.lua
+++ b/xmake/modules/package/tools/xmake.lua
@@ -79,7 +79,7 @@ function install(package, configs)
-- inherit builtin configs
local argv = _init_argv("f", "-y", "-c")
- local names = {"plat", "arch", "ndk", "ndk_sdkver", "vs", "mingw", "sdk", "bin", "cross", "ld", "sh", "ar", "cc", "cxx", "mm", "mxx"}
+ local names = {"plat", "arch", "ndk", "ndk_sdkver", "vs", "mingw", "sdk", "toolchain", "bin", "cross", "ld", "sh", "ar", "cc", "cxx", "mm", "mxx"}
for _, name in ipairs(names) do
local value = get_config(name)
if value ~= nil then