Skip to content

A polyglot build system supporting incremental builds for build acceleration - Under Heavy Development

Notifications You must be signed in to change notification settings

iamshiron/ManilaBuild

Repository files navigation

ManilaBuild

banner CI Code Quality

ManilaBuild is a powerful and flexible build automation tool designed to streamline your development workflow. Inspired by modern build systems, it uses simple C# files for configuration, making project setup easy and intuitive. Whether you're working on a simple C++ application or a complex multi-project solution, ManilaBuild provides the tools you need to manage dependencies, define build jobs, and automate your entire process.


❗ Heavy Development ❗

Please be aware that ManilaBuild is currently in heavy development and is not yet feature-complete. The API is subject to change, and you may encounter bugs. We appreciate your patience and welcome any feedback.

The examples provided are mock-ups to demonstrate how the API is intended to work.

If you want to see a real-world example, look at the Zip project under the /run directory, which creates a zip archive from a source set.


Getting Started: Your First Project

Ready to dive in? Here’s how to set up your first project with ManilaBuild. This example will create a simple zip archive.

1. Project Setup

First, create a new empty folder that will contain your workspace. Inside this folder, run manila init to initialize a new empty workspace.

2. Project Creation

To create your first project, we will use the Zip project template as an example. To create this project, just type manila new your_project zip:default. You will now see a new directory with the name of your project, containing a build script to creat the zip file and a test file.

3. Build!

That's it! Now you can build your project from the command line:

manila run your_project/main:build

This command follows the format manila run <project-name>/<artifact-name>:<job-name>. In our case, we're executing the build job defined in the main artifact of the your_project project.

You should see output as the zip file is built, followed by your Zip file created! message and a final confirmation that the build was successful.


Key Concepts

ManilaBuild is built around a few core concepts:

  • Workspaces and Projects: A workspace contains one or more projects, each with its own build configuration. This allows you to easily manage complex, multi-project solutions.
  • Jobs: Jobs are the fundamental building blocks of your build process. You can define jobs for compiling, testing, or any other action. Jobs can also have dependencies on other jobs.
  • Plugins: ManilaBuild is highly extensible through plugins. The C++ plugin, for example, provides components for building static libraries and console applications. You can also create your own plugins to add new functionality.
  • JavaScript Configuration: Build scripts are written in JavaScript, giving you the full power and flexibility of a real programming language for your build logic.

Dive Deeper

While the build system is still rapidly evolving, you can check out more examples inside the run/ directory to see how new features are tested and implemented.

About

A polyglot build system supporting incremental builds for build acceleration - Under Heavy Development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages