mirror of https://github.com/natnat-mc/moonbuild
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.8 KiB
36 lines
1.8 KiB
# moonbuild
|
|
**Now in v2 - complete rework from v1**
|
|
|
|
Because `make` is painful to use, and build scripts are too slow. Moonbuild aims to be a good compromise.
|
|
You should probably use [http://gittup.org/tup/](tup) instead if you want a good build system.
|
|
|
|
## How does it work?
|
|
`moonbuild` reads a build file, usually `Build.moon` that is written in a Moonscript DSL to define its targets and variables.
|
|
It then builds a DAG for the dependancies of the targets you tell it to build.
|
|
Then, it tries building every target in the graph while respecting dependancies, possibly on multiple processes.
|
|
|
|
Essentially, it works the same way as `make`, just with a different language, you can compare the `Build.moon` and `Makefile` in this repo to see for yourself.
|
|
|
|
## Why Moonscript?
|
|
Because it's fast, based on lua, and making DSLs with it is relatively easy.
|
|
It's also a language I like a lot, so I might have been biased when choosing it.
|
|
|
|
## Installing
|
|
It is available on luarocks with `luarocks install moonbuild`.
|
|
It is also recommended to install `luaposix` if you can, as it speeds it up a lot, or `luafilesystem` in case it isn't available.
|
|
|
|
## Building from source
|
|
You will need `argparse` and `moonscript` installed from luarocks, and `luaposix` or `luafilesystem` are recommended.
|
|
|
|
### Bootstrapping
|
|
You can build moonbuild with itself: `moon bin/moonbuild.moon -qjy`.
|
|
This will leave the binary ready to be used as `out/moonbuild` (it will still depend on the library to be used).
|
|
The binary and library can then be installed with `bin/moonbuild install`.
|
|
|
|
You can combine these steps with `moon bin/moonbuild.moon -qjy install` which will build and install moonbuild.
|
|
|
|
### With `Alfons`
|
|
Alfons can use the devel version of moonbuild directly from its sources, so `alfons build` and `alfons install` will work directly.
|
|
|
|
## Docs
|
|
TODO
|
|
|