Skip to content
MicroRJPublic

About

An all-in-one, radically minimal build system for C and C++.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Manny

Manny builds.

Website · Download · Why Manny?

Manny is a small hackable build system for C and C++.

Build scripts are ordinary elf programs. They generate task descriptions, and Manny turns the selected tasks into a graph, executes independent work in parallel, tracks compiler-discovered dependencies, and explains why something rebuilt.

The graph executor is also a C library. The elf frontend is one way to drive Manny; it is not the architecture Manny is trapped inside.

Manny is currently in early development. The supported host is Windows x64, and the public API and build-state format may still change.

A build

elf.fs.create_directories("build")

hello := {
	name = "hello",
	exec = "clang-cl",
	args = [ "main.c", "/Febuild/hello.exe" ],
	inputs = [ "main.c" ],
	outputs = [ "build/hello.exe" ],
}

entries := {}

entries.build = fun() {
	ret manny.build({ targets = [ hello ] })
}

ret entries

Save that as build.elf, then run Manny:

> manny
[1/1 succeeded] hello

> manny --explain
[explain] hello: inputs are not newer than outputs
[1/1 up-to-date] hello

c.elf is an optional helper written in elf. It generates ordinary Manny task tables; builds can modify it, replace it, or describe raw tasks directly.

Getting started

The included example requires Visual Studio C++ build tools and clang-cl on the command line.

Download and extract the latest Windows preview. Open a command prompt in its hello directory, then run:

..\manny.exe
..\manny.exe run
..\manny.exe --explain

See the step-by-step guide for building Manny itself.

Documentation

The authored page shell and inline styles live in site/page.html, and the guide source lives in site/guide.dodo. They are generated offline into the checked-in site/index.html, which the site build copies for deployment.

Build from source

git clone --recursive https://github.com/MicroRJ/Manny.git
cd Manny
build.bat

The checked-in blessed executable bootstraps the build. The new executable is written to build\manny.exe.

Current limitations

  • Only the Windows platform implementation is complete.
  • Linux support is planned but not yet implemented.
  • MSVC dependency handling is not complete; Clang, clang-cl, and GCC-style Make dependency files are the mature path.
  • There is no remote or content-addressed build cache yet.
  • Tasks do not yet have isolated environment overrides.
  • The C API and binary state format are still allowed to evolve.

About

An all-in-one, radically minimal build system for C and C++.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages