From e371cae6bbd7a812e363aa723b1d106389feeb02 Mon Sep 17 00:00:00 2001 From: Jeroen Ooms Date: Wed, 11 Oct 2023 13:03:36 +0200 Subject: [PATCH] Use script to set rust arch, support arm64. Fixes #19 --- src/Makevars.win | 2 +- tools/rustarch.R | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tools/rustarch.R diff --git a/src/Makevars.win b/src/Makevars.win index 7a9e3ca..31d3b73 100644 --- a/src/Makevars.win +++ b/src/Makevars.win @@ -1,4 +1,4 @@ -TARGET = $(subst 64,x86_64,$(subst 32,i686,$(WIN)))-pc-windows-gnu +TARGET = $(shell "$(R_HOME)/bin$(R_ARCH_BIN)/Rscript.exe" "../tools/rustarch.R") LIBDIR = myrustlib/target/$(TARGET)/release STATLIB = $(LIBDIR)/libmyrustlib.a PKG_LIBS = -L$(LIBDIR) -lmyrustlib -lws2_32 -ladvapi32 -lgdi32 -lbcrypt -lcrypt32 -luserenv -lntdll diff --git a/tools/rustarch.R b/tools/rustarch.R new file mode 100644 index 0000000..bd714a8 --- /dev/null +++ b/tools/rustarch.R @@ -0,0 +1,13 @@ +# See notes in FAQ about ARM64 support: +# https://github.com/r-rust/faq#does-rust-support-windows-on-arm64-aarch64 +arch <- if(grepl("aarch", R.version$platform)){ + "aarch64-pc-windows-gnullvm" +} else if(grepl("clang", Sys.getenv('R_COMPILED_BY'))){ + "x86_64-pc-windows-gnullvm" +} else if(grepl("i386", R.version$platform)){ + "i686-pc-windows-gnu" +} else { + "x86_64-pc-windows-gnu" +} + +cat(arch)