1################################################################################ 2# 3# rust 4# 5################################################################################ 6 7# When updating this version, check whether support/download/cargo-post-process 8# still generates the same archives. 9RUST_VERSION = 1.74.1 10RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz 11RUST_SITE = https://static.rust-lang.org/dist 12RUST_LICENSE = Apache-2.0 or MIT 13RUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT 14 15HOST_RUST_PROVIDES = host-rustc 16 17HOST_RUST_DEPENDENCIES = \ 18 toolchain \ 19 host-pkgconf \ 20 host-python3 \ 21 host-rust-bin \ 22 host-openssl \ 23 host-zlib \ 24 $(BR2_CMAKE_HOST_DEPENDENCY) 25 26HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0) 27 28# Some vendor crates contain Cargo.toml.orig files. The associated 29# .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but 30# support/scripts/apply-patches.sh will delete them. This will cause the build 31# to fail, as Cargo will not be able to find the file and verify the checksum. 32# So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json 33# files 34define HOST_RUST_EXCLUDE_ORIG_FILES 35 for file in $$(find $(@D) -name '*.orig'); do \ 36 crate=$$(dirname $${file}); \ 37 fn=$${crate}/.cargo-checksum.json; \ 38 sed -i -e 's/"Cargo.toml.orig":"[a-z0-9]\+",//g' $${fn}; \ 39 done 40endef 41 42HOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES 43 44define HOST_RUST_CONFIGURE_CMDS 45 ( \ 46 echo '[build]'; \ 47 echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \ 48 echo 'cargo = "$(HOST_RUST_BIN_DIR)/cargo/bin/cargo"'; \ 49 echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \ 50 echo 'python = "$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR)"'; \ 51 echo 'submodules = false'; \ 52 echo 'vendor = true'; \ 53 echo 'extended = true'; \ 54 echo 'tools = ["cargo"]'; \ 55 echo 'compiler-docs = false'; \ 56 echo 'docs = false'; \ 57 echo 'verbose = $(HOST_RUST_VERBOSITY)'; \ 58 echo '[install]'; \ 59 echo 'prefix = "$(HOST_DIR)"'; \ 60 echo 'sysconfdir = "$(HOST_DIR)/etc"'; \ 61 echo '[rust]'; \ 62 echo 'channel = "stable"'; \ 63 echo 'musl-root = "$(STAGING_DIR)"' ; \ 64 echo '[target.$(RUSTC_TARGET_NAME)]'; \ 65 echo 'cc = "$(TARGET_CROSS)gcc"'; \ 66 echo '[llvm]'; \ 67 echo 'ninja = false'; \ 68 echo 'ldflags = "$(HOST_LDFLAGS)"'; \ 69 ) > $(@D)/config.toml 70endef 71 72define HOST_RUST_BUILD_CMDS 73 cd $(@D); $(HOST_MAKE_ENV) $(HOST_PKG_CARGO_ENV) \ 74 $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py build 75endef 76 77HOST_RUST_INSTALL_OPTS = \ 78 --prefix=$(HOST_DIR) \ 79 --disable-ldconfig 80 81define HOST_RUST_INSTALL_RUSTC 82 cd $(@D)/build/tmp/tarball/rust/$(RUSTC_HOST_NAME)/rust-$(RUST_VERSION)-$(RUSTC_HOST_NAME); \ 83 ./install.sh $(HOST_RUST_INSTALL_OPTS) --components=rustc,cargo,rust-std-$(RUSTC_HOST_NAME) 84endef 85 86ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y) 87define HOST_RUST_INSTALL_LIBSTD_TARGET 88 cd $(@D)/build/tmp/tarball/rust-std/$(RUSTC_TARGET_NAME)/rust-std-$(RUST_VERSION)-$(RUSTC_TARGET_NAME); \ 89 ./install.sh $(HOST_RUST_INSTALL_OPTS) 90endef 91endif 92 93define HOST_RUST_INSTALL_CMDS 94 cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py dist 95 $(HOST_RUST_INSTALL_RUSTC) 96 $(HOST_RUST_INSTALL_LIBSTD_TARGET) 97endef 98 99$(eval $(host-generic-package)) 100