# Исполняемый файл компилятора
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