#build-tool #platform #package #manager #lingo #lingua #franca

build lingua-franca

Package manager and build tool for the Lingua Franca coordination language

2 releases

new 0.2.2 Dec 10, 2024
0.2.1 Dec 10, 2024
0.2.0 Nov 17, 2023

#109 in Build Utils

Download history 10/week @ 2024-09-23 285/week @ 2024-12-09

285 downloads per month

BSD-2-Clause and GPL-3.0-or-later

110KB
2.5K SLoC

Lingo - A build tool for Lingua Franca programs

Contact: tassilo-tanneberger@tu-dresden.de

Lingo is a one-stop build tool for the Lingua Franca project. Lingo will manage your dependencies, configure build scripts and will potentially cross-compile for embedded platforms.

Getting started

Lingo is a Rust project and is built with cargo. To install it simply run cargo install --path .

The command line interface

Build system for the Lingua Franca coordination language

Usage: lingo [OPTIONS] <COMMAND>

Commands:
  init    Initialize a Lingua Franca package
  build   Compile one or multiple binaries in a Lingua Franca package
  update  Update the dependencies and potentially build tools
  run     Build and run binaries
  clean   Remove build artifacts
  help    Print this message or the help of the given subcommand(s)

Options:
  -q, --quiet    Do not produce any output
  -v, --verbose  Provide more detailed feedback
  -h, --help     Print help
  -V, --version  Print version

The toml-based package configurations

The Lingo.toml may look something like this.

[package]
name = "example_project"
version = "0.1.0"
authors = ["tassilo.tannerber@tu-dresden.de"]
homepage = "https://lf-lang.org"
license = "Weird Stallman License"
description = "A little Lingo.toml for people"

# a library exported by this LF Package
[lib]
name = "websocket"
location = "./src/lib"
target = "C"
platform = "Native"

[lib.properties]
cmake-include="./websocket.cmake"

# first binary in the project
[[app]]
name = "git-hook"
target = "cpp"
main = "src/Main.lf"

# replacement for target properties
[[app.properties]]
cmake-include = "./my-cmake.cmake"
logging = "info"

# dependencies
[[dependencies]]
mqtt = {version=">=0.1", git="https://github.com/LF-Community/mqtt.git", branch="main"}

Supported Platforms

We mainly support Linux and MacOs, support for windows is secondary.

Dependencies

~12–25MB
~378K SLoC