diff options
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 33 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 15 | ||||
| -rw-r--r-- | xmake/modules/package/tools/xmake.lua | 2 |
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 |
