mirror of
https://github.com/zerotier/cathode.git
synced 2026-05-22 16:21:41 -07:00
107 lines
2.8 KiB
Makefile
107 lines
2.8 KiB
Makefile
# Automagically pick clang or gcc, with preference for clang
|
|
# This is only done if we have not overridden these with an environment or CLI variable
|
|
ifeq ($(origin CC),default)
|
|
CC=$(shell if [ -e /usr/bin/clang ]; then echo clang; else echo gcc; fi)
|
|
endif
|
|
ifeq ($(origin CXX),default)
|
|
CXX=$(shell if [ -e /usr/bin/clang++ ]; then echo clang++; else echo g++; fi)
|
|
endif
|
|
|
|
OSTYPE=$(shell uname -s | tr '[A-Z]' '[a-z]')
|
|
BUILD=build/$(OSTYPE)
|
|
CFLAGS=-g
|
|
INCLUDES=-I. -Iext/libzt/include
|
|
LIBS=-Lext/libzt/$(BUILD) -lzt -lpthread -lncurses -lportaudio -lm -ldl
|
|
|
|
CONFIG_INSTALL_DIR=$(HOME)/cathode
|
|
|
|
ifeq ($(OSTYPE),darwin)
|
|
BIN_INSTALL_DIR=/usr/local/bin
|
|
BUILD_OUTPUT_DIR=build/darwin
|
|
BIN_DIST=dist/macOS
|
|
ZTSDK_NETWORK_DIR=$(CONFIG_INSTALL_DIR)/networks.d
|
|
endif
|
|
ifeq ($(OSTYPE),linux)
|
|
BIN_INSTALL_DIR=$(HOME)/bin
|
|
BUILD_OUTPUT_DIR=build/linux
|
|
BIN_DIST=dist/linux/
|
|
ZTSDK_NETWORK_DIR=$(CONFIG_INSTALL_DIR)/networks.d
|
|
endif
|
|
|
|
# If root
|
|
ifeq ($(shell id -g),0)
|
|
BIN_INSTALL_DIR=/usr/sbin
|
|
endif
|
|
|
|
# Check for presence of build/ binaries, if not, use dist/ for install
|
|
ifneq ("$(wildcard $(BUILD_OUTPUT_DIR)/cathode)","")
|
|
INSTALL_BIN_SOURCE=$(BUILD_OUTPUT_DIR)
|
|
else
|
|
INSTALL_BIN_SOURCE=$(BIN_DIST)
|
|
endif
|
|
|
|
CC=clang++
|
|
OBJDIR=objs
|
|
SRCDIR=p2pvc/src
|
|
INCDIR=$(SRCDIR)/inc
|
|
CFLAGS+=-I$(INCDIR)
|
|
platform=$(shell uname -s)
|
|
SRCS=$(wildcard $(SRCDIR)/*.c)
|
|
OBJS=$(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
|
|
CFLAGS+=-O2 -Wall -g
|
|
|
|
ifeq ($(platform), linux)
|
|
CFLAGS+=-DPA_USE_ALSA
|
|
else
|
|
CFLAGS+=-DPA_USE_COREAUDIO
|
|
endif
|
|
|
|
CFLAGS+=`pkg-config --cflags opencv`
|
|
CFLAGS_DEBUG+=-O0 -g3 -Werror -DDEBUG
|
|
LDFLAGS+=`pkg-config --libs opencv`
|
|
|
|
libzt:
|
|
cd ext/libzt && make -j4 static_lib LIBZT_TRACE=1 LIBZT_DEBUG=1
|
|
|
|
all: cathode
|
|
|
|
.PHONY: all clean debug
|
|
|
|
debug: CC := $(CC) $(CFLAGS_DEBUG)
|
|
debug: clean cathode
|
|
|
|
$(OBJS): | $(OBJDIR)
|
|
$(OBJDIR):
|
|
mkdir -p $@
|
|
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(wildcard $(INCDIR)/*.h) Makefile
|
|
$(CC) $(CFLAGS) $(INCLUDES) $< -c -o $@
|
|
|
|
cathode: $(OBJS)
|
|
mkdir -p $(BUILD_OUTPUT_DIR)
|
|
$(CC) $(CFLAGS) $^ -o $(BUILD_OUTPUT_DIR)/$@ $(LDFLAGS) $(LIBS)
|
|
|
|
video: CFLAGS := $(CFLAGS) -DVIDEOONLY
|
|
video: $(filter-out objs/cathode.o, $(OBJS))
|
|
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
|
|
|
|
audio: CFLAGS := $(CFLAGS) -DAUDIOONLY
|
|
audio: $(filter-out objs/cathode.o, $(OBJS))
|
|
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
|
|
|
|
install:
|
|
@mkdir -p $(ZTSDK_NETWORK_DIR)
|
|
@mkdir -p $(BIN_INSTALL_DIR)
|
|
@cp -f $(INSTALL_BIN_SOURCE)/cathode $(BIN_INSTALL_DIR)/cathode
|
|
@echo " - configuration files will be written to: " $(CONFIG_INSTALL_DIR)
|
|
@echo " - cathode installed as: " $(BIN_INSTALL_DIR)/cathode
|
|
|
|
uninstall:
|
|
rm -rf $(CONFIG_INSTALL_DIR) $(BIN_INSTALL_DIR)/cathode
|
|
|
|
clean:
|
|
rm -rf $(OBJDIR) audio video $(BUILD_OUTPUT_DIR)/cathode
|
|
-find . -type f \( -name '*.a' -o -name '*.o' -o -name '*.so' -o -name \
|
|
'*.o.d' -o -name '*.out' -o -name '*.log' -o -name '*.dSYM' \) -delete
|
|
|