makefile, deletion and for flakes

This commit is contained in:
Rorikstr | Rust Dev 2025-09-25 21:31:59 +03:00
parent 1feb55f404
commit e20765d252
4 changed files with 150 additions and 0 deletions

61
flake.lock generated Normal file
View file

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1758427187,
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

41
flake.nix Normal file
View file

@ -0,0 +1,41 @@
{
description = "C Project with Check, Valgrind, Gcov support";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system};
buildInputs = with pkgs; [
check # для unit-тестов
valgrind # для проверки утечек
lcov # для отчетов gcov
clang-tools # clang-format
gcc # компилятор
gnumake # make
ncurses # для TUI/CLI приложений
readline # для readline поддержки
zlib # сжатие данных
libxml2 # XML parsing
curl # HTTP клиент
openssl # криптография
sqlite # база данных
];
in {
devShells.default = pkgs.mkShell {
inherit buildInputs;
shellHook = ''
echo " C Project Dev Environment Loaded"
echo "🔧 Available tools:"
echo " - gcc, make, clang-format"
echo " - checkmk, valgrind, lcov"
echo "🚀 Run 'make test' to build and run tests"
'';
};
});
}

View file

@ -0,0 +1,48 @@
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -Werror -g
LDFLAGS = -lncurses
TETRISDIR = brick_game/tetris
CLIDIR = gui/cli
# Файлы
TETRIS_SRC = $(TETRISDIR)/tetris.c
CLI_SRC = $(CLIDIR)/main.c $(CLIDIR)/display.c
OBJ = $(TETRIS_SRC:.c=.o) $(CLI_SRC:.c=.o)
# Имя исполняемого файла
TARGET = tetris
# Установка
PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
.PHONY: all install uninstall clean test gcov_report
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(OBJ) -o $@ $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
install: $(TARGET)
install -m 755 $(TARGET) $(BINDIR)/
uninstall:
rm -f $(BINDIR)/$(TARGET)
clean:
rm -f $(OBJ) $(TARGET) *.gcda *.gcno *.gcov
test:
@echo "Running tests..."
# Здесь будет вызов тестов, если они есть
gcov_report: CFLAGS += --coverage
gcov_report: clean $(TARGET)
./$(TARGET)
gcov $(TETRIS_SRC)
lcov --capture --directory . --output-file coverage.info
genhtml coverage.info --output-directory coverage_report
@echo "Coverage report generated in coverage_report/index.html"