diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/Config.in | 2 | ||||
-rw-r--r-- | package/Makefile.in | 10 | ||||
-rw-r--r-- | package/ccache/Config.in | 9 | ||||
-rw-r--r-- | package/ccache/ccache.mk | 33 |
4 files changed, 52 insertions, 2 deletions
diff --git a/package/Config.in b/package/Config.in index 08ffda619..b02682855 100644 --- a/package/Config.in +++ b/package/Config.in @@ -35,7 +35,7 @@ source "package/autoconf/Config.in" source "package/automake/Config.in" source "package/bison/Config.in" source "package/bsdiff/Config.in" -source "toolchain/ccache/Config.in.2" +source "package/ccache/Config.in" if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS source "package/coreutils/Config.in" endif diff --git a/package/Makefile.in b/package/Makefile.in index 2ca8c3144..d448a7edf 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -142,6 +142,14 @@ TARGET_RANLIB = $(TARGET_CROSS)ranlib TARGET_OBJCOPY = $(TARGET_CROSS)objcopy 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_DISCARD_ALL:=--discard-all STRIP_STRIP_UNNEEDED:=--strip-unneeded @@ -175,7 +183,7 @@ HOST_LDFLAGS += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/ HOST_PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(PATH) # hostcc version as an integer - E.G. 4.3.2 => 432 -HOSTCC_VERSION:=$(shell $(HOSTCC) --version | \ +HOSTCC_VERSION:=$(shell $(HOSTCC_NOCCACHE) --version | \ sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p') TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \ diff --git a/package/ccache/Config.in b/package/ccache/Config.in new file mode 100644 index 000000000..f4f7f8f9c --- /dev/null +++ b/package/ccache/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CCACHE + bool "ccache" + help + ccache is a compiler cache. It speeds up recompilation by + caching previous compilations and detecting when the same + compilation is being done again + + http://samba.ccache.org + diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk new file mode 100644 index 000000000..1d0a5608e --- /dev/null +++ b/package/ccache/ccache.mk @@ -0,0 +1,33 @@ +############################################################# +# +# ccache +# +############################################################# + +CCACHE_VERSION = 3.1.3 +CCACHE_SITE = http://samba.org/ftp/ccache +CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.bz2 + +# When ccache is being built for the host, ccache is not yet +# available, so we have to use the special C compiler without the +# cache. +HOST_CCACHE_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" + +# We directly hardcode the cache location into the binary, as it is +# much easier to handle than passing an environment variable. +define HOST_CCACHE_FIX_CCACHE_DIR + sed -i 's,getenv("CCACHE_DIR"),"$(CCACHE_CACHE_DIR)",' $(@D)/ccache.c +endef + +HOST_CCACHE_POST_CONFIGURE_HOOKS += \ + HOST_CCACHE_FIX_CCACHE_DIR + +$(eval $(call AUTOTARGETS,package,ccache)) +$(eval $(call AUTOTARGETS,package,ccache,host)) + +ifeq ($(BR2_CCACHE),y) +ccache-stats: host-ccache + $(Q)$(CCACHE) -s +endif + |