2026-02-22 22:00:50 +01:00
|
|
|
CC := gcc
|
|
|
|
|
CFLAGS := -O2 -Wall -Wextra -std=c11 -D_DEFAULT_SOURCE
|
2026-04-12 20:45:24 +02:00
|
|
|
LDFLAGS := -lm
|
2026-02-22 22:00:50 +01:00
|
|
|
|
2026-04-12 20:45:24 +02:00
|
|
|
SRC := main.c physics.c
|
2026-02-22 22:00:50 +01:00
|
|
|
BIN := 1dvelocitysimulator
|
|
|
|
|
|
2026-04-12 20:45:24 +02:00
|
|
|
TEST_SRC := test_physics.c physics.c
|
|
|
|
|
TEST_BIN := test_physics
|
|
|
|
|
|
|
|
|
|
COV_CFLAGS := -Wall -Wextra -std=c11 -D_DEFAULT_SOURCE -DTESTING --coverage -g -O0
|
|
|
|
|
COV_LDFLAGS := -lm
|
|
|
|
|
|
2026-02-22 22:00:50 +01:00
|
|
|
all: $(BIN)
|
|
|
|
|
|
2026-04-12 20:45:24 +02:00
|
|
|
$(BIN): $(SRC) physics.h
|
|
|
|
|
$(CC) $(CFLAGS) -o $@ $(SRC) $(LDFLAGS)
|
2026-02-22 22:00:50 +01:00
|
|
|
|
|
|
|
|
run: $(BIN)
|
|
|
|
|
./$(BIN)
|
|
|
|
|
|
2026-04-12 20:45:24 +02:00
|
|
|
test: $(TEST_BIN)
|
|
|
|
|
./$(TEST_BIN)
|
|
|
|
|
|
|
|
|
|
$(TEST_BIN): $(TEST_SRC) physics.h
|
|
|
|
|
$(CC) $(CFLAGS) -DTESTING -o $@ $(TEST_SRC) $(LDFLAGS)
|
|
|
|
|
|
|
|
|
|
coverage:
|
|
|
|
|
$(CC) $(COV_CFLAGS) -o $(TEST_BIN) $(TEST_SRC) $(COV_LDFLAGS)
|
|
|
|
|
./$(TEST_BIN)
|
|
|
|
|
lcov --capture --directory . --output-file coverage.info --rc branch_coverage=1
|
|
|
|
|
lcov --remove coverage.info '/usr/*' --output-file coverage.info \
|
|
|
|
|
--rc branch_coverage=1 --ignore-errors unused
|
|
|
|
|
@LINE_PCT=$$(lcov --summary coverage.info 2>&1 | grep -oP 'lines\.*:\s*\K[0-9.]+'); \
|
|
|
|
|
echo "Line coverage: $${LINE_PCT}%"; \
|
|
|
|
|
if [ "$$(echo "$${LINE_PCT} < 100.0" | bc -l)" = "1" ]; then \
|
|
|
|
|
echo "FAIL: Line coverage $${LINE_PCT}% is below 100%"; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
else \
|
|
|
|
|
echo "OK: 100% line coverage achieved"; \
|
|
|
|
|
fi
|
|
|
|
|
|
2026-02-22 22:00:50 +01:00
|
|
|
clean:
|
2026-04-12 20:45:24 +02:00
|
|
|
rm -f $(BIN) $(TEST_BIN) *.gcda *.gcno *.gcov coverage.info
|
|
|
|
|
rm -rf coverage_html
|
2026-02-22 22:00:50 +01:00
|
|
|
|
2026-04-12 20:45:24 +02:00
|
|
|
.PHONY: all run test coverage clean
|