summaryrefslogtreecommitdiff
path: root/xmake/modules/package/tools/make.lua
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2024-04-03 04:56:57 +0200
committerArthur LAURENT <[email protected]>2024-04-10 16:01:26 +0200
commit5a29f4cd631037145d74ad67227c5486c9a08247 (patch)
treeb3e9cacc019ec7da8e56d36cee027c485fa2b583 /xmake/modules/package/tools/make.lua
parentb559b4c1591e448b0f3faaa5928fc79e8286b8c3 (diff)
add support for --runtimes on autoconf, cmake, make and meson
buildsystems
Diffstat (limited to 'xmake/modules/package/tools/make.lua')
-rw-r--r--xmake/modules/package/tools/make.lua39
1 files changed, 30 insertions, 9 deletions
diff --git a/xmake/modules/package/tools/make.lua b/xmake/modules/package/tools/make.lua
index 055e40faf..a69e738fd 100644
--- a/xmake/modules/package/tools/make.lua
+++ b/xmake/modules/package/tools/make.lua
@@ -31,14 +31,36 @@ 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 the build environments
function buildenvs(package)
local envs = {}
+ 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:config("asflags")))
+ local ldflags = table.copy(table.wrap(package:config("ldflags")))
+ local shflags = table.copy(table.wrap(package:config("shflags")))
+ local runtimes = package:config("runtimes")
+ local runtimes = package:config("runtimes")
+ if runtimes then
+ local fake_target = {is_shared = function(_) return false end,
+ sourcekinds = function(_) return "cxx" end}
+ table.join2(cxxflags, _map_compflags(fake_target, "cxx", "runtime", runtimes))
+ table.join2(ldflags, _map_linkflags(fake_target, "binary", {"cxx"}, "runtime", runtimes))
+ fake_target = {is_shared = function(_) return true end,
+ sourcekinds = function(_) return "cxx" end}
+ table.join2(shflags, _map_linkflags(fake_target, "shared", {"cxx"}, "runtime", runtimes))
+ end
if package:is_plat(os.host()) then
- local cflags = table.join(table.wrap(package:config("cxflags")), package:config("cflags"))
- local cxxflags = table.join(table.wrap(package:config("cxflags")), package:config("cxxflags"))
- local asflags = table.copy(table.wrap(package:config("asflags")))
- local ldflags = table.copy(table.wrap(package:config("ldflags")))
if package:is_plat("linux") and package:is_arch("i386") then
table.insert(cflags, "-m32")
table.insert(cxxflags, "-m32")
@@ -49,9 +71,8 @@ function buildenvs(package)
envs.CXXFLAGS = table.concat(cxxflags, ' ')
envs.ASFLAGS = table.concat(asflags, ' ')
envs.LDFLAGS = table.concat(ldflags, ' ')
+ envs.SHFLAGS = table.concat(shflags, ' ')
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"))
envs.CC = _translate_bin_path(package:build_getenv("cc"))
envs.CXX = _translate_bin_path(package:build_getenv("cxx"))
envs.AS = _translate_bin_path(package:build_getenv("as"))
@@ -62,10 +83,10 @@ function buildenvs(package)
envs.RANLIB = _translate_bin_path(package:build_getenv("ranlib"))
envs.CFLAGS = table.concat(cflags, ' ')
envs.CXXFLAGS = table.concat(cxxflags, ' ')
- envs.ASFLAGS = table.concat(table.wrap(package:build_getenv("asflags")), ' ')
+ envs.ASFLAGS = table.concat(asflags, ' ')
envs.ARFLAGS = table.concat(table.wrap(package:build_getenv("arflags")), ' ')
- envs.LDFLAGS = table.concat(table.wrap(package:build_getenv("ldflags")), ' ')
- envs.SHFLAGS = table.concat(table.wrap(package:build_getenv("shflags")), ' ')
+ envs.LDFLAGS = table.concat(ldflags, ' ')
+ envs.SHFLAGS = table.concat(shflags, ' ')
end
local ACLOCAL_PATH = {}
local PKG_CONFIG_PATH = {}