aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Alonso Cardenas Marquez <acm@FreeBSD.org>2021-07-17 17:24:08 +0000
committerJose Alonso Cardenas Marquez <acm@FreeBSD.org>2021-07-17 17:26:45 +0000
commit032d9da080973c0df0814423a07aa64a275d2aa9 (patch)
tree0592a0465ebea11baf5314dbe43da4e670b7e4b2
parent908b8b96c31a9a01af6e39f6863a2f3bb05a7f43 (diff)
downloadports-032d9da080973c0df0814423a07aa64a275d2aa9.tar.gz
ports-032d9da080973c0df0814423a07aa64a275d2aa9.zip
audio/mixxx22: Copy audio/mixxx to audio/mixxx22
- Preparing for mixxx update
-rw-r--r--audio/Makefile1
-rw-r--r--audio/mixxx22/Makefile116
-rw-r--r--audio/mixxx22/distinfo3
-rw-r--r--audio/mixxx22/files/patch-build_depends.py159
-rw-r--r--audio/mixxx22/files/patch-build_features.py102
-rw-r--r--audio/mixxx22/files/patch-build_mixxx.py27
-rw-r--r--audio/mixxx22/files/patch-build_qt5.py11
-rw-r--r--audio/mixxx22/files/patch-lib_hidapi-0.8.0-rc1_libusb_hid.c11
-rw-r--r--audio/mixxx22/files/patch-plugins_soundsourcem4a_soundsourcem4a.h11
-rw-r--r--audio/mixxx22/files/patch-src-encoder_encodermp3.cpp11
-rw-r--r--audio/mixxx22/files/patch-src-util_screensaver.cpp27
-rw-r--r--audio/mixxx22/files/patch-src_controllers_controllermanager.cpp12
-rw-r--r--audio/mixxx22/files/patch-src_controllers_controllerpresetfilehandler.cpp14
-rw-r--r--audio/mixxx22/files/patch-vamp-plugins_SConscript11
-rw-r--r--audio/mixxx22/pkg-descr5
-rw-r--r--audio/mixxx22/pkg-plist7
16 files changed, 528 insertions, 0 deletions
diff --git a/audio/Makefile b/audio/Makefile
index 49276f145864..194d4a836976 100644
--- a/audio/Makefile
+++ b/audio/Makefile
@@ -482,6 +482,7 @@
SUBDIR += mixer.app
SUBDIR += mixertui
SUBDIR += mixxx
+ SUBDIR += mixxx22
SUBDIR += mkcue
SUBDIR += moc
SUBDIR += modplug-tools
diff --git a/audio/mixxx22/Makefile b/audio/mixxx22/Makefile
new file mode 100644
index 000000000000..539a9fcc9920
--- /dev/null
+++ b/audio/mixxx22/Makefile
@@ -0,0 +1,116 @@
+# Created by: Jean-Yves Lefort <jylefort@brutele.be>
+
+PORTNAME= mixxx
+DISTVERSIONPREFIX= release-
+DISTVERSION= 2.2.4
+PORTREVISION= 5
+CATEGORIES= audio
+PKGNAMESUFFIX?= 22
+
+MAINTAINER= acm@FreeBSD.org
+COMMENT= DJ mixing application (previous version)
+
+LICENSE= GPLv2+
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= lv2>=1.14.0:audio/lv2
+LIB_DEPENDS= libchromaprint.so:audio/chromaprint \
+ libFLAC.so:audio/flac \
+ libfftw3.so:math/fftw3 \
+ libhidapi.so:comms/hidapi \
+ libid3tag.so:audio/libid3tag \
+ libmad.so:audio/libmad \
+ libmodplug.so:audio/libmodplug \
+ libportaudio.so:audio/portaudio \
+ libSoundTouch.so:audio/soundtouch \
+ libebur128.so:audio/libebur128 \
+ librubberband.so:audio/rubberband \
+ libsndfile.so:audio/libsndfile \
+ libvamp-sdk.so:audio/vamp-plugin-sdk \
+ libogg.so:audio/libogg \
+ libvorbisfile.so:audio/libvorbis \
+ libtag.so:audio/taglib \
+ libprotobuf.so:devel/protobuf \
+ liblilv-0.so:audio/lilv
+
+USES= compiler:c++11-lang gl iconv qt:5 pkgconfig scons xorg
+USE_XORG= x11
+USE_GL= gl glu
+USE_GITHUB= yes
+GH_ACCOUNT= mixxxdj
+USE_QT= buildtools concurrent core dbus gui network opengl script scripttools \
+ sql sql-sqlite3 svg testlib xml xmlpatterns linguisttools_build \
+ qmake_build widgets
+
+CONFLICTS= mixxx-*
+
+MAKE_ARGS= qtdir="${PREFIX}" install_root="${PREFIX}" \
+ build=release optimize=off ${GUI} battery=0 vamp=1 modplug=1 mad=1
+LATE_INSTALL_ARGS= --install-sandbox=${STAGEDIR}
+
+GUI= qt5=1
+
+PORTDATA= *
+PORTDOCS= *
+
+OPTIONS_DEFINE= DOCS FAAD FFMPEG GPERFTOOLS HID LAME OPUS SHOUTCAST WAVPACK
+OPTIONS_DEFAULT= FAAD FFMPEG HID SHOUTCAST OPUS WAVPACK
+OPTIONS_SUB= yes
+
+FAAD_LIB_DEPENDS= libfaad.so:audio/faad \
+ libmp4v2.so:multimedia/mp4v2
+FAAD_MAKE_ARGS= faad=1
+FAAD_MAKE_ARGS_OFF= faad=0
+FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg
+FFMPEG_MAKE_ARGS= ffmpeg=1
+FFMPEG_MAKE_ARGS_OFF= ffmpeg=0
+GPERFTOOLS_LIB_DEPENDS= libtcmalloc.so:devel/google-perftools
+GPERFTOOLS_MAKE_ARGS= perftools=1
+GPERFTOOLS_MAKE_ARGS_OFF= perftools=0
+HID_DESC= USB HID controllers support
+HID_MAKE_ARGS= hid=1
+HID_MAKE_ARGS_OFF= hid=0
+LAME_RUN_DEPENDS= lame:audio/lame
+OPUS_LIB_DEPENDS= libopus.so:audio/opus \
+ libopusfile.so:audio/opusfile
+OPUS_MAKE_ARGS= opus=1
+OPUS_MAKE_ARGS_OFF= opus=0
+SHOUTCAST_LIB_DEPENDS= libshout.so:audio/libshout
+SHOUTCAST_MAKE_ARGS= shoutcast=1
+SHOUTCAST_MAKE_ARGS_OFF= shoutcast=0
+WAVPACK_LIB_DEPENDS= libwavpack.so:audio/wavpack
+WAVPACK_MAKE_ARGS= wv=1
+WAVPACK_MAKE_ARGS_OFF= wv=0
+
+post-patch:
+ @${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g" \
+ ${WRKSRC}/build/depends.py
+ @${REINPLACE_CMD} -e "s|bzr |true |g" \
+ ${WRKSRC}/build/util.py
+ @${REINPLACE_CMD} -e "/('install', docs)/d" \
+ ${WRKSRC}/src/SConscript
+ @${REINPLACE_CMD} -e "s|^Exec=.*|Exec=mixxx| ; \
+ s|^Icon=.*|Icon=${PREFIX}/share/pixmaps/mixxx_icon.svg|" \
+ ${WRKSRC}/res/linux/mixxx.desktop
+ @${REINPLACE_CMD} -e "s,(Q_OS_LINUX),(Q_OS_LINUX) || defined(Q_OS_FREEBSD),g" \
+ ${WRKSRC}/src/util/screensaver.h
+.for i in midi/midimessage.h
+ @${ECHO_CMD} >> ${WRKSRC}/src/controllers/${i}
+.endfor
+
+post-install:
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/mixxx
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/mixxx/plugins/*/*.so
+ @${MKDIR} ${STAGEDIR}${PREFIX}/lib/mixxx/plugins/soundsource
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for i in Mixxx-Manual.pdf README README.md
+ (cd ${WRKSRC} && ${INSTALL_DATA} ${i} \
+ ${STAGEDIR}${DOCSDIR})
+.endfor
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ cd ${WRKSRC} && ${INSTALL_DATA} Mixxx-Manual.pdf \
+ ${STAGEDIR}${DOCSDIR}
+ @${FIND} ${STAGEDIR}${PREFIX}/lib/mixxx/plugins/soundsource -type d -empty -delete
+
+.include <bsd.port.mk>
diff --git a/audio/mixxx22/distinfo b/audio/mixxx22/distinfo
new file mode 100644
index 000000000000..749dc9dd281a
--- /dev/null
+++ b/audio/mixxx22/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1593383731
+SHA256 (mixxxdj-mixxx-release-2.2.4_GH0.tar.gz) = 9372b43d5ec882845b4fe2350ef50dabb3f1e0cc029f182b0ed8aa4f4f3b2afa
+SIZE (mixxxdj-mixxx-release-2.2.4_GH0.tar.gz) = 35480450
diff --git a/audio/mixxx22/files/patch-build_depends.py b/audio/mixxx22/files/patch-build_depends.py
new file mode 100644
index 000000000000..4d0da8778a3d
--- /dev/null
+++ b/audio/mixxx22/files/patch-build_depends.py
@@ -0,0 +1,159 @@
+--- build/depends.py 2018-12-24 01:37:23.000000000 -0500
++++ build/depends.py 2018-12-26 22:17:54.336049000 -0500
+@@ -12,7 +12,7 @@
+ if not conf.CheckLib('portaudio'):
+ raise Exception(
+ 'Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.')
+- elif build.platform_is_linux:
++ elif build.platform_is_linux or build.platform_is_bsd:
+ build.env.ParseConfig('pkg-config portaudio-2.0 --silence-errors --cflags --libs')
+
+ # Turn on PortAudio support in Mixxx
+@@ -74,7 +74,8 @@
+
+ if (not conf.CheckLib('GLU') and
+ not conf.CheckLib('glu32') and
+- not conf.CheckCHeader('OpenGL/glu.h')):
++ not conf.CheckCHeader('OpenGL/glu.h') and
++ not conf.CheckCHeader('GL/glu.h')):
+ raise Exception('Did not find GLU development files')
+
+
+@@ -106,7 +107,7 @@
+ class UPower(Dependence):
+ """UPower is used to get battery measurements on Linux."""
+ def configure(self, build, conf):
+- if not build.platform_is_linux:
++ if not build.platform_is_linux or not build.platform_is_bsd:
+ return
+ build.env.ParseConfig(
+ 'pkg-config upower-glib --silence-errors --cflags --libs')
+@@ -185,15 +186,17 @@
+
+ class Qt(Dependence):
+ DEFAULT_QT4DIRS = {'linux': '/usr/share/qt4',
+- 'bsd': '/usr/local/lib/qt4',
++ 'bsd': '%%LOCALBASE%%/share/qt4',
+ 'osx': '/Library/Frameworks',
+ 'windows': 'C:\\qt\\4.6.0'}
+
+ DEFAULT_QT5DIRS64 = {'linux': '/usr/lib/x86_64-linux-gnu/qt5',
++ 'bsd': '%%LOCALBASE%%/lib/qt5',
+ 'osx': '/Library/Frameworks',
+ 'windows': 'C:\\qt\\5.11.1'}
+
+ DEFAULT_QT5DIRS32 = {'linux': '/usr/lib/i386-linux-gnu/qt5',
++ 'bsd': '%%LOCALBASE%%/lib/qt5',
+ 'osx': '/Library/Frameworks',
+ 'windows': 'C:\\qt\\5.11.1'}
+
+@@ -324,9 +327,17 @@
+ build.env.Append(CCFLAGS='-fPIC')
+
+ elif build.platform_is_bsd:
+- build.env.Append(LIBS=qt_modules)
+- include_paths = ['$QTDIR/include/%s' % module
+- for module in qt_modules]
++ qt_modules.extend(['QtDBus'])
++ if qt5:
++ qt5_modules = [w.replace('Qt', 'Qt5') for w in qt_modules]
++ build.env.Append(LIBS = qt5_modules)
++ build.env.Append(CCFLAGS='-fPIC')
++ include_paths = ['%%LOCALBASE%%/include/qt5/%s' % module
++ for module in qt_modules]
++ else:
++ build.env.Append(LIBS = qt_modules)
++ include_paths = ['%%LOCALBASE%%/include/qt4/%s' % module
++ for module in qt_modules]
+ build.env.Append(CPPPATH=include_paths)
+ elif build.platform_is_osx:
+ qtdir = build.env['QTDIR']
+@@ -492,7 +503,7 @@
+ if not build.platform_is_windows and not (using_104_sdk or compiling_on_104):
+ qtdir = build.env['QTDIR']
+ framework_path = Qt.find_framework_libdir(qtdir, qt5)
+- if os.path.isdir(framework_path):
++ if framework_path and os.path.isdir(framework_path):
+ build.env.Append(LINKFLAGS="-L" + framework_path)
+
+ # Mixxx requires C++11 support. Windows enables C++11 features by
+@@ -586,7 +597,7 @@
+ if env is None:
+ env = build.env
+
+- if build.platform_is_linux:
++ if build.platform_is_linux or build.platform_is_bsd:
+ # Try using system lib
+ if conf.CheckForPKG('soundtouch', '2.0.0'):
+ # System Lib found
+@@ -630,7 +641,7 @@
+ # the files correctly. Adding this folder to the include path should fix
+ # it, though might cause issues. This is safe to remove once we
+ # deprecate Karmic support. rryan 2/2011
+- build.env.Append(CPPPATH='/usr/include/taglib/')
++ build.env.Append(CPPPATH='%%LOCALBASE%%/include/taglib/')
+
+ if build.platform_is_windows and build.static_dependencies:
+ build.env.Append(CPPDEFINES='TAGLIB_STATIC')
+@@ -1343,7 +1354,6 @@
+
+ if build.toolchain_is_gnu:
+ # Default GNU Options
+- build.env.Append(CCFLAGS='-pipe')
+ build.env.Append(CCFLAGS='-Wall')
+ if build.compiler_is_clang:
+ # Quiet down Clang warnings about inconsistent use of override
+@@ -1472,17 +1482,24 @@
+ build.env.Append(CPPPATH=['/opt/local/include'])
+
+ elif build.platform_is_bsd:
++ qt5 = Qt.qt5_enabled(build)
++
++ if qt5:
++ qtdirectory = 'qt5'
++ else:
++ qtdirectory = 'qt4'
++
+ build.env.Append(CPPDEFINES='__BSD__')
+ build.env.Append(CPPPATH=['/usr/include',
+- '/usr/local/include',
+- '/usr/X11R6/include/'])
++ '%%LOCALBASE%%/include',
++ '%%LOCALBASE%%/include/'+ qtdirectory])
+ build.env.Append(LIBPATH=['/usr/lib/',
+- '/usr/local/lib',
+- '/usr/X11R6/lib'])
++ '%%LOCALBASE%%/lib',
++ '%%LOCALBASE%%/lib/'+ qtdirectory])
+ build.env.Append(LIBS='pthread')
+ # why do we need to do this on OpenBSD and not on Linux? if we
+ # don't then CheckLib("vorbisfile") fails
+- build.env.Append(LIBS=['ogg', 'vorbis'])
++ build.env.Append(LIBS=['ogg', 'vorbis','X11'])
+
+ # Define for things that would like to special case UNIX (Linux or BSD)
+ if build.platform_is_bsd or build.platform_is_linux:
+@@ -1515,7 +1532,7 @@
+ # Say where to find resources on Unix. TODO(XXX) replace this with a
+ # RESOURCE_PATH that covers Win and OSX too:
+ if build.platform_is_linux or build.platform_is_bsd:
+- prefix = SCons.ARGUMENTS.get('prefix', '/usr/local')
++ prefix = SCons.ARGUMENTS.get('prefix', '%%PREFIX%%')
+ share_path = os.path.join (prefix, build.env.get(
+ 'SHAREDIR', default='share'), 'mixxx')
+ build.env.Append(
+@@ -1526,10 +1543,10 @@
+ CPPDEFINES=('UNIX_LIB_PATH', r'\"%s\"' % lib_path))
+
+ def depends(self, build):
+- return [SoundTouch, ReplayGain, Ebur128Mit, PortAudio, PortMIDI, Qt, TestHeaders,
+- FidLib, SndFile, FLAC, OggVorbis, OpenGL, TagLib, ProtoBuf,
+- Chromaprint, RubberBand, SecurityFramework, CoreServices, Foundation, IOKit,
+- QtScriptByteArray, Reverb, FpClassify, PortAudioRingBuffer, OSXFilePathUrlBackport]
++ return [SoundTouch, ReplayGain, Ebur128Mit, PortAudio, Qt, TestHeaders,
++ FidLib, SndFile, FLAC, OggVorbis, OpenGL, TagLib, ProtoBuf,
++ Chromaprint, RubberBand, SecurityFramework, CoreServices, IOKit,
++ QtScriptByteArray, Reverb, FpClassify, PortAudioRingBuffer]
+
+ def post_dependency_check_configure(self, build, conf):
+ """Sets up additional things in the Environment that must happen
diff --git a/audio/mixxx22/files/patch-build_features.py b/audio/mixxx22/files/patch-build_features.py
new file mode 100644
index 000000000000..9b2c944f5779
--- /dev/null
+++ b/audio/mixxx22/files/patch-build_features.py
@@ -0,0 +1,102 @@
+--- build/features.py 2018-10-28 12:33:56.000000000 -0500
++++ build/features.py 2018-11-06 14:58:04.915561000 -0500
+@@ -105,13 +105,24 @@
+ # -pthread tells GCC to do the right thing regardless of system
+ build.env.Append(CCFLAGS='-pthread')
+ build.env.Append(LINKFLAGS='-pthread')
++ elif build.platform_is_bsd:
++ build.env.ParseConfig('pkg-config hidapi --silence-errors --cflags --libs')
+
++ conf.CheckLib(['pthread', 'libpthread'])
++ conf.CheckLib(['rt', 'librt'])
++
++ # -pthread tells GCC to do the right thing regardless of system
++ build.env.Append(CCFLAGS='-pthread')
++ build.env.Append(LINKFLAGS='-pthread')
+ else:
+ self.INTERNAL_LINK = True
+ if build.platform_is_windows and not conf.CheckLib(['setupapi', 'libsetupapi']):
+ raise Exception('Did not find the setupapi library, exiting.')
+ elif build.platform_is_osx:
+ build.env.AppendUnique(FRAMEWORKS=['IOKit', 'CoreFoundation'])
++ elif build.platform_is_bsd:
++ conf.CheckLib(['usb', 'libusb'])
++ conf.CheckLib(['usbhid', 'libusbhid'])
+
+ build.env.Append(CPPDEFINES='__HID__')
+ if self.INTERNAL_LINK:
+@@ -129,7 +140,7 @@
+ # setupapi.
+ sources.append(
+ os.path.join(self.HIDAPI_INTERNAL_PATH, "windows/hid.c"))
+- elif build.platform_is_linux:
++ elif build.platform_is_linux or build.platform_is_bsd:
+ # hidapi compiles the libusb implementation by default on Linux
+ sources.append(
+ os.path.join(self.HIDAPI_INTERNAL_PATH, 'libusb/hid.c'))
+@@ -147,14 +158,14 @@
+ def enabled(self, build):
+ # For now only make Bulk default on Linux only. Turn on for all
+ # platforms after the 1.11.0 release.
+- is_default = 1 if build.platform_is_linux else 0
++ is_default = 1 if build.platform_is_linux or build.platform_is_bsd else 0
+ build.flags['bulk'] = util.get_flags(build.env, 'bulk', is_default)
+ if int(build.flags['bulk']):
+ return True
+ return False
+
+ def add_options(self, build, vars):
+- is_default = 1 if build.platform_is_linux else 0
++ is_default = 1 if build.platform_is_linux or build.platform_is_bsd else 0
+ vars.Add('bulk',
+ 'Set to 1 to enable USB Bulk controller support.', is_default)
+
+@@ -162,12 +173,15 @@
+ if not self.enabled(build):
+ return
+
+- build.env.ParseConfig(
+- 'pkg-config libusb-1.0 --silence-errors --cflags --libs')
+- if (not conf.CheckLib(['libusb-1.0', 'usb-1.0']) or
+- not conf.CheckHeader('libusb-1.0/libusb.h')):
+- raise Exception(
+- 'Did not find the libusb 1.0 development library or its header file, exiting!')
++ if build.platform_is_linux:
++ build.env.ParseConfig(
++ 'pkg-config libusb-1.0 --silence-errors --cflags --libs')
++ if (not conf.CheckLib(['libusb-1.0', 'usb-1.0']) or
++ not conf.CheckHeader('libusb-1.0/libusb.h')):
++ raise Exception(
++ 'Did not find the libusb 1.0 development library or its header file, exiting!')
++ elif build.platform_is_bsd:
++ conf.CheckLib(['usb', 'libusb'])
+
+ build.env.Append(CPPDEFINES='__BULK__')
+
+@@ -396,7 +410,7 @@
+ # If there is no system vamp-hostsdk is installed or if the version
+ # of the installed vamp-hostsdk is less than the bundled version,
+ # then we'll directly link the bundled vamp-hostsdk
+- if not conf.CheckLib('vamp-hostsdk') or not conf.CheckForPKG('vamp-plugin-sdk', '2.7.1'):
++ if not conf.CheckLib('vamp-hostsdk') or not conf.CheckForPKG('vamp-sdk', '2.7.1'):
+ # For header includes
+ build.env.Append(CPPPATH=[self.INTERNAL_VAMP_PATH])
+ self.INTERNAL_LINK = True
+@@ -409,7 +423,7 @@
+ # FFTW3 support
+ have_fftw3_h = conf.CheckHeader('fftw3.h')
+ have_fftw3 = conf.CheckLib('fftw3', autoadd=False)
+- if have_fftw3_h and have_fftw3 and build.platform_is_linux:
++ if have_fftw3_h and have_fftw3 and (build.platform_is_linux or build.platform_is_bsd) :
+ build.env.Append(CPPDEFINES='HAVE_FFTW3')
+ build.env.ParseConfig(
+ 'pkg-config fftw3 --silence-errors --cflags --libs')
+@@ -1295,7 +1309,7 @@
+ return ["util/battery/batterywindows.cpp"]
+ elif build.platform_is_osx:
+ return ["util/battery/batterymac.cpp"]
+- elif build.platform_is_linux:
++ elif build.platform_is_linux or build.platform_is_bsd:
+ return ["util/battery/batterylinux.cpp"]
+ else:
+ raise Exception('Battery support is not implemented for the target platform.')
diff --git a/audio/mixxx22/files/patch-build_mixxx.py b/audio/mixxx22/files/patch-build_mixxx.py
new file mode 100644
index 000000000000..1ee0a37c9389
--- /dev/null
+++ b/audio/mixxx22/files/patch-build_mixxx.py
@@ -0,0 +1,27 @@
+--- build/mixxx.py 2018-04-15 13:30:27.000000000 -0500
++++ build/mixxx.py 2018-04-21 22:31:31.694426000 -0500
+@@ -394,9 +394,9 @@
+ self.env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS'])
+
+ # Allow installation directories to be specified.
+- prefix = Script.ARGUMENTS.get('prefix', '/usr/local')
++ prefix = Script.ARGUMENTS.get('prefix', '%%PREFIX%%')
+ if 'LIBDIR' in os.environ:
+- self.env['LIBDIR'] = os.path.relpath(os.environ['LIBDIR'], prefix)
++ self.env['LIBDIR'] = 'lib' # os.path.relpath(os.environ['LIBDIR'], prefix)
+ if 'BINDIR' in os.environ:
+ self.env['BINDIR'] = os.path.relpath(os.environ['BINDIR'], prefix)
+ if 'SHAREDIR' in os.environ:
+@@ -429,10 +429,10 @@
+ def install_options(self):
+ cachefile = os.path.join(self.get_cache_dir(), 'custom.py')
+ vars = Script.Variables(cachefile)
+- vars.Add('prefix', 'Set to your install prefix', '/usr/local')
++ vars.Add('prefix', 'Set to your install prefix', '%%PREFIX%%')
+ vars.Add('virtualize',
+ 'Dynamically swap out the build directory when switching Git branches.', 1)
+- vars.Add('qtdir', 'Set to your QT4 directory', '/usr/share/qt4')
++ vars.Add('qtdir', 'Set to your QT4 directory', '%%LOCALBASE%%/share/qt4')
+ vars.Add('qt_sqlite_plugin', 'Set to 1 to package the Qt SQLite plugin.'
+ '\n Set to 0 if SQLite support is compiled into QtSQL.', 0)
+ vars.Add('target',
diff --git a/audio/mixxx22/files/patch-build_qt5.py b/audio/mixxx22/files/patch-build_qt5.py
new file mode 100644
index 000000000000..d0927978bcd7
--- /dev/null
+++ b/audio/mixxx22/files/patch-build_qt5.py
@@ -0,0 +1,11 @@
+--- build/qt5.py.orig 2020-05-15 21:26:10 UTC
++++ build/qt5.py
+@@ -43,7 +43,7 @@ import SCons.Scanner
+ import SCons.Tool
+ import SCons.Util
+
+-class ToolQt5Warning(SCons.Warnings.Warning):
++class ToolQt5Warning(SCons.Warnings.SConsWarning):
+ pass
+
+ class GeneratedMocFileNotIncluded(ToolQt5Warning):
diff --git a/audio/mixxx22/files/patch-lib_hidapi-0.8.0-rc1_libusb_hid.c b/audio/mixxx22/files/patch-lib_hidapi-0.8.0-rc1_libusb_hid.c
new file mode 100644
index 000000000000..262647d3ea6f
--- /dev/null
+++ b/audio/mixxx22/files/patch-lib_hidapi-0.8.0-rc1_libusb_hid.c
@@ -0,0 +1,11 @@
+--- lib/hidapi-0.8.0-rc1/libusb/hid.c.orig 2015-12-29 16:10:41 UTC
++++ lib/hidapi-0.8.0-rc1/libusb/hid.c
+@@ -258,7 +258,7 @@ static int get_usage(uint8_t *report_des
+ Note that the data parameter is Unicode in UTF-16LE encoding.
+ Return value is the number of bytes in data, or LIBUSB_ERROR_*.
+ */
+-static inline int libusb_get_string_descriptor(libusb_device_handle *dev,
++inline int libusb_get_string_descriptor(libusb_device_handle *dev,
+ uint8_t descriptor_index, uint16_t lang_id,
+ unsigned char *data, int length)
+ {
diff --git a/audio/mixxx22/files/patch-plugins_soundsourcem4a_soundsourcem4a.h b/audio/mixxx22/files/patch-plugins_soundsourcem4a_soundsourcem4a.h
new file mode 100644
index 000000000000..d45a2ae4a508
--- /dev/null
+++ b/audio/mixxx22/files/patch-plugins_soundsourcem4a_soundsourcem4a.h
@@ -0,0 +1,11 @@
+--- plugins/soundsourcem4a/soundsourcem4a.h.orig 2019-07-19 22:36:09 UTC
++++ plugins/soundsourcem4a/soundsourcem4a.h
+@@ -5,6 +5,8 @@
+
+ #include "util/readaheadsamplebuffer.h"
+
++#include <sys/types.h>
++
+ #ifdef __MP4V2__
+ #include <mp4v2/mp4v2.h>
+ #else
diff --git a/audio/mixxx22/files/patch-src-encoder_encodermp3.cpp b/audio/mixxx22/files/patch-src-encoder_encodermp3.cpp
new file mode 100644
index 000000000000..67914779e1c1
--- /dev/null
+++ b/audio/mixxx22/files/patch-src-encoder_encodermp3.cpp
@@ -0,0 +1,11 @@
+--- src/encoder/encodermp3.cpp 2017-09-24 22:09:28.258505000 -0500
++++ src/encoder/encodermp3.cpp 2017-09-24 22:12:09.197474000 -0500
+@@ -76,7 +76,7 @@
+ */
+ QStringList libnames;
+ QString libname = "";
+-#ifdef __LINUX__
++#if defined(__LINUX__) || defined(__FreeBSD__)
+ libnames << "mp3lame";
+ #elif __WINDOWS__
+ libnames << "lame_enc.dll";
diff --git a/audio/mixxx22/files/patch-src-util_screensaver.cpp b/audio/mixxx22/files/patch-src-util_screensaver.cpp
new file mode 100644
index 000000000000..a05c284ecba3
--- /dev/null
+++ b/audio/mixxx22/files/patch-src-util_screensaver.cpp
@@ -0,0 +1,27 @@
+--- src/util/screensaver.cpp 2018-04-22 02:22:56.333283000 -0500
++++ src/util/screensaver.cpp 2018-04-22 02:24:03.836501000 -0500
+@@ -23,13 +23,13 @@
+ # include "util/mac.h"
+ #elif defined(Q_OS_WIN)
+ # include <windows.h>
+-#elif defined(Q_OS_LINUX)
++#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
+ # include <QtDBus>
+ #elif HAVE_XSCREENSAVER_SUSPEND
+ # include <X11/extensions/scrnsaver.h>
+ #endif // Q_OS_WIN
+
+-#if defined(Q_OS_LINUX) || HAVE_XSCREENSAVER_SUSPEND
++#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || HAVE_XSCREENSAVER_SUSPEND
+ # define None XNone
+ # define Window XWindow
+ # include <X11/Xlib.h>
+@@ -140,7 +140,7 @@
+ s_enabled = false;
+ }
+
+-#elif defined(Q_OS_LINUX)
++#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
+ const char *SCREENSAVERS[][4] = {
+ // org.freedesktop.ScreenSaver is the standard. should work for gnome and kde too,
+ // but I add their specific names too
diff --git a/audio/mixxx22/files/patch-src_controllers_controllermanager.cpp b/audio/mixxx22/files/patch-src_controllers_controllermanager.cpp
new file mode 100644
index 000000000000..7b2fc13b2c09
--- /dev/null
+++ b/audio/mixxx22/files/patch-src_controllers_controllermanager.cpp
@@ -0,0 +1,12 @@
+--- src/controllers/controllermanager.cpp 2018-04-15 13:30:27.000000000 -0500
++++ src/controllers/controllermanager.cpp 2018-04-21 22:34:32.638474000 -0500
+@@ -127,7 +127,9 @@
+
+ // Instantiate all enumerators. Enumerators can take a long time to
+ // construct since they interact with host MIDI APIs.
++#ifdef __PORTMIDI__
+ m_enumerators.append(new PortMidiEnumerator());
++#endif
+ #ifdef __HSS1394__
+ m_enumerators.append(new Hss1394Enumerator());
+ #endif
diff --git a/audio/mixxx22/files/patch-src_controllers_controllerpresetfilehandler.cpp b/audio/mixxx22/files/patch-src_controllers_controllerpresetfilehandler.cpp
new file mode 100644
index 000000000000..464b33c32d4b
--- /dev/null
+++ b/audio/mixxx22/files/patch-src_controllers_controllerpresetfilehandler.cpp
@@ -0,0 +1,14 @@
+--- src/controllers/controllerpresetfilehandler.cpp.orig 2015-12-29 16:10:41 UTC
++++ src/controllers/controllerpresetfilehandler.cpp
+@@ -43,7 +43,11 @@ ControllerPresetPointer ControllerPreset
+ pHandler = new MidiControllerPresetFileHandler();
+ } else if (scriptPath.endsWith(HID_PRESET_EXTENSION, Qt::CaseInsensitive) ||
+ scriptPath.endsWith(BULK_PRESET_EXTENSION, Qt::CaseInsensitive)) {
++#if __HID__
+ pHandler = new HidControllerPresetFileHandler();
++#else
++ return ControllerPresetPointer();
++#endif
+ }
+
+ if (pHandler == NULL) {
diff --git a/audio/mixxx22/files/patch-vamp-plugins_SConscript b/audio/mixxx22/files/patch-vamp-plugins_SConscript
new file mode 100644
index 000000000000..dfc658763c92
--- /dev/null
+++ b/audio/mixxx22/files/patch-vamp-plugins_SConscript
@@ -0,0 +1,11 @@
+--- vamp-plugins/SConscript 2018-11-06 14:08:42.093656000 -0500
++++ vamp-plugins/SConscript 2018-11-06 14:08:56.517582000 -0500
+@@ -54,7 +54,7 @@
+ # If there is no system vamp-sdk is installed or if the version
+ # of the installed vamp-sdk is less than the bundled version,
+ # then we'll directly link the bundled vamp-sdk.
+- if not conf.CheckLib('vamp-sdk') or not conf.CheckForPKG('vamp-plugin-sdk', '2.7.1'):
++ if not conf.CheckLib('vamp-hostsdk') or not conf.CheckForPKG('vamp-sdk', '2.7.1'):
+ INTERNAL_VAMP_PATH = '#lib/vamp'
+ # For header includes
+ env.Append(CPPPATH=[INTERNAL_VAMP_PATH])
diff --git a/audio/mixxx22/pkg-descr b/audio/mixxx22/pkg-descr
new file mode 100644
index 000000000000..1f4dd927512c
--- /dev/null
+++ b/audio/mixxx22/pkg-descr
@@ -0,0 +1,5 @@
+Mixxx is software for DJ'ing. You can use wave based audio files, Ogg Vorbis
+and MP3 files as audio input. Mixxx can be controlled through the GUI and
+with external controllers including MIDI devices, joysticks, and more.
+
+WWW: https://mixxx.org/
diff --git a/audio/mixxx22/pkg-plist b/audio/mixxx22/pkg-plist
new file mode 100644
index 000000000000..f979cbcf6269
--- /dev/null
+++ b/audio/mixxx22/pkg-plist
@@ -0,0 +1,7 @@
+bin/mixxx
+%%FAAD%%lib/mixxx/plugins/soundsourceqt5/libsoundsourcem4a.so
+%%WAVPACK%%lib/mixxx/plugins/soundsourceqt5/libsoundsourcewv.so
+lib/mixxx/plugins/vampqt5/libmixxxminimal.so
+share/appdata/mixxx.appdata.xml
+share/applications/mixxx.desktop
+share/pixmaps/mixxx_icon.svg