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 multi-directory C++ project Makefile for correct recursive make usage, dependency ordering, and order-only prerequisites",
"type": "weighted_checklist",
"checklist": [
{
"name": "Top-level uses $(MAKE) exclusively",
"description": "All recursive sub-directory calls in the top-level Makefile use $(MAKE) -C <dir>, never bare make",
"max_score": 20
},
{
"name": "Build order enforced",
"description": "The top-level all target builds engine before renderer before app, either via explicit prerequisites or sequential $(MAKE) calls with correct dependency declarations",
"max_score": 20
},
{
"name": "app/Makefile modern header",
"description": "app/Makefile includes the full modern header (SHELL := bash, .ONESHELL:, .SHELLFLAGS := -eu -o pipefail -c, .DELETE_ON_ERROR:, .SUFFIXES:, MAKEFLAGS += lines)",
"max_score": 15
},
{
"name": "Order-only prerequisite for build directory",
"description": "app/Makefile object pattern rule uses | $(BUILDDIR) as an order-only prerequisite; BUILDDIR target creates the directory",
"max_score": 20
},
{
"name": "Dependency tracking in app/Makefile",
"description": "app/Makefile compile rule includes -MMD -MP and the Makefile includes *.d files with -include or equivalent",
"max_score": 15
},
{
"name": ".PHONY in both files",
"description": "Both top-level Makefile and app/Makefile declare all non-file targets in .PHONY",
"max_score": 10
}
]
}