# Исполняемый файл компилятора COMPILER = ./rusi.elf # Флаги компиляции COMPILER_FLAGS = # Исходные файлы SOURCE_FILES = $(wildcard *.c) # Директория для stage2 STAGE2_DIR = stage2 STAGE2_BINARY = $(STAGE2_DIR)/rusi.elf # ============================================================ # Сборка по умолчанию (stage2 — самосборка) # ============================================================ all: stage2 # ============================================================ # Тесты # ============================================================ test: $(COMPILER) @echo "=== Запуск стандартных тестов ===" python3 test/driver.py $(COMPILER) test-ru: $(COMPILER) @echo "=== Запуск русских тестов ===" python3 test_ru/run_tests.py test-all: test test-ru # ============================================================ # Самосборка (stage2) # ============================================================ $(STAGE2_BINARY): $(COMPILER) $(SOURCE_FILES) руси.з @mkdir -p $(STAGE2_DIR) $(COMPILER) $(COMPILER_FLAGS) -o $@ $(SOURCE_FILES) @if cmp -s $(COMPILER) $@; then \ echo "OK: stage2 побайтово идентичен rusi.elf"; \ else \ echo "OK: stage2 собран (отличается от rusi.elf)"; \ fi stage2: $(STAGE2_BINARY) test-stage2: $(STAGE2_BINARY) @echo "=== Запуск тестов на stage2 ===" python3 test/driver.py $(STAGE2_BINARY) # ============================================================ # Очистка # ============================================================ clean: rm -rf $(STAGE2_DIR) stage3 rm -f *.o rm -f test/*.o test/*.elf test/*.s rm -f test_ru/*.o test_ru/*.elf test_ru/*.s find . -name '*~' -delete .PHONY: all test test-ru test-all stage2 test-stage2 clean