summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-04-28 08:21:28 +0900
committerruki <[email protected]>2019-04-28 08:21:28 +0900
commit6051aaec944bc40dd8e53316bdd88451b14a8a19 (patch)
treedf0badfffadb1c975292c49d9c2ea783805fe354
parent2fc83b38a2aa6c5dc80efe89d7b3864b356cf412 (diff)
improve autotools envs
-rw-r--r--xmake/core/base/string.lua42
-rw-r--r--xmake/modules/package/tools/autoconf.lua57
2 files changed, 28 insertions, 71 deletions
diff --git a/xmake/core/base/string.lua b/xmake/core/base/string.lua
index 68b246327..5aabba734 100644
--- a/xmake/core/base/string.lua
+++ b/xmake/core/base/string.lua
@@ -177,29 +177,6 @@ function string:rtrim()
return self:sub(1, n)
end
--- append a substring with a given separator
-function string:append(substr, separator)
-
- -- check
- assert(self)
-
- -- not substr? return self
- if not substr then
- return self
- end
-
- -- append it
- local s = self
- if #s == 0 then
- s = substr
- else
- s = string.format("%s%s%s", s, separator or "", substr)
- end
-
- -- ok
- return s
-end
-
-- encode: ' ', '=', '\"', '<'
function string:encode()
@@ -220,25 +197,6 @@ function string:decode()
return (self:gsub("%%(%x%x)", function (w) return string.char(tonumber(w, 16)) end))
end
--- join array to string with the given separator
-function string.join(items, sep)
-
- -- join them
- local str = ""
- local index = 1
- local count = #items
- for _, item in ipairs(items) do
- str = str .. item
- if index ~= count and sep ~= nil then
- str = str .. sep
- end
- index = index + 1
- end
-
- -- ok?
- return str
-end
-
-- try to format
function string.tryformat(format, ...)
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua
index 1ff42da48..7705c3bca 100644
--- a/xmake/modules/package/tools/autoconf.lua
+++ b/xmake/modules/package/tools/autoconf.lua
@@ -69,46 +69,45 @@ function _get_configs(package, configs)
end
-- get the build environments
-function _get_build_envs(package, opt)
-
- -- TODO construct environments
- -- get old environments
+function buildenvs(package)
local envs = {}
-
- -- set new environments
if package:is_plat(os.host()) then
- os.addenvp("CFLAGS", package:config("cflags"), ' ')
- os.addenvp("CFLAGS", package:config("cxflags"), ' ')
- os.addenvp("CXXFLAGS", package:config("cxflags"), ' ')
- os.addenvp("CXXFLAGS", package:config("cxxflags"), ' ')
- os.addenvp("ASFLAGS", package:config("asflags"), ' ')
+ local cflags = table.join(table.wrap(package:config("cxflags")), package:config("cflags"))
+ local cxxflags = table.join(table.wrap(package:config("cxflags")), package:config("cxxflags"))
+ envs.CFLAGS = table.concat(cflags, ' ')
+ envs.CXXFLAGS = table.concat(cxxflags, ' ')
+ envs.ASFLAGS = table.concat(table.wrap(package:config("asflags")), ' ')
else
- os.setenvp("CC", package:build_getenv("cc"))
- os.setenvp("AS", package:build_getenv("as"))
- os.setenvp("AR", package:build_getenv("ar"))
- os.setenvp("LD", package:build_getenv("ld"))
- os.setenvp("LDSHARED", package:build_getenv("sh"))
- os.setenvp("CPP", package:build_getenv("cpp"))
- os.setenvp("RANLIB", package:build_getenv("ranlib"))
- os.addenvp("CFLAGS", package:build_getenv("cflags"), ' ')
- os.addenvp("CFLAGS", package:build_getenv("cxflags"), ' ')
- os.addenvp("CXXFLAGS", package:build_getenv("cxflags"), ' ')
- os.addenvp("CXXFLAGS", package:build_getenv("cxxflags"), ' ')
- os.addenvp("ASFLAGS", package:build_getenv("asflags"), ' ')
- os.addenvp("ARFLAGS", package:build_getenv("arflags"), ' ')
- os.addenvp("LDFLAGS", package:build_getenv("ldflags"), ' ')
- os.addenvp("SHFLAGS", 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"))
+ envs.CC = package:build_getenv("cc")
+ envs.AS = package:build_getenv("as")
+ envs.AR = package:build_getenv("ar")
+ envs.LD = package:build_getenv("ld")
+ envs.LDSHARED = package:build_getenv("sh")
+ envs.CPP = package:build_getenv("cpp")
+ envs.RANLIB = 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.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")), ' ')
end
+ local ACLOCAL_PATH = {}
+ local PKG_CONFIG_PATH = {}
for _, dep in ipairs(package:orderdeps()) do
local pkgconfig = path.join(dep:installdir(), "lib", "pkgconfig")
if os.isdir(pkgconfig) then
- os.addenv("PKG_CONFIG_PATH", pkgconfig)
+ table.insert(PKG_CONFIG_PATH, pkgconfig)
end
local aclocal = path.join(dep:installdir(), "share", "aclocal")
if os.isdir(aclocal) then
- os.addenv("ACLOCAL_PATH", aclocal)
+ table.insert(ACLOCAL_PATH, aclocal)
end
end
+ envs.ACLOCAL_PATH = table.concat(ACLOCAL_PATH, path.envsep())
+ envs.PKG_CONFIG_PATH = table.concat(PKG_CONFIG_PATH, path.envsep())
return envs
end
@@ -141,7 +140,7 @@ function configure(package, configs, opt)
end
-- do configure
- os.vrunv("./configure", argv, {envs = _get_build_envs(package, opt)})
+ os.vrunv("./configure", argv, {envs = opt.envs or buildenvs(package)})
end
-- install package