.. # ******************************************************************************* # Copyright (c) 2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. # # This program and the accompanying materials are made available under the # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* Module Template Documentation ============================= This documentation describes the structure, usage and configuration of the Bazel-based C++/Rust module template. .. contents:: Table of Contents :depth: 2 :local: Overview -------- This repository provides a standardized setup for projects using **C++** or **Rust** and **Bazel** as a build system. It integrates best practices for build, test, CI/CD and documentation. Requirements ------------ .. stkh_req:: Example Functional Requirement :id: stkh_req__docgen_enabled__example :status: valid :safety: QM :security: YES :reqtype: Functional :rationale: Ensure documentation builds are possible for all modules Project Layout -------------- The module template includes the following top-level structure: - `src/`: Main C++/Rust sources - `tests/`: Unit and integration tests - `examples/`: Usage examples - `docs/`: Documentation using `docs-as-code` - `.github/workflows/`: CI/CD pipelines Quick Start ----------- To build the module: .. code-block:: bash bazel build //src/... To run tests: .. code-block:: bash bazel test //tests/... Configuration ------------- The `project_config.bzl` file defines metadata used by Bazel macros. Example: .. code-block:: python PROJECT_CONFIG = { "asil_level": "QM", "source_code": ["cpp", "rust"] } This enables conditional behavior (e.g., choosing `clang-tidy` for C++ or `clippy` for Rust).