@@ -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)
@@ -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))
deleted file mode 100755
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec ccache "${TARGET_CC_NOCACHE}" "$@"
deleted file mode 100755
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec ccache "${TARGET_CXX_NOCACHE}" "$@"
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> --- I tried CONFIG_ALL=y build and fixed bad packaging where I noticed: https://github.com/openwrt/packages/pull/20353 Also sent a patch for Alpine (in private) and a patch/bug report to libicu upstream: https://github.com/unicode-org/icu/pull/2290 . My notion is that properly fixing affected software is better in the long run. However just renaming the wrappers is an option too if it's much less painful in the end. One potential downside would be that the build systems wouldn't be able to detect e.g. GCC vs clang if used with a wrapper and wouldn't apply custom build flags. rules.mk | 4 ++-- tools/ccache/Makefile | 10 ---------- tools/ccache/files/ccache_cc | 2 -- tools/ccache/files/ccache_cxx | 2 -- 4 files changed, 2 insertions(+), 16 deletions(-) delete mode 100755 tools/ccache/files/ccache_cc delete mode 100755 tools/ccache/files/ccache_cxx