rust: modify Rust packaging to be usable as host-tool only
authorSam Voss <sam.voss@gmail.com>
Wed, 22 Aug 2018 22:33:50 +0000 (17:33 -0500)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Wed, 12 Sep 2018 21:44:57 +0000 (23:44 +0200)
This commit modifies the host-rust virtual package to default to
host-rust-bin when no other selection has been made, as long as the
host supports rust. This allows host only tools to still use rust when
the target architecture does not support it.

Add target-specific variable which is used to differentiate host and
target arch requirements (BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS).

A target package shall depend on this variable where a host package will
use the previously defined BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS. The new
"target" version is selectable for the same set of architectures as
before, but now depends on the host variant.

Signed-off-by: Sam Voss <sam.voss@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Reviewed-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/rust-bin/rust-bin.mk
package/rustc/Config.in.host
package/rustc/rustc.mk

index 923642f08d14c385ef4ebb88520d1cb28399f9ef..7011e188bd31588b6c3c98a8990f50556c915783 100644 (file)
@@ -14,8 +14,11 @@ HOST_RUST_BIN_PROVIDES = host-rustc
 HOST_RUST_BIN_SOURCE = rustc-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz
 
 HOST_RUST_BIN_EXTRA_DOWNLOADS = \
-       rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz \
-       rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME).tar.xz
+       rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz
+
+ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)
+HOST_RUST_BIN_EXTRA_DOWNLOADS += rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME).tar.xz
+endif
 
 HOST_RUST_BIN_LIBSTD_HOST_PREFIX = rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME)/rust-std-$(RUSTC_HOST_NAME)
 
@@ -35,7 +38,6 @@ HOST_RUST_BIN_INSTALL_OPTS = \
        --prefix=$(HOST_DIR) \
        --disable-ldconfig
 
-ifeq ($(BR2_PACKAGE_HOST_RUST_BIN),y)
 define HOST_RUST_BIN_INSTALL_RUSTC
        (cd $(@D); \
                ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS))
@@ -46,6 +48,7 @@ define HOST_RUST_BIN_INSTALL_LIBSTD_HOST
                ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS))
 endef
 
+ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)
 define HOST_RUST_BIN_INSTALL_LIBSTD_TARGET
        (cd $(@D)/std/rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME); \
                ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS))
index 2ae8f89d3f517287936fdc80def2025d606a58e8..c58ffdf3523c1c2a266e003782590b8407e15e85 100644 (file)
@@ -1,4 +1,10 @@
+# All host rust packages should depend on this option
 config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
+       bool
+       default y if BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+
+# All target rust packages should depend on this option
+config BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
        bool
        # The pre-built Rust standard library is only available for the
        # following architectures/ABIs, and is built against glibc.
@@ -12,7 +18,7 @@ config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
        default y if (BR2_mips64 || BR2_mips64el) && !BR2_MIPS_CPU_MIPS64R6 \
                && BR2_MIPS_NABI64
        depends on BR2_TOOLCHAIN_USES_GLIBC
-       depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+       depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
 
 config BR2_PACKAGE_HOST_RUSTC_ARCH
        string
@@ -66,9 +72,11 @@ config BR2_PACKAGE_HOST_RUST_BIN
 
 endchoice
 
+endif
+
 config BR2_PACKAGE_PROVIDES_HOST_RUSTC
        string
        default "host-rust" if BR2_PACKAGE_HOST_RUST
-       default "host-rust-bin" if BR2_PACKAGE_HOST_RUST_BIN
-
-endif
+       # Default to host-rust-bin as long as host arch supports it
+       default "host-rust-bin" if !BR2_PACKAGE_HOST_RUST
+       depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
index bed74f3c2c4e9fbec383717058913c5d0bf470bf..6eea9b4fc50e25691c031d91dd88fe02cbe13ccf 100644 (file)
@@ -7,7 +7,9 @@
 RUSTC_ARCH = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ARCH))
 RUSTC_ABI = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ABI))
 
+ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)
 RUSTC_TARGET_NAME = $(RUSTC_ARCH)-unknown-linux-gnu$(RUSTC_ABI)
+endif
 
 ifeq ($(HOSTARCH),x86)
 RUSTC_HOST_ARCH = i686