# maker
Generic Rusty declarative build system, like [GNU Make](https://www.gnu.org/software/make/).
Allows writing some Makefile-like rules, e.g.
```rust
let obj = Target::new_file("main.o")
.depends_on_file("main.c")
.recipe(|target, deps| {
Command::new("gcc")
.arg("-o")
.arg(target)
.args(deps)
.status()
.unwrap();
});
let bin = Target::new_file("main")
.depends_on_target(obj)
.recipe(|target, deps| {
Command::new("ld")
.arg("-o")
.arg(target)
.args(deps)
.status()
.unwrap();
});
bin.make();
```
... which is equivalent to the Makefile:
```makefile
main.o: main.c
gcc -o $@ $^
main: main.0
ld -o $@ $^
```
... but see that `.recipe()` function? We can not only write shell scripts there, but also do **more things fun and cross-platform** (meanings of _generic_) -- in **Rust**!
In the hope that it will be useful in `build.rs`.