Welcome to project Metal!
Metal is a research project on "bare metal" software engineering.
For more information on this project’s mission, ambitions and aims, see GOAL.
Metal is built with an LLVM based toolset.
JDK 17 or newer is required in either environment JAVA_HOME
or PATH
.
The following tools are required in gradle property metal.path
or environment PATH
.
-
CMake 3
-
GNU grub 2
-
LLVM 16 or newer
-
Ninja
-
QEMU 6.0 up to 7.2
For more information, see TOOLS.
Metal is built by Gradle Metal.
To assemble everything for host: ./gradlew build
This task shall compile and run modules and unit test programs.
To assemble everything for target i686-elf
: ./gradlew build -Pmetal.target=i686-elf
This task shall compile and run modules and QEMU emulated system test programs.
Currently, only targets host and i686-elf
are supported.
We expect to include target x86_64-elf
very soon.
To clean everything: ./gradlew clean
Metal is verified by automated tests.
For more information, see TEST.
The check
task runs all verifications, and the test
task runs test programs.