ccache.mk 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. ################################################################################
  2. #
  3. # ccache
  4. #
  5. ################################################################################
  6. CCACHE_VERSION = 4.8.2
  7. CCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSION)
  8. CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz
  9. CCACHE_LICENSE = GPL-3.0+, others
  10. CCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt
  11. HOST_CCACHE_DEPENDENCIES = host-hiredis host-zstd
  12. # We are ccache, so we can't use ccache
  13. HOST_CCACHE_CONF_OPTS += \
  14. -UCMAKE_C_COMPILER_LAUNCHER \
  15. -UCMAKE_CXX_COMPILER_LAUNCHER \
  16. -DCCACHE_DEV_MODE=OFF \
  17. -DZSTD_FROM_INTERNET=OFF \
  18. -DHIREDIS_FROM_INTERNET=OFF \
  19. -DENABLE_TESTING=OFF
  20. # Patch host-ccache as follows:
  21. # - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR
  22. # is already used by autotargets for the ccache package.
  23. # BR_CACHE_DIR is exported by Makefile based on config option
  24. # BR2_CCACHE_DIR.
  25. # - Change hard-coded last-ditch default to match path in .config, to avoid
  26. # the need to specify BR_CACHE_DIR when invoking ccache directly.
  27. # CCache replaces "home_dir" with the home directory of the current user,
  28. # so rewrite BR_CACHE_DIR to take that into consideration for SDK purpose
  29. HOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,%,$(BR_CACHE_DIR))
  30. define HOST_CCACHE_PATCH_CONFIGURATION
  31. sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/src/Config.cpp
  32. sed -i 's,".ccache","$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp
  33. sed -i 's,"/.cache/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp
  34. sed -i 's,"/.config/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp
  35. sed -i 's,getenv("XDG_CACHE_HOME"),nullptr,' $(@D)/src/Config.cpp
  36. sed -i 's,getenv("XDG_CONFIG_HOME"),nullptr,' $(@D)/src/Config.cpp
  37. endef
  38. HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION
  39. define HOST_CCACHE_MAKE_CACHE_DIR
  40. mkdir -p $(BR_CACHE_DIR)
  41. endef
  42. HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR
  43. # Provide capability to do initial ccache setup (e.g. increase default size)
  44. BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP))
  45. ifneq ($(BR_CCACHE_INITIAL_SETUP),)
  46. define HOST_CCACHE_DO_INITIAL_SETUP
  47. @$(call MESSAGE,"Applying initial settings")
  48. $(CCACHE) $(BR_CCACHE_INITIAL_SETUP)
  49. $(CCACHE) -s
  50. endef
  51. HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP
  52. endif
  53. $(eval $(host-cmake-package))
  54. ifeq ($(BR2_CCACHE),y)
  55. ccache-stats: host-ccache
  56. $(Q)$(CCACHE) -s
  57. ccache-options: host-ccache
  58. ifeq ($(CCACHE_OPTIONS),)
  59. $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\""
  60. $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \
  61. "(see ccache help text below)"
  62. $(Q)echo
  63. endif
  64. $(Q)$(CCACHE) $(CCACHE_OPTIONS)
  65. endif