about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-11-11 20:59:37 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-11-11 20:59:37 +0300
commite0a8f22053868982be59a82865fa11f4fbdf6af0 (patch)
treeddf304d09836195e3cfcca26e99b3daee5b60b2b
parent1def24c5f45df9f8d101cdaec4b6485aa9ad1aae (diff)
downloadrust-e0a8f22053868982be59a82865fa11f4fbdf6af0.tar.gz
rust-e0a8f22053868982be59a82865fa11f4fbdf6af0.zip
rustc_target: Make sure that in-tree targets follow conventions for os and vendor values
-rw-r--r--compiler/rustc_target/src/spec/tests/tests_impl.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/tests/tests_impl.rs b/compiler/rustc_target/src/spec/tests/tests_impl.rs
index f348df7d5a7..bde7cb09bdf 100644
--- a/compiler/rustc_target/src/spec/tests/tests_impl.rs
+++ b/compiler/rustc_target/src/spec/tests/tests_impl.rs
@@ -36,5 +36,18 @@ impl Target {
                 && self.post_link_objects_fallback.is_empty())
                 || self.crt_objects_fallback.is_some()
         );
+        // Keep the default "unknown" vendor instead.
+        assert_ne!(self.vendor, "");
+        if !self.can_use_os_unknown() {
+            // Keep the default "none" for bare metal targets instead.
+            assert_ne!(self.os, "unknown");
+        }
+    }
+
+    // Add your target to the whitelist if it has `std` library
+    // and you certainly want "unknown" for the OS name.
+    fn can_use_os_unknown(&self) -> bool {
+        self.llvm_target == "wasm32-unknown-unknown"
+            || (self.env == "sgx" && self.vendor == "fortanix")
     }
 }