VERSION = 1.5.0
TAG = 1.5.0
SOURCE_ROOT = /git_repos/pipewire
BUILD_ROOT = /git_repos/pipewire/builddir

all:
	ninja -C $(BUILD_ROOT)

install:
	ninja -C $(BUILD_ROOT) install

uninstall:
	ninja -C $(BUILD_ROOT) uninstall

clean:
	ninja -C $(BUILD_ROOT) clean

run: all
	SPA_PLUGIN_DIR=$(BUILD_ROOT)/spa/plugins \
	SPA_DATA_DIR=$(SOURCE_ROOT)/spa/plugins \
	PIPEWIRE_MODULE_DIR=$(BUILD_ROOT)/src/modules \
	PATH=$(BUILD_ROOT)/src/examples:$(PATH) \
	PIPEWIRE_CONFIG_DIR=$(BUILD_ROOT)/src/daemon \
	ACP_PATHS_DIR=$(SOURCE_ROOT)/spa/plugins/alsa/mixer/paths \
	ACP_PROFILES_DIR=$(SOURCE_ROOT)/spa/plugins/alsa/mixer/profile-sets \
	PIPEWIRE_LOG_SYSTEMD=false \
	$(DBG) $(BUILD_ROOT)/src/daemon/pipewire-uninstalled

run-pulse: all
	SPA_PLUGIN_DIR=$(BUILD_ROOT)/spa/plugins \
	SPA_DATA_DIR=$(SOURCE_ROOT)/spa/plugins \
	PIPEWIRE_MODULE_DIR=$(BUILD_ROOT)/src/modules \
	PIPEWIRE_CONFIG_DIR=$(BUILD_ROOT)/src/daemon \
	ACP_PATHS_DIR=$(SOURCE_ROOT)/spa/plugins/alsa/mixer/paths \
	ACP_PROFILES_DIR=$(SOURCE_ROOT)/spa/plugins/alsa/mixer/profile-sets \
	PIPEWIRE_LOG_SYSTEMD=false \
	$(DBG) $(BUILD_ROOT)/src/daemon/pipewire-pulse

gdb:
	$(MAKE) run DBG=gdb

valgrind:
	$(MAKE) run DBG="DISABLE_RTKIT=1 PIPEWIRE_DLCLOSE=false valgrind --trace-children=yes --leak-check=full"

test: all
	ninja -C $(BUILD_ROOT) test

benchmark: all
	ninja -C $(BUILD_ROOT) benchmark

monitor: all
	SPA_PLUGIN_DIR=$(BUILD_ROOT)/spa/plugins \
	SPA_DATA_DIR=$(SOURCE_ROOT)/spa/plugins \
	PIPEWIRE_MODULE_DIR=$(BUILD_ROOT)/src/modules/ \
	$(BUILD_ROOT)/src/tools/pw-mon

cli: all
	SPA_PLUGIN_DIR=$(BUILD_ROOT)/spa/plugins \
	SPA_DATA_DIR=$(SOURCE_ROOT)/spa/plugins \
	PIPEWIRE_MODULE_DIR=$(BUILD_ROOT)/src/modules/ \
	$(BUILD_ROOT)/src/tools/pw-cli

shell: all
	ninja -C $(BUILD_ROOT) pw-uninstalled

dist: all
	git archive --prefix=pipewire-$(VERSION)/ -o pipewire-$(VERSION).tar.gz $(TAG)

rpm: dist
	rpmbuild -ta pipewire-$(VERSION).tar.gz

publish: all
	git branch -D gh-pages 2>/dev/null || true && \
	git branch -D draft 2>/dev/null || true && \
	git checkout -b draft && \
	git add -f $(BUILD_ROOT)/doc/html && \
	git commit -anm "Deploy on gh-pages" && \
	git subtree split --prefix $(BUILD_ROOT)/doc/html -b gh-pages && \
	git push --force origin gh-pages:gh-pages && \
	git checkout work 2>/dev/null
