Go to file
Jan Beich 44a506dbaa Installation: recommend Clang 17 for best libc++ compatibility
Clang/libc++ 16 requires CXXFLAGS += -fexperimental-library

Clang < 16 fails with libc++ >= 16:

  In file included from ../src/protocols/GlobalShortcuts.cpp:1:
  In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1:
  In file included from ../src/protocols/../Compositor.hpp:3:
  In file included from /usr/include/c++/v1/memory:898:
  In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31:
  /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'SShortcutClient'
    return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...));
			       ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../src/protocols/GlobalShortcuts.cpp:56:34: note: in instantiation of function template specialization 'std::make_unique<SShortcutClient, wl_client *&>' requested here
      m_vClients.emplace_back(std::make_unique<SShortcutClient>(client));
				   ^
  ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit copy constructor) not viable: cannot convert argument of incomplete type 'wl_client *' to 'const SShortcutClient' for 1st argument
  struct SShortcutClient {
	 ^
  ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit move constructor) not viable: cannot convert argument of incomplete type 'wl_client *' to 'SShortcutClient' for 1st argument
  ../src/protocols/GlobalShortcuts.hpp:12:8: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided
  In file included from ../src/protocols/XDGOutput.cpp:1:
  In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1:
  In file included from ../src/protocols/../Compositor.hpp:3:
  In file included from /usr/include/c++/v1/memory:898:
  In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31:
  /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'SXDGOutput'
    return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...));
			       ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../src/protocols/XDGOutput.cpp:79:62: note: in instantiation of function template specialization 'std::make_unique<SXDGOutput, CMonitor *const &>' requested here
      SXDGOutput* pXDGOutput = m_vXDGOutputs.emplace_back(std::make_unique<SXDGOutput>(PMONITOR)).get();
							       ^
  ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'CMonitor *const' to 'const SXDGOutput' for 1st argument
  struct SXDGOutput {
	 ^
  ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'CMonitor *const' to 'SXDGOutput' for 1st argument
  ../src/protocols/XDGOutput.hpp:8:8: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided
  In file included from ../src/render/decorations/DecorationPositioner.cpp:1:
  In file included from /wrkdirs/usr/ports/x11-wm/hyprland/work/Hyprland-0.34.0/_build/../src/pch/pch.hpp:1:
  In file included from ../src/render/decorations/../../Compositor.hpp:3:
  In file included from /usr/include/c++/v1/memory:898:
  In file included from /usr/include/c++/v1/__memory/shared_ptr.h:31:
  /usr/include/c++/v1/__memory/unique_ptr.h:686:30: error: no matching constructor for initialization of 'CDecorationPositioner::SWindowPositioningData'
    return unique_ptr<_Tp>(new _Tp(_VSTD::forward<_Args>(__args)...));
			       ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../src/render/decorations/DecorationPositioner.cpp:80:67: note: in instantiation of function template specialization 'std::make_unique<CDecorationPositioner::SWindowPositioningData, CWindow *&, IHyprWindowDecoration *&>' requested here
      const auto DATA = m_vWindowPositioningDatas.emplace_back(std::make_unique<CDecorationPositioner::SWindowPositioningData>(pWindow, pDecoration)).get();
								    ^
  ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
      struct SWindowPositioningData {
	     ^
  ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 2 were provided
  ../src/render/decorations/DecorationPositioner.hpp:75:12: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 2 were provided

Clang >= 16 fails with libc++ < 16:

  In file included from ../src/pch/pch.hpp:1:
  In file included from ../src/Compositor.hpp:7:
  In file included from ../src/defines.hpp:2:
  ../src/debug/Log.hpp:60:35: error: call to consteval function 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::basic_format_string<char[18]>' is not a constant expression
	      logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds());
				    ^
  /usr/include/c++/v1/format:483:46: note: initializer of '__types_' is not a constant expression
			     _Context{__types_.data(), __handles_.data(), sizeof...(_Args)});
					       ^
  ../src/debug/Log.hpp:60:35: note: in call to 'basic_format_string("{:%H}:{:%M}:{:%S}")'
	      logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds());
				    ^
  /usr/include/c++/v1/format:495:63: note: declared here
    static constexpr array<__format::__arg_t, sizeof...(_Args)> __types_{
								^
  In file included from ../src/pch/pch.hpp:1:
  In file included from ../src/Compositor.hpp:7:
  In file included from ../src/defines.hpp:1:
  In file included from ../src/includes.hpp:149:
  In file included from ../src/helpers/Vector2D.hpp:4:
  /usr/include/c++/v1/format:496:7: error: call to deleted function '__determine_arg_t'
	__format::__determine_arg_t<_Context, remove_cvref_t<_Args>>()...};
	^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /usr/include/c++/v1/format:483:37: note: in instantiation of static data member 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::__types_' requested here
			     _Context{__types_.data(), __handles_.data(), sizeof...(_Args)});
				      ^
  ../src/debug/Log.hpp:60:35: note: in instantiation of function template specialization 'std::basic_format_string<char, std::chrono::duration<long, std::ratio<3600>>, std::chrono::duration<long, std::ratio<60>>, std::chrono::duration<long long, std::ratio<1, 1000000>>>::basic_format_string<char[18]>' requested here
	      logMsg += std::format("{:%H}:{:%M}:{:%S}", c.hours(), c.minutes(), c.subseconds());
				    ^
  /usr/include/c++/v1/__format/format_arg_store.h:153:19: note: candidate function [with _Context = std::__format::__compile_time_basic_format_context<char>, _Tp = std::chrono::duration<long, std::ratio<3600>>] has been explicitly deleted
  consteval __arg_t __determine_arg_t() = delete;
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:147:19: note: candidate function [with _Context = std::__format::__compile_time_basic_format_context<char>, _Tp = std::chrono::duration<long, std::ratio<3600>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:41:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:40:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, _Bool>' evaluated to false
  template <class, same_as<bool> _Tp>
		   ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, _Bool>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, _Bool>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:47:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:46:27: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, typename __compile_time_basic_format_context<char>::char_type>' evaluated to false
  template <class _Context, same_as<typename _Context::char_type> _Tp>
			    ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, char>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, char>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:53:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _CharT = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:52:12: note: because 'same_as<typename __compile_time_basic_format_context<char>::char_type, wchar_t>' evaluated to false
    requires(same_as<typename _Context::char_type, wchar_t> && same_as<_CharT, char>)
	     ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<char, wchar_t>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<char, wchar_t>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:60:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:59:18: note: because 'std::chrono::duration<long, std::ratio<3600>>' does not satisfy '__libcpp_signed_integer'
  template <class, __libcpp_signed_integer _Tp>
		   ^
  /usr/include/c++/v1/__concepts/arithmetic.h:44:35: note: because '__libcpp_is_signed_integer<duration<long, ratio<3600> > >::value' evaluated to false
  concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value;
				    ^
  /usr/include/c++/v1/__format/format_arg_store.h:75:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:74:18: note: because 'std::chrono::duration<long, std::ratio<3600>>' does not satisfy '__libcpp_unsigned_integer'
  template <class, __libcpp_unsigned_integer _Tp>
		   ^
  /usr/include/c++/v1/__concepts/arithmetic.h:42:37: note: because '__libcpp_is_unsigned_integer<duration<long, ratio<3600> > >::value' evaluated to false
  concept __libcpp_unsigned_integer = __libcpp_is_unsigned_integer<_Tp>::value;
				      ^
  /usr/include/c++/v1/__format/format_arg_store.h:90:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:89:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, float>' evaluated to false
  template <class, same_as<float> _Tp>
		   ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, float>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, float>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:94:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:93:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, double>' evaluated to false
  template <class, same_as<double> _Tp>
		   ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, double>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, double>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:98:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:97:18: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, long double>' evaluated to false
  template <class, same_as<long double> _Tp>
		   ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, long double>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, long double>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:105:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:104:12: note: because 'same_as<typename __compile_time_basic_format_context<char>::char_type *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false
    requires(same_as<typename _Context::char_type*, _Tp> || same_as<const typename _Context::char_type*, _Tp>)
	     ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<char *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<char *, duration<long, ratio<3600> > >::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:104:59: note: and 'same_as<const typename __compile_time_basic_format_context<char>::char_type *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false
    requires(same_as<typename _Context::char_type*, _Tp> || same_as<const typename _Context::char_type*, _Tp>)
							    ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<const char *, std::chrono::duration<long, std::ratio<3600> > >' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<const char *, duration<long, ratio<3600> > >::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:112:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:111:12: note: because 'is_array_v<std::chrono::duration<long, std::ratio<3600> > >' evaluated to false
    requires(is_array_v<_Tp> && same_as<_Tp, typename _Context::char_type[extent_v<_Tp>]>)
	     ^
  /usr/include/c++/v1/__format/format_arg_store.h:120:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:118:64: note: because substituted constraint expression is ill-formed: no type named 'value_type' in 'std::chrono::duration<long, std::ratio<3600>>'
    requires(same_as<typename _Context::char_type, typename _Tp::value_type> &&
								 ^
  /usr/include/c++/v1/__format/format_arg_store.h:129:19: note: candidate template ignored: constraints not satisfied [with _Context = _Context, _Tp = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:127:59: note: because substituted constraint expression is ill-formed: no type named 'value_type' in 'std::chrono::duration<long, std::ratio<3600>>'
	same_as<typename _Context::char_type, typename _Tp::value_type> &&
							    ^
  /usr/include/c++/v1/__format/format_arg_store.h:136:19: note: candidate template ignored: constraints not satisfied [with $0 = _Context, _Ptr = remove_cvref_t<duration<long, ratio<3600, 1>>>]
  consteval __arg_t __determine_arg_t() {
		    ^
  /usr/include/c++/v1/__format/format_arg_store.h:135:12: note: because 'same_as<std::chrono::duration<long, std::ratio<3600> >, void *>' evaluated to false
    requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>)
	     ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, void *>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, void *>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:135:36: note: and 'same_as<std::chrono::duration<long, std::ratio<3600> >, const void *>' evaluated to false
    requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>)
				     ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, const void *>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, const void *>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
  /usr/include/c++/v1/__format/format_arg_store.h:135:66: note: and 'same_as<std::chrono::duration<long, std::ratio<3600> >, nullptr_t>' evaluated to false
    requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>)
								   ^
  /usr/include/c++/v1/__concepts/same_as.h:29:19: note: because '__same_as_impl<std::chrono::duration<long, std::ratio<3600> >, std::nullptr_t>' evaluated to false
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
		    ^
  /usr/include/c++/v1/__concepts/same_as.h:26:26: note: because '_IsSame<duration<long, ratio<3600> >, std::nullptr_t>::value' evaluated to false
  concept __same_as_impl = _IsSame<_Tp, _Up>::value;
			   ^
2024-01-05 17:36:30 +01:00
.github/workflows fix typo in ci 2022-08-13 21:45:03 +02:00
pages Installation: recommend Clang 17 for best libc++ compatibility 2024-01-05 17:36:30 +01:00
LICENSE Add license 2022-10-23 18:29:00 +03:00
README.md Add license 2022-10-23 18:29:00 +03:00

README.md

Hyprland Wiki

Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the website whenever a change occurs, within a reasonable timeframe. (usually 12 minutes)

Contributing to the Wiki

Feel free to open an issue or a PR if you feel anything is necessary. Make sure to clearly state the reason for the changes. If you have questions regarding the wiki, you should consider joining our Discord Server instead.

License

This repository is licensed under the BSD 3-Clause License.