]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/cargo/cargo.mk
lrzsz: install symlinks for XMODEM and YMODEM
[coffee/buildroot.git] / package / cargo / cargo.mk
1 ################################################################################
2 #
3 # cargo
4 #
5 ################################################################################
6
7 CARGO_VERSION = 0.26.0
8 CARGO_SITE = $(call github,rust-lang,cargo,$(CARGO_VERSION))
9 CARGO_LICENSE = Apache-2.0 or MIT
10 CARGO_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT
11
12 CARGO_DEPS_SHA512 = 6ed2a1644c9b18fc24ddad5350d41b6c36cd5b62de4cf0b748a57b589f4f0ac12f91461989158d58d0892bf6fc2c1626cf574e7e2b9da4b0e35f72dfd88f9048
13 CARGO_DEPS_SITE = https://src.fedoraproject.org/repo/pkgs/cargo/$(CARGO_DEPS_SOURCE)/sha512/$(CARGO_DEPS_SHA512)
14 CARGO_DEPS_SOURCE = cargo-$(CARGO_VERSION)-vendor.tar.xz
15
16 CARGO_INSTALLER_VERSION = 4f994850808a572e2cc8d43f968893c8e942e9bf
17 CARGO_INSTALLER_SITE = $(call github,rust-lang,rust-installer,$(CARGO_INSTALLER_VERSION))
18 CARGO_INSTALLER_SOURCE = rust-installer-$(CARGO_INSTALLER_VERSION).tar.gz
19
20 HOST_CARGO_EXTRA_DOWNLOADS = \
21         $(CARGO_DEPS_SITE)/$(CARGO_DEPS_SOURCE) \
22         $(CARGO_INSTALLER_SITE)/$(CARGO_INSTALLER_SOURCE)
23
24 HOST_CARGO_DEPENDENCIES = \
25         $(BR2_CMAKE_HOST_DEPENDENCY) \
26         host-pkgconf \
27         host-openssl \
28         host-libhttpparser \
29         host-libssh2 \
30         host-libcurl \
31         host-rustc \
32         host-cargo-bin
33
34 HOST_CARGO_SNAP_BIN = $(HOST_CARGO_BIN_DIR)/cargo/bin/cargo
35 HOST_CARGO_HOME = $(HOST_DIR)/share/cargo
36
37 define HOST_CARGO_EXTRACT_DEPS
38         @mkdir -p $(@D)/vendor
39         $(call suitable-extractor,$(CARGO_DEPS_SOURCE)) \
40                 $(HOST_CARGO_DL_DIR)/$(CARGO_DEPS_SOURCE) | \
41                 $(TAR) --strip-components=1 -C $(@D)/vendor $(TAR_OPTIONS) -
42 endef
43
44 HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_DEPS
45
46 define HOST_CARGO_EXTRACT_INSTALLER
47         @mkdir -p $(@D)/src/rust-installer
48         $(call suitable-extractor,$(CARGO_INSTALLER_SOURCE)) \
49                 $(HOST_CARGO_DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \
50                 $(TAR) --strip-components=1 -C $(@D)/src/rust-installer $(TAR_OPTIONS) -
51 endef
52
53 HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_INSTALLER
54
55 define HOST_CARGO_SETUP_DEPS
56         mkdir -p $(@D)/.cargo
57         ( \
58                 echo "[source.crates-io]"; \
59                 echo "registry = 'https://github.com/rust-lang/crates.io-index'"; \
60                 echo "replace-with = 'vendored-sources'"; \
61                 echo "[source.vendored-sources]"; \
62                 echo "directory = '$(@D)/vendor'"; \
63         ) > $(@D)/.cargo/config
64 endef
65
66 HOST_CARGO_PRE_CONFIGURE_HOOKS += HOST_CARGO_SETUP_DEPS
67
68 HOST_CARGO_SNAP_OPTS = \
69         --release \
70         $(if $(VERBOSE),--verbose)
71
72 HOST_CARGO_ENV = \
73         RUSTFLAGS="-Clink-arg=-Wl,-rpath,$(HOST_DIR)/lib" \
74         CARGO_HOME=$(HOST_CARGO_HOME)
75
76 define HOST_CARGO_BUILD_CMDS
77         (cd $(@D); $(HOST_MAKE_ENV) $(HOST_CARGO_ENV) $(HOST_CARGO_SNAP_BIN) \
78                 build $(HOST_CARGO_SNAP_OPTS))
79 endef
80
81 define HOST_CARGO_INSTALL_CMDS
82         $(INSTALL) -D -m 0755 $(@D)/target/release/cargo $(HOST_DIR)/bin/cargo
83         $(INSTALL) -D package/cargo/config.in \
84                 $(HOST_DIR)/share/cargo/config
85         $(SED) 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \
86                 $(HOST_DIR)/share/cargo/config
87         $(SED) 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \
88                 $(HOST_DIR)/share/cargo/config
89 endef
90
91 $(eval $(host-generic-package))