diff options
| author | ruki <[email protected]> | 2021-03-22 12:41:42 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-03-22 12:41:42 +0800 |
| commit | 131800db6dfc7447e85958a4aef887ffb3bedf7f (patch) | |
| tree | 8ac6f4a7970ece5e22098b8e0a8a9e7afb2bd6b0 /xmake/modules | |
| parent | bfd116d2e53d9836fe42a6a1b13d6d6986baa8ad (diff) | |
| parent | 7e37f40d47668f01b8d21255caa40b1b153f5c30 (diff) | |
Merge pull request #1294 from xmake-io/ndk
support to use remote ndk to build bpf program on linux
Diffstat (limited to 'xmake/modules')
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 40 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 52 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/install_packages.lua | 12 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 6 |
4 files changed, 66 insertions, 44 deletions
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua index 3bfa23181..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)) - 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/modules/private/action/require/impl/install_packages.lua b/xmake/modules/private/action/require/impl/install_packages.lua index fbedc2bc9..096190945 100644 --- a/xmake/modules/private/action/require/impl/install_packages.lua +++ b/xmake/modules/private/action/require/impl/install_packages.lua @@ -392,14 +392,14 @@ function _get_package_installdeps(packages) end for _, instance in ipairs(packages) do local deps = {} - if instance:deps() then - deps = table.copy(instance:deps()) + if instance:orderdeps() then + deps = table.copy(instance:orderdeps()) end -- patch toolchain/packages to installdeps, because we need install toolchain package first - if instance:is_toplevel() then - for _, toolchain in ipairs(instance:toolchains()) do - for _, packagename in ipairs(toolchain:config("packages")) do - deps[packagename] = packagesmap[packagename] + for _, toolchain in ipairs(instance:toolchains()) do + for _, packagename in ipairs(toolchain:config("packages")) do + if packagesmap[packagename] ~= instance then -- avoid loop recursion + table.insert(deps, packagesmap[packagename]) end end end diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index dc6720eb5..cc6d43afd 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -43,6 +43,7 @@ end -- -- semver -- - add_requires("tbox >=1.5.1", "zlib >=1.2.11") +-- - add_requires("tbox", {version = ">=1.5.1"}) -- -- git branch/tag -- - add_requires("zlib master") @@ -149,7 +150,7 @@ function _parse_require(require_str, requires_extra, parentinfo) { originstr = require_str, reponame = reponame, - version = version, + version = require_extra.version or version, plat = require_extra.plat, -- require package in the given platform arch = require_extra.arch, -- require package in the given architecture targetos = require_extra.targetos, -- require package in the given target os @@ -340,8 +341,9 @@ end -- init requireinfo function _init_requireinfo(requireinfo, package, opt) -- pass root toolchains to top library package - if opt.is_toplevel and package:is_plat("cross") and package:is_library() then + if opt.is_toplevel and package:is_cross() and package:is_library() then requireinfo.configs = requireinfo.configs or {} + -- TODO get extra configs of toolchain requireinfo.configs.toolchains = requireinfo.configs.toolchains or project.get("target.toolchains") or get_config("toolchain") end end |
