Environment setup¶
Scala Native has the following build dependencies:
- Java 8 or newer
- sbt 1.1.6 or newer
- LLVM/Clang 6.0 or newer
And following completely optional runtime library dependencies:
- Boehm GC 7.6.0 (optional)
- zlib 1.2.8 or newer (optional)
These are only required if you use the corresponding feature.
Installing clang and runtime dependencies¶
Scala Native requires Clang, which is part of the LLVM toolchain. The recommended LLVM version is the most recent available for your system provided that it works with Scala Native. The Scala Native sbt plugin checks to ensure that clang is at least the minimum version shown above.
Scala Native uses the immix garbage collector by default. You can use the Boehm garbage collector instead. If you chose to use that alternate garbage collector both the native library and header files must be provided at build time.
If you use classes from the java.util.zip for compression zlib needs to be installed.
Note
Some package managers provide the library header files in separate -dev packages.
Here are install instructions for a number of operating systems Scala Native has been used with:
macOS
$ brew install llvm
$ brew install bdw-gc # optional
Note 1: Xcode should work as an alternative if preferred: https://apps.apple.com/us/app/xcode/id497799835
Note 2: A version of zlib that is sufficiently recent comes with the installation of macOS.
Ubuntu
$ sudo apt install clang
$ sudo apt install libgc-dev # optional
Arch Linux
$ sudo pacman -S llvm clang build-essential
$ sudo pacman -S gc # optional
Note: A version of zlib that is sufficiently recent comes with the installation of Arch Linux.
Fedora 33
$ sudo dnf install llvm clang
$ sudo dnf groupinstall "Development Tools"
$ sudo dnf install gc-devel zlib-devel # both optional
FreeBSD
$ pkg install llvm110
$ pkg install boehm-gc # optional
Note: A version of zlib that is sufficiently recent comes with the installation of FreeBSD.
Nix/NixOS
$ wget https://raw.githubusercontent.com/scala-native/scala-native/master/scripts/scala-native.nix
$ nix-shell scala-native.nix -A clangEnv
Continue to Building projects with sbt.