1 unstable release

0.2.0 Nov 17, 2023

#251 in Build Utils

22 downloads per month

BSD-2-Clause

52KB
1K 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 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

lingua-franca package manager and build tool 0.1.2
tassilo.tanneberger@tu-dresden.de
Build system of lingua-franca projects

USAGE:
    lingo [OPTIONS] <SUBCOMMAND>

OPTIONS:
    -b, --backend <BACKEND>    Force lingo to use the specified backend [default: cli]
    -h, --help                 Print help information
    -V, --version              Print version information

SUBCOMMANDS:
    build     Compile the current package
    clean     Remove build artifacts from the package
    help      Print this message or the help of the given subcommand(s)
    init      Initialize a new package
    run       Build and run a main program in the package
    update    Update all the dependencies in the package

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"

# shared properties of all binaries
[properties]
fast = true

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

# dependencies
[[app.dependencies]]
git = {version = "0.3.2"}
tarfetcher = {version = "0.4.2"}

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

# second binary
[[app]]
name = "embedded"
# main_reactor = "src/SayHello.lf"
target = "zephyr"

[[app.dependencies]]
blink = {version = "0.1.2"}

[[app.properties]]
no-compile = true

Dependencies

~21–33MB
~539K SLoC