TARGET := camera-streamer SRC := $(wildcard **/*.c **/*/*.c **/*.cc **/*/*.cc) HEADERS := $(wildcard **/*.h **/*/*.h **/*.hh **/*/*.hh) HTML := $(wildcard html/*.js html/*.html) CFLAGS := -Werror -Wall -g -I$(CURDIR) -D_GNU_SOURCE LDLIBS := -lpthread -lstdc++ ifneq (x,x$(shell which ccache)) CCACHE ?= ccache endif USE_FFMPEG ?= $(shell pkg-config libavutil libavformat libavcodec && echo 1) USE_LIBCAMERA ?= $(shell pkg-config libcamera && echo 1) USE_RTSP ?= $(shell pkg-config live555 && echo 1) ifeq (1,$(DEBUG)) CFLAGS += -g endif ifeq (1,$(USE_FFMPEG)) CFLAGS += -DUSE_FFMPEG LDLIBS += -lavcodec -lavformat -lavutil endif ifeq (1,$(USE_LIBCAMERA)) CFLAGS += -DUSE_LIBCAMERA $(shell pkg-config --cflags libcamera) LDLIBS += $(shell pkg-config --libs libcamera) endif ifeq (1,$(USE_RTSP)) CFLAGS += -DUSE_RTSP $(shell pkg-config --cflags live555) LDLIBS += $(shell pkg-config --libs live555) endif HTML_SRC = $(addsuffix .c,$(HTML)) OBJS = $(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(SRC) $(HTML_SRC))) .SUFFIXES: all: $(TARGET) %: cmd/% $(OBJS) $(CCACHE) $(CXX) $(CFLAGS) -o $@ $(filter-out cmd/%, $^) $(filter $ $@.tmp mv $@.tmp $@