diff --git a/.github/actions/environment/action.yaml b/.github/actions/environment/action.yaml new file mode 100644 index 0000000..4e7f8d5 --- /dev/null +++ b/.github/actions/environment/action.yaml @@ -0,0 +1,37 @@ +name: Build toolchain +description: Installs Dependencies and Compiles Lingo + +runs: + using: "composite" + steps: + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + - name: Integration Test + run: | + # setting java17 + ls -alh /usr/lib/jvm/ + # export JAVA_HOME=/usr/lib/jvm/java-17-temurin-amd64 + + # building lingo + cargo b --release + + # installing lingua-franca tests + git clone https://github.com/lf-lang/lingua-franca.git ./lingua-franca + + # installing lfc + curl -Ls https://install.lf-lang.org | bash -s nightly cli + export PATH="$HOME/.local/bin:$PATH" + + # going into lfc repo and checking out the vers + cd ./lingua-franca + git reset nightly + cd .. + + shell: bash diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..19df29c --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,57 @@ +on: + pull_request: + push: + branches: + - main + +name: Test Lingo +jobs: + cpp-test: + name: CPP Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup + uses: ./.github/actions/environment + - name: Integration Test Cpp + run: | + # copying Lingo.toml + cp test/Lingo-Cpp.toml ./lingua-franca/test/Lingo.toml + + cd ./lingua-franca/test/ + ../../target/release/lingo build + + shell: bash + typescript-test: + name: TypeScript Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup + uses: ./.github/actions/environment + - name: Integration Test TypeScript + run: | + # copying Lingo.toml + cp test/Lingo-TypeScript.toml ./lingua-franca/test/Lingo.toml + + cd ./lingua-franca/test/ + ../../target/release/lingo build + + shell: bash + lfc-test: + name: LFC Fallback Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup + uses: ./.github/actions/environment + - name: Integration Test TypeScript + run: | + # copying Lingo.toml + cp test/Lingo-LFC.toml ./lingua-franca/test/Lingo.toml + + cd ./lingua-franca/test/ + ../../target/release/lingo build + + shell: bash + diff --git a/.gitignore b/.gitignore index a56cd70..7c13221 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ sandbox/ build/ **/src-gen/ tmp/ +lingua-franca diff --git a/derivation.nix b/derivation.nix index 0d9792c..19f9a4c 100644 --- a/derivation.nix +++ b/derivation.nix @@ -1,4 +1,4 @@ -{ naersk, src, lib, pkg-config, cmake, zlib, openssl }: +{ naersk, src, lib, pkg-config, cmake, zlib, openssl, glibc}: naersk.buildPackage { pname = "lingo"; @@ -8,8 +8,8 @@ naersk.buildPackage { cargoSha256 = lib.fakeSha256; - nativeBuildInputs = [ pkg-config cmake ]; - buildInputs = [ zlib openssl ]; + nativeBuildInputs = [ pkg-config cmake zlib openssl glibc]; + buildInputs = [ ]; meta = with lib; { description = "Simple package manager for lingua franca"; diff --git a/flake.lock b/flake.lock index 6d288d2..11a72f9 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1688229166, - "narHash": "sha256-9lGDg8K1ASjTThzYjctdgd35WqocIIeakQXs5tAbQsM=", + "lastModified": 1698420672, + "narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=", "owner": "nix-community", "repo": "naersk", - "rev": "714e701eb4ca2491d34d794b98be4b994a796ae7", + "rev": "aeb58d5e8faead8980a807c840232697982d47b9", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688188316, - "narHash": "sha256-CXuQllDKCxtZaB/umnZOvoJ/d4kJguYgffeTA9l1B3o=", + "lastModified": 1699343069, + "narHash": "sha256-s7BBhyLA6MI6FuJgs4F/SgpntHBzz40/qV0xLPW6A1Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8277b539d371bf4308fc5097911aa58bfac1794f", + "rev": "ec750fd01963ab6b20ee1f0cb488754e8036d89d", "type": "github" }, "original": { @@ -34,18 +34,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1688049487, - "narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=", + "lastModified": 1699343069, + "narHash": "sha256-s7BBhyLA6MI6FuJgs4F/SgpntHBzz40/qV0xLPW6A1Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9", + "rev": "ec750fd01963ab6b20ee1f0cb488754e8036d89d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "root": { @@ -75,11 +73,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1687709756, - "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 2cde91a..1b1408f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,5 @@ { inputs = { - nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; - naersk = { url = github:nix-community/naersk; }; diff --git a/sandbox/Lingo.toml b/sandbox/Lingo.toml index ab73e9c..24f4983 100644 --- a/sandbox/Lingo.toml +++ b/sandbox/Lingo.toml @@ -14,9 +14,9 @@ fast = true [[app]] name = "git-hook" target = "Cpp" -main_reactor = "src/Main.lf" +main = "src/Main.lf" dependencies = {} -# main_reactor defaults to src/Main.lf +# main defaults to src/Main.lf # dependencies #[[app.dependencies]] @@ -31,7 +31,7 @@ logging = "info" # second binary [[app]] name = "embedded" -main_reactor = "src/Main2.lf" +main = "src/Main2.lf" dependencies = {} target = "Cpp" diff --git a/src/backends/cmake.rs b/src/backends/cmake.rs index c0bd55b..b71b9c6 100644 --- a/src/backends/cmake.rs +++ b/src/backends/cmake.rs @@ -33,7 +33,12 @@ fn gen_cmake_files(app: &App, options: &BuildCommandOptions) -> BuildResult { cmake.arg("-DREACTOR_CPP_VALIDATE=ON"); cmake.arg("-DREACTOR_CPP_TRACE=OFF"); cmake.arg("-DREACTOR_CPP_LOG_LEVEL=3"); - cmake.arg(format!("-DLF_SRC_PKG_PATH={}", app.root_path.display())); + cmake.arg(format!( + "-DLF_SRC_PKG_PATH={}", + app.src_dir_path() + .expect("not a valid main reactor path") + .display() + )); cmake.arg(app.src_gen_dir()); cmake.arg(format!("-B {}", build_dir.display())); cmake.current_dir(&build_dir); @@ -42,7 +47,8 @@ fn gen_cmake_files(app: &App, options: &BuildCommandOptions) -> BuildResult { } fn do_cmake_build(results: &mut BatchBuildResults, options: &BuildCommandOptions) { - super::lfc::LFC::do_parallel_lfc_codegen(options, results, false); + results.keep_going(options.keep_going); + super::lfc::LFC::do_parallel_lfc_codegen(options, results, true); if !options.compile_target_code { return; } diff --git a/src/backends/lfc.rs b/src/backends/lfc.rs index 38b6e99..27e4747 100644 --- a/src/backends/lfc.rs +++ b/src/backends/lfc.rs @@ -19,7 +19,9 @@ impl LFC { results: &mut BatchBuildResults, compile_target_code: bool, ) { - results.par_map(|app| LFC::do_lfc_codegen(app, options, compile_target_code)); + results.keep_going(options.keep_going); + // TODO: using map_par introduced a race condition + results.map(|app| LFC::do_lfc_codegen(app, options, compile_target_code)); } /// Do codegen for a single app. @@ -89,10 +91,12 @@ impl<'a> LfcJsonArgs<'a> { .unwrap() .as_object_mut() .unwrap(); + // lfc does not support no-compile:false if self.no_compile { - properties.insert("no-compile".to_string(), self.no_compile.into()); + properties.insert("no-compile".to_string(), serde_json::Value::Bool(true)); } + Ok(value) } } diff --git a/src/backends/mod.rs b/src/backends/mod.rs index f2f8845..ad0bdba 100644 --- a/src/backends/mod.rs +++ b/src/backends/mod.rs @@ -40,9 +40,9 @@ pub fn execute_command<'a>(command: &CommandSpec, apps: &[&'a App]) -> BatchBuil match build_system { BuildSystem::LFC => lfc::LFC.execute_command(command, &mut sub_res), BuildSystem::CMake => cmake::Cmake.execute_command(command, &mut sub_res), - BuildSystem::Cargo => todo!(), BuildSystem::Npm => npm::Npm.execute_command(command, &mut sub_res), BuildSystem::Pnpm => pnpm::Pnpm.execute_command(command, &mut sub_res), + BuildSystem::Cargo => todo!(), }; result.append(sub_res); } @@ -91,6 +91,7 @@ pub trait BatchBackend { /// Collects build results by app. pub struct BatchBuildResults<'a> { results: Vec<(&'a App, BuildResult)>, + keep_going: bool, } impl<'a> BatchBuildResults<'a> { @@ -98,6 +99,7 @@ impl<'a> BatchBuildResults<'a> { fn new() -> Self { Self { results: Vec::new(), + keep_going: false, } } @@ -106,8 +108,13 @@ impl<'a> BatchBuildResults<'a> { fn for_apps(apps: &[&'a App]) -> Self { Self { results: apps.iter().map(|&a| (a, Ok(()))).collect(), + keep_going: false, } } + /// sets the keep going value + fn keep_going(&mut self, value: bool) { + self.keep_going = value + } /// Print this result collection to standard output. pub fn print_results(&self) { @@ -143,6 +150,14 @@ impl<'a> BatchBuildResults<'a> { self.results.iter_mut().for_each(|(app, res)| { if let Ok(()) = res { *res = f(app); + + if (*res).is_err() && !self.keep_going { + panic!( + "build step failed because of {} with main reactor {}!", + &app.name, + &app.main_reactor.display() + ); + } } }); self @@ -157,6 +172,15 @@ impl<'a> BatchBuildResults<'a> { self.results.par_iter_mut().for_each(|(app, res)| { if let Ok(()) = res { *res = f(app); + + if (*res).is_err() && !self.keep_going { + panic!( + "build step failed with error {:?} because of app {} with main reactor {}!", + &res, + &app.name, + &app.main_reactor.display() + ); + } } }); self @@ -175,12 +199,18 @@ impl<'a> BatchBuildResults<'a> { .iter() .filter_map(|&(app, ref res)| res.as_ref().ok().map(|()| app)) .collect(); + if vec.is_empty() { return self; } + match f(&vec) { Ok(()) => { /* Do nothing, all apps have succeeded. */ } Err(e) => { + if !self.keep_going { + panic!("build step failed!"); + } + // Mark all as failed for the same reason. let shared: Arc = e.into(); for (_app, res) in &mut self.results { diff --git a/src/backends/npm.rs b/src/backends/npm.rs index 9637eaf..e600785 100644 --- a/src/backends/npm.rs +++ b/src/backends/npm.rs @@ -1,6 +1,7 @@ use crate::util::errors::LingoError; use crate::util::execute_command_to_build_result; use std::error::Error; +use std::ffi::OsString; use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; @@ -22,6 +23,7 @@ pub fn do_typescript_build( options: &BuildCommandOptions, commands: TypeScriptToolCommands, ) { + results.keep_going(options.keep_going); super::lfc::LFC::do_parallel_lfc_codegen(options, results, false); if !options.compile_target_code { return; @@ -37,10 +39,34 @@ pub fn do_typescript_build( } }; + let extract_location = |main_reactor: &PathBuf, + root_path: &PathBuf| + -> Result> { + let output_dir = main_reactor.strip_prefix(root_path)?; + + let src_index = output_dir + .iter() + .map(|x| x.to_os_string()) + .position(|element| element == *"src") + .ok_or(LingoError::InvalidMainReactor)?; + + let mut path_copy: Vec = output_dir.iter().map(|x| x.to_os_string()).collect(); + path_copy.drain(0..src_index + 1); + + let mut new_path_buf: PathBuf = PathBuf::new(); + + for element in path_copy { + new_path_buf.push(element); + } + + new_path_buf.set_extension(""); + Ok(new_path_buf) + }; + results .map(|app| { - let file_name = extract_name(&app.main_reactor)?; - let path = app.output_root.join("src-gen").join(file_name); + let src_postfix = extract_location(&app.main_reactor, &app.root_path)?; + let path = app.output_root.join("src-gen").join(src_postfix); let mut npm_install = Command::new(commands.binary_name); npm_install.current_dir(path); @@ -48,12 +74,13 @@ pub fn do_typescript_build( if options.profile == BuildProfile::Release { npm_install.arg(commands.release_build_argument); } + execute_command_to_build_result(npm_install)?; Ok(()) }) .map(|app| { - let file_name = extract_name(&app.main_reactor)?; - let path = app.output_root.join("src-gen").join(file_name); + let src_postfix = extract_location(&app.main_reactor, &app.root_path)?; // path after src + let path = app.output_root.join("src-gen").join(src_postfix); let mut npm_build = Command::new(commands.binary_name); npm_build.current_dir(path); @@ -63,18 +90,20 @@ pub fn do_typescript_build( if options.profile == BuildProfile::Release { npm_build.arg(commands.release_build_argument); } + execute_command_to_build_result(npm_build)?; Ok(()) }) .map(|app| { fs::create_dir_all(app.output_root.join("bin"))?; - let file_name = extract_name(&app.main_reactor)?; + let src_postfix = extract_location(&app.main_reactor, &app.root_path)?; // path after src + let path = app .output_root .join("src-gen") - .join(&file_name) + .join(src_postfix) .join("dist") .join(file_name + ".js"); diff --git a/src/package/mod.rs b/src/package/mod.rs index a81bde5..70a55f3 100644 --- a/src/package/mod.rs +++ b/src/package/mod.rs @@ -10,7 +10,7 @@ use std::io::ErrorKind; use std::path::{Path, PathBuf}; use std::{env, io}; -use crate::args::BuildSystem::{CMake, Cargo, LFC}; +use crate::args::BuildSystem::{CMake, LFC}; use crate::util::errors::{BuildResult, LingoError}; use git2::Repository; use tempfile::tempdir; @@ -59,7 +59,7 @@ pub struct AppFile { pub name: Option, /// if not specified will default to main.lf - pub main_reactor: Option, + pub main: Option, /// target of the app pub target: TargetLanguage, @@ -75,15 +75,15 @@ pub struct AppFile { pub struct App { /// Absolute path to the directory where the Lingo.toml file is located. pub root_path: PathBuf, - /// Name of the app (and the final binary). pub name: String, /// Root directory where to place src-gen and other compilation-specifics stuff. pub output_root: PathBuf, - /// Absolute path to the main reactor file. pub main_reactor: PathBuf, + /// target language of this lf program pub target: TargetLanguage, + /// platform for which this program should be compiled pub platform: Platform, pub dependencies: HashMap, @@ -95,7 +95,6 @@ impl App { match self.target { TargetLanguage::C => LFC, TargetLanguage::Cpp => CMake, - TargetLanguage::Rust => Cargo, TargetLanguage::TypeScript => { if which("pnpm").is_ok() { BuildSystem::Pnpm @@ -118,6 +117,15 @@ impl App { } p } + + pub fn src_dir_path(&self) -> Option { + for path in self.main_reactor.ancestors() { + if path.ends_with("src") { + return Some(path.to_path_buf()); + } + } + None + } } /// Simple or DetailedDependency @@ -168,7 +176,7 @@ impl ConfigFile { .into_iter() .map(|spec| AppFile { name: Some(spec.name), - main_reactor: Some(spec.path), + main: Some(spec.path), target: spec.target, platform: Some(init_args.platform), dependencies: HashMap::new(), @@ -277,22 +285,35 @@ impl ConfigFile { apps: self .apps .into_iter() - .map(|app| App { - root_path: path.to_path_buf(), - name: app.name.unwrap_or(package_name.clone()), - output_root: path.join("target"), - main_reactor: { - let mut abs = path.to_path_buf(); - abs.push( - app.main_reactor - .unwrap_or(Self::DEFAULT_MAIN_REACTOR_RELPATH.into()), - ); - abs - }, - target: app.target, - platform: app.platform.unwrap_or(Platform::Native), - dependencies: app.dependencies, - properties: app.properties, + .map(|app| { + let file_name: Option = match app.main.clone() { + Some(path) => path + .file_stem() + .to_owned() + .and_then(|x| x.to_str()) + .map(|x| x.to_string()), + None => None, + }; + let name = app + .name + .unwrap_or(file_name.unwrap_or(package_name.clone()).to_string()); + App { + root_path: path.to_path_buf(), + name, + output_root: path.join("target"), + main_reactor: { + let mut abs = path.to_path_buf(); + abs.push( + app.main + .unwrap_or(Self::DEFAULT_MAIN_REACTOR_RELPATH.into()), + ); + abs + }, + target: app.target, + platform: app.platform.unwrap_or(Platform::Native), + dependencies: app.dependencies, + properties: app.properties, + } }) .collect(), package: self.package, diff --git a/src/util/command_line.rs b/src/util/command_line.rs index 15b9a3b..fde75ed 100644 --- a/src/util/command_line.rs +++ b/src/util/command_line.rs @@ -71,7 +71,10 @@ pub fn run_and_capture(command: &mut Command) -> io::Result<(ExitStatus, Vec pub fn execute_command_to_build_result(mut command: Command) -> BuildResult { match run_and_capture(&mut command) { - Err(e) => Err(Box::new(e)), + Err(e) => { + eprintln!("error occured while executing commandline: {:?}", &e); + Err(Box::new(e)) + } Ok((status, _, _)) if !status.success() => { Err(Box::new(LingoError::CommandFailed(command, status))) } diff --git a/test/Lingo-Cpp.toml b/test/Lingo-Cpp.toml new file mode 100644 index 0000000..1ac8612 --- /dev/null +++ b/test/Lingo-Cpp.toml @@ -0,0 +1,1666 @@ +[package] +name = "Cpp-Tests" +version = "0.2.0" +homepage = "https://lf-lang.org" +description = "All Cpp Lingua-Franca Unit Tests" + +# shared properties of all binaries +[properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ActionDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ActionIsPresent.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ActionValues.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ActionWithNoReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/AfterOverlapped.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/AfterZero.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Alignment.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ArrayAsParameter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ArrayAsType.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ArrayParallel.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ArrayPrint.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ArrayScale.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/CharLiteralInitializer.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Composition.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/CompositionAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/CompositionGain.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/CountTest.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DanglingOutput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Deadline.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DeadlineHandledAbove.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DelayInt.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DelayedAction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DelayedReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Determinism.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DoubleInvocation.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DoublePort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DoubleReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/DoubleTrigger.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/FloatLiteral.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Gain.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/GetMicroStep.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/GetTime.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Hello.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/HelloBodylessWorld.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/HelloWorld.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Hierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Hierarchy2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Import.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ImportComposition.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ImportRenamed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ManualDelayedReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Methods.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Microsteps.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Minimal.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/MovingAverage.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/MultipleContained.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/NativeListsAndTimes.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/NestedTriggeredReactions.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ParameterHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ParameterizedState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ParametersOutOfOrder.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/PeriodicDesugared.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/PhysicalConnection.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Pipeline.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/PreambleTest.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ReadOutputOfContainedReactor.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Schedule.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ScheduleLogicalAction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SelfLoop.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SendingInside.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SendingInside2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ShutdownAsync.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ShutdownSync.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SimpleDeadline.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SimpleImport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SlowingClock.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/SlowingClockPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/StartupOutFromInside.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Starve.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/StarveZero.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/Stride.lf" + +[app.dependencies] + +[app.properties] + +# TODO: include not working properly +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructAsState.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructAsType.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructAsTypeDirect.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructParallel.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructPrint.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "Cpp" +#platform = "Native" +#main = "Cpp/src/StructScale.lf" +# +#[app.dependencies] +# +#[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/TestForPreviousOutput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/TimeLimit.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/TimeState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/TimerIsPresent.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/ToReactionNested.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/TriggerDownstreamOnlyIfPresent2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/AsyncCallback.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/AsyncCallback2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/CompositionThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/DeadlineHandledAboveThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/DeadlineThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/DelayIntThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/DeterminismThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/DoubleReactionThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/GainThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/HelloThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/ImportThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/MinimalThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/SendingInsideThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/Threaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/ThreadedThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/TimeLimitThreaded.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/concurrent/Workers.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveBankEach.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveBroadcast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunication.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunication2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationDelayed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationDelayed2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationDelayedLocalEvents.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationLocalEvents.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBankDelayed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBankEach.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBankEachDelayed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBankEachPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationMultiportToBankPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCommunicationPhysicalLocalEvents.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCycle.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveCycleTwoTimers.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveHelloWorld.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveMultiportToPort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveMultiportToPort2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveShutdown.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveSparseUpstreamEvents.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveSparseUpstreamEventsDelayed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveSparseUpstreamEventsPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveTimeout.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveUpstreamPhysicalAction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/enclave/EnclaveUpstreamPhysicalActionDelayed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BankSelfBroadcast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BankToBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BankToBankMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BankToBankMultiportAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BankToMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/Broadcast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BroadcastAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/BroadcastMultipleAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/FullyConnected.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/FullyConnectedAddressable.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/FullyConnectedAddressableAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/IndexIntoMultiportInput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/IndexIntoMultiportOutput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/Multiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportFromBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportFromBankHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportFromBankHierarchyAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportFromHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportIn.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportMultipleSet.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportOut.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToBankAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToBankHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToMultiport2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToMultiport2After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToMultiportArray.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToMultiportPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/MultiportToPort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/PipelineAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/ReadMultiportOutputOfContainedBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/ReadOutputOfContainedBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/SparseMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/WidthGivenByCode.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/WriteInputOfContainedBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/multiport/WriteMultiportInputOfContainedBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/properties/Fast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/properties/Timeout.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/properties/TimeoutZero.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/AfterVoid.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/BraceAndParenInitialization.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/CMakeInclude.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/CliParserGenericArguments.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/CombinedTypeNames.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/GenericAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/GenericDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/GenericParameterAndState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/InitializerSyntax.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/MultipleContainedGeneric.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/PointerParameters.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Cpp" +platform = "Native" +main = "Cpp/src/target/PreambleFile.lf" + +[app.dependencies] + +[app.properties] + diff --git a/test/Lingo-LFC.toml b/test/Lingo-LFC.toml new file mode 100644 index 0000000..23fc173 --- /dev/null +++ b/test/Lingo-LFC.toml @@ -0,0 +1,360 @@ +[package] +name = "LFC-Tests" +version = "0.2.0" +homepage = "https://lf-lang.org" +description = "LFC fallback tests" + +# shared properties of all binaries +[properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ActionDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ActionIsPresent.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ActionWithNoReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/AfterCycles.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/AfterOverlapped.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/AfterZero.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/Alignment.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayAsParameter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayAsType.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayFree.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayFreeMultiple.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayParallel.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "C" +platform = "Native" +main = "C/src/ArrayPrint.lf" + +[app.dependencies] + +[app.properties] + + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ActionDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ActionIsPresent.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ActionWithNoReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/AfterCycles.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/AfterOverlapped.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ArrayAsType.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ArrayFree.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ArrayParallel.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Python" +platform = "Native" +main = "Python/src/ArrayPrint.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionImplicitDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionIsPresent.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionIsPresentDouble.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionScheduleMicrostep.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionValues.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/ActionValuesCleanup.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/CompositionInitializationOrder.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/CompositionWithPorts.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/CtorParamDefault.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/CtorParamMixed.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/CtorParamSimple.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/DependencyOnChildPort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/DependencyThroughChildPort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "Rust" +platform = "Native" +main = "Rust/src/DependencyUseAccessible.lf" + +[app.dependencies] + +[app.properties] diff --git a/test/Lingo-TypeScript.toml b/test/Lingo-TypeScript.toml new file mode 100644 index 0000000..0309621 --- /dev/null +++ b/test/Lingo-TypeScript.toml @@ -0,0 +1,1071 @@ +[package] +name = "TypeScript-Tests" +version = "0.2.0" +homepage = "https://lf-lang.org" +description = "All TypeScript Lingua-Franca Unit Tests" + +# shared properties of all binaries +[properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ActionDelay.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ActionWithNoReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ArrayAsType.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ArrayPrint.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ArrayScale.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Composition.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/CompositionAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/CountTest.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DanglingOutput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Deadline.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DeadlineHandledAbove.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DelayInt.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DelayedAction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DelayedReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Determinism.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DoubleInvocation.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DoubleReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/DoubleTrigger.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/FloatLiteral.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Gain.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/GetTime.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Hello.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/HelloWorld.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Hierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Hierarchy2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Import.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Microsteps.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Minimal.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/MultipleContained.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/NativeListsAndTimes.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ParameterizedState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/PeriodicDesugared.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/PhysicalConnection.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Preamble.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ReadOutputOfContainedReactor.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Schedule.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/ScheduleLogicalAction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SendingInside.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SendingInside2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SendsPointerTest.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SimpleDeadline.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SimpleImport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SlowingClock.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/SlowingClockPhysical.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Stop.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Stride.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/StructAsState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/StructAsType.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/StructAsTypeDirect.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/StructPrint.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/StructScale.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/TestForPreviousOutput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/TimeLimit.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/TimeState.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/Wcet.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/concurrent/AsyncCallback.lf" + +[app.dependencies] + +[app.properties] + +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/docker/HelloWorldContainerized.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/docker/federated/DistributedCountContainerized.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/ChainWithDelay.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedCount.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedCountPhysical.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedCountPhysicalAfterDelay.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedDoublePort.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedLoopedAction.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedLoopedPhysicalAction.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedStop.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/DistributedStopZero.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/HelloDistributed.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/LoopDistributedCentralized.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/LoopDistributedDouble.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/PingPongDistributed.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/PingPongDistributedPhysical.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/SimpleFederated.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/SpuriousDependency.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/StopAtShutdown.lf" +# +#[app.dependencies] +# +#[app.properties] +# +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/federated/TopLevelArtifacts.lf" +# +#[app.dependencies] +# +#[app.properties] +# +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankMulticast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankMultiportToReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankReactionsInContainer.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankSelfBroadcast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankToBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankToBankMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankToBankMultiportAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankToMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BankToReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/Broadcast.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BroadcastAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/BroadcastMultipleAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/FullyConnected.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportFromBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportFromBankHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportFromBankHierarchyAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportFromHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportFromReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportIn.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportInParameterized.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportMutableInput.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportMutableInputArray.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportOut.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToBankAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToBankDouble.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToBankHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToHierarchy.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToMultiport.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToMultiport2.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToMultiport2After.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToMultiportArray.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToMultiportParameter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToPort.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/MultiportToReaction.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/NestedBanks.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/PipelineAfter.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/ReactionToContainedBank.lf" + +[app.dependencies] + +[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/multiport/ReactionsToNested.lf" + +[app.dependencies] + +[app.properties] + +#[[app]] +#target = "TypeScript" +#platform = "Native" +#main = "TypeScript/src/serialization/ProtoNoPacking.lf" +# +#[app.dependencies] +# +#[app.properties] + +[[app]] +target = "TypeScript" +platform = "Native" +main = "TypeScript/src/target/AfterNoTypes.lf" + +[app.dependencies] + +[app.properties] +