[R-SIG-Mac] Apple Silicon aka M1 Macs

Taras Zakharko t@r@@@z@kh@rko @end|ng |rom uzh@ch
Wed Nov 25 10:40:36 CET 2020

Creating a native Aarch64 build of R on my M1 machine was surprisingly straightforward. Here is a step-by-step instruction of what I did in case someone wants to replicate it:

1. Install native homebrew as described in this blog post under “Multiple Homebrews” (https://soffes.blog/homebrew-on-apple-silicon). You will need to manually chown a bunch of directories, keep an eye on brew output

2. Install the following brew packages

  brew install jpeg libpng libtiff pcre2 pkg-config tcl-tk xz zlib

  Again, pay attention to brew output, it is possible that you will have to manually reset ownership on some directories

3. Make sure that zlib can be discovered by pkg-config by making it’s pc file discoverable

     ln -s /opt/homebrew/Cellar/zlib/1.2.11/lib/pkgconfig/zlib.pc /opt/homebrew/lib/pkgconfig/

4. Install patched gfortran, I used the precompiled package from here: 


5. In  config.site, add the paths to homebrew libraries:


Note: the R-admin manual tells to set CC, CXX, FC in config.sites, but it’s not strictly necessary, the build will work without them

5. Run the configure script, I used

      ./configure --enable-R-shlib --without-x  --enable-memory-profiling --with-blas="-framework Accelerate”

  Check that the summary makes sense. If PNG is disabled, it’s probably because you forgot step 3

6. Build R

      make -j4

7. Check that everything runs


   You should see something like "Platform: arm-apple-darwin20.2.0 (64-bit)” in the startup message. 
All core tests seems to pass and the performance is excellent. 

I have tried building tidyverse and it blocked on testthat. It seems that testthat uses a fairly old version of Catch which doesn’t detect platform correctly and tries to use some x86 inline assembly during the arm build… 

> On 23 Nov 2020, at 11:14, Prof Brian Ripley <ripley using stats.ox.ac.uk> wrote:
> As a follow-up, I now have a preliminary native build of R (using a gfortran compiled from sources forked from GCC and using minor modifications of Tomas Kalibera's instructions).
> The check timing was 148s, with Aqua (not X11) Tcl/Tk built from the sources and no X11 support, so not quite 100% comparable.
> Building the compiler took 45m elapsed with 100% CPU most of the time: the machine (which has no fan) remained cool (unlike my MBP which has a fan but rarely runs it and does get warm to the touch).
> There is a preliminary write-up on 'arm64' Macs in R-devel's R-admin manual (the version on CRAN is as usual a few days behind).
> On 17/11/2020 14:57, Prof Brian Ripley wrote:
>> Mine (a 8GB MBA) arrived today, so I have started doing some comparisons.
>> For the CRAN build of R 4.0.3, §2.8 of R-admin recommends checking the installation with
>> pdf("tests.pdf") ## optional, but prevents flashing graphics windows
>> Sys.setenv(LC_COLLATE = "C", LC_TIME = "C", LANGUAGE = "en")
>> tools::testInstalledBasic("both")
>> tools::testInstalledPackages(scope = "base")
>> tools::testInstalledPackages(scope = "recommended")
>> That took 454s (using Rosetta) against 895s for my late-2016 MBP (2.9GHz i5): happily nothing untoward was reported (some recommended packages give differences from reference output on both systems).
>> You need to install XQuartz to provide the X11() devices and support for package Tcl/Tk: everything I tried using that worked as expected.
>> Having done that post-installation check I would happily use the Intel R on an M1 machine.
>> We plan to check many of the Intel-compiled packages under Rosetta.
>> There are many hours of work ahead to build/test a native toolchain: our goal is to have a native distribution for R 4.1.0 ca April 2021.
> -- 
> Brian D. Ripley,                  ripley using stats.ox.ac.uk
> Emeritus Professor of Applied Statistics, University of Oxford
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac

More information about the R-SIG-Mac mailing list