diff --git a/mk/config.mk b/mk/config.mk index 1dc21d9b5..60d9cf567 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -31,6 +31,9 @@ HOST_CARGO=env -u RUSTUP_TOOLCHAIN -u CC -u TARGET cargo REDOXFS_MKFS_FLAGS?= ## Set to 1 to enable Podman build, any other value will disable it PODMAN_BUILD?=1 +## Enable sccache to speed up cargo builds +## only do this by default if this is inside podman +SSCACHE_BUILD?=$(PODMAN_BUILD) ## The containerfile to use for the Podman base image CONTAINERFILE?=podman/redox-base-containerfile @@ -41,11 +44,18 @@ export REDOX_MAKE=make ifneq ($(PODMAN_BUILD),1) HOST_TARGET := $(shell env -u RUSTUP_TOOLCHAIN rustc -vV | grep host | cut -d: -f2 | tr -d " ") ifneq ($(HOST_TARGET),x86_64-unknown-linux-gnu) - # The binary prefix is only built for x86_64 Linux hosts + $(info The binary prefix is only built for x86_64 Linux hosts) PREFIX_BINARY=0 endif endif +ifeq ($(SSCACHE_BUILD),1) +ifeq (,$(shell command -v sccache)) + $(info sccache not found in PATH) + SSCACHE_BUILD=0 +endif +endif + UNAME := $(shell uname) ifeq ($(UNAME),Darwin) FUMOUNT=umount @@ -112,6 +122,13 @@ RANLIB=$(GNU_TARGET)-gcc-ranlib READELF=$(GNU_TARGET)-readelf STRIP=$(GNU_TARGET)-strip +ifeq ($(SSCACHE_BUILD),1) + CC_WRAPPER:=sccache + CC=$(CC_WRAPPER) $(GNU_TARGET)-gcc + CXX=$(CC_WRAPPER) $(GNU_TARGET)-g++ + export RUSTC_WRAPPER:=$(CC_WRAPPER) +endif + ## Rust cross compile variables export AR_$(subst -,_,$(TARGET)):=$(AR) export CC_$(subst -,_,$(TARGET)):=$(CC) diff --git a/podman/rustinstall.sh b/podman/rustinstall.sh index 2fce22bdb..f72851d95 100755 --- a/podman/rustinstall.sh +++ b/podman/rustinstall.sh @@ -7,3 +7,6 @@ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable cargo +stable install --force --version 0.1.1 cargo-config cargo +stable install --force --version 1.16.0 just cargo +stable install --force --version 0.27.0 cbindgen + +SCCACHE_PATH=https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-$(uname -m)-unknown-linux-musl.tar.gz +curl -sSL $SCCACHE_PATH | tar -xz -C ~/.cargo/bin --strip-components=1 --wildcards '*/sccache'