Skip to main content
Version: 0.8.0

Building from Source Code

Prerequisites​

Cloning the Repository​

Please run the following commands to clone the repository and its submodules.

git clone git@github.com:lf-lang/lingua-franca.git
cd lingua-franca
git submodule update --init --recursive

Submodules are checked out over HTTPS by default. In case you want to commit to a submodule and use SSH instead, you can simply change the remote. For example, to change the remote of the reactor-c submodule, you can do this:

cd core/src/main/resources/lib/c/reactor-c
git remote remove origin
git remote add origin git@github.com:lf-lang/reactor-c.git

Building the command line tools​

We use Gradle for building the code within our repository.

For an easy start, the bin/ directory contains scripts for building and running our command line tools, including the compiler lfc. Try to run ./bin/lfc-dev --version. This will first build lfc and then execute it through Gradle.

To build the entire repository, you can simply run ./gradlew build. This will build all tools and also run all formatting checks and unit tests. Note that this does not run our integration tests. For more details on our testing infrastructure, please refer to the Regression Test section.

If you only want to build without running any tests, you can use ./gradlew assemble instead. Both the assemble and the build task will create a distribution package containing our command line tools in build/distribution. There is also an installed version of this package in build/install/lf-cli/. If you run build/install/lf-cli/bin/lfc this will run lfc as it was last build. Thus, you can choose if you want to use bin/lfc-dev, which first builds lfc using the latest code and then runs it, or if you prefer to run ./gradlew build and then separately invoke build/install/lf-cli/bin/lfc.

IDE Integration​

You can use any editor or IDE that you like to work with the code base. However, we would suggest to choose an IDE that comes with good Java (and ideally Kotlin) support and that integrates well with Gradle. We recommend to use our IntelliJ setup.

Building IDEs​

Currently, we provide two IDEs that support Lingua Franca programs. Their source code is located in external repositories. We have a Lingua Franca extension for VS code and an Eclipse based IDE called Epoch. Please refer to the READMEs for build instructions.