60 lines
1.5 KiB
Makefile
60 lines
1.5 KiB
Makefile
CC = clang
|
|
CXX = clang++
|
|
CFLAGS = -O2 -Wall -I./libs -pthread
|
|
CXXFLAGS = -std=c++17 -O2 -Wall -I./libs -pthread
|
|
UNAME_S := $(shell uname -s)
|
|
BREW_PREFIX := $(shell brew --prefix portaudio 2>/dev/null)
|
|
CACHE_DIR = cache
|
|
OUT_DIR = out
|
|
TARGET = $(OUT_DIR)/cerberus
|
|
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 = $(patsubst %.cpp, $(CACHE_DIR)/%.o, $(SRCS_CPP))
|
|
OBJS_C = $(patsubst libs/%.c, $(CACHE_DIR)/%.o, $(SRCS_C))
|
|
OBJS = $(OBJS_CPP) $(OBJS_C)
|
|
ifneq ($(UNAME_S),)
|
|
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 PortAudio not found via brew)
|
|
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 portaudio-2.0 not found, using -lportaudio)
|
|
LIBS += -lportaudio
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
.PHONY: all clean
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJS) | $(OUT_DIR)
|
|
$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
$(CACHE_DIR)/%.o: %.cpp | $(CACHE_DIR)
|
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
|
|
|
$(CACHE_DIR)/%.o: libs/%.c | $(CACHE_DIR)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
$(CACHE_DIR):
|
|
mkdir -p $(CACHE_DIR)
|
|
|
|
$(OUT_DIR):
|
|
mkdir -p $(OUT_DIR)
|
|
|
|
clean:
|
|
rm -f $(TARGET) $(CACHE_DIR)/*.o
|