-
Notifications
You must be signed in to change notification settings - Fork 0
Building PhASAR
Phasar can be installed using the installer scripts as explained in the following.
In the following, we would like to give an complete example of how to install Phasar using an Ubuntu or Unix-like system.
Therefore, we provide an installation script. To install Phasar, just navigate to the top-level directory of PhASAR and use the following command:
$ ./bootstrap.sh
Note, that you need superuser permissions for this.
Done!
Mac OS 10.13.1 or higher only! To install the framework on a Mac we will rely on Homebrew. (https://brew.sh/)
Please follow the instructions down below.
$ brew install boost
$ brew install python3
# Install llvm version 10
$ brew install llvm
# Setting the paths
# Use LLVM's Clang rather than Apple's Clang compiler
$ export CC=/usr/local/opt/llvm/bin/clang
$ export CXX=/usr/local/opt/llvm/bin/clang++
# Set PATH env variable to /usr/local/opt/llvm/bin
# Go to Phasar directory run the following commands
$ git submodule init
$ git submodule update
$ mkdir build
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j $(nproc) # or use a different number of cores to compile it
$ sudo make install # if you wish a system-wise installation
A solution is under implementation.
Set the system's variables for the C and C++ compiler to clang:
$ export CC=/usr/local/bin/clang
$ export CXX=/usr/local/bin/clang++
You may need to adjust the paths according to your system. When you cloned PhASAR from Github you need to initialize PhASAR's submodules before building it:
$ git submodule init
$ git submodule update
If you downloaded PhASAR as a compressed release (e.g. .zip or .tar.gz) you can use the init-submodules-release.sh
script that manually clones the required submodules:
$ utils/init-submodules-release.sh
Navigate into the Phasar directory. The following commands will do the job and compile the Phasar framework:
$ mkdir build
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j $(nproc) # or use a different number of cores to compile it
$ sudo make install # if you wish to install Phasar system wide
When you have used the bootstrap.sh
script to install Phasar, the above steps are already done.
Use them as a reference if you wish to modify Phasar and recompile it.
Depending on your system, you may get some compiler errors from the json library. If this is the case please change the C++ standard in the top-level CMakeLists.txt:
set(CMAKE_CXX_STANDARD 14)
After compilation using cmake the following two binaries can be found in the build/ directory:
- phasar - the actual Phasar command-line tool
- myphasartool - an example tool that shows how tools can be build on top of Phasar
Use the command:
$ tools/phasar-llvm/phasar-llvm --help
in order to display the manual and help message.
$ sudo make install
Please be careful and check if errors occur during the compilation.
When using CMake to compile Phasar the following optional parameters can be used:
Parameter : Type | Effect |
---|---|
BUILD_SHARED_LIBS : BOOL | Build shared libraries (default is OFF) |
CMAKE_BUILD_TYPE : STRING | Build Phasar in 'Debug' or 'Release' mode (default is 'Debug') |
CMAKE_INSTALL_PREFIX : PATH | Path where Phasar will be installed if “make install” is invoked or the “install” target is built (default is /usr/local) |
PHASAR_BUILD_DOC : BOOL | Build Phasar documentation (default is OFF) |
PHASAR_BUILD_UNITTESTS : BOOL | Build Phasar unittests (default is OFF) |
PHASAR_ENABLE_PAMM : STRING | Enable the performance measurement mechanism ('Off', 'Core' or 'Full', default is Off) |
PHASAR_ENABLE_PIC : BOOL | Build Position-Independed Code (default is ON) |
PHASAR_ENABLE_WARNINGS : BOOL | Enable compiler warnings (default is ON) |
You can use these parameters either directly or modify the installer-script bootstrap.sh
C++'s long compile times are always a pain. As shown in the above, when using cmake the compilation can easily be run in parallel, resulting in shorter compilation times. Make use of it!
To test if everything works as expected please run the following command:
$ phasar-llvm --module test/build_systems_tests/installation_tests/module.ll -D IFDSSolverTest
If you obtain output other than a segmentation fault or an exception terminating the program abnormally everything works as expected.
- Home
- Reference Material
- Getting Started:
- Building PhASAR
- Using PhASAR with Docker
- A few uses of PhASAR
- Writing a Data Flow Analysis
- Whole Program Analysis (Using WLLVM)
- Using PhASAR as a library (TBA)
- Coding Conventions
- Contributing to PhASAR
- Errors and bug reporting
- OS Support