# Makefile для сборки OFDM-приёмника и передатчика для PlutoSDR

CC       = gcc
CFLAGS   = -Wall -O2
LDFLAGS  = -liio -lliquid -lfftw3f -lm -lpthread

TX_BIN   = transmitter
RX_BIN   = receiver
TX_SRC   = transmitter.c
RX_SRC   = receiver.c

TX_EXISTS := $(shell test -f $(TX_SRC) && echo 1 || echo 0)
RX_EXISTS := $(shell test -f $(RX_SRC) && echo 1 || echo 0)

ifeq ($(TX_EXISTS),1)
  TARGETS += $(TX_BIN)
endif

ifeq ($(RX_EXISTS),1)
  TARGETS += $(RX_BIN)
endif

all: $(TARGETS)
        @echo "Готово: $(TARGETS)"

$(TX_BIN): $(TX_SRC) common.c common.h
        $(CC) $(CFLAGS) -o $@ $(TX_SRC) common.c $(LDFLAGS)
        @echo "  ✓ $(TX_BIN) собран"

$(RX_BIN): $(RX_SRC) common.c common.h
        $(CC) $(CFLAGS) -o $@ $(RX_SRC) common.c $(LDFLAGS)
        @echo "  ✓ $(RX_BIN) собран"

test:
        python3 -c "import struct; f=open('test_input.bin','wb'); [f.write(struct.pack('B', i%256)) for i in range(1048576)]; f.close()"
        @ls -lh test_input.bin

clean:
        rm -f $(TX_BIN) $(RX_BIN) *.o test_input.bin output.bin

help:
        @echo "Цели:"
        @echo "  make        — сборка всего, что есть"
        @echo "  make test   — создать тестовый файл 1 МБ"
        @echo "  make clean  — удалить всё собранное"

.PHONY: all test clean help