Skip to content

Mirror of the Ironclad kernel (https://git.savannah.nongnu.org/cgit/ironclad.git)

Notifications You must be signed in to change notification settings

Ironclad-Project/Ironclad

Folders and files

NameName
Last commit message
Last commit date
Dec 6, 2024
Dec 8, 2024
Aug 17, 2024
Dec 11, 2024
Dec 4, 2024
Dec 10, 2024
Mar 4, 2024
Apr 19, 2022
Dec 11, 2024
Dec 8, 2024
Dec 10, 2024
Dec 11, 2024
Dec 10, 2024
Dec 10, 2024
Dec 10, 2024

Repository files navigation

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.
- Resiliency and small footprint.
- Partial gold-level formal verification.
- Advanced cryptography and a security-centered architecture, including MAC.
- Hard real-time scheduling and real-time oriented features.
- Support for severals architectures and boards.

For more information about the project, some autogenerated documentation, bug
reporting, and development guides, check https://ironclad.nongnu.org

-- Building and testing --

The tools needed are:

- standard *nix tools including `find` and GNU make.
- autoconf and automake when not using a tarball (for `./bootstrap`).
- gprbuild for compilation, along with a compatible Ada compiler and assembler.
- GNU Info for building the documentation.
- highlight for syntax highlighting when building the HTML documentation.
- perl for some checks, not for compilation.
- gnatprove for formal verification, if desired.

If checking out Git sources instead of building from a tarball, run
`./bootstrap` first.

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

./configure
make
make check # If desired, will need gnatprove and perl.
make install

(Replace `make` with `gmake` or similar if necessary, on systems where GNU make
is not the default `make`).

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

The above would build Ironclad for the architecture of the host system; so for
example it would be built for x86_64 on an x86_64 host.
In order to cross compile Ironclad for a different architecture, one can use
the standard autoconf option `--host=` for `./configure`. For example:
`./configure --host=riscv64-linux-gnu` would build Ironclad for RISC-V 64-bit,
using the `riscv64-linux-gnu` toolchain.

Additionally, the optional `PLATFORM=...` variable can be passed to
`./configure` to tell the build system which platform/board to build Ironclad
for. So far, the only supported value for `PLATFORM` is `limine`, which is the
default.

Documentation will be generated and installed with the main executable in the
info format, additional formats can be built with `make html` or `make dvi`.

-- Contributing --

Thanks for considering contributing to Ironclad, it means a lot.

Please check <https://ironclad.nongnu.org/development.html> for information
on how to get started, and how to submit patches to the project.
========================================================================

Copyright (C) 2023-2024 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.