]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/rust/rust.mk
lrzsz: install symlinks for XMODEM and YMODEM
[coffee/buildroot.git] / package / rust / rust.mk
1 ################################################################################
2 #
3 # rust
4 #
5 ################################################################################
6
7 RUST_VERSION = 1.25.0
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
12
13 HOST_RUST_PROVIDES = host-rustc
14
15 HOST_RUST_DEPENDENCIES = \
16         toolchain \
17         host-rust-bin \
18         host-cargo-bin \
19         host-python \
20         $(BR2_CMAKE_HOST_DEPENDENCY)
21
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"'
26 else
27 HOST_RUST_JEMALLOC_ENABLED = false
28 endif
29
30 HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0)
31
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
37 # files
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}; \
43         done
44 endef
45
46 HOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES
47
48 define HOST_RUST_CONFIGURE_CMDS
49         ( \
50                 echo '[build]'; \
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)'; \
60                 echo '[install]'; \
61                 echo 'prefix = "$(HOST_DIR)"'; \
62                 echo '[rust]'; \
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); \
67         ) > $(@D)/config.toml
68 endef
69
70 define HOST_RUST_BUILD_CMDS
71         cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py build
72 endef
73
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
77 endef
78
79 $(eval $(host-generic-package))