-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C++20 #4803
C++20 #4803
Conversation
…SSIGN While valid on all other compilers, gcc-11 and newer break when in C++20 mode. I do not know if this is a bug or if there is really a meaningfull difference between a "templated copy constructor" and a "non-templated copy constructor".
C++20 changes some confusing rules about aggregate types and their initialization. As such, mixxx:network::jsonwebtask is no longer considered an aggregate in C++20. Thus we provide a proper constructor for its members. At the same time, remove explicit `= default` of copy-&move-ctor/ assignment. These are implemented implicitly by the compiler.
Arch build fails because of a GCC bug? |
These are the bugs I have experienced on RPM Fusion during the Fedora 36 Beta phase. |
This doesn't happen on my F36 machine which has gcc 12.1.1? Where does the last |
CMake is smart enough to pass "-std=gnu++2a" to Ubuntu Focal GCC Version 9.4.0 |
Co-authored-by: Daniel Schürmann <daschuer@mixxx.org>
refactor(autodj): remove m_pPlayerManager from autodjprocessor Co-authored-by: Daniel Schürmann <daschuer@mixxx.org>
Done. Let me autosquash before you merge. |
The Arch Linux issue is:
Do we have an idea to fix it? |
Not our fault: #4803 (comment) Its a regression thats only present on GCC 12.1 (edit: maybe 12.0 as well) so we'll just have to wait a bit and upgrade the arch docker container. |
Just noticed that I haven't backported the patch from RPM Fusion that is still needed: https://github.com/rpmfusion/mixxx/blob/master/disable_werror_in_tests.patch |
I guess that makes sense why the fedora builds succeed while arch doesn't even though they use the same compiler... |
Only fails with |
So should be disable the buggy warnings in our vendored google benchmark? |
@uklotzde can you give me a hint of how to do that? Should I simply just commit the changes to the CMakeLists of google benchmark? Do I supply the |
add_cxx_compiler_flag(-Werror RELEASE) | ||
add_cxx_compiler_flag(-Werror RELWITHDEBINFO) | ||
add_cxx_compiler_flag(-Werror MINSIZEREL) | ||
# Disable -Werror because of gcc bug |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's ok to simply inline the patch here. It's only a workaround that should hopefully become obsolete in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't quite understand. So its fine as is or should I also commit a (imo redundant) patch file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how soon this will be fixed though. Neither google seems to make any effort working around this issue, nor the gcc team sees that as very urgent...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All fine. Hopefully, we don't need to update the lib anytime soon.
Great, @daschuer merge? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This still works for me on Ubuntu Focal. Thank you.
Commits contain various fixes for warnings and compile-errors. The last commit actually does the switch.
Tested on GCC12 locally, using CI for everything else.