#-------------------------------------------------------------------------------
# Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------

/*! @mainpage TF-M CI Script Documentation

@section Introduction
This repository holds build scripts used by "Continuous Integration" jobs
executed on Linaro Jenkins infrastructure.

These script leave "provisioning" of the environment to the executor, and thus
will not install compilers and other needed tools, clone repositories and so on.

The intention is to make these tools execute fine not only on the Jenkins
servers, but also on developer PC:s and thus these scripts provide both a
"centralised" and a "distributed" CI environment.

@section documenting Writing/maintaining this documentation
This documentation is Doxygen based. Please use the makefile in this directory
to generate html output.

The Doxygen configuration is made in a way to process all files with a .sh or
.dox extension. Still output will only be generated for documented files, i.e.
files with a <em>\@file</em> tag.

For details on how to instrument the shell scripts please refer to
\ref pgSoxygenSh.

@tableofcontents
@section ReadmeS1 Building tf-m.

Python build documents are preliminary and will be included in future revisions.

Each Python script contains built-in help which can be accessed by -h, --help
command line argument.

In order to build all configurations use build_helper.py

@code{.sh}
# Will build all configurations to build-all-dir and
# create a report in json format.

./ci-scripts/build_helper/build_helper.py -b build-all-dir -r report.json
@endcode


@section ReadmeS2 Static analysis of TF-M.
The CI system currently supports chakpatch and cppcheck to analyze TF-M source
content.

@subsection ReadmeS2S1 Cppcheck
The script \ref run-cppcheck.sh can be used to execute cppcheck. For details
please refer to the documentation of the script.

The script \ref make_cppcheck_summary.sh can be used to genetare a summary of
XML output files generated by cppcheck.

@subsection ReadmeS2S2 Checkpatch
The script \ref run-checkpatch.sh can be used to execute checkpatch. For details
please refer to the documentation of the script.

The script @ref make_checkpatch_summary.sh can be used to generate a summary
report file of chackpatch results.

@section pgindex_r1 Table of contents
- @ref run-checkpatch.sh
- @ref make_checkpatch_summary.sh
- @ref run-cppcheck.sh
- @ref make_cppcheck_summary.sh
- @ref util_cmake.sh
*/
