1 ################################################################################
5 ################################################################################
8 RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz
9 RUST_SITE = https://static.rust-lang.org/dist
10 RUST_LICENSE = Apache-2.0 or MIT
11 RUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT
13 HOST_RUST_PROVIDES = host-rustc
15 HOST_RUST_DEPENDENCIES = \
20 $(BR2_CMAKE_HOST_DEPENDENCY)
22 ifeq ($(BR2_PACKAGE_JEMALLOC),y)
23 HOST_RUST_DEPENDENCIES += jemalloc
24 HOST_RUST_JEMALLOC_ENABLED = true
25 HOST_RUST_JEMALLOC_CONF = 'jemalloc = "$(STAGING_DIR)/usr/lib/libjemalloc_pic.a"'
27 HOST_RUST_JEMALLOC_ENABLED = false
30 HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0)
32 # Some vendor crates contain Cargo.toml.orig files. The associated
33 # .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but
34 # support/scripts/apply-patches.sh will delete them. This will cause the build
35 # to fail, as Cargo will not be able to find the file and verify the checksum.
36 # So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json
38 define HOST_RUST_EXCLUDE_ORIG_FILES
39 for file in $$(find $(@D) -name '*.orig'); do \
40 crate=$$(dirname $${file}); \
41 fn=$${crate}/.cargo-checksum.json; \
42 sed -i -e 's/"Cargo.toml.orig":"[a-z0-9]\+",//g' $${fn}; \
46 HOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES
48 define HOST_RUST_CONFIGURE_CMDS
51 echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \
52 echo 'cargo = "$(HOST_CARGO_BIN_DIR)/cargo/bin/cargo"'; \
53 echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \
54 echo 'python = "$(HOST_DIR)/bin/python2"'; \
55 echo 'submodules = false'; \
56 echo 'vendor = true'; \
57 echo 'compiler-docs = false'; \
58 echo 'docs = false'; \
59 echo 'verbose = $(HOST_RUST_VERBOSITY)'; \
61 echo 'prefix = "$(HOST_DIR)"'; \
63 echo 'use-jemalloc = $(HOST_RUST_JEMALLOC_ENABLED)'; \
64 echo '[target.$(RUSTC_TARGET_NAME)]'; \
65 echo 'cc = "$(TARGET_CROSS)gcc"'; \
66 echo $(HOST_RUST_JEMALLOC_CONF); \
70 define HOST_RUST_BUILD_CMDS
71 cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py build
74 define HOST_RUST_INSTALL_CMDS
75 cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py dist
76 cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py install
79 $(eval $(host-generic-package))