I'm finally joining the party here and so far made good progress
following Taras' instructions.
Disclaimer - I'm new to working with R sources.
But would be very happy to help with testing and reporting to
accelerate support native M1 builds.
I am using the R-4.0.3 sources with the latest gfortran release from
Currently I'm facing some issues at step 5.
It seems that for some reasons liblzma cannot be found although it is
well installed via xz at step 3.
I also verified that the liblzma can be easily discovered along the lines of 3.
The lines before ./configure stops are:
checking lzma.h usability... no
checking lzma.h presence... no
checking for lzma.h... no
configure: error: "liblzma library and headers are required"
As mentioned, all is well installed in the include and lib directories at:
Would you have a suggestion where I should link the headers/library to
be picked up by ./configure ?
On Wed, Nov 25, 2020 at 10:41 AM Taras Zakharko wrote:
> 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
> ln -s /opt/homebrew/Cellar/zlib/1.2.11/lib/pkgconfig/zlib.pc
> 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 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