# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # $Id: c4762ac7adb74a9322711889510b2f0c4e950f3f $ EAPI=8 inherit cmake flag-o-matic toolchain-funcs udev xdg DESCRIPTION="Advanced Digital DJ tool based on Qt" HOMEPAGE="https://mixxx.org/" if [[ ${PV} == *9999 ]] ; then inherit git-r3 if [[ ${PV} == ?.?.9999 ]] ; then EGIT_BRANCH=${PV%.9999} fi EGIT_REPO_URI="https://github.com/mixxxdj/${PN}.git" else SRC_URI="https://github.com/mixxxdj/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" KEYWORDS="amd64 ~arm64 x86" fi LICENSE="GPL-2" SLOT="0" IUSE="aac benchmark ffmpeg hid keyfinder lv2 midi modplug mp3 mp4 opus" IUSE+=" qtkeychain rubberband shout test upower +usb wavpack" REQUIRED_USE=" benchmark? ( test ) hid? ( usb ) qtkeychain? ( shout ) test? ( aac ffmpeg midi mp3 opus rubberband ) " RESTRICT="!test? ( test )" RDEPEND=" dev-cpp/abseil-cpp:= dev-db/sqlite:3 dev-libs/hidapi dev-libs/protobuf:= dev-qt/qt5compat:6[qml] dev-qt/qtbase:6[concurrent,dbus,gui,icu,network,opengl,sql,sqlite,ssl,widgets,xml,X] dev-qt/qtdeclarative:6 dev-qt/qtshadertools:6 dev-qt/qtsvg:6 media-libs/chromaprint:= media-libs/flac:= media-libs/libebur128:= media-libs/libglvnd[X] media-libs/libogg media-libs/libsndfile media-libs/libsoundtouch:= media-libs/libvorbis media-libs/portaudio media-libs/taglib:= media-sound/lame virtual/glu x11-libs/libX11 aac? ( media-libs/faad2 media-libs/libmp4v2 ) benchmark? ( dev-cpp/benchmark:= dev-cpp/gtest dev-util/google-perftools:= ) ffmpeg? ( media-video/ffmpeg:= ) hid? ( dev-libs/hidapi virtual/libudev virtual/libusb:1 ) keyfinder? ( media-libs/libkeyfinder ) lv2? ( media-libs/lilv ) midi? ( media-libs/portmidi ) modplug? ( media-libs/libmodplug ) mp3? ( media-libs/libid3tag:= media-libs/libmad ) mp4? ( media-libs/libmp4v2:= ) opus? ( media-libs/opus media-libs/opusfile ) qtkeychain? ( >=dev-libs/qtkeychain-0.14.2:=[qt6(+)] ) rubberband? ( media-libs/rubberband:= ) shout? ( dev-libs/openssl:= >=media-libs/libshout-idjc-2.4.6 ) upower? ( dev-libs/glib:2 sys-power/upower:= ) usb? ( virtual/libusb:1 ) wavpack? ( media-sound/wavpack ) " DEPEND="${RDEPEND} dev-cpp/ms-gsl test? ( dev-cpp/gtest ) " BDEPEND=" dev-util/spirv-tools virtual/pkgconfig " PATCHES=( # Building mixxx-test target only with explicit test useflag "${FILESDIR}"/${P}-tests.patch # Fix strict-aliasing violations in vendored katai_cpp_stl_runtime # https://github.com/kaitai-io/kaitai_struct_cpp_stl_runtime/commit/c01f530.patch "${FILESDIR}"/${PN}-2.5.0-fix-strict-aliasing-kaitai.patch ) CMAKE_SKIP_TESTS=( # need HID controller LegacyControllerMappingValidationTest.HidMappingsValid # randomly fails # https://github.com/mixxxdj/mixxx/issues/12554 EngineBufferE2ETest ) src_configure() { # prevent ld error as package builds static libs. tc-is-lto && append-flags $(test-flags -ffat-lto-objects) local mycmakeargs=( -DBATTERY="$(usex upower)" -DBROADCAST="$(usex shout)" -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING="$(usex test)" -DBUILD_BENCH="$(usex benchmark)" -DBULK="$(usex usb)" # prevent duplicate call -DCCACHE_SUPPORT=OFF -DENGINEPRIME=OFF -DFAAD="$(usex aac)" -DFFMPEG="$(usex ffmpeg)" -DGPERFTOOLS="$(usex benchmark)" -DGPERFTOOLSPROFILER="$(usex benchmark)" -DHID="$(usex hid)" -DINSTALL_USER_UDEV_RULES=OFF -DKEYFINDER="$(usex keyfinder)" -DLILV="$(usex lv2)" -DMAD="$(usex mp3)" -DMODPLUG="$(usex modplug)" -DOPTIMIZE=OFF -DOPUS="$(usex opus)" -DPORTMIDI="$(usex midi)" -DQML=ON -DQTKEYCHAIN="$(usex qtkeychain)" -DRUBBERBAND="$(usex rubberband)" -DVINYLCONTROL=ON -DWAVPACK="$(usex wavpack)" ) cmake_src_configure } src_install() { cmake_src_install use benchmark && dobin "${BUILD_DIR}"/mixxx-test udev_newrules "${S}"/res/linux/mixxx-usb-uaccess.rules 69-mixxx-usb-uaccess.rules } pkg_postinst() { xdg_pkg_postinst udev_reload elog "Manuals are no longer part of the package." elog "Please refer to https://downloads.mixxx.org/manual/ for up-to-date manuals." if use benchmark; then elog "" elog "Launch benchmark : ${EROOT}/usr/bin/mixxx-test --benchmark" elog "Launch Unittests : ${EROOT}/usr/bin/mixxx-test" elog "Some test suites may not be available without source files." fi } pkg_postrm() { xdg_pkg_postrm udev_reload }