mirror of
https://github.com/openwrt/packages.git
synced 2025-01-31 01:22:13 +00:00
0dfc1b508d
This allows cargo to use make's jobserver when building packages, by marking the cargo command as recursive (with the + prefix[1]) and setting MAKEFLAGS. This also: * Give cargo/x.py the build directory instead of having to change the current directory (and opening subshells) * Set PKG_BUILD_PARALLEL/HOST_BUILD_PARALLEL for Rust packages to enable the use of make's jobserver [1]: https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html Signed-off-by: Jeffery To <jeffery.to@gmail.com>
52 lines
1.3 KiB
Makefile
52 lines
1.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
|
|
|
|
# Variables (all optional) to be set in package Makefiles:
|
|
#
|
|
# RUST_HOST_FEATURES - list of options, default empty
|
|
#
|
|
# Space or comma separated list of features to activate
|
|
#
|
|
# e.g. RUST_HOST_FEATURES:=enable-foo,with-bar
|
|
|
|
ifeq ($(origin RUST_INCLUDE_DIR),undefined)
|
|
RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
|
endif
|
|
include $(RUST_INCLUDE_DIR)/rust-values.mk
|
|
|
|
CARGO_HOST_VARS= \
|
|
$(CARGO_HOST_CONFIG_VARS) \
|
|
CC=$(HOSTCC_NOCACHE) \
|
|
MAKEFLAGS="$(HOST_JOBS)"
|
|
|
|
# $(1) path to the package (optional)
|
|
# $(2) additional arguments to cargo (optional)
|
|
define Host/Compile/Cargo
|
|
+$(CARGO_HOST_VARS) \
|
|
cargo install -v \
|
|
--profile $(CARGO_HOST_PROFILE) \
|
|
$(if $(RUST_HOST_FEATURES),--features "$(RUST_HOST_FEATURES)") \
|
|
--root $(HOST_INSTALL_DIR) \
|
|
--path "$(HOST_BUILD_DIR)/$(if $(strip $(1)),$(strip $(1)))" \
|
|
$(if $(filter --jobserver%,$(HOST_JOBS)),,-j1) \
|
|
$(2)
|
|
endef
|
|
|
|
define Host/Uninstall/Cargo
|
|
+$(CARGO_HOST_VARS) \
|
|
cargo uninstall -v \
|
|
--root $(HOST_INSTALL_DIR) \
|
|
|| true
|
|
endef
|
|
|
|
define RustBinHostBuild
|
|
define Host/Install
|
|
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin
|
|
$(INSTALL_BIN) $(HOST_INSTALL_DIR)/bin/* $(STAGING_DIR_HOSTPKG)/bin/
|
|
endef
|
|
endef
|
|
|
|
Host/Compile=$(call Host/Compile/Cargo)
|
|
Host/Uninstall=$(call Host/Uninstall/Cargo)
|