summaryrefslogtreecommitdiff
path: root/toolchain/toolchain-wrapper.c
diff options
context:
space:
mode:
authorArnout Vandecappelle <arnout@mind.be>2015-10-04 16:23:56 +0100
committerPeter Korsgaard <peter@korsgaard.com>2015-10-04 18:22:20 +0200
commitd82f69cf100c51cc65c9fb27132517dd3efd554a (patch)
treef08ffe5e2b0bb979ade4aa98ff82a2e81c64035b /toolchain/toolchain-wrapper.c
parent2f8dc29c1d9f2adda850dead5325e422715d251e (diff)
infra: move ccache handling to the toolchain wrapper
Since we always have a toolchain wrapper now, we can move the ccache call to the toolchain wrapper. The hostcc ccache handling obviously stays. The global addition of ccache to TARGET_CC/CXX is removed, but many individual packages and infras still add it. This means we have a chain like this: ccache -> toolchain-wrapper -> ccache -> gcc However, this is fairly harmless: for cache misses, the inner ccache just adds overhead and for cache hits, the inner ccache is never called. Later patches will remove these redundant ccache calls. As a side effect, perl now supports ccache as well. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Danomi Manchego <danomimanchego123@gmail.com> Cc: Károly Kasza <kaszak@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'toolchain/toolchain-wrapper.c')
-rw-r--r--toolchain/toolchain-wrapper.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
index d4d25c705..aee5df7ac 100644
--- a/toolchain/toolchain-wrapper.c
+++ b/toolchain/toolchain-wrapper.c
@@ -23,6 +23,9 @@
#include <stdlib.h>
#include <errno.h>
+#ifdef BR_CCACHE
+static char ccache_path[PATH_MAX];
+#endif
static char path[PATH_MAX];
static char sysroot[PATH_MAX];
@@ -40,6 +43,9 @@ static char sysroot[PATH_MAX];
#define EXCLUSIVE_ARGS 3
static char *predef_args[] = {
+#ifdef BR_CCACHE
+ ccache_path,
+#endif
path,
"--sysroot", sysroot,
#ifdef BR_ABI
@@ -147,6 +153,13 @@ int main(int argc, char **argv)
perror(__FILE__ ": overflow");
return 3;
}
+#ifdef BR_CCACHE
+ ret = snprintf(ccache_path, sizeof(ccache_path), "%s/usr/bin/ccache", absbasedir);
+ if (ret >= sizeof(ccache_path)) {
+ perror(__FILE__ ": overflow");
+ return 3;
+ }
+#endif
ret = snprintf(sysroot, sizeof(sysroot), "%s/" BR_SYSROOT, absbasedir);
if (ret >= sizeof(sysroot)) {
perror(__FILE__ ": overflow");
@@ -251,7 +264,7 @@ int main(int argc, char **argv)
}
}
- if (execv(path, args))
+ if (execv(args[0], args))
perror(path);
free(args);