diff options
| author | ruki <[email protected]> | 2021-03-21 14:42:43 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-03-21 14:42:43 +0800 |
| commit | f4333905bba49775a03def29e7b588246aaef4bf (patch) | |
| tree | 2e3e41432dbb021527e6da2d57ff88ec83116cd7 | |
| parent | efa052bcecd4203dfce0fda26a297f3ce45ed47d (diff) | |
improve map_flags
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/tool/linker.lua | 28 | ||||
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 40 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 52 | ||||
| -rw-r--r-- | xmake/toolchains/ndk/check.lua | 5 |
4 files changed, 57 insertions, 68 deletions
diff --git a/xmake/core/sandbox/modules/import/core/tool/linker.lua b/xmake/core/sandbox/modules/import/core/tool/linker.lua index 2511d309b..015e4ab73 100644 --- a/xmake/core/sandbox/modules/import/core/tool/linker.lua +++ b/xmake/core/sandbox/modules/import/core/tool/linker.lua @@ -28,14 +28,10 @@ local raise = require("sandbox/modules/raise") -- load the linker from the given target kind function sandbox_core_tool_linker.load(targetkind, sourcekinds, opt) - - -- get the linker instance local instance, errors = linker.load(targetkind, sourcekinds, opt and opt.target or nil) if not instance then raise(errors) end - - -- ok return instance end @@ -46,14 +42,8 @@ end -- make arguments list for linking target file function sandbox_core_tool_linker.linkargv(targetkind, sourcekinds, objectfiles, targetfile, opt) - - -- init options opt = opt or {} - - -- get the linker instance local instance = sandbox_core_tool_linker.load(targetkind, sourcekinds, opt) - - -- make arguments list return instance:linkargv(objectfiles, targetfile, opt) end @@ -78,14 +68,8 @@ end -- link target file function sandbox_core_tool_linker.link(targetkind, sourcekinds, objectfiles, targetfile, opt) - - -- init options opt = opt or {} - - -- get the linker instance local instance = sandbox_core_tool_linker.load(targetkind, sourcekinds, opt) - - -- link it local ok, errors = instance:link(objectfiles, targetfile, opt) if not ok then raise(errors) @@ -102,14 +86,8 @@ end -- @return the supported flags or nil -- function sandbox_core_tool_linker.has_flags(targetkind, sourcekinds, flags, opt) - - -- init options opt = opt or {} - - -- get the linker instance local instance = sandbox_core_tool_linker.load(targetkind, sourcekinds, opt) - - -- has flags? return instance:has_flags(flags) end @@ -123,14 +101,8 @@ end -- @return flags or nil -- function sandbox_core_tool_linker.map_flags(targetkind, sourcekinds, name, values, opt) - - -- init options opt = opt or {} - - -- get the linker instance local instance = sandbox_core_tool_linker.load(targetkind, sourcekinds, opt) - - -- map flags return instance:map_flags(name, values, opt) end diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua index dbc7e2140..c40fbafda 100644 --- a/xmake/modules/package/tools/autoconf.lua +++ b/xmake/modules/package/tools/autoconf.lua @@ -41,6 +41,16 @@ function _translate_windows_bin_path(bin_path) end end +-- map compiler flags +function _map_compflags(package, langkind, name, values) + return compiler.map_flags(langkind, name, values, {target = package}) +end + +-- map linker flags +function _map_linkflags(package, targetkind, sourcekinds, name, values) + return linker.map_flags(targetkind, sourcekinds, name, values, {target = package}) +end + -- get configs function _get_configs(package, configs) @@ -142,21 +152,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)) -- TODO we need use package/toolchains - 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)) + table.join2(cflags, _map_compflags(package, "c", "define", defines)) + table.join2(cflags, _map_compflags(package, "c", "includedir", includedirs)) + table.join2(cflags, _map_compflags(package, "c", "sysincludedir", sysincludedirs)) + table.join2(asflags, _map_compflags(package, "as", "define", defines)) + table.join2(asflags, _map_compflags(package, "as", "includedir", includedirs)) + table.join2(asflags, _map_compflags(package, "as", "sysincludedir", sysincludedirs)) + table.join2(cxxflags, _map_compflags(package, "cxx", "define", defines)) + table.join2(cxxflags, _map_compflags(package, "cxx", "includedir", includedirs)) + table.join2(cxxflags, _map_compflags(package, "cxx", "sysincludedir", sysincludedirs)) + table.join2(ldflags, _map_linkflags(package, "binary", {"cxx"}, "link", links)) + table.join2(ldflags, _map_linkflags(package, "binary", {"cxx"}, "syslink", syslinks)) + table.join2(ldflags, _map_linkflags(package, "binary", {"cxx"}, "linkdir", linkdirs)) + table.join2(shflags, _map_linkflags(package, "shared", {"cxx"}, "link", links)) + table.join2(shflags, _map_linkflags(package, "shared", {"cxx"}, "syslink", syslinks)) + table.join2(shflags, _map_linkflags(package, "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 e4d77e3b2..6281372f9 100644 --- a/xmake/modules/package/tools/cmake.lua +++ b/xmake/modules/package/tools/cmake.lua @@ -52,6 +52,16 @@ function _translate_bin_path(bin_path) return bin_path end +-- map compiler flags +function _map_compflags(package, langkind, name, values) + return compiler.map_flags(langkind, name, values, {target = package}) +end + +-- map linker flags +function _map_linkflags(package, targetkind, sourcekinds, name, values) + return linker.map_flags(targetkind, sourcekinds, name, values, {target = package}) +end + -- get cflags from package deps function _get_cflags_from_packagedeps(package, opt) local result = {} @@ -60,9 +70,9 @@ function _get_cflags_from_packagedeps(package, opt) if dep then local fetchinfo = dep:fetch({external = false}) if fetchinfo then - table.join2(result, compiler.map_flags("cxx", "define", fetchinfo.defines)) - table.join2(result, _translate_paths(compiler.map_flags("cxx", "includedir", fetchinfo.includedirs))) - table.join2(result, _translate_paths(compiler.map_flags("cxx", "sysincludedir", fetchinfo.sysincludedirs))) + table.join2(result, _map_compflags(package, "cxx", "define", fetchinfo.defines)) + table.join2(result, _translate_paths(_map_compflags(package, "cxx", "includedir", fetchinfo.includedirs))) + table.join2(result, _translate_paths(_map_compflags(package, "cxx", "sysincludedir", fetchinfo.sysincludedirs))) end end end @@ -77,9 +87,9 @@ function _get_ldflags_from_packagedeps(package, opt) if dep then local fetchinfo = dep:fetch({external = false}) if fetchinfo then - table.join2(result, _translate_paths(linker.map_flags("binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))) - table.join2(result, linker.map_flags("binary", {"cxx"}, "link", fetchinfo.links)) - table.join2(result, _translate_paths(linker.map_flags("binary", {"cxx"}, "syslink", fetchinfo.syslinks))) + table.join2(result, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))) + table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", fetchinfo.links)) + table.join2(result, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "syslink", fetchinfo.syslinks))) end end end @@ -93,9 +103,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"))) + table.join2(result, _map_compflags(package, "c", "define", package:build_getenv("defines"))) + table.join2(result, _map_compflags(package, "c", "includedir", package:build_getenv("includedirs"))) + table.join2(result, _map_compflags(package, "c", "sysincludedir", package:build_getenv("sysincludedirs"))) end table.join2(result, package:config("cflags")) table.join2(result, package:config("cxflags")) @@ -118,9 +128,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"))) + table.join2(result, _map_compflags(package, "cxx", "define", package:build_getenv("defines"))) + table.join2(result, _map_compflags(package, "cxx", "includedir", package:build_getenv("includedirs"))) + table.join2(result, _map_compflags(package, "cxx", "sysincludedir", package:build_getenv("sysincludedirs"))) end table.join2(result, package:config("cxxflags")) table.join2(result, package:config("cxflags")) @@ -142,9 +152,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"))) + table.join2(result, _map_compflags(package, "as", "define", package:build_getenv("defines"))) + table.join2(result, _map_compflags(package, "as", "includedir", package:build_getenv("includedirs"))) + table.join2(result, _map_compflags(package, "as", "sysincludedir", package:build_getenv("sysincludedirs"))) end table.join2(result, package:config("asflags")) if opt.asflags then @@ -161,9 +171,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"))) + table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", package:build_getenv("links"))) + table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "syslink", package:build_getenv("syslinks"))) + table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "linkdir", package:build_getenv("linkdirs"))) end table.join2(result, _get_ldflags_from_packagedeps(package, opt)) if opt.ldflags then @@ -180,9 +190,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"))) + table.join2(result, _map_linkflags(package, "shared", {"cxx"}, "link", package:build_getenv("links"))) + table.join2(result, _map_linkflags(package, "shared", {"cxx"}, "syslink", package:build_getenv("syslinks"))) + table.join2(result, _map_linkflags(package, "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/toolchains/ndk/check.lua b/xmake/toolchains/ndk/check.lua index 605fa250a..aaf1d609a 100644 --- a/xmake/toolchains/ndk/check.lua +++ b/xmake/toolchains/ndk/check.lua @@ -79,8 +79,5 @@ end -- main entry function main(toolchain) _check_android_sdk(toolchain) - _check_ndk(toolchain) - -- TODO we should return the check result, but we need support builder with package first - -- so we need improve remote ndk toolchain - return true + return _check_ndk(toolchain) end |
