Ironclad is a partially formally verified real-time kernel, with a small
footprint, for general-purpose and embedded OSes, written in SPARK and Ada.

Some of the supported features are:
- A familiar POSIX-compatible interface
- True simultaneous multitasking
- Complex virtual and physical memory support, VFS support
- Resiliency and small footprint
- Partial gold-level formal verification
- Advanced cryptography and a security-centered architecture
- Hard real-time scheduling and real-time oriented features

For more information about the project, check https://nongnu.org/ironclad

-- Building and testing --

The tools needed are:

- autoconf and automake when not using a tarball.
- gprbuild for compilation, along with a compatible Ada compiler and assembler.
- GNU Info for building the documentation, if desired.
- gnatprove for formal verification, if desired.

For building the project's binaries, a standard configure-make-make install is
enough, like the following:

./configure
make
make install

Several flags are provided in configure for customizing kernel settings, one
can check them with ./configure --help.

Documentation can be generated and installed with make docs and
make install-docs respectively. gnatprove can be used for proofs using
make prove.

-- Documentation --

The project features info files generated from the texinfo source in the docs
subdirectory.

The generated documentation features information about a lot of kernel-specific
concepts along with syscall listings and project information.

Generated documentation is hosted and updated regularly online at:
https://www.nongnu.org/ironclad/manual/ - HTML format.
https://www.nongnu.org/ironclad/manual/ironclad.pdf - PDF format.

-- Thanks to --

- Mintsuki (https://github.com/mintsuki) et al - For the
Limine (https://github.com/limine-bootloader/limine) project, used for testing
and code reference.

- Mintsuki personally for helping with the build system.

- The managarm project (https://github.com/managarm), used for code
reference for the aarch64 port, and Qookie, one of the maintainers, for help
debugging.

- The FlorenceOS project (https://github.com/FlorenceOS) for code reference
for the aarch64 MMU, and N00byEdge, one of the maintainers, for help
debugging the obscure and esoteric issues.

========================================================================

Copyright (C) 2023 streaksu

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included in the "GNU Free
Documentation License" file as part of this distribution.
