Skip to content

Commit

Permalink
Update README.arm.md based on recent improvements.
Browse files Browse the repository at this point in the history
[ci skip]
  • Loading branch information
Viral B. Shah committed Jul 25, 2015
1 parent 7f22390 commit 0cb9e45
Showing 1 changed file with 13 additions and 26 deletions.
39 changes: 13 additions & 26 deletions README.arm.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ Chromebooks running Ubuntu Linux under Crouton, Raspberry Pi systems
and Odroid boards. This is a work in progress - several tests are
known to fail, and backtraces are not available.

Most of the build failures in building the Julia system image are due
to LLVM not being able to detect the correct ARM processor type and
features. Experimenting with different `JULIA_CPU_ARCH` settings can
help in such cases. For example, this is needed on Raspberry Pi, as
discussed below.
Julia on ARM can be built by simply typing `make`, which will download all
the relevant libraries. This is the *recommended* way, and it will take a
few hours.

If you get SIGILL during sysimg.o creation, it is likely that your cpu does not support VFP.
File an issue on the Julia issue tracker with the contents of /proc/cpuinfo.

This is the list of known issues on ARM:
[https://github.com/JuliaLang/julia/labels/arm](https://github.com/JuliaLang/julia/labels/arm)
Expand All @@ -19,19 +20,7 @@ This is the list of known issues on ARM:
We recommend using at least Ubuntu 14.04 and gcc 4.8, which is part of the
standard `build-essentials`.

Julia on ARM can be built by simply typing `make`, which will download all
the relevant libraries. This is the *recommended* way, and it will take a
few hours.

OpenBLAS detects the target architecture reasonably well, but in case
it does not, you can force the target architecture should you need to in
`Make.user`.

````
override OPENBLAS_TARGET_ARCH=ARMV7
````

Similarly, one can install other system libraries instead of building them,
One can install other system libraries instead of building them,
should the build be troublesome, by adding the following lines in `Make.user`:

````
Expand All @@ -50,6 +39,9 @@ The following command will install all the necessary libraries on Ubuntu.
sudo apt-get install libblas3gf liblapack3gf libfftw3-dev libgmp3-dev libmpfr-dev libblas-dev liblapack-dev cmake gcc-4.8 g++-4.8 gfortran libgfortran3 m4 libedit-dev
````

Note that OpenBLAS only supports ARMv7. For older ARM variants, using the reference BLAS
may be the simplest thing to do.

# ARM specific build problems

If you run into issues building LLVM, see these notes:
Expand All @@ -58,12 +50,12 @@ If you run into issues building LLVM, see these notes:
# Raspberry Pi

The Raspberry Pi ARM CPU type is not detected by LLVM.
Before starting the build, it is recommented to add `export JULIA_CPU_ARCH=arm1176jzf-s`
to your Make.user file to tune the generated code for your CPU architecture.
Before starting the build, it is recommended to do `export JULIA_CPU_ARCH=arm1176jzf-s`
at the shell to tune the generated code for your CPU architecture.

# Raspberry Pi 2

In the case of Raspberry Pi 2, download LLVM binaries from the LLVM website, since building LLVM on our own for some reason does not produce a working build.
In the case of Raspberry Pi 2, in case the default build fails, download LLVM binaries from the LLVM website.

1. Download the [LLVM 3.6.1 binaries for ARMv7a] (http:https://llvm.org/releases/3.6.1/clang+llvm-3.6.1-armv7a-linux-gnueabihf.tar.xz) and extract them in a local directory.
2. For each file in the extracted `bin`, `include`, and `lib` subdirectories, create symlinks from the corresponding directory under `/usr/local`.
Expand All @@ -72,11 +64,6 @@ In the case of Raspberry Pi 2, download LLVM binaries from the LLVM website, sin
override USE_SYSTEM_LLVM=1
```

# SIGILL during sysimg.o creation

Its likely that your cpu does not support VFP. File an issue on the Julia issue tracker with the contents of /proc/cpuinfo.


# Chromebook

On Chromebooks, you have to first install Crouton. If you do not have
Expand Down

0 comments on commit 0cb9e45

Please sign in to comment.