...which was introduced in <https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=117782e0c2a81a4b8170f87f0fe7190ee22548e2> "c++: add -Wsfinae-incomplete" and causes warnings like > In file included from include/vcl/event.hxx:28, > from libreofficekit/source/gtk/lokdocview.cxx:26: > include/vcl/outdev.hxx:160:37: error: defining ‘OutputDevice’, which previously failed to be complete in a SFINAE context [-Werror=sfinae-incomplete=] > 160 | class SAL_WARN_UNUSED VCL_DLLPUBLIC OutputDevice : public virtual VclReferenceBase > | ^~~~~~~~~~~~ > In file included from include/vcl/vclevent.hxx:24, > from include/svtools/colorcfg.hxx:29, > from include/vcl/themecolors.hxx:12, > from include/vcl/settings.hxx:26, > from include/vcl/event.hxx:26: > include/vcl/vclptr.hxx:44:13: note: here. Use ‘-Wsfinae-incomplete=2’ for a diagnostic at that point > 44 | int (*)[sizeof(T)]) > | ^~~~~~~~~ because > include/vcl/vclptr.hxx:44:13: error: failed to complete ‘OutputDevice’ in SFINAE context [-Werror=sfinae-incomplete=] > 44 | int (*)[sizeof(T)]) > | ^~~~~~~~~ > include/vcl/vclptr.hxx: In substitution of ‘template<class T> constexpr bool vcl::detail::isIncompleteOrDerivedFromVclReferenceBase(int (*)[sizeof (T)]) [with T = VirtualDevice]’: > include/vcl/vclptr.hxx:60:79: required from ‘class VclPtr<VirtualDevice>’ > 60 | vcl::detail::isIncompleteOrDerivedFromVclReferenceBase<reference_type>( > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ > 61 | nullptr), > | ~~~~~~~~ > include/vcl/outdev.hxx:188:37: required from here > 188 | VclPtr<VirtualDevice> mpAlphaVDev; > | ^~~~~~~~~~~ As discussed in the newly added comment in include/vcl/vclptr.hxx, until we can address this with C++26 reflection, "use a HACK of (globally) ignoring that warning". (Which required adding a new HAVE_GCC_WSFINAE_INCOMPLETE configure check.) Change-Id: Ie1b44e730cf6b6269572158f6bd50e8911c15846 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188115 Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com> Tested-by: Jenkins
55 lines
2.4 KiB
C
55 lines
2.4 KiB
C
/*
|
|
Global configuration file.
|
|
|
|
Only for settings that apply to every source file and are unlikely to change often,
|
|
such as whether a certain C++11 feature is available.
|
|
|
|
Do NOT use for settings local to some code or for settings that can change often.
|
|
Any change in this header will cause a rebuild of almost everything.
|
|
|
|
*/
|
|
|
|
#ifndef CONFIG_GLOBAL_H
|
|
#define CONFIG_GLOBAL_H
|
|
|
|
#define HAVE_GCC_BUILTIN_ATOMIC 0
|
|
#define HAVE_GCC_WSFINAE_INCOMPLETE 0
|
|
#define HAVE_SYSLOG_H 0
|
|
|
|
// Compiler supports C++20 <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r3.html>
|
|
// "Immediate functions":
|
|
#define HAVE_CPP_CONSTEVAL 0
|
|
|
|
// Compiler supports all of C++2a <https://wg21.link/P0202R3> "Add Constexpr Modifiers to Functions
|
|
// in <algorithm> and <utility> Headers", <https://wg21.link/P1004R2> "Making std::vector
|
|
// constexpr", and <https://wg21.link/P1143R2> "Adding the constinit keyword":
|
|
#define HAVE_CPP_CONSTINIT_SORTED_VECTOR 0
|
|
|
|
// Compiler supports C++20 <compare> std::strong_order:
|
|
#define HAVE_CPP_STRONG_ORDER 0
|
|
|
|
/* "CWG motion 23: P1825R0 'Merged wording for P0527R1 and P1155R3' (DR)" in
|
|
<https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4829.html> "N4829 Editors' Report --
|
|
Programming Languages -- C++" marks
|
|
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1155r3.html> "More implicit moves" as a
|
|
DR. Some versions of GCC already implemented it prior to the fix for
|
|
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87150> "move ctor wrongly chosen in return stmt
|
|
(derived vs. base)"; MSVC++ 14.24 started to implement it, see <https://
|
|
developercommunity.visualstudio.com/content/problem/852827/
|
|
msvc-1424-started-to-chose-move-ctor-in-return-der.html> "MSVC++ 14.24 started to choose move ctor
|
|
in return derived vs. base". At least Clang 9, which does not implement it, emits
|
|
-Werror,-Wreturn-std-move when it therefore considers a std::move to be missing. On the other
|
|
hand, at least some versions of GCC would emit -Werror=redundant-move in places where such a
|
|
std::move would be added unconditionally, see c00948d9bd35dfb15a331c2163f32e9ee24644fd "Silence
|
|
bogus -Werror=redundant-move (GCC 9)". */
|
|
#define HAVE_P1155R3 0
|
|
|
|
// Whether the OS provides a usable dynamic loading API
|
|
#define HAVE_DLAPI 0
|
|
|
|
// Whether the OS uses the common UNIX dynamic loading API calls, like dlopen, dlsym, dladdr etc.
|
|
// Use HAVE_DLAPI instead. Should not be used outside of sal/osl/unx/module.cxx!
|
|
#define HAVE_UNIX_DLAPI 0
|
|
|
|
#endif
|