about summary refs log tree commit diff
path: root/tvix/eval/build.rs
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2022-10-12T09·26-0700
committertazjin <tazjin@tvl.su>2022-10-24T12·20+0000
commitf7ba502005d6376328e1e2591d70973d4f1d6b15 (patch)
treec1a78d6a960cc4766b69d77de00e5b4f599c4f83 /tvix/eval/build.rs
parente2f0967d3fd44cac78ac50425bc2dbe65fd4a8c4 (diff)
feat(tvix/eval): implement builtins.currentSystem r/5190
This commit implements builtins.currentSystem, by capturing the
cargo environment variable `TARGET` and exposing it to rustc as
`TVIX_CURRENT_SYSTEM` so it can be inserted into the source code
using `env!()`.

The resulting value needs to be massaged a bit, since it is an "LLVM
triple".  The current code should work for all the platforms for
which cppnix works (thanks qyliss for generating the list!).  It
does *not* reject all of the triples that cppnix's configure.ac
rejects -- it is much more forgiving.  We can tighten this up in a
future commit.

Signed-off-by: Adam Joseph <adam@westernsemico.com>
Change-Id: I947f504b2af5a7fee8cf0cb301421d2fc9174ce1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6986
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Diffstat (limited to 'tvix/eval/build.rs')
-rw-r--r--tvix/eval/build.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/tvix/eval/build.rs b/tvix/eval/build.rs
new file mode 100644
index 0000000000..a9c9a78b06
--- /dev/null
+++ b/tvix/eval/build.rs
@@ -0,0 +1,9 @@
+use std::env;
+
+fn main() {
+    println!(
+        "cargo:rustc-env=TVIX_CURRENT_SYSTEM={}",
+        &env::var("TARGET").unwrap()
+    );
+    println!("cargo:rerun-if-changed-env=TARGET")
+}