From 1159fca0ec60ef29d02844fa4049682eff89340f Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sat, 1 Jun 2024 00:50:02 +0200 Subject: [PATCH] cleaning up --- .gitignore | 1 - README.md | 39 +++- examples/.gitignore | 1 + examples/autoconfig.h | 2 + examples/build.rs | 7 + lib/.gitignore | 1 - .../{template_autoconfig.h => autoconfig.h} | 7 +- libcsp-cargo-build/.gitignore | 2 +- libcsp-cargo-build/Cargo.lock | 118 ---------- libcsp-cargo-build/LICENSE-APACHE | 201 ++++++++++++++++++ libcsp-cargo-build/NOTICE | 1 + libcsp-cargo-build/README.md | 7 + libcsp-cargo-build/src/lib.rs | 2 + libcsp-rust/.gitignore | 2 + libcsp-rust/LICENSE-APACHE | 201 ++++++++++++++++++ libcsp-rust/NOTICE | 1 + 16 files changed, 467 insertions(+), 126 deletions(-) create mode 100644 examples/.gitignore rename lib/cfg/csp/{template_autoconfig.h => autoconfig.h} (85%) delete mode 100644 libcsp-cargo-build/Cargo.lock create mode 100644 libcsp-cargo-build/LICENSE-APACHE create mode 100644 libcsp-cargo-build/NOTICE create mode 100644 libcsp-cargo-build/README.md create mode 100644 libcsp-rust/LICENSE-APACHE create mode 100644 libcsp-rust/NOTICE diff --git a/.gitignore b/.gitignore index f984574..ea8c4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ /target -/libcsp diff --git a/README.md b/README.md index 1e92e62..8a22aa3 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ In addition, it provides a workspace to allow updating the `libcsp` and the corr more easily inside the `lib` directory. Some of the examples `libcsp` provides were ported to Rust and are showcases in the `examples` directory. -## Getting started +## How it works We assume that cargo should also take care of building the library. @@ -28,3 +28,40 @@ We assume that cargo should also take care of building the library. It is recommended to have a look at the [example build script]() which should give you a general idea of how a build script might look like to integrate `libcsp`. + +## Running the example + +The example uses both the builder crate and the bindings and API crate and implements the +[server/client example](https://github.com/libcsp/libcsp/blob/develop/examples/csp_server_client.c) +in Rust. You can run the example using the following steps: + +1. Clone `libcsp` into the `lib` folder, for example by using the provided `lib/clone-csp.sh` + script. +2. You can now use `cargo run -p examples` to run the server/client example. + +## Generating and update the bindings using the `lib` folder + +The `lib` folder in this repository serves as the staging directory for the `libcsp` library to +build. However, it can also be used to update the bindings provided in `libcsp-rust` by providing +some tools and helpers to auto-generate and update the bindings file `bindings.rs`. + +If you want to do this, you should install `bindgen-cli` first: + +```sh +cargo install bindgen-cli --locked +``` + +`bindgen` needs some additional information provided by the user to generate the bindings: +An `autoconfig.h` file which is used to configure `libcsp`. Normally, this file is generated +by the C build system. This file is located at `cfg/csp` and is also updated automatically +when running the example application. + +After cloning the repository, you can now run the following command to re-generate the bindings +file: + +```sh +bindgen --use-core wrapper.h -- "-I./libcsp/include" "-I./cfg" "-I./libcsp/src" > bindings.rs +``` + +With the bindings file, you can now manually update the FFI bindings provided in +`libcsp-rust/src/ffi.rs` or in your own CSP library. diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1 @@ +/target diff --git a/examples/autoconfig.h b/examples/autoconfig.h index ef24363..78c8887 100644 --- a/examples/autoconfig.h +++ b/examples/autoconfig.h @@ -14,9 +14,11 @@ #define CSP_BUFFER_COUNT 15 #define CSP_RDP_MAX_WINDOW 5 #define CSP_RTABLE_SIZE 10 + #define CSP_USE_RDP 1 #define CSP_USE_HMAC 1 #define CSP_USE_PROMISC 1 #define CSP_USE_RTABLE 0 + #define CSP_HAVE_LIBSOCKETCAN 0 #define CSP_HAVE_LIBZMQ 0 diff --git a/examples/build.rs b/examples/build.rs index fc2a85d..b139e49 100644 --- a/examples/build.rs +++ b/examples/build.rs @@ -6,12 +6,19 @@ fn main() { let out_dir = env::var("OUT_DIR").unwrap_or_default(); let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap_or_default(); let manifest_path = PathBuf::from(&manifest_dir); + let lib_cfg_dir = "../lib/cfg/csp"; let libcsp_path = "../lib/libcsp"; let mut csp_builder = Builder::new(PathBuf::from(libcsp_path), PathBuf::from(&out_dir)); csp_builder.compiler_warnings = false; // We always re-generate the header file. generate_autoconf_header_file(manifest_path.clone(), &csp_builder.cfg) .expect("generating header file failed"); + // Copy the file to lib/csp/cfg as well for binding generation. + std::fs::copy( + manifest_path.join("autoconfig.h"), + PathBuf::from(&lib_cfg_dir).join("autoconfig.h"), + ) + .expect("copying autoconfig.h failed"); csp_builder .generate_autoconf_rust_file(manifest_path) .expect("generating autoconfig.rs failed"); diff --git a/lib/.gitignore b/lib/.gitignore index bce0bfa..5946b3d 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,2 +1 @@ /libcsp -/cfg/csp/autoconfig.h diff --git a/lib/cfg/csp/template_autoconfig.h b/lib/cfg/csp/autoconfig.h similarity index 85% rename from lib/cfg/csp/template_autoconfig.h rename to lib/cfg/csp/autoconfig.h index d48549f..78c8887 100644 --- a/lib/cfg/csp/template_autoconfig.h +++ b/lib/cfg/csp/autoconfig.h @@ -4,10 +4,9 @@ #define CSP_HAVE_STDIO 1 #define CSP_ENABLE_CSP_PRINT 1 #define CSP_PRINT_STDIO 1 - #define CSP_REPRODUCIBLE_BUILDS 0 -#define CSP_QFIFO_LEN 15 +#define CSP_QFIFO_LEN 16 #define CSP_PORT_MAX_BIND 16 #define CSP_CONN_RXQUEUE_LEN 16 #define CSP_CONN_MAX 8 @@ -19,7 +18,7 @@ #define CSP_USE_RDP 1 #define CSP_USE_HMAC 1 #define CSP_USE_PROMISC 1 -#define CSP_USE_RTABLE 1 +#define CSP_USE_RTABLE 0 #define CSP_HAVE_LIBSOCKETCAN 0 -#define CSP_HAVE_LIBZMQ 1 +#define CSP_HAVE_LIBZMQ 0 diff --git a/libcsp-cargo-build/.gitignore b/libcsp-cargo-build/.gitignore index f984574..4fffb2f 100644 --- a/libcsp-cargo-build/.gitignore +++ b/libcsp-cargo-build/.gitignore @@ -1,2 +1,2 @@ /target -/libcsp +/Cargo.lock diff --git a/libcsp-cargo-build/Cargo.lock b/libcsp-cargo-build/Cargo.lock deleted file mode 100644 index 1e40921..0000000 --- a/libcsp-cargo-build/Cargo.lock +++ /dev/null @@ -1,118 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "cc" -version = "1.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" - -[[package]] -name = "libcsp-cargo-build" -version = "0.1.0" -dependencies = [ - "cc", - "walkdir", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "winapi-util" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" diff --git a/libcsp-cargo-build/LICENSE-APACHE b/libcsp-cargo-build/LICENSE-APACHE new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/libcsp-cargo-build/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/libcsp-cargo-build/NOTICE b/libcsp-cargo-build/NOTICE new file mode 100644 index 0000000..717a583 --- /dev/null +++ b/libcsp-cargo-build/NOTICE @@ -0,0 +1 @@ +This software contains code developed at the University of Stuttgart's Institute of Space Systems. diff --git a/libcsp-cargo-build/README.md b/libcsp-cargo-build/README.md new file mode 100644 index 0000000..ea802c4 --- /dev/null +++ b/libcsp-cargo-build/README.md @@ -0,0 +1,7 @@ +libcsp-cargo-build +======== + +This crate provides a library to allow building the [`libcsp`](https://github.com/libcsp/libcsp) +with cargo. You can find some more high-level information and examples in the +[main workspace](https://egit.irs.uni-stuttgart.de/rust/libcsp-rust). The API documentation +should provide all additional advanced information you might require to tweak the `libcsp` build. diff --git a/libcsp-cargo-build/src/lib.rs b/libcsp-cargo-build/src/lib.rs index 297659b..f678ed2 100644 --- a/libcsp-cargo-build/src/lib.rs +++ b/libcsp-cargo-build/src/lib.rs @@ -286,6 +286,7 @@ pub fn generate_autoconf_header_file(out_dir: impl AsRef, cfg: &Config) -> cfg.rtable_size )); + autoconf_file_string.push('\n'); autoconf_file_string.push_str(&format!( "#define {} {}\n", autoconf::CFG_USE_RDP, @@ -307,6 +308,7 @@ pub fn generate_autoconf_header_file(out_dir: impl AsRef, cfg: &Config) -> cfg.rtable as u32 )); + autoconf_file_string.push('\n'); // TODO: Maybe those will be added at some point.. autoconf_file_string.push_str(&format!( "#define {} {}\n", diff --git a/libcsp-rust/.gitignore b/libcsp-rust/.gitignore index e69de29..4fffb2f 100644 --- a/libcsp-rust/.gitignore +++ b/libcsp-rust/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/libcsp-rust/LICENSE-APACHE b/libcsp-rust/LICENSE-APACHE new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/libcsp-rust/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/libcsp-rust/NOTICE b/libcsp-rust/NOTICE new file mode 100644 index 0000000..717a583 --- /dev/null +++ b/libcsp-rust/NOTICE @@ -0,0 +1 @@ +This software contains code developed at the University of Stuttgart's Institute of Space Systems.