unmake: a makefile linter

text _ _ _ ___ _____ ___| |_ ___ | | | | | .'| '_| -_| |___|_|_|_|_|_|__,|_,_|___|

ABOUT

unmake checks makefiles for syntax errors and portability issues.

EXAMPLES

```console $ cd fixtures

$ unmake . error: ./invalid/crlf.mk:1:5 found "\r", expected: LF, comment, inline command, macro expansion, target, wait prerequisite marker ... ```

See unmake -h for more options.

NOTABLE FEATURES

Directory recursion

unmake automatically recurses over directories.

When recursing over directories, unmake skips symlinks.

unmake skips many implementation-specific files named like GNUmakefile or BSDmakefile.

unmake skips many machine-generated makefiles. For example, makefiles produced by autotools; Perl; and cmake when using the Unix Makefile generator (both in-source builds and out-of-source builds).

unmake skips any third party makefiles house in subdirectories like .git, node_modules, or vendor.

To investigate makefiles in more detail, try the --debug or --inspect options.

PARSE ERRORS

unmake can identify subtle makefile quirks.

See SYNTAX.md for more information.

LINTER WARNINGS

Coming soon.

CRATE

https://crates.io/crates/unmake

API DOCUMENTATION

https://docs.rs/unmake/latest/unmake/

DOWNLOAD

https://github.com/mcandre/unmake/releases

INSTALL FROM SOURCE

console $ cargo install --force --path .

RUNTIME REQUIREMENTS

(None)

Recommended

CONTRIBUTING

For more details on developing crit itself, see DEVELOPMENT.md.

LICENSE

FreeBSD

MORE EXAMPLES

Some projects using unmake to safeguard their makefiles:

SEE ALSO