Summary
Move Jamulus to a C++17 language-standard baseline on every supported platform.
The current configuration is inconsistent. Jamulus.pro enables C++17 for Windows and Android, but its Unix branch still enables C++11. The project documentation still requires C++11 compatibility.
This migration must be completed in a separate change from PR #3787.
Required changes
-
Update Jamulus.pro.
- Replace the Unix
CONFIG += c++11 setting at Lines 311-313 with C++17.
- Remove the platform-specific C++17 selection at Lines 106-108 and Lines 271-274 if the global C++17 setting makes those branches redundant.
- Keep all existing non-language-standard platform configuration unchanged.
- Confirm that qmake passes the C++17 language-standard option for Windows, Linux, macOS, iOS, and Android.
-
Update the contributor policy.
- Replace
Maintain C++11 compatibility throughout the code. in CONTRIBUTING.md with the C++17 baseline requirement.
- Replace the C++11/Android exception in
AGENTS.md with the C++17 baseline requirement.
-
Review project-owned build instructions and automation.
- Review
COMPILING.md, platform deployment scripts, and GitHub Actions workflows.
- Document any minimum compiler, Xcode, MSVC, Android NDK, or Qt toolchain version that is necessary for C++17.
- Update the affected instructions and CI setup when an existing supported toolchain cannot compile C++17.
- Do not modify language-standard settings inside vendored dependencies under
libs/ unless a dependency build is directly invoked by Jamulus and requires an explicit compatible setting.
-
Validate the supported build matrix.
- Run or confirm CI builds for Linux, Windows, macOS, iOS, and Android with the global C++17 setting.
- Confirm both reverb-enabled and
CONFIG+=noreverb configurations compile where applicable.
- Record any platform that needs a separate compatibility decision.
Rationale
src/plugins/audioreverb.h in PR #3787 uses a C++17 inline variable. A global C++17 baseline removes the Unix language-standard mismatch and allows the project to use one documented standard.
Acceptance criteria
Jamulus.pro selects C++17 for all Jamulus targets.
- No project-owned document states that C++11 compatibility is required.
- The supported-platform build documentation states the required C++17-capable toolchains.
- The CI matrix completes successfully on all supported platforms.
- Vendored dependency configuration remains unchanged unless it is necessary for a Jamulus build.
References
Summary
Move Jamulus to a C++17 language-standard baseline on every supported platform.
The current configuration is inconsistent.
Jamulus.proenables C++17 for Windows and Android, but its Unix branch still enables C++11. The project documentation still requires C++11 compatibility.This migration must be completed in a separate change from PR #3787.
Required changes
Update
Jamulus.pro.CONFIG += c++11setting at Lines 311-313 with C++17.Update the contributor policy.
Maintain C++11 compatibility throughout the code.inCONTRIBUTING.mdwith the C++17 baseline requirement.AGENTS.mdwith the C++17 baseline requirement.Review project-owned build instructions and automation.
COMPILING.md, platform deployment scripts, and GitHub Actions workflows.libs/unless a dependency build is directly invoked by Jamulus and requires an explicit compatible setting.Validate the supported build matrix.
CONFIG+=noreverbconfigurations compile where applicable.Rationale
src/plugins/audioreverb.hin PR #3787 uses a C++17 inline variable. A global C++17 baseline removes the Unix language-standard mismatch and allows the project to use one documented standard.Acceptance criteria
Jamulus.proselects C++17 for all Jamulus targets.References