summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-05-14 22:24:11 +0800
committerruki <[email protected]>2022-05-14 22:24:17 +0800
commita413ba4233bf4887171c59add0cdc70394315f40 (patch)
treed5c4a203a2c71909e5c806d82e4ffaebdaadf005
parentf11b49af348fc73962667a27728052d1cc56b712 (diff)
dispatch iorunv for distcc
-rw-r--r--xmake/modules/core/tools/gcc.lua2
-rw-r--r--xmake/modules/private/service/distcc_build/client_session.lua25
2 files changed, 25 insertions, 2 deletions
diff --git a/xmake/modules/core/tools/gcc.lua b/xmake/modules/core/tools/gcc.lua
index 17f3fc97d..0006267a3 100644
--- a/xmake/modules/core/tools/gcc.lua
+++ b/xmake/modules/core/tools/gcc.lua
@@ -458,7 +458,7 @@ function compile(self, sourcefile, objectfile, dependinfo, flags)
-- do compile
local program, argv = compargv(self, sourcefile, objectfile, compflags)
if distcc_build_client.is_distccjob() then
- return distcc_build_client.singleton():iorunv(program, argv, {envs = self:runenvs()})
+ return distcc_build_client.singleton():iorunv(program, argv, {envs = self:runenvs(), toolname = self:name()})
else
return os.iorunv(program, argv, {envs = self:runenvs()})
end
diff --git a/xmake/modules/private/service/distcc_build/client_session.lua b/xmake/modules/private/service/distcc_build/client_session.lua
index 166751342..dba51db22 100644
--- a/xmake/modules/private/service/distcc_build/client_session.lua
+++ b/xmake/modules/private/service/distcc_build/client_session.lua
@@ -57,15 +57,38 @@ end
-- run compilation job
function client_session:iorunv(program, argv, opt)
+ opt = opt or {}
+ local toolname = opt.toolname
+ local iorunv = assert(self["_" .. toolname .. "_iorunv"], "%s: iorunv(%s) is not supported!", self, program)
+ return iorunv(self, program, argv, opt)
+end
+
+-- run compilation job for gcc
+function client_session:_gcc_iorunv(program, argv, opt)
-- TODO, do distcc compilation
local outdata, errdata = os.iorunv(program, argv, opt)
return outdata, errdata
end
+-- run compilation job for g++
+function client_session:_gxx_iorunv(program, argv, opt)
+ return self:_gcc_iorunv(program, argv, opt)
+end
+
+-- run compilation job for clang
+function client_session:_clang_iorunv(program, argv, opt)
+ return self:_gcc_iorunv(program, argv, opt)
+end
+
+-- run compilation job for clang++
+function client_session:_clangxx_iorunv(program, argv, opt)
+ return self:_gcc_iorunv(program, argv, opt)
+end
+
-- get work directory
function client_session:workdir()
- return path.join(self:server():workdir(), "sessons", self:id())
+ return path.join(self:server():workdir(), "sessions", self:id())
end
function client_session:__tostring()