You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.4 KiB
112 lines
3.4 KiB
3 years ago
|
# How to install Infer from source
|
||
|
|
||
|
## Binary versions
|
||
|
|
||
|
We provide a binary release of Infer. We encourage you to use this
|
||
|
release as compiling infer's dependencies is time-consuming. Follow
|
||
|
the instructions in our [Getting
|
||
|
Started](http://fbinfer.com/docs/getting-started/#get-infer)
|
||
|
page to install Infer.
|
||
|
|
||
|
|
||
|
## Infer dependencies for MacOSX
|
||
|
|
||
|
Here are the prerequisites to be able to compile Infer on MacOSX. This
|
||
|
is required to compile everything from source.
|
||
|
|
||
|
- opam >= 2.0.0 (instructions [here](https://opam.ocaml.org/doc/Install.html#OSX))
|
||
|
- sqlite
|
||
|
- pkg-config
|
||
|
- Java (only needed for the Java analysis)
|
||
|
- CMake (only needed for the C/Objective-C analysis)
|
||
|
- Ninja (optional, if you wish to use sequential linking when building the
|
||
|
C/Objective-C analysis)
|
||
|
- clang in Xcode command line tools. You can install them with the command
|
||
|
`xcode-select --install` (only needed for the C/Objective-C analysis)
|
||
|
- Xcode >= 6.1 (only needed for the C/Objective-C analysis)
|
||
|
- autoconf >= 2.63 and automake >= 1.11.1 (if building from git)
|
||
|
- gmp
|
||
|
- mpfr
|
||
|
|
||
|
You can install some of these dependencies using
|
||
|
[Homebrew](http://brew.sh/):
|
||
|
|
||
|
```sh
|
||
|
brew install autoconf automake cmake opam pkg-config sqlite gmp mpfr
|
||
|
brew cask install java
|
||
|
```
|
||
|
|
||
|
|
||
|
## Infer dependencies for Linux
|
||
|
|
||
|
Here are the prerequisites to be able to compile Infer on Linux. This
|
||
|
is required to compile everything from source.
|
||
|
|
||
|
- opam >= 2.0.0
|
||
|
- pkg-config
|
||
|
- Java (only needed for the Java analysis)
|
||
|
- gcc >= 5.X or clang >= 3.4 (only needed for the C/Objective-C analysis)
|
||
|
- autoconf >= 2.63 and automake >= 1.11.1 (if building from git)
|
||
|
- CMake (only needed for the C/Objective-C analysis)
|
||
|
- Ninja (optional, if you wish to use sequential linking when building the
|
||
|
C/Objective-C analysis)
|
||
|
|
||
|
See also the distro-specific instructions for Ubuntu and Debian below.
|
||
|
|
||
|
|
||
|
## Install Infer from source
|
||
|
|
||
|
Run the following commands to get Infer up and running:
|
||
|
|
||
|
```sh
|
||
|
# Checkout Infer
|
||
|
git clone https://github.com/facebook/infer.git
|
||
|
cd infer
|
||
|
# Compile Infer
|
||
|
./build-infer.sh java
|
||
|
# install Infer system-wide...
|
||
|
sudo make install
|
||
|
# ...or, alternatively, install Infer into your PATH
|
||
|
export PATH=`pwd`/infer/bin:$PATH
|
||
|
```
|
||
|
|
||
|
Replace `./build-infer.sh java` with `./build-infer.sh clang` to build
|
||
|
the C and Objective-C analyzer from source. Beware that this command
|
||
|
may take a really long time because it will compile a custom version
|
||
|
of clang. This custom version is used by Infer to parse C and
|
||
|
Objective-C source code.
|
||
|
|
||
|
See `./build-infer.sh --help` for more options, eg `./build-infer.sh`
|
||
|
on its own will build the analyzers for both Java and C/ObjC.
|
||
|
|
||
|
|
||
|
## Install Infer from source without opam
|
||
|
|
||
|
If for some reason you prefer to install Infer's OCaml dependencies by
|
||
|
some means other than opam, you can still compile Infer by running:
|
||
|
|
||
|
```sh
|
||
|
./autogen.sh
|
||
|
./configure # Disable Java or C/C++/ObjC analyzers with --disable-java-analyzers or --disable-c-analyzers
|
||
|
make
|
||
|
# install Infer system-wide...
|
||
|
sudo make install
|
||
|
# ...or, alternatively, install Infer into your PATH
|
||
|
export PATH=`pwd`/infer/bin:$PATH
|
||
|
```
|
||
|
|
||
|
|
||
|
## How to install the dependencies on Linux
|
||
|
|
||
|
See the Dockerfile in docker/ for inspiration. It includes the
|
||
|
dependencies needed to build Infer on Debian 9 (stretch).
|
||
|
|
||
|
|
||
|
### Setting up opam
|
||
|
|
||
|
Get opam from your distribution, or from the
|
||
|
[opam website](http://opam.ocaml.org/doc/Install.html#Binarydistribution).
|
||
|
|
||
|
The OCaml dependencies needed by Infer are automatically handled by
|
||
|
opam when running `./build-infer.sh`.
|