diff options
| -rw-r--r-- | xmake/modules/core/tools/gcc.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/service/distcc_build/client_session.lua | 25 |
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() |
