This is the main source code repository for Security Enhanced LLVM (SLLVM).
This section documents the current best way to build and install the SLLVM toolchain from source. The GNU make based build system has been developed to work on a fresh Ubuntu 18.04.1 LTS installation, but it should be fairly straightforward to port to other GNU/Linux distributions.
-
Make sure you have installed the following dependencies.
- GNU make 3.81 or later
- git
sudo apt install make git
-
Clone the Git repository.
git clone https://github.com/hanswinderix/sllvm.git cd sllvm
-
Install the following additional dependencies.
- curl
- cmake 3.4.3 or later
- g++ 4.7 or later
- texinfo
- Python 3
- pip3 (for Python 3+)
- pyelftools (Python 3+)
- msp430-gcc 4.6 or later
- expect
- tcl
- iverilog
- clang-sancus
sudo -H make install-deps
Note: The msp430-gcc and clang-sancus dependencies are only required to build the legacy sancus compiler. These dependencies will disappear in the future.
-
(Optional) Create and edit Makefile.local for local build configuration.
The following GNU make variables can be set.
Variable name Purpose JOBS Specifies the number of jobs to run simultaneously BUILD_TYPE Debug or Release build SANCUS_KEY Sancus master key in hexadecimal notation -
Fetch other repositories and configure the build.
$ make fetch $ make configure
-
Build and install.
$ make install
$ make test-sancus
See Sancus Examples for examples on how to develop Sancus protected modules with the SLLVM-based toolchain.
See the Security Enhanced LLVM master's thesis for more information on how to develop Intel SGX enclaves in C with the SLLVM-based toolchain.
See the Security Enhanced LLVM master's thesis for more information on how to develop Sancus protected modules in Rust with the SLLVM-based toolchain.
See the Security Enhanced LLVM master's thesis for more information on how to develop Intel SGX enclaves in Rust with the SLLVM-based toolchain.
See LICENSE for details.