unmake 0.0.27

a makefile linter
Documentation

unmake: POSIX makefile linter

CloudFlare R2 install media downloads Crates.io Downloads (recent) docs.rs Test license

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

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

🙃