diff options
| author | ruki <[email protected]> | 2019-04-21 22:12:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-04-21 22:12:21 +0800 |
| commit | 7e50a99af45fe32e6ea3567925b3ab19b67da0dc (patch) | |
| tree | f651f67a3376a6ec68f806d03e0c3f8cd6698b1b | |
| parent | 36b8963329d23282a8022fc4c117909c3754f40e (diff) | |
pass build envs got autoconf
| -rw-r--r-- | xmake/core/base/os.lua | 32 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 5 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/os.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 41 |
4 files changed, 46 insertions, 34 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua index 8b9e9dbb5..dac5a3e44 100644 --- a/xmake/core/base/os.lua +++ b/xmake/core/base/os.lua @@ -901,22 +901,36 @@ end -- set values to environment variable function os.setenv(name, ...) - - -- get separator local seperator = os.host() == "windows" and ';' or ':' - - -- append values return os._setenv(name, table.concat({...}, seperator)) end -- add values to environment variable function os.addenv(name, ...) - - -- get separator local seperator = os.host() == "windows" and ';' or ':' - - -- append values - return os.setenv(name, table.concat({...}, seperator) .. seperator .. (os.getenv(name) or "")) + local values = {...} + if #values > 0 then + return os._setenv(name, table.concat(values, seperator) .. seperator .. (os.getenv(name) or "")) + else + return os.getenv(name) + end +end + +-- set values to environment variable with the given seperator +function os.setenvp(name, values, seperator) + seperator = seperator or (os.host() == "windows" and ';' or ':') + return os._setenv(name, table.concat(table.wrap(values), seperator)) +end + +-- add values to environment variable with the given seperator +function os.addenvp(name, values, seperator) + seperator = seperator or (os.host() == "windows" and ';' or ':') + values = table.wrap(values) + if #values > 0 then + return os._setenv(name, table.concat(values, seperator) .. seperator .. (os.getenv(name) or "")) + else + return os.getenv(name) + end end -- read string data from pasteboard diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index b08e23ecb..41ebaae6f 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -420,8 +420,9 @@ function _instance:build_envs(lazy_loading) if value == nil then value = platform.tool(key, self:plat()) end - if value ~= nil then - rawset(tbl, key, value) + value = table.unique(table.join(table.wrap(value), self:config(key))) + if #value > 0 then + rawset(tbl, key, os.args(value)) return value end return rawget(tbl, key) diff --git a/xmake/core/sandbox/modules/os.lua b/xmake/core/sandbox/modules/os.lua index 2634f3a10..20048bff9 100644 --- a/xmake/core/sandbox/modules/os.lua +++ b/xmake/core/sandbox/modules/os.lua @@ -49,6 +49,8 @@ sandbox_os.nuldev = os.nuldev sandbox_os.getenv = os.getenv sandbox_os.setenv = os.setenv sandbox_os.addenv = os.addenv +sandbox_os.setenvp = os.setenvp +sandbox_os.addenvp = os.addenvp sandbox_os.pbpaste = os.pbpaste sandbox_os.pbcopy = os.pbcopy sandbox_os.emptydir = os.emptydir diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua index 4b06b884b..74c6cce1c 100644 --- a/xmake/modules/package/tools/autoconf.lua +++ b/xmake/modules/package/tools/autoconf.lua @@ -30,36 +30,31 @@ function _enter_envs(package) -- get old environments local envs = {} + envs.CC = os.getenv("CC") + envs.LD = os.getenv("LD") + envs.AR = os.getenv("AR") + envs.SH = os.getenv("SH") envs.CFLAGS = os.getenv("CFLAGS") envs.CXXFLAGS = os.getenv("CXXFLAGS") envs.ASFLAGS = os.getenv("ASFLAGS") + envs.LDFLAGS = os.getenv("LDFLAGS") + envs.ARFLAGS = os.getenv("ARFLAGS") + envs.SHFLAGS = os.getenv("SHFLAGS") envs.ACLOCAL_PATH = os.getenv("ACLOCAL_PATH") envs.PKG_CONFIG_PATH = os.getenv("PKG_CONFIG_PATH") -- set new environments - local cflags = package:config("cflags") - local cxflags = package:config("cxflags") - local cxxflags = package:config("cxxflags") - local asflags = package:config("asflags") - if package:plat() == "windows" then - local vs_runtime = package:config("vs_runtime") - if vs_runtime then - cxflags = (cxflags or "") .. " /" .. vs_runtime .. (package:debug() and "d" or "") - end - end - if cflags then - os.addenv("CFLAGS", cflags) - end - if cxflags then - os.addenv("CFLAGS", cxflags) - os.addenv("CXXFLAGS", cxflags) - end - if cxxflags then - os.addenv("CXXFLAGS", cxxflags) - end - if asflags then - os.addenv("ASFLAGS", asflags) - end + os.addenvp("CC", package:build_getenv("cc"), ' ') + os.addenvp("AR", package:build_getenv("ar"), ' ') + os.addenvp("LD", package:build_getenv("ld"), ' ') + os.addenvp("SH", package:build_getenv("sh"), ' ') + 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("LDFLAGS", package:build_getenv("ldflags"), ' ') + os.addenvp("SHFLAGS", package:build_getenv("shflags"), ' ') for _, dep in ipairs(package:orderdeps()) do local pkgconfig = path.join(dep:installdir(), "lib", "pkgconfig") if os.isdir(pkgconfig) then |
