What is the current behaviour and why should it be changed?
Currently Jamulus is built predominantly with qmake and a Jamulus.pro project file specifying the cross-platform build specification.
Qt6 is moving away from the use of qmake and project files. For example, it is no longer possible to use qmake and androidinstallqt to produce an Android multi-ABI APK/AAB.
The recommended tooling is based around cmake and there is a project-provided migration tool to move from qmake to cmake.
However, it comes with a number of provisos and the output would need to be reviewed carefully for each target platform to ensure that Jamulus remains buildable on those platforms.
We also need to investigate the use of cmake for the legacy builds.
Describe possible approaches
- Drop Qt
One option is to take this as the point at which we decide that Qt is no longer the right cross-platform development environment for Jamulus.
The obvious downside is there is a very large amount of work involved in porting to any other platform - primarily the UI but also the inter-component communication, networking and audio.
- Halt updates to Qt, supply only Qt5 builds for Android and do not look to publish Jamulus on Play Store
Clearly this saves a lot of work. However, it's likely to mean that support for Android is dropped in the medium term.
Given there is no simple solution, the least bad solution is probably to take the hit on Qt6:
- Split into Qt5 (legacy) and Qt6 (modern) work streams
- Migrate the Qt6 builds to
cmake
- Pin the legacy builds to "last known working versions" of all dependencies
Has this feature been discussed and generally agreed?
No. We need to come up with an agreed plan.
What is the current behaviour and why should it be changed?
Currently Jamulus is built predominantly with
qmakeand aJamulus.proproject file specifying the cross-platform build specification.Qt6 is moving away from the use of
qmakeand project files. For example, it is no longer possible to useqmakeandandroidinstallqtto produce an Android multi-ABI APK/AAB.The recommended tooling is based around
cmakeand there is a project-provided migration tool to move fromqmaketocmake.However, it comes with a number of provisos and the output would need to be reviewed carefully for each target platform to ensure that Jamulus remains buildable on those platforms.
We also need to investigate the use of cmake for the legacy builds.
Describe possible approaches
One option is to take this as the point at which we decide that Qt is no longer the right cross-platform development environment for Jamulus.
The obvious downside is there is a very large amount of work involved in porting to any other platform - primarily the UI but also the inter-component communication, networking and audio.
Clearly this saves a lot of work. However, it's likely to mean that support for Android is dropped in the medium term.
Given there is no simple solution, the least bad solution is probably to take the hit on Qt6:
cmakeHas this feature been discussed and generally agreed?
No. We need to come up with an agreed plan.