Skip to content

mcandre/unmake

Repository files navigation

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

OS Package
macOS 26 Tahoe+ Intel ARM
Ubuntu 24.04 Noble+ / WSL 2+ Intel ARM

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

🙃

About

POSIX makefile linter

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages