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