Message ID | 1442774504-22799-5-git-send-email-arnout@mind.be |
---|---|
State | Superseded |
Headers | show |
Hi Arnout, Le 20/09/2015 20:41, Arnout Vandecappelle (Essensium/Mind) a écrit : > 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> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Best regards, Romain > --- > package/Makefile.in | 5 ----- > toolchain/toolchain-wrapper.c | 5 ++++- > toolchain/toolchain-wrapper.mk | 4 ++++ > 3 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/package/Makefile.in b/package/Makefile.in > index 545694f..4b1ce7f 100644 > --- a/package/Makefile.in > +++ b/package/Makefile.in > @@ -189,11 +189,6 @@ TARGET_OBJDUMP = $(TARGET_CROSS)objdump > TARGET_CC_NOCCACHE := $(TARGET_CC) > TARGET_CXX_NOCCACHE := $(TARGET_CXX) > > -ifeq ($(BR2_CCACHE),y) > -TARGET_CC := $(CCACHE) $(TARGET_CC) > -TARGET_CXX := $(CCACHE) $(TARGET_CXX) > -endif > - > ifeq ($(BR2_STRIP_strip),y) > STRIP_STRIP_DEBUG := --strip-debug > STRIP_STRIP_UNNEEDED := --strip-unneeded > diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c > index f3ff04f..4774692 100644 > --- a/toolchain/toolchain-wrapper.c > +++ b/toolchain/toolchain-wrapper.c > @@ -40,6 +40,9 @@ static char sysroot[PATH_MAX]; > #define EXCLUSIVE_ARGS 3 > > static char *predef_args[] = { > +#ifdef BR_CCACHE > + BR_CCACHE, > +#endif > path, > "--sysroot", sysroot, > #ifdef BR_ABI > @@ -251,7 +254,7 @@ int main(int argc, char **argv) > } > } > > - if (execv(path, args)) > + if (execv(args[0], args)) > perror(path); > > free(args); > diff --git a/toolchain/toolchain-wrapper.mk b/toolchain/toolchain-wrapper.mk > index 8e8a445..ab8215d 100644 > --- a/toolchain/toolchain-wrapper.mk > +++ b/toolchain/toolchain-wrapper.mk > @@ -17,6 +17,10 @@ TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"' > # toolchain wrapper. > TOOLCHAIN_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)' > > +ifeq ($(BR2_CCACHE),y) > +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE='"$(CCACHE)"' > +endif > + > # For simplicity, build directly into the install location > define TOOLCHAIN_BUILD_WRAPPER > $(Q)mkdir -p $(HOST_DIR)/usr/bin >
diff --git a/package/Makefile.in b/package/Makefile.in index 545694f..4b1ce7f 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -189,11 +189,6 @@ TARGET_OBJDUMP = $(TARGET_CROSS)objdump TARGET_CC_NOCCACHE := $(TARGET_CC) TARGET_CXX_NOCCACHE := $(TARGET_CXX) -ifeq ($(BR2_CCACHE),y) -TARGET_CC := $(CCACHE) $(TARGET_CC) -TARGET_CXX := $(CCACHE) $(TARGET_CXX) -endif - ifeq ($(BR2_STRIP_strip),y) STRIP_STRIP_DEBUG := --strip-debug STRIP_STRIP_UNNEEDED := --strip-unneeded diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c index f3ff04f..4774692 100644 --- a/toolchain/toolchain-wrapper.c +++ b/toolchain/toolchain-wrapper.c @@ -40,6 +40,9 @@ static char sysroot[PATH_MAX]; #define EXCLUSIVE_ARGS 3 static char *predef_args[] = { +#ifdef BR_CCACHE + BR_CCACHE, +#endif path, "--sysroot", sysroot, #ifdef BR_ABI @@ -251,7 +254,7 @@ int main(int argc, char **argv) } } - if (execv(path, args)) + if (execv(args[0], args)) perror(path); free(args); diff --git a/toolchain/toolchain-wrapper.mk b/toolchain/toolchain-wrapper.mk index 8e8a445..ab8215d 100644 --- a/toolchain/toolchain-wrapper.mk +++ b/toolchain/toolchain-wrapper.mk @@ -17,6 +17,10 @@ TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"' # toolchain wrapper. TOOLCHAIN_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)' +ifeq ($(BR2_CCACHE),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE='"$(CCACHE)"' +endif + # For simplicity, build directly into the install location define TOOLCHAIN_BUILD_WRAPPER $(Q)mkdir -p $(HOST_DIR)/usr/bin
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> --- package/Makefile.in | 5 ----- toolchain/toolchain-wrapper.c | 5 ++++- toolchain/toolchain-wrapper.mk | 4 ++++ 3 files changed, 8 insertions(+), 6 deletions(-)