cargo.mk 2.9 KB

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