diff options
| author | ruki <[email protected]> | 2019-04-28 08:21:28 +0900 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-04-28 08:21:28 +0900 |
| commit | 6051aaec944bc40dd8e53316bdd88451b14a8a19 (patch) | |
| tree | df0badfffadb1c975292c49d9c2ea783805fe354 | |
| parent | 2fc83b38a2aa6c5dc80efe89d7b3864b356cf412 (diff) | |
improve autotools envs
| -rw-r--r-- | xmake/core/base/string.lua | 42 | ||||
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 57 |
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 |
