summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-04-21 22:12:21 +0800
committerruki <[email protected]>2019-04-21 22:12:21 +0800
commit7e50a99af45fe32e6ea3567925b3ab19b67da0dc (patch)
treef651f67a3376a6ec68f806d03e0c3f8cd6698b1b
parent36b8963329d23282a8022fc4c117909c3754f40e (diff)
pass build envs got autoconf
-rw-r--r--xmake/core/base/os.lua32
-rw-r--r--xmake/core/package/package.lua5
-rw-r--r--xmake/core/sandbox/modules/os.lua2
-rw-r--r--xmake/modules/package/tools/autoconf.lua41
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