mirror of https://github.com/hak5/openwrt.git
build: improve ccache support
Set CCACHE_DIR to $(TOPDIR)/.ccache and CCACHE_BASEDIR to $(TOPDIR). This allows to do clean and dirclean. Cache hit rate for test build after dirclean is ~65%. If CCACHE is enabled stats are printed out at the end of building process. CCACHE_DIR config variable allows to override default, which could be useful when sharing cache with many builds. cacheclean make target allows to clean the cache. Changes from v1: - remove ccache directory using CCACHE_DIR variable - remove ccache leftovers from sdk and toolchain make files - introduce CONFIG_CCACHE_DIR variable - introduce cacheclean make target Signed-off-by: Roman Yeryomin <roman@advem.lv>master
parent
23de93a521
commit
2ca084ccaa
|
@ -28,3 +28,4 @@ TAGS*~
|
||||||
git-src
|
git-src
|
||||||
.project
|
.project
|
||||||
.cproject
|
.cproject
|
||||||
|
.ccache
|
||||||
|
|
8
Makefile
8
Makefile
|
@ -62,6 +62,11 @@ dirclean: clean
|
||||||
rm -rf $(TMP_DIR)
|
rm -rf $(TMP_DIR)
|
||||||
$(MAKE) -C $(TOPDIR)/scripts/config clean
|
$(MAKE) -C $(TOPDIR)/scripts/config clean
|
||||||
|
|
||||||
|
cacheclean:
|
||||||
|
ifneq ($(CONFIG_CCACHE),)
|
||||||
|
rm -rf $(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache)
|
||||||
|
endif
|
||||||
|
|
||||||
ifndef DUMP_TARGET_DB
|
ifndef DUMP_TARGET_DB
|
||||||
$(BUILD_DIR)/.prepared: Makefile
|
$(BUILD_DIR)/.prepared: Makefile
|
||||||
@mkdir -p $$(dirname $@)
|
@mkdir -p $$(dirname $@)
|
||||||
|
@ -119,6 +124,9 @@ world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-
|
||||||
$(_SINGLE)$(SUBMAKE) -r package/index
|
$(_SINGLE)$(SUBMAKE) -r package/index
|
||||||
$(_SINGLE)$(SUBMAKE) -r json_overview_image_info
|
$(_SINGLE)$(SUBMAKE) -r json_overview_image_info
|
||||||
$(_SINGLE)$(SUBMAKE) -r checksum
|
$(_SINGLE)$(SUBMAKE) -r checksum
|
||||||
|
ifneq ($(CONFIG_CCACHE),)
|
||||||
|
$(STAGING_DIR_HOST)/bin/ccache -s
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean
|
.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,13 @@ menuconfig DEVEL
|
||||||
help
|
help
|
||||||
Compiler cache; see https://ccache.samba.org/
|
Compiler cache; see https://ccache.samba.org/
|
||||||
|
|
||||||
|
config CCACHE_DIR
|
||||||
|
string "Set ccache directory" if CCACHE
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Store ccache in this directory.
|
||||||
|
If not set, uses './.ccache'
|
||||||
|
|
||||||
config EXTERNAL_KERNEL_TREE
|
config EXTERNAL_KERNEL_TREE
|
||||||
string "Use external kernel tree" if DEVEL
|
string "Use external kernel tree" if DEVEL
|
||||||
default ""
|
default ""
|
||||||
|
|
|
@ -132,7 +132,9 @@ define Host/Exports/Default
|
||||||
$(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX)
|
$(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX)
|
||||||
$(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
$(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||||
$(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
$(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||||
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache)
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_BASEDIR:=$(TOPDIR))
|
||||||
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache))
|
||||||
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_COMPILERCHECK:=%compiler% -dumpmachine; %compiler% -dumpversion)
|
||||||
$(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
|
$(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
|
||||||
$(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
|
$(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -173,7 +173,9 @@ define Build/Exports/Default
|
||||||
$(1) : export CONFIG_SITE:=$$(CONFIG_SITE)
|
$(1) : export CONFIG_SITE:=$$(CONFIG_SITE)
|
||||||
$(1) : export PKG_CONFIG_PATH:=$$(PKG_CONFIG_PATH)
|
$(1) : export PKG_CONFIG_PATH:=$$(PKG_CONFIG_PATH)
|
||||||
$(1) : export PKG_CONFIG_LIBDIR:=$$(PKG_CONFIG_PATH)
|
$(1) : export PKG_CONFIG_LIBDIR:=$$(PKG_CONFIG_PATH)
|
||||||
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(STAGING_DIR)/ccache)
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_BASEDIR:=$(TOPDIR))
|
||||||
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache))
|
||||||
|
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_COMPILERCHECK:=%compiler% -dumpmachine; %compiler% -dumpversion)
|
||||||
endef
|
endef
|
||||||
Build/Exports=$(Build/Exports/Default)
|
Build/Exports=$(Build/Exports/Default)
|
||||||
|
|
||||||
|
|
|
@ -262,7 +262,7 @@ package/symlinks-clean:
|
||||||
help:
|
help:
|
||||||
cat README
|
cat README
|
||||||
|
|
||||||
distclean:
|
distclean: cacheclean
|
||||||
rm -rf bin build_dir .config* dl feeds key-build* logs package/feeds package/openwrt-packages staging_dir tmp
|
rm -rf bin build_dir .config* dl feeds key-build* logs package/feeds package/openwrt-packages staging_dir tmp
|
||||||
@$(_SINGLE)$(SUBMAKE) -C scripts/config clean
|
@$(_SINGLE)$(SUBMAKE) -C scripts/config clean
|
||||||
|
|
||||||
|
|
3
rules.mk
3
rules.mk
|
@ -298,6 +298,9 @@ ifneq ($(CONFIG_CCACHE),)
|
||||||
TARGET_CXX:= ccache_cxx
|
TARGET_CXX:= ccache_cxx
|
||||||
HOSTCC:= ccache $(HOSTCC)
|
HOSTCC:= ccache $(HOSTCC)
|
||||||
HOSTCXX:= ccache $(HOSTCXX)
|
HOSTCXX:= ccache $(HOSTCXX)
|
||||||
|
export CCACHE_BASEDIR:=$(TOPDIR)
|
||||||
|
export CCACHE_DIR:=$(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache)
|
||||||
|
export CCACHE_COMPILERCHECK:=%compiler% -dumpmachine; %compiler% -dumpversion
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TARGET_CONFIGURE_OPTS = \
|
TARGET_CONFIGURE_OPTS = \
|
||||||
|
|
|
@ -20,7 +20,7 @@ STAGING_SUBDIR_HOST := staging_dir/host
|
||||||
STAGING_SUBDIR_TARGET := staging_dir/$(TARGET_DIR_NAME)
|
STAGING_SUBDIR_TARGET := staging_dir/$(TARGET_DIR_NAME)
|
||||||
STAGING_SUBDIR_TOOLCHAIN := staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)$(if $(CONFIG_arm),_eabi)
|
STAGING_SUBDIR_TOOLCHAIN := staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)$(if $(CONFIG_arm),_eabi)
|
||||||
|
|
||||||
EXCLUDE_DIRS:=*/ccache/* \
|
EXCLUDE_DIRS:= \
|
||||||
*/stamp \
|
*/stamp \
|
||||||
*/stampfiles \
|
*/stampfiles \
|
||||||
*/man \
|
*/man \
|
||||||
|
@ -135,11 +135,7 @@ $(BIN_DIR)/$(SDK_NAME).tar.xz: clean
|
||||||
$(TOPDIR)/package/kernel/linux \
|
$(TOPDIR)/package/kernel/linux \
|
||||||
$(SDK_BUILD_DIR)/package/
|
$(SDK_BUILD_DIR)/package/
|
||||||
|
|
||||||
-rm -rf \
|
-rm -rf $(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/.prereq-build
|
||||||
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/ccache \
|
|
||||||
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TARGET)/ccache \
|
|
||||||
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TOOLCHAIN)/ccache \
|
|
||||||
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/.prereq-build
|
|
||||||
|
|
||||||
-rm -f $(SDK_BUILD_DIR)/feeds.conf.default
|
-rm -f $(SDK_BUILD_DIR)/feeds.conf.default
|
||||||
$(if $(BASE_FEED),echo "$(BASE_FEED)" > $(SDK_BUILD_DIR)/feeds.conf.default)
|
$(if $(BASE_FEED),echo "$(BASE_FEED)" > $(SDK_BUILD_DIR)/feeds.conf.default)
|
||||||
|
|
|
@ -15,7 +15,7 @@ override MAKEFLAGS=
|
||||||
|
|
||||||
TOOLCHAIN_NAME:=$(VERSION_DIST_SANITIZED)-toolchain-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))_gcc-$(GCCV)$(DIR_SUFFIX).$(HOST_OS)-$(HOST_ARCH)
|
TOOLCHAIN_NAME:=$(VERSION_DIST_SANITIZED)-toolchain-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))_gcc-$(GCCV)$(DIR_SUFFIX).$(HOST_OS)-$(HOST_ARCH)
|
||||||
TOOLCHAIN_BUILD_DIR:=$(BUILD_DIR)/$(TOOLCHAIN_NAME)
|
TOOLCHAIN_BUILD_DIR:=$(BUILD_DIR)/$(TOOLCHAIN_NAME)
|
||||||
EXCLUDE_DIRS:=*/ccache \
|
EXCLUDE_DIRS:= \
|
||||||
*/initial \
|
*/initial \
|
||||||
*/stamp \
|
*/stamp \
|
||||||
*/stampfiles \
|
*/stampfiles \
|
||||||
|
|
Loading…
Reference in New Issue