pedrolamarao / metal

Metal is a research project on "bare metal" software engineering.
GNU General Public License v3.0
3 stars 1 forks source link
asm bare-metal cpp gradle

= project metal :author: Pedro Lamarão pedro.lamarao@gmail.com

image:https://github.com/pedrolamarao/psys/actions/workflows/ubuntu.yml/badge.svg[ubuntu] image:https://github.com/pedrolamarao/psys/actions/workflows/windows.yml/badge.svg[windows]

== summary

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 link:doc/GOAL.adoc[GOAL].

== prepare

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.

For more information, see link:doc/TOOLS.adoc[TOOLS].

== build

Metal is built by link:https://github.com/pedrolamarao/gradle-metal[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

== verify

Metal is verified by automated tests.

For more information, see link:doc/TEST.adoc[TEST].

The check task runs all verifications, and the test task runs test programs.