#! /usr/bin/make -f
# Copyright (C) 2019-2022 Rémi Denis-Courmont. See COPYING.

CC = cc
INSTALL = install
PKG_CONFIG = pkg-config
CFLAGS = -g -O2 -Wall -Wextra
LDFLAGS =
LIBS =

override CC += -std=gnu11 -pthread
override CPPFLAGS += -DPIC -DHAVE_CONFIG_H -I.
override CFLAGS += -fPIC
override LDFLAGS += -Wl,-no-undefined
override LIBS += -lm

# VLC auto-configuration
ifeq ($(shell $(PKG_CONFIG) --modversion 'vlc-plugin >= 3'),)
$(error $(PKG_CONFIG) --print-errors 'vlc-plugin >= 3')
endif
ifeq ($(shell $(PKG_CONFIG) --modversion 'libpipewire-0.3 >= 0.3.50'),)
$(error $(PKG_CONFIG) --print-errors 'libpipewire-0.3 >= 0.3.50')
endif

VLC_PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags vlc-plugin)
VLC_PLUGIN_LIBS := $(shell $(PKG_CONFIG) --libs vlc-plugin)
PIPEWIRE_CFLAGS := $(shell $(PKG_CONFIG) --cflags libpipewire-0.3)
PIPEWIRE_LIBS := $(shell $(PKG_CONFIG) --libs libpipewire-0.3)
override CFLAGS += $(VLC_PLUGIN_CFLAGS) $(PIPEWIRE_CFLAGS)
override LIBS += $(VLC_PLUGIN_LIBS) $(PIPEWIRE_LIBS)
pkgdatadir := $(shell $(PKG_CONFIG) --variable pkgdatadir vlc-plugin)
pluginsdir := $(shell $(PKG_CONFIG) --variable pluginsdir vlc-plugin)
aoutdir := $(pluginsdir)/audio_output

# Build rules

all: libaout_pipewire_plugin.so

install: all
	mkdir -p -- $(DESTDIR)$(aoutdir)
	$(INSTALL) --mode 0755 libaout_pipewire_plugin.so $(DESTDIR)$(aoutdir)

install-strip:
	$(MAKE) install INSTALL="$(INSTALL) -s"

uninstall:
	rm -f -- $(aoutdir)/libaout_pipewire_plugin.so

mostlyclean:
	rm -f -- lib*_plugin.so */*/*.o

clean: mostlyclean

dist:
	v=$$(git describe --always); \
	git archive --prefix "vlc-plugin-pipewire-$$v/" HEAD | \
		xz -9 > "vlc-plugin-pipewire-$$v.tar.xz"

libaout_pipewire_la_SOURCES = \
        modules/audio_output/vlc_pipewire.c \
        modules/audio_output/pipewire.c

libaout_pipewire_plugin.so: $(libaout_pipewire_la_SOURCES:%.c=%.o)
	$(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS)

.PHONY: all install install-strip uninstall clean mostlyclean dist

