]>
Commit | Line | Data |
---|---|---|
8dfd59d1 | 1 | ################################################################################ |
17b66aff TP |
2 | # |
3 | # ccache | |
4 | # | |
8dfd59d1 | 5 | ################################################################################ |
17b66aff | 6 | |
ca6811fe | 7 | CCACHE_VERSION = 3.3 |
67524ba4 | 8 | CCACHE_SITE = https://samba.org/ftp/ccache |
f268f713 | 9 | CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz |
c5f8797b LC |
10 | CCACHE_LICENSE = GPLv3+, others |
11 | CCACHE_LICENSE_FILES = LICENSE.txt GPL-3.0.txt | |
17b66aff | 12 | |
7ea11daf TP |
13 | # Force ccache to use its internal zlib. The problem is that without |
14 | # this, ccache would link against the zlib of the build system, but we | |
15 | # might build and install a different version of zlib in $(O)/host | |
16 | # afterwards, which ccache will pick up. This might break if there is | |
17 | # a version mismatch. A solution would be to add host-zlib has a | |
18 | # dependency of ccache, but it would require tuning the zlib .mk file | |
19 | # to use HOSTCC_NOCCACHE as the compiler. Instead, we take the easy | |
20 | # path: tell ccache to use its internal copy of zlib, so that ccache | |
21 | # has zero dependency besides the C library. | |
83c8fae3 | 22 | HOST_CCACHE_CONF_OPTS += --with-bundled-zlib |
7ea11daf | 23 | |
43329076 | 24 | # Patch host-ccache as follows: |
e7ab4b49 | 25 | # - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR |
43329076 | 26 | # is already used by autotargets for the ccache package. |
e7ab4b49 | 27 | # BR_CACHE_DIR is exported by Makefile based on config option |
43329076 | 28 | # BR2_CCACHE_DIR. |
d93a0b40 DM |
29 | # - Change hard-coded last-ditch default to match path in .config, to avoid |
30 | # the need to specify BR_CACHE_DIR when invoking ccache directly. | |
43329076 | 31 | define HOST_CCACHE_PATCH_CONFIGURATION |
e7ab4b49 | 32 | sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/ccache.c |
83c8fae3 | 33 | sed -i 's,"%s/.ccache","$(BR_CACHE_DIR)",' $(@D)/conf.c |
17b66aff TP |
34 | endef |
35 | ||
83c8fae3 | 36 | HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION |
17b66aff | 37 | |
ffe3540e DM |
38 | define HOST_CCACHE_MAKE_CACHE_DIR |
39 | mkdir -p $(BR_CACHE_DIR) | |
40 | endef | |
41 | ||
dd79f2df DM |
42 | HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR |
43 | ||
44 | # Provide capability to do initial ccache setup (e.g. increase default size) | |
45 | BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) | |
46 | ifneq ($(BR_CCACHE_INITIAL_SETUP),) | |
47 | define HOST_CCACHE_DO_INITIAL_SETUP | |
48 | @$(call MESSAGE,"Applying initial settings") | |
49 | $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) | |
50 | $(CCACHE) -s | |
51 | endef | |
52 | ||
53 | HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP | |
54 | endif | |
ffe3540e | 55 | |
69e64c42 | 56 | $(eval $(host-autotools-package)) |
17b66aff TP |
57 | |
58 | ifeq ($(BR2_CCACHE),y) | |
59 | ccache-stats: host-ccache | |
60 | $(Q)$(CCACHE) -s | |
d1bca7c4 TJL |
61 | |
62 | ccache-options: host-ccache | |
63 | ifeq ($(CCACHE_OPTIONS),) | |
f3b44101 JG |
64 | $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\"" |
65 | $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \ | |
66 | "(see ccache help text below)" | |
67 | $(Q)echo | |
d1bca7c4 | 68 | endif |
f3b44101 | 69 | $(Q)$(CCACHE) $(CCACHE_OPTIONS) |
17b66aff | 70 | endif |