Port Mixxx to iOS #16
Labels
enhancement
New feature or request
help wanted
Extra attention is needed
port
Porting Mixxx and vcpkg dependencies to a new platform
Status
The
ios-qt6
branch contains experimental forks ofmixxx
andvcpkg
that support compiling Mixxx and its dependencies for iOS, i.e. forarm64-ios-release
. Most changes to Mixxx have been upstreamed, vcpkg upstreaming is still in progress. iOS CI passes.Documentation and general stuff
Porting the dependencies to iOS
scripts/install-vcpkg-deps
with the arguments given in the aforementioned instructions should pass)ffmpeg
build by setting--disable-audiotoolbox
libusb
andhidapi
for nowvcpkg/overlay/ios
mp3lame
by setting--disable-frontend
(otherwise the build would error with missingcurses.h
headers)portaudio
by patching in an experimental iOS CoreAudio backend (source)portmidi
by patching use of legacy Carbon APIs and unavailable CoreAudio APIs (e.g. by replacing the hosttime calls with the mach time APIs as suggested by this Q&A doc)rubberband
due to licensing issues (GPL + App Store) and build issues_debug
suffix for libraries (not needed since we already place them in a/debug
subfolder, additionally they cause the Mixxx build to fail asQt5CoreConfig.cmake
looks for unsuffixed libraries (e.g.libQt5Core.a
instead of the actuallibQt5Core_debug.a
))gles3
feature toqtbase
(otherwise the port is identical to upstream vcpkg)opengl
,gles2
,gles3
andsql-sqlite
, but notsql-psql
)harfbuzz
with iOS sdkrootarm64-ios-simulator-release
(instead ofarm64-ios-release
)Porting Mixxx to iOS
mixxx.xcodeproj
with thecmake
command in the READMEQIOSIntegrationPlugin
RUBBERBAND
)AVAudioSession
QFileChooser
inMixxxMainWindow::slotFileLoadSongPlayer
, which is invoked byFile > Load Track to Deck ...
)MediaPlayer
(instead ofiTunesLibrary
) framework to access music library on iOSPackaging Mixxx for iOS
qResourcePath
logic to handle iOS app bundles (which use a flatter file structure than macOS bundles)IOS
variable is not automatically set by CMake when settingCMAKE_SYSTEM_NAME
to iOSproject
call. We check the vcpkg triplet instead now and setCMAKE_SYSTEM_NAME
automatically as needed.Upstreaming the Mixxx patches
Q_OS_MACOS
instead ofQ_OS_MAC
mixxxdj/mixxx#12650Q_OS_MACOS
cond-compiles where appropriate mixxxdj/mixxx#12663AVAudioSession
on iOS mixxxdj/mixxx#12714TERM
variable mixxxdj/mixxx#13486~/Music
as a music directory on Wasm and iOS mixxxdj/mixxx#13498TBD:
RUBBERBAND
,HID
,BATTERY
,QTKEYCHAIN
) for iOS in upstream CMakeLists and remove them from our README (and user presets as needed)rubberband
andqtkeychain-qt6
have been fixed, so we could investigate reenabling themUpstreaming the vcpkg patches
to
microsoft/vcpkg
--disable-audiotoolbox
when targeting iOS microsoft/vcpkg#26978arm64-ios-release
triplet microsoft/vcpkg#36373arm64-ios-simulator
triplet microsoft/vcpkg#37054arm64-ios-simulator-release
triplet microsoft/vcpkg#37055to
mixxxdj/vcpkg
arm64-ios-release
CI mixxxdj/vcpkg#116vcpkg-configuration.json
mixxxdj/vcpkg#119TBD:
vcpkg.json
manifestSDKROOT
workaroundsto upstream projects
TBD:
SDKROOT
for some portsIdeas for future work
The text was updated successfully, but these errors were encountered: