RFnexus___modem73/Makefile
2026-01-12 13:31:48 +01:00

64 lines
1.7 KiB
Makefile

CXX = g++
CC = gcc
CXXFLAGS = -std=c++17 -O3 -march=native -Wall -Wextra
LDFLAGS = -lpthread -ltinfo -lncurses -ldl -lm -lhidapi-hidraw
# dependencies
AICODIX_DSP ?= ../dsp
AICODIX_CODE ?= ../code
MODEM_SRC ?= ../modem
INCLUDES = -I$(AICODIX_DSP) -I$(AICODIX_CODE) -I$(MODEM_SRC)
TARGET = modem73
SRCS = kiss_tnc.cc
HDRS = kiss_tnc.hh miniaudio_audio.hh rigctl_ptt.hh modem.hh tnc_ui.hh
OBJS = miniaudio.o
# defualt to build with UI, headless operations through --headless
UI_FLAGS = -DWITH_UI
.PHONY: all clean install debug help
all: $(TARGET)
miniaudio.o: miniaudio.c miniaudio.h
$(CC) -c -O2 -o $@ miniaudio.c
$(TARGET): $(SRCS) $(HDRS) $(OBJS)
$(CXX) $(CXXFLAGS) $(UI_FLAGS) $(INCLUDES) -o $@ $(SRCS) $(OBJS) $(LDFLAGS)
clean:
rm -f $(TARGET) $(OBJS)
install: $(TARGET)
install -m 755 $(TARGET) /usr/local/bin/
$(shell cp 50-cm108-ptt.rules /etc/udev/rules.d/)
# Debug build
debug: CXXFLAGS = -std=c++17 -g -O0 -Wall -Wextra -DDEBUG
debug: $(TARGET)
# Help
help:
@echo "MODEM73 makefile"
@echo ""
@echo "Targets:"
@echo " all - Build modem"
@echo " clean - Remove build"
@echo " install - Install to /usr/local/bin"
@echo " debug - Build with debug symbols"
@echo ""
@echo "Variables:"
@echo " AICODIX_DSP - Path to aicodix/dsp (default: ../dsp)"
@echo " AICODIX_CODE - Path to aicodix/code (default: ../code)"
@echo " MODEM_SRC - Path to modem source (default: ../modem)"
@echo ""
@echo "Example:"
@echo " make AICODIX_DSP=~/aicodix/dsp AICODIX_CODE=~/aicodix/code"
@echo ""
@echo "Runtime options:"
@echo " ./modem73 # Run with UI"
@echo " ./modem73 -h # Run headless"
@echo " ./modem73 --headless"