You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/src/ccache.mk

95 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# This file is part of MXE. See LICENSE.md for licensing information.
PKG := ccache
$(PKG)_WEBSITE := https://ccache.samba.org
$(PKG)_DESCR := ccache a fast compiler cache
$(PKG)_IGNORE :=
$(PKG)_VERSION := 3.6
$(PKG)_CHECKSUM := a6b129576328fcefad00cb72035bc87bc98b6a76aec0f4b59bed76d67a399b1f
$(PKG)_SUBDIR := ccache-$($(PKG)_VERSION)
$(PKG)_FILE := ccache-$($(PKG)_VERSION).tar.xz
$(PKG)_URL := https://www.samba.org/ftp/ccache/ccache-$($(PKG)_VERSION).tar.xz
$(PKG)_DEPS := $(BUILD)~$(PKG)
$(PKG)_TARGETS := $(BUILD) $(MXE_TARGETS)
$(PKG)_DEPS_$(BUILD) :=
define $(PKG)_UPDATE
$(call GET_LATEST_VERSION, https://www.samba.org/ftp/ccache)
endef
BOOTSTRAP_PKGS += ccache
$(PKG)_SYS_CONF := $(MXE_CCACHE_DIR)/etc/$(PKG).conf
$(PKG)_USR_CONF := $(MXE_CCACHE_DIR)/$(PKG).conf
ifeq (mxe,$(MXE_USE_CCACHE))
define $(PKG)_BUILD_$(BUILD)
# remove any previous symlinks
rm -fv '$(PREFIX)/$(BUILD)/bin/$(BUILD_CC)' '$(PREFIX)/$(BUILD)/bin/$(BUILD_CXX)'
# minimal reqs build with bundled zlib
cd '$(BUILD_DIR)' && $(SOURCE_DIR)/configure \
$(MXE_CONFIGURE_OPTS) \
--with-bundled-zlib \
--disable-man \
--prefix='$(MXE_CCACHE_DIR)' \
--sysconfdir='$(dir $($(PKG)_SYS_CONF))'
$(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' $(MXE_DISABLE_DOCS)
$(MAKE) -C '$(BUILD_DIR)' -j 1 install $(MXE_DISABLE_DOCS)
# setup symlinks
ln -sf '$(MXE_CCACHE_DIR)/bin/ccache' '$(PREFIX)/$(BUILD)/bin/$(BUILD_CC)'
ln -sf '$(MXE_CCACHE_DIR)/bin/ccache' '$(PREFIX)/$(BUILD)/bin/$(BUILD_CXX)'
# https://ccache.samba.org/manual/latest.html#_configuration_settings
# always set/replace mxe `system` config
mkdir -p '$(dir $($(PKG)_SYS_CONF))'
(echo '# ccache system config'; \
echo '# this file is controlled by mxe, user config is in:'; \
echo '# $($(PKG)_USR_CONF)'; \
echo; \
echo 'base_dir = $(MXE_CCACHE_BASE_DIR)'; \
echo 'cache_dir = $(MXE_CCACHE_DIR)'; \
echo 'compiler_check = %compiler% -v'; \
) > '$($(PKG)_SYS_CONF)'
# leave user config alone if set
[ -f '$($(PKG)_USR_CONF)' ] || \
(mkdir -p '$(dir $($(PKG)_USR_CONF))' && \
(echo '# ccache user config'; \
echo '# https://ccache.samba.org/manual/latest.html#_configuration_settings'; \
echo '# system config: $($(PKG)_SYS_CONF)'; \
echo; \
echo 'max_size = 20.0G'; \
) > '$($(PKG)_USR_CONF)')
endef
define $(PKG)_BUILD
# setup symlinks
ln -sf '$(MXE_CCACHE_DIR)/bin/ccache' '$(PREFIX)/$(BUILD)/bin/$(TARGET)-gcc'
ln -sf '$(MXE_CCACHE_DIR)/bin/ccache' '$(PREFIX)/$(BUILD)/bin/$(TARGET)-g++'
# setup cmake toolchain to allow runtime override
# CMAKE_CXX_COMPILER_LAUNCHER shows original cc and isn't clear in logs etc.
mkdir -p '$(CMAKE_TOOLCHAIN_DIR)'
(echo 'option(MXE_USE_CCACHE "Enable ccache by default" ON)'; \
echo 'if(MXE_USE_CCACHE)'; \
echo ' set(CMAKE_C_COMPILER $(PREFIX)/$(BUILD)/bin/$(TARGET)-gcc)'; \
echo ' set(CMAKE_CXX_COMPILER $(PREFIX)/$(BUILD)/bin/$(TARGET)-g++)'; \
echo 'endif()'; \
) > '$(CMAKE_TOOLCHAIN_DIR)/$(PKG).cmake'
endef
else
define $(PKG)_BUILD_$(BUILD)
# remove symlinks
rm -fv '$(PREFIX)/$(BUILD)/bin/$(BUILD_CC)' '$(PREFIX)/$(BUILD)/bin/$(BUILD_CXX)'
endef
define $(PKG)_BUILD
# remove symlinks and cmake toolchain
rm -fv '$(PREFIX)/$(BUILD)/bin/$(TARGET)-'*
rm -fv '$(CMAKE_TOOLCHAIN_DIR)/$(PKG).cmake'
endef
endif