From 8bf857ffa94cdc9bf81489f2f19dfa07afeef1be Mon Sep 17 00:00:00 2001 From: George Rennie Date: Fri, 26 Sep 2025 23:31:26 +0100 Subject: [PATCH] Add support for sccache (#643) * support sccache wrapper as ccache variant * test sccache wrapper queries * fix: call is_distcc_query in its tests not is_ccache_query --- source/citnames/source/semantic/ToolWrapper.cc | 2 +- source/citnames/test/ToolWrapperTest.cc | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/citnames/source/semantic/ToolWrapper.cc b/source/citnames/source/semantic/ToolWrapper.cc index 78c8f11b..2506b3a5 100644 --- a/source/citnames/source/semantic/ToolWrapper.cc +++ b/source/citnames/source/semantic/ToolWrapper.cc @@ -56,7 +56,7 @@ namespace cs::semantic { bool ToolWrapper::is_ccache_call(const fs::path &program) { const auto string = program.filename().string(); - return string == "ccache"; + return string == "ccache" || string == "sccache"; } bool ToolWrapper::is_ccache_query(const std::list &arguments) { diff --git a/source/citnames/test/ToolWrapperTest.cc b/source/citnames/test/ToolWrapperTest.cc index 3fdd0444..a4344692 100644 --- a/source/citnames/test/ToolWrapperTest.cc +++ b/source/citnames/test/ToolWrapperTest.cc @@ -66,14 +66,19 @@ namespace { EXPECT_FALSE(ToolWrapper::is_ccache_call("/usr/bin/g++")); EXPECT_TRUE(ToolWrapper::is_ccache_call("ccache")); + EXPECT_TRUE(ToolWrapper::is_ccache_call("sccache")); } TEST(ToolWrapper, is_ccache_query) { EXPECT_TRUE(ToolWrapper::is_ccache_query({"ccache"})); EXPECT_TRUE(ToolWrapper::is_ccache_query({"ccache", "-c"})); EXPECT_TRUE(ToolWrapper::is_ccache_query({"ccache", "--cleanup"})); + EXPECT_TRUE(ToolWrapper::is_ccache_query({"sccache"})); + EXPECT_TRUE(ToolWrapper::is_ccache_query({"sccache", "-s"})); + EXPECT_TRUE(ToolWrapper::is_ccache_query({"sccache", "-h"})); EXPECT_FALSE(ToolWrapper::is_ccache_query({"ccache", "cc", "-c"})); + EXPECT_FALSE(ToolWrapper::is_ccache_query({"sccache", "cc", "-c"})); } TEST(ToolWrapper, is_distcc_call) { @@ -90,13 +95,13 @@ namespace { } TEST(ToolWrapper, is_distcc_query) { - EXPECT_TRUE(ToolWrapper::is_ccache_query({"distcc"})); - EXPECT_TRUE(ToolWrapper::is_ccache_query({"distcc", "--help"})); - EXPECT_TRUE(ToolWrapper::is_ccache_query({"distcc", "--show-hosts"})); - EXPECT_TRUE(ToolWrapper::is_ccache_query({"distcc", "-j"})); + EXPECT_TRUE(ToolWrapper::is_distcc_query({"distcc"})); + EXPECT_TRUE(ToolWrapper::is_distcc_query({"distcc", "--help"})); + EXPECT_TRUE(ToolWrapper::is_distcc_query({"distcc", "--show-hosts"})); + EXPECT_TRUE(ToolWrapper::is_distcc_query({"distcc", "-j"})); - EXPECT_FALSE(ToolWrapper::is_ccache_query({"distcc", "cc", "--help"})); - EXPECT_FALSE(ToolWrapper::is_ccache_query({"distcc", "cc", "-c"})); + EXPECT_FALSE(ToolWrapper::is_distcc_query({"distcc", "cc", "--help"})); + EXPECT_FALSE(ToolWrapper::is_distcc_query({"distcc", "cc", "-c"})); } TEST(ToolWrapper, remove_wrapper) {