Remove ccache wrappers
authorPaul Fertser <fercerpav@gmail.com>
Fri, 20 Jan 2023 15:25:13 +0000 (18:25 +0300)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 5 Mar 2023 16:48:31 +0000 (17:48 +0100)
These wrappers are not needed as CC doesn't need to be a single word.

a53b084e497a9f1629a2caada833ebe14a6838b7 which introduced the wrappers
doesn't explain why they were really needed and why only for the target
and not for the host.

Moreover, name of the wrappers breaks a ccache assumption: since
v4.0-3-g6a92b4cd3a67 it has special handling for "chained" invocation
such as "ccache ccache gcc" where it skips all the "ccache*" names in
the middle and proceeds to run as if it was started as "ccache
gcc"[1][2].

This becomes important when a build system sees ccache in the PATH and
automatically enables it by prepending to CC. An example of such a
system would be autosetup as used by jimtcl. With the wrappers it breaks
as the command line ends up being just "ccache -Os..." because
"ccache_cc" gets skipped as it starts with "ccache".

[1] https://github.com/ccache/ccache/blob/master/src/ccache.cpp#L2105
[2] https://github.com/ccache/ccache/blob/master/src/Util.cpp#L802

Reported-by: Karl Palsson <karlp@etactica.com>
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
rules.mk
tools/ccache/Makefile
tools/ccache/files/ccache_cc [deleted file]
tools/ccache/files/ccache_cxx [deleted file]

index 3d151338af11ca68923e76fd9fb585614a2d37ff..a2f5bcca4b0d0b2c9c3b749eddd5628458307742 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -283,8 +283,8 @@ export HOSTCC_NOCACHE
 export HOSTCXX_NOCACHE
 
 ifneq ($(CONFIG_CCACHE),)
-  TARGET_CC:= ccache_cc
-  TARGET_CXX:= ccache_cxx
+  TARGET_CC:= ccache $(TARGET_CC)
+  TARGET_CXX:= ccache $(TARGET_CXX)
   HOSTCC:= ccache $(HOSTCC)
   HOSTCXX:= ccache $(HOSTCXX)
   export CCACHE_BASEDIR:=$(TOPDIR)
index 25ab4a46eabe8104e4d7e9311ab4838a33950051..6824dbddfd40a5cd8f3777e07c82c3d856ef3c57 100644 (file)
@@ -28,14 +28,4 @@ ifneq (docs-$(CONFIG_BUILD_DOCUMENTATION),docs-y)
 CMAKE_HOST_OPTIONS += -DENABLE_DOCUMENTATION=OFF
 endif
 
-define Host/Install/ccache
-       $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/
-       $(CP) ./files/* $(STAGING_DIR_HOST)/bin/
-endef
-
-define Host/Install
-       $(call Host/Install/Default)
-       $(call Host/Install/ccache)
-endef
-
 $(eval $(call HostBuild))
diff --git a/tools/ccache/files/ccache_cc b/tools/ccache/files/ccache_cc
deleted file mode 100755 (executable)
index 01c4ad4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec ccache "${TARGET_CC_NOCACHE}" "$@"
diff --git a/tools/ccache/files/ccache_cxx b/tools/ccache/files/ccache_cxx
deleted file mode 100755 (executable)
index cc60eb3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec ccache "${TARGET_CXX_NOCACHE}" "$@"