Using sccache makes recompilation of rustc and Rust packages faster.
This also makes the rust package visible in menuconfig, in order for the
sccache options to be accessible.
Signed-off-by: Jeffery To <redacted>
--- /dev/null
+menu "Configuration options (for developers)"
+
+config RUST_SCCACHE
+ bool "Use sccache"
+ help
+ Shared compilation cache; see https://github.com/mozilla/sccache
+
+config RUST_SCCACHE_DIR
+ string "Set sccache directory" if RUST_SCCACHE
+ default ""
+ help
+ Store sccache in this directory.
+ If not set, uses './.sccache'
+
+endmenu
TITLE:=Rust Programming Language Compiler
URL:=https://www.rust-lang.org/
DEPENDS:=$(RUST_ARCH_DEPENDS)
- BUILDONLY:=1
endef
define Package/rust/description
guarantee memory safety by using a borrow checker to validate references.
endef
+define Package/rust/config
+ source "$(SOURCE)/Config.in"
+endef
+
# Rust-lang has an uninstall script
RUST_UNINSTALL:=$(STAGING_DIR)/host/lib/rustlib/uninstall.sh
endef
define Host/Compile
+ $(RUST_SCCACHE_VARS) \
CARGO_HOME=$(CARGO_HOME) \
OPENWRT_RUSTC_BOOTSTRAP_CACHE=$(DL_DIR)/rustc \
$(PYTHON) $(HOST_BUILD_DIR)/x.py \
# Support only a subset for now.
RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mipsel||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64)
+ifneq ($(CONFIG_RUST_SCCACHE),)
+ RUST_SCCACHE_DIR:=$(if $(call qstrip,$(CONFIG_RUST_SCCACHE_DIR)),$(call qstrip,$(CONFIG_RUST_SCCACHE_DIR)),$(TOPDIR)/.sccache)
+
+ RUST_SCCACHE_VARS:= \
+ CARGO_INCREMENTAL=0 \
+ RUSTC_WRAPPER=sccache \
+ SCCACHE_DIR=$(RUST_SCCACHE_DIR)
+endif
+
CARGO_HOST_CONFIG_VARS= \
+ $(RUST_SCCACHE_VARS) \
CARGO_HOME=$(CARGO_HOME)
CARGO_HOST_PROFILE:=release
CARGO_PKG_CONFIG_VARS= \
+ $(RUST_SCCACHE_VARS) \
CARGO_BUILD_TARGET=$(RUSTC_TARGET_ARCH) \
CARGO_HOME=$(CARGO_HOME) \
CARGO_PROFILE_RELEASE_OPT_LEVEL=s \