rusi/Makefile

64 lines
1.9 KiB
Makefile
Raw Normal View History

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