Complete makefile toolkit with generation and validation capabilities
97
97%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
{
"context": "Evaluate a generated C project Makefile against GNU Make best practices from the makefile-generator skill",
"type": "weighted_checklist",
"checklist": [
{
"name": "Modern header present",
"description": "Makefile begins with SHELL := bash, .ONESHELL:, .SHELLFLAGS := -eu -o pipefail -c, .DELETE_ON_ERROR:, .SUFFIXES:, and both MAKEFLAGS += lines",
"max_score": 15
},
{
"name": ".PHONY declaration",
"description": "All non-file targets (all, install, clean, test, help) are declared in a single .PHONY line",
"max_score": 15
},
{
"name": "User-overridable variables use ?=",
"description": "CC, CFLAGS, PREFIX, and DESTDIR are declared with ?= operator; project-internal variables (SOURCES, OBJECTS) use :=",
"max_score": 10
},
{
"name": "Automatic dependency tracking",
"description": "Compile rule includes -MMD -MP flags and the Makefile includes the generated .d files with -include $(OBJECTS:.o=.d) or equivalent",
"max_score": 15
},
{
"name": "Order-only prerequisite for build directory",
"description": "Object file pattern rule uses | $(BUILDDIR) order-only prerequisite instead of or in addition to inline mkdir -p",
"max_score": 10
},
{
"name": "install target correctness",
"description": "install target uses the install command (not cp), creates the target directory with install -d, applies correct mode (-m 755), and respects DESTDIR",
"max_score": 15
},
{
"name": "help target with ## comments",
"description": "Each user-facing target has a ## comment immediately above it; the help target extracts and prints them using grep or awk",
"max_score": 10
},
{
"name": "Tab indentation in recipes",
"description": "All recipe lines are indented with a tab character, not spaces",
"max_score": 5
},
{
"name": "Validation checklist comment",
"description": "The Makefile includes a comment block at the end listing which validation checklist items were verified",
"max_score": 5
}
]
}