summaryrefslogtreecommitdiff
path: root/xmake/modules/package/tools/autoconf.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-03-20 14:54:49 +0800
committerruki <[email protected]>2019-03-20 14:54:49 +0800
commit85deccc73a0278e01fa8580b68b38f16e0598bf7 (patch)
treea9a446a5be5ca662525df921e50ce66029bc3359 /xmake/modules/package/tools/autoconf.lua
parent57506c7b8ba8941ebac3676a241f8444e0079a56 (diff)
parent8bb6ddf5c40f15fe6570f73dc5c4e5295ce95180 (diff)
Merge branch 'repo' into dev
Diffstat (limited to 'xmake/modules/package/tools/autoconf.lua')
-rw-r--r--xmake/modules/package/tools/autoconf.lua86
1 files changed, 68 insertions, 18 deletions
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua
index 29e147636..32186a080 100644
--- a/xmake/modules/package/tools/autoconf.lua
+++ b/xmake/modules/package/tools/autoconf.lua
@@ -22,6 +22,68 @@
-- @file autoconf.lua
--
+-- get configs
+function _get_configs(package, configs)
+ local configs = configs or {}
+ table.insert(configs, "--prefix=" .. package:installdir())
+ return configs
+end
+
+-- enter environments
+function _enter_envs(package)
+
+ -- get old environments
+ local envs = {}
+ envs.CFLAGS = os.getenv("CFLAGS")
+ envs.CXXFLAGS = os.getenv("CXXFLAGS")
+ envs.ASFLAGS = os.getenv("ASFLAGS")
+ 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
+ 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)
+ end
+ local aclocal = path.join(dep:installdir(), "share", "aclocal")
+ if os.isdir(aclocal) then
+ os.addenv("ACLOCAL_PATH", aclocal)
+ end
+ end
+ return envs
+end
+
+-- leave environments
+function _leave_envs(package, envs)
+ for k, v in pairs(envs) do
+ os.setenv(k, v)
+ end
+end
+
-- install package
function install(package, configs)
@@ -34,12 +96,9 @@ function install(package, configs)
end
end
- -- inherit require and option configs
+ -- pass configurations
local argv = {}
- if not configs or not configs.prefix then
- table.insert(argv, "--prefix=" .. package:installdir())
- end
- for name, value in pairs(configs) do
+ for name, value in pairs(_get_configs(package, configs)) do
value = tostring(value):trim()
if type(name) == "number" then
if value ~= "" then
@@ -50,15 +109,8 @@ function install(package, configs)
end
end
- -- inherit flags from configs
- local flags_prev = {}
- for _, name in ipairs({"cflags", "cxxflags", "ldflags"}) do
- local flags = package:config(name) or (configs and configs[name] or nil)
- if flags then
- flags_prev[name] = os.getenv(name:upper())
- os.addenv(name:upper(), flags)
- end
- end
+ -- enter environments
+ local envs = _enter_envs(package)
-- do configure
os.vrunv("./configure", argv)
@@ -67,9 +119,7 @@ function install(package, configs)
os.vrun("make -j4")
os.vrun("make install")
- -- restore flags
- for name, flags in pairs(flags_prev) do
- os.setenv(name:upper(), flags)
- end
+ -- leave environments
+ _leave_envs(package, envs)
end