# VyBuild Docs

## Introduction

VyBuild is Vystem build system. It has been designed to considerably reduce the need for external tools and the pain of writing custom scripts. It is opinionated and optimized for OS development. While it was designed for Vystem, it can be used for others OS project, but feature such as Vyx/Vyld usage and VFTM aren't guaranteed to work. VyBuild is very integrated into the Vystem ecosystem and should not be considered complete for now.

## Features

VyBuild is capable of the following:
- Compiling C, C++ and Assembly file, with custom arguments, compiler, assembler, and even linker in certain cases.
- Automatically caching build artifacts and compilation objects files, with cached objects invalidation down to modification in the compiler/assembler binary and in C/CPP files included headers
- Automatically purging the cache to keep only newly created objects and objects of previous build that have been used during a build, preventing garbage accumulation
- Letting the user uses the cache how they want to store custom objects
- Running command in indicated folder, running command with auto-faillure if command return a certain status code, show output of commands live, on failure or never, save command output to provided file
- Giving the user complete control over how the build pipeline is parralelised, with flexible options at compilation, actions or modules granularity level
- Compiling Vyx executable with an upgraded and more powerful integration of Vyld
- Acting on the filesystem, like moving/copying files/folder, ensure folder existence or reset
- Letting the user uses system variables (like `%rootcallerfolder%`) or define their own to use in almost any actions field, as well as providing variable on command line argument of VyBuild
- Running differents actions or modules depending on differents condition, like folder existence, cache presence or variable value/existence
- Create fully valid FAT32 images (only support short file names) and fully valid disk images with GPT tables, custom type/unique partitions GUID and importing partitions from file
- Integrating Vystem FAT Trusted Manifest support for FAT32 images generation and interaction with `keygen`

## Index

This documentation is intended to be read in the following order:
1) [Modules](modules.md)
2) [Actions](actions.md)
3) [Variables](variables.md)
4) [Cache](cache.md)
5) [Usage](usage.md)
