xref: /OK3568_Linux_fs/buildroot/package/rust/rust.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# rust
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunRUST_VERSION = 1.54.0
8*4882a593SmuzhiyunRUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz
9*4882a593SmuzhiyunRUST_SITE = https://static.rust-lang.org/dist
10*4882a593SmuzhiyunRUST_LICENSE = Apache-2.0 or MIT
11*4882a593SmuzhiyunRUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunHOST_RUST_PROVIDES = host-rustc
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunHOST_RUST_DEPENDENCIES = \
16*4882a593Smuzhiyun	toolchain \
17*4882a593Smuzhiyun	host-rust-bin \
18*4882a593Smuzhiyun	host-openssl \
19*4882a593Smuzhiyun	$(BR2_CMAKE_HOST_DEPENDENCY)
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PYTHON3),y)
22*4882a593SmuzhiyunHOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
23*4882a593SmuzhiyunHOST_RUST_DEPENDENCIES += host-python3
24*4882a593Smuzhiyunelse
25*4882a593SmuzhiyunHOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
26*4882a593SmuzhiyunHOST_RUST_DEPENDENCIES += host-python
27*4882a593Smuzhiyunendif
28*4882a593Smuzhiyun
29*4882a593SmuzhiyunHOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0)
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun# Some vendor crates contain Cargo.toml.orig files. The associated
32*4882a593Smuzhiyun# .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but
33*4882a593Smuzhiyun# support/scripts/apply-patches.sh will delete them. This will cause the build
34*4882a593Smuzhiyun# to fail, as Cargo will not be able to find the file and verify the checksum.
35*4882a593Smuzhiyun# So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json
36*4882a593Smuzhiyun# files
37*4882a593Smuzhiyundefine HOST_RUST_EXCLUDE_ORIG_FILES
38*4882a593Smuzhiyun	for file in $$(find $(@D) -name '*.orig'); do \
39*4882a593Smuzhiyun		crate=$$(dirname $${file}); \
40*4882a593Smuzhiyun		fn=$${crate}/.cargo-checksum.json; \
41*4882a593Smuzhiyun		sed -i -e 's/"Cargo.toml.orig":"[a-z0-9]\+",//g' $${fn}; \
42*4882a593Smuzhiyun	done
43*4882a593Smuzhiyunendef
44*4882a593Smuzhiyun
45*4882a593SmuzhiyunHOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES
46*4882a593Smuzhiyun
47*4882a593Smuzhiyundefine HOST_RUST_CONFIGURE_CMDS
48*4882a593Smuzhiyun	( \
49*4882a593Smuzhiyun		echo '[build]'; \
50*4882a593Smuzhiyun		echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \
51*4882a593Smuzhiyun		echo 'cargo = "$(HOST_RUST_BIN_DIR)/cargo/bin/cargo"'; \
52*4882a593Smuzhiyun		echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \
53*4882a593Smuzhiyun		echo 'python = "$(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION)"'; \
54*4882a593Smuzhiyun		echo 'submodules = false'; \
55*4882a593Smuzhiyun		echo 'vendor = true'; \
56*4882a593Smuzhiyun		echo 'extended = true'; \
57*4882a593Smuzhiyun		echo 'tools = ["cargo"]'; \
58*4882a593Smuzhiyun		echo 'compiler-docs = false'; \
59*4882a593Smuzhiyun		echo 'docs = false'; \
60*4882a593Smuzhiyun		echo 'verbose = $(HOST_RUST_VERBOSITY)'; \
61*4882a593Smuzhiyun		echo '[install]'; \
62*4882a593Smuzhiyun		echo 'prefix = "$(HOST_DIR)"'; \
63*4882a593Smuzhiyun		echo 'sysconfdir = "$(HOST_DIR)/etc"'; \
64*4882a593Smuzhiyun		echo '[rust]'; \
65*4882a593Smuzhiyun		echo 'channel = "stable"'; \
66*4882a593Smuzhiyun		echo '[target.$(RUSTC_TARGET_NAME)]'; \
67*4882a593Smuzhiyun		echo 'cc = "$(TARGET_CROSS)gcc"'; \
68*4882a593Smuzhiyun		echo '[llvm]'; \
69*4882a593Smuzhiyun		echo 'ninja = false'; \
70*4882a593Smuzhiyun	) > $(@D)/config.toml
71*4882a593Smuzhiyunendef
72*4882a593Smuzhiyun
73*4882a593Smuzhiyundefine HOST_RUST_BUILD_CMDS
74*4882a593Smuzhiyun	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py build
75*4882a593Smuzhiyunendef
76*4882a593Smuzhiyun
77*4882a593Smuzhiyundefine HOST_RUST_INSTALL_CMDS
78*4882a593Smuzhiyun	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py dist
79*4882a593Smuzhiyun	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py install
80*4882a593Smuzhiyunendef
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun$(eval $(host-generic-package))
83