Skip to content

Adopt C++17 as the global Jamulus language-standard baseline #3938

Description

@coderabbitai

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

AIAI generated or potentially AI generatedrefactoringNon-behavioural changes, Code cleanup

Type

Projects

  • Status
    Triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions