# Лабораторное окружение темы 08. Сборка: make
# Всё собирается в build/, исходники не меняются.
CC      ?= gcc
CFLAGS  ?= -O2 -Wall -Wextra
BUILD   := build

BINS    := $(BUILD)/cmp $(BUILD)/naked $(BUILD)/buggy_syscall
LIBS    := $(BUILD)/shim.so

.PHONY: all clean check

all: $(BINS) $(LIBS)
	@echo "собрано: $(BINS) $(LIBS)"

$(BUILD):
	@mkdir -p $(BUILD)

$(BUILD)/cmp: src/cmp.c | $(BUILD)
	$(CC) $(CFLAGS) -o $@ $<

$(BUILD)/buggy_syscall: src/buggy_syscall.c | $(BUILD)
	$(CC) $(CFLAGS) -o $@ $<

# статический бинарник без libc: свой _start, никаких зависимостей
$(BUILD)/naked: src/naked.c | $(BUILD)
	$(CC) -nostdlib -static -O2 -Wall -Wextra -o $@ $<

$(BUILD)/shim.so: src/shim.c | $(BUILD)
	$(CC) -shared -fPIC $(CFLAGS) -o $@ $< -ldl

check:
	@bash -n src/baseline.sh && echo "baseline.sh: синтаксис ок"
	@bash -n src/mock_tracer.sh && echo "mock_tracer.sh: синтаксис ок"
	@python3 -m py_compile src/btf_dump.py && echo "btf_dump.py: синтаксис ок"
	@python3 src/btf_dump.py >/dev/null && echo "btf_dump.py: запуск ок"
	@echo "проверка завершена"

clean:
	rm -rf $(BUILD)
