diff options
| author | ruki <[email protected]> | 2022-05-14 22:24:11 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-05-14 22:24:17 +0800 |
| commit | a413ba4233bf4887171c59add0cdc70394315f40 (patch) | |
| tree | d5c4a203a2c71909e5c806d82e4ffaebdaadf005 | |
| parent | f11b49af348fc73962667a27728052d1cc56b712 (diff) | |
dispatch iorunv for distcc
| -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() |
