mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-07-04 18:43:08 +02:00
62 lines
2.3 KiB
Makefile
62 lines
2.3 KiB
Makefile
CC ?= cc
|
|
CFLAGS ?= -O2 -Wall -Wextra -pedantic
|
|
LDFLAGS ?=
|
|
|
|
.ONESHELL:
|
|
|
|
all: server_c
|
|
|
|
server_c: server_c.c
|
|
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
|
|
|
|
format:
|
|
@command -v clang-format >/dev/null 2>&1 || { echo "clang-format not found"; exit 1; }
|
|
@echo "Running clang-format (ColumnLimit=100)..."
|
|
@clang-format -i -style=file server_c.c
|
|
|
|
format-check:
|
|
@command -v clang-format >/dev/null 2>&1 || { echo "clang-format not found"; exit 1; }
|
|
@echo "Checking formatting with clang-format..."
|
|
@# Use clang-format dry-run so this works without git and doesn't depend on commit state
|
|
@if clang-format --dry-run -Werror -style=file server_c.c >/dev/null 2>&1; then \
|
|
echo "Format check passed"; \
|
|
else \
|
|
echo "Formatting changes needed (run 'make format')"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# fail if any function exceeds 20 non-empty lines between '{' and matching '}'
|
|
funcsize-check:
|
|
@echo "Checking function sizes (<= 20 lines)..."
|
|
@command -v clang-tidy >/dev/null 2>&1 || { echo "clang-tidy not found"; exit 1; }
|
|
@clang-tidy \
|
|
-checks=readability-function-size \
|
|
-warnings-as-errors=readability-function-size \
|
|
-config='{ "CheckOptions": [ { "key": "readability-function-size.LineThreshold", "value": "20" } ] }' \
|
|
server_c.c -- -std=gnu11 $(CFLAGS) $(LDFLAGS)
|
|
|
|
lint:
|
|
@echo "Running clang-tidy..."
|
|
@clang-tidy \
|
|
-checks=clang-analyzer-*,clang-diagnostic-*,readability-function-size,-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling \
|
|
-config='{ "CheckOptions": [ { "key": "readability-function-size.LineThreshold", "value": "20" } ] }' \
|
|
server_c.c -- -std=gnu11 $(CFLAGS) $(LDFLAGS) || true
|
|
@echo "Running cppcheck..."
|
|
@cppcheck --enable=all --inconclusive --std=c11 --language=c --quiet --inline-suppr --check-level=exhaustive --suppress=missingIncludeSystem server_c.c || true
|
|
@echo "Checking line length (<= 100 chars) in server_c.c..."
|
|
@awk 'length($$0)>100{print "server_c.c:" NR ": line too long (" length($$0) " > 100)"; err=1} END{if(err){print "Line length check FAILED"; exit 1} else {print "Line length check passed"}}' server_c.c
|
|
|
|
build: minify
|
|
|
|
minify:
|
|
npx -y html-minifier-terser \
|
|
--collapse-whitespace --remove-comments --remove-attribute-quotes \
|
|
--remove-redundant-attributes --minify-css true --minify-js true \
|
|
-o index.min.html index.html
|
|
npx -y terser sw.js -o sw.min.js -c -m
|
|
|
|
clean:
|
|
rm -f server_c
|
|
|
|
.PHONY: all clean
|