CC = clang CXX = clang++ CFLAGS = -O2 -Wall -I./libs CXXFLAGS = -std=c++17 -O2 -Wall -I./libs UNAME_S := $(shell uname -s) BREW_PREFIX := $(shell brew --prefix portaudio 2>/dev/null) ifeq ($(UNAME_S),Darwin) ifneq ($(BREW_PREFIX),) CFLAGS += -I$(BREW_PREFIX)/include CXXFLAGS += -I$(BREW_PREFIX)/include LIBS += -L$(BREW_PREFIX)/lib -lportaudio else $(warning [Makefile] PortAudio не найдена через Homebrew. Установите её: brew install portaudio) endif else ifeq ($(UNAME_S),Linux) HAVE_PKG := $(shell pkg-config --exists portaudio-2.0 && echo yes || echo no) ifeq ($(HAVE_PKG),yes) PORTAUDIO_CFLAGS := $(shell pkg-config --cflags portaudio-2.0) PORTAUDIO_LIBS := $(shell pkg-config --libs portaudio-2.0) CFLAGS += $(PORTAUDIO_CFLAGS) CXXFLAGS += $(PORTAUDIO_CFLAGS) LIBS += $(PORTAUDIO_LIBS) else $(warning [Makefile] portaudio-2.0 не найдена через pkg-config. Использую -lportaudio) LIBS += -lportaudio endif else $(warning [Makefile] Unsupported OS: $(UNAME_S)) endif SRCS_CPP = main.cpp commands.cpp cli.cpp webserver.cpp sound.cpp bfsk.cpp x25519_handshake.cpp SRCS_C = libs/monocypher.c libs/linenoise.c OBJS_CPP = $(SRCS_CPP:.cpp=.o) OBJS_C = $(SRCS_C:.c=.o) TARGET = cerberus .PHONY: all clean all: $(TARGET) $(TARGET): $(OBJS_CPP) $(OBJS_C) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f $(TARGET) *.o libs/*.o