1e97b27873
When building in a different output directory than the original build, there will currently be a lot of ccache misses because in many cases there is some -I/... absolute path in the compilation. Ccache has an option CCACHE_BASEDIR to substitute absolute paths with relative paths, so they wil be the same in the hash (and in the output). Since there are some disadvantages to this path rewriting, it is made optional as BR2_CCACHE_USE_BASEDIR. It defaults to y because the usefulness of ccache is severely reduced without this option. In addition to CCACHE_BASEDIR, we also substitute away the occurences of $(HOST_DIR) in the calculation of the compiler hash. This is done regardless of the setting of BR2_CCACHE_USE_BASEDIR because it's quite harmless. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
35 lines
1.2 KiB
Makefile
35 lines
1.2 KiB
Makefile
# This file contains the definition of the toolchain wrapper build commands
|
|
|
|
# We use --hash-style=both to increase the compatibility of the generated
|
|
# binary with older platforms, except for MIPS, where the only acceptable
|
|
# hash style is 'sysv'
|
|
ifeq ($(findstring mips,$(HOSTARCH)),mips)
|
|
TOOLCHAIN_WRAPPER_HASH_STYLE = sysv
|
|
else
|
|
TOOLCHAIN_WRAPPER_HASH_STYLE = both
|
|
endif
|
|
|
|
TOOLCHAIN_WRAPPER_ARGS = $($(PKG)_TOOLCHAIN_WRAPPER_ARGS)
|
|
TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"'
|
|
|
|
# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each flag is a
|
|
# separate argument when used in execv() by the 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
|
|
endif
|
|
|
|
ifeq ($(BR2_CCACHE_USE_BASEDIR),y)
|
|
TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"'
|
|
endif
|
|
|
|
# For simplicity, build directly into the install location
|
|
define TOOLCHAIN_BUILD_WRAPPER
|
|
$(Q)mkdir -p $(HOST_DIR)/usr/bin
|
|
$(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \
|
|
-s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \
|
|
toolchain/toolchain-wrapper.c \
|
|
-o $(HOST_DIR)/usr/bin/toolchain-wrapper
|
|
endef
|