unmake: POSIX makefile linter
_
_ _ ___ _____ ___| |_ ___
| | | | | .'| '_| -_|
|___|_|_|_|_|_|__,|_,_|___|
SUMMARY
Recursive POSIX makefile linter
EXAMPLES
% cd fixtures/parse-valid
% unmake .
warning: ./Makefile: MAKEFILE_PRECEDENCE: lowercase Makefile to makefile for launch speed
warning: ./boilerplate-ats.mk:4: SIMPLIFY_AT: replace individual at (@) signs with .SILENT target declaration(s)
warning: ./missing-posix.mk:1: STRICT_POSIX: lead makefiles with the ".POSIX:" compliance marker, or else rename include files like *.include.mk
...
DOWNLOAD
For more platforms and installation methods, see INSTALL.
For details on parser rules, see SYNTAX.
For details on scanner rules, see WARNINGS.
For details on building from source, see DEVELOPMENT.
ABOUT
unmake detects subtle portability quirks in makefiles.
RESOURCES
Prior art, personal plugs, and tools for developing software.
- BSD make, a popular make implementation with BSD extensions
- cmake, a make-adjacent build system with its own portability features
- GNU make, a popular make implementation with GNU extensions
- Grunt, Node.js task runners
- invoke, a task runner for Python projects
- lake, a task runner for Lua projects
- mcandre/linters, a wiki of common programming language linters and SAST tools
- mage, a task runner for Go projects
- ninja, a fast build system without conditionals
- nmake, a make-adjacent build system for .NET projects
- Rake, a task runner for Ruby projects
- Shake, a task runner for Haskell projects
- ShellCheck, a linter for POSIX sh family shell scripts
🙃