mach

A work-in-progress implementation of make(1)

git clone https://git.8pit.net/mach.git

 1# POSIX Compatibility
 2
 3* [ ] Support for command-line options mandated by POSIX
 4    * [x] Basic integration with `System.Console.GetOpt`
 5    * [x] Support for specifying targets on the command-line
 6    * [x] Support for specifying assignments on the command-line
 7    * [x] Support for the `-f` flag
 8    * [ ] Support for all other flags
 9* [ ] Support for inference rules
10    * [x] Parser support
11    * [x] Handling of ".s2.s1" inference rules
12    * [x] Respect and use `.SUFFIXES" (see *special targets* below)
13    * [x] Handling of ".s1" inference rules
14    * [ ] Tests
15* [x] Support for command prefixes (`-`, `@`, `+`)
16    * [x] Preliminary support for `@` and `-`
17    * [ ] Support for `-`
18    * [ ] Support for `.SILENT` / `.IGNORE` / `…` (see *special targets* below)
19    * [ ] Tests
20* [ ] Proper support for escaped newlines in commands and assignments
21* [ ] Support for macro assignment operators other than `:=`
22* [x] Support for macro expansions of the form `$(string1:subst1=[subst2])`
23    * [ ] Support for nested expansions in `string1`
24* [ ] Support for special targets (e.g. `.PHONY`)
25* [ ] Support for internal macros (e.g. `$@`, `$%`, …)
26* [x] Support for default rules (e.g. for C compilation)
27* [ ] Support for environment variables (e.g. `MAKEFLAGS`)
28* [ ] Support for libraries (prerequisites with parentheses)