# Template file for 'pipewire'
pkgname=pipewire
version=1.2.7
revision=1
build_style=meson
configure_args="
 --auto-features=enabled
 -Db_ndebug=false
 -Ddocs=enabled
 -Dman=enabled
 -Dlibcamera=enabled
 -Droc=disabled
 $(vopt_feature sdl2 sdl2)
 -Dsystemd=disabled
 -Dlogind=disabled
 -Dudevrulesdir=/usr/lib/udev/rules.d
 -Dvulkan=enabled
 -Dbluez5-codec-lc3plus=disabled
 -Dgsettings-pulse-schema=disabled
 -Dsnap=disabled
 -Dsession-managers=[]
 -Drlimits-match=@_pipewire
 $(vopt_feature ffado libffado)
 $(vopt_feature selinux selinux)
"
hostmakedepends="doxygen pkg-config python3-docutils gettext glib-devel"
makedepends="$(vopt_if sdl2 SDL2-devel) gst-plugins-base1-devel jack-devel
 sbc-devel v4l-utils-devel libva-devel libbluetooth-devel ncurses-devel
 libfreeaptx-devel libusb-devel fdk-aac-devel libsndfile-devel
 vulkan-loader-devel pulseaudio-devel avahi-libs-devel webrtc-audio-processing-devel
 readline-devel openssl-devel lilv-devel libcanberra-devel dbus-devel
 libmysofa-devel opus-devel $(vopt_if ffado libffado-devel) liblc3-devel
 $(vopt_if selinux libselinux-devel) libcamera-devel libcap-devel"
depends="libspa-alsa>=${version}_${revision} libspa-audioconvert>=${version}_${revision}
 libspa-audiomixer>=${version}_${revision} libspa-control>=${version}_${revision}
 libspa-v4l2>=${version}_${revision} pulseaudio-utils virtual?pipewire-session-manager"
checkdepends="pulseaudio-utils"
short_desc="Server and user space API to deal with multimedia pipelines"
maintainer="cinerea0 <cinerea0@protonmail.com>"
license="MIT"
homepage="https://pipewire.org/"
changelog="https://gitlab.freedesktop.org/pipewire/pipewire/-/raw/master/NEWS"
distfiles="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${version}/pipewire-${version}.tar.gz"
checksum=e75568ed18bcbe75e9779af57cb9cc256fd7ebfaadc12bb347a0717055d1d3a9
make_dirs="/var/lib/pipewire 0755 _pipewire _pipewire"
system_accounts="_pipewire"

build_options="ffado sdl2 selinux"
desc_option_ffado="Enable support for FireWire based audio devices"
desc_option_selinux="Enable SELinux integration"

replaces="libpulseaudio-pipewire>=0"

if [ "$XBPS_TARGET_ENDIAN" = "le" ]; then
	makedepends+=" ldacBT-devel"
else
	configure_args+=" -Dbluez5-codec-ldac=disabled"
fi

post_install() {
	vlicense LICENSE
	vdoc "${FILESDIR}/README.voidlinux"
	vmkdir usr/share/examples/sv
	vcopy ${FILESDIR}/pipewire usr/share/examples/sv/
	vinstall "${FILESDIR}/pipewire.desktop" 644 usr/share/applications
	vinstall "${FILESDIR}/pipewire-pulse.desktop" 644 usr/share/applications
	vsconf "${FILESDIR}/20-pipewire-pulse.conf"
}

libpipewire_package() {
	short_desc+=" - pipewire library"
	pkg_install() {
		vmove "usr/lib/libpipewire-0.3.so.*"
		vmove "usr/lib/pipewire-0.3/*.so"
	}
}

pipewire-devel_package() {
	depends="libpipewire>=${version}_${revision}"
	short_desc+=" - pipewire and libspa development files"
	pkg_install() {
		vmove usr/include/pipewire-0.3
		vmove usr/include/spa-0.2
		vmove usr/lib/pkgconfig/libpipewire-0.3.pc
		vmove usr/lib/pkgconfig/libspa-0.2.pc
		vmove usr/lib/libpipewire-0.3.so
	}
}

libspa-alsa_package() {
	short_desc+=" - alsa plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/alsa
	}
}

libspa-audioconvert_package() {
	short_desc+=" - audioconvert plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/audioconvert
	}
}

libspa-audiomixer_package() {
	short_desc+=" - audiomixer plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/audiomixer
	}
}

libspa-bluetooth_package() {
	short_desc+=" - bluetooth plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/bluez5
	}
}

libspa-control_package() {
	short_desc+=" - control plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/control
	}
}

libspa-jack_package() {
	short_desc+=" - jack plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/jack
	}
}

libspa-v4l2_package() {
	short_desc+=" - v4l2 plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/v4l2
	}
}

libspa-videoconvert_package() {
	short_desc+=" - videoconvert plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/videoconvert
	}
}

libspa-vulkan_package() {
	short_desc+=" - vulkan plugins"
	pkg_install() {
		vmove usr/lib/spa-0.2/vulkan
	}
}

gstreamer1-pipewire_package() {
	short_desc+=" - gstreamer plugin"
	pkg_install() {
		vmove usr/lib/gstreamer-1.0
	}
}

alsa-pipewire_package() {
	depends="libpipewire>=${version}_${revision}"
	short_desc+=" - ALSA client library"
	pkg_install() {
		vmove usr/lib/alsa-lib
		vmove usr/share/alsa/alsa.conf.d
	}
}

libjack-pipewire_package() {
	depends="libpipewire>=${version}_${revision}"
	short_desc+=" - JACK client library"
	pkg_install() {
		vmove usr/lib/pipewire-0.3/jack
		vmove usr/bin/pw-jack
		vmove usr/share/man/man1/pw-jack.1
	}
}

pipewire-doc_package() {
	short_desc+=" - documentation"
	pkg_install() {
		vmove usr/share/doc/pipewire/html
	}
}
