summaryrefslogtreecommitdiff
path: root/xmake/modules/package/tools/meson.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-02 00:54:31 +0800
committerruki <[email protected]>2020-12-02 00:54:31 +0800
commitb0384dc3b81f05d4028f9e06dbb6caaa46f42013 (patch)
tree4cbf771e45362e726dabcd2bf9bdb326081a9d76 /xmake/modules/package/tools/meson.lua
parent7d1894ff02004c542f44794af00d537bd756c07a (diff)
add tools/gn and ninja
Diffstat (limited to 'xmake/modules/package/tools/meson.lua')
-rw-r--r--xmake/modules/package/tools/meson.lua34
1 files changed, 23 insertions, 11 deletions
diff --git a/xmake/modules/package/tools/meson.lua b/xmake/modules/package/tools/meson.lua
index fc4a2a1ae..c0bb5fe78 100644
--- a/xmake/modules/package/tools/meson.lua
+++ b/xmake/modules/package/tools/meson.lua
@@ -21,11 +21,16 @@
-- imports
import("core.base.option")
import("core.project.config")
+import("package.tools.ninja")
-- get build directory
-function _get_buildir()
- _g.buildir = _g.buildir or ("build_" .. hash.uuid4():split('%-')[1])
- return _g.buildir
+function _get_buildir(opt)
+ if opt and opt.buildir then
+ return opt.buildir
+ else
+ _g.buildir = _g.buildir or ("build_" .. hash.uuid4():split('%-')[1])
+ return _g.buildir
+ end
end
-- get configs
@@ -110,19 +115,26 @@ function generate(package, configs, opt)
os.vrunv("meson", argv, {envs = opt.envs or buildenvs(package)})
end
+-- build package
+function build(package, configs, opt)
+
+ -- generate build files
+ opt = opt or {}
+ generate(package, configs, opt)
+
+ -- do build
+ local buildir = _get_buildir(opt)
+ ninja.build(package, {}, {buildir = buildir, envs = opt.envs or buildenvs(package, opt)})
+end
+
-- install package
function install(package, configs, opt)
-- generate build files
+ opt = opt or {}
generate(package, configs, opt)
-- do build and install
- local buildir = _get_buildir()
- if option.get("verbose") or option.get("diagnosis") then
- os.vrunv("ninja", {"-v", "-C", buildir})
- os.vrunv("ninja", {"install", "-v", "-C", buildir})
- else
- os.vrunv("ninja", {"-C", buildir})
- os.vrunv("ninja", {"install", "-C", buildir})
- end
+ local buildir = _get_buildir(opt)
+ ninja.install(package, {}, {buildir = buildir, envs = opt.envs or buildenvs(package, opt)})
end