Hi everybody, I’m having trouble CMake building hyprtoolkit on debian trixie. I’m not very experienced with linux and I honestly have no clue what this error in the building of hyprtoolkits means, or how I can fix it. Here is the output:
In file included from /usr/include/c++/14/ostream:43,
from /usr/include/c++/14/bits/unique_ptr.h:43,
from /usr/include/c++/14/memory:78,
from /usr/include/hyprutils/memory/ImplBase.hpp:4,
from /usr/include/hyprutils/memory/SharedPtr.hpp:4,
from /home/tonetillo/GitClones/hyprtoolkit/./include/hyprtoolkit/system/Icons.hpp:3,
from /home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.hpp:3,
from /home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:1:
/usr/include/c++/14/format: In instantiation of ‘class std::__format::_Checking_scanner<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >’:
/usr/include/c++/14/format:4213:4: required from ‘consteval std::basic_format_string<_CharT, _Args>::basic_format_string(const _Tp&) [with _Tp = char [49]; _CharT = char; _Args = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&}]’
4213 | __scanner(_M_str);
| ^~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: required from here
102 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: Found {} as default fallback", themeDir.value());
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format:4068:10: error: static assertion failed: std::formatter must be specialized for each type being formatted
4068 | (is_default_constructible_v<formatter<_Args, _CharT>> && ...),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format:4068:10: note: ‘std::is_default_constructible_v<std::formatter<std::vector<std::__cxx11::basic_string<char> >, char> >’ evaluates to false
/usr/include/c++/14/format: In instantiation of ‘constexpr void std::__format::_Checking_scanner<_CharT, _Args>::_M_parse_format_spec(std::size_t) [with _Tp = std::vector<std::__cxx11::basic_string<char> >; _OtherArgs = {}; _CharT = char; _Args = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >}; std::size_t = long unsigned int]’:
/usr/include/c++/14/format:4085:33: required from here
4085 | _M_parse_format_spec<_Args...>(__id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: in ‘constexpr’ expansion of ‘std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>("CSystemIconFactory: Found {} as default fallback")’
/usr/include/c++/14/format:4214:19: in ‘constexpr’ expansion of ‘__scanner.std::__format::_Checking_scanner<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::std::__format::_Scanner<char>.std::__format::_Scanner<char>::_M_scan()’
/usr/include/c++/14/format:3955:30: in ‘constexpr’ expansion of ‘((std::__format::_Scanner<char>*)this)->std::__format::_Scanner<char>::_M_on_replacement_field()’
/usr/include/c++/14/format:4007:15: in ‘constexpr’ expansion of ‘((std::__format::_Scanner<char>*)this)->std::__format::_Scanner<char>::_M_format_arg(__id)’
/usr/include/c++/14/format:4098:38: error: use of deleted function ‘std::formatter<_Tp, _CharT>::formatter() [with _Tp = std::vector<std::__cxx11::basic_string<char> >; _CharT = char]’
4098 | formatter<_Tp, _CharT> __f;
| ^~~
/usr/include/c++/14/format:178:7: note: declared here
178 | formatter() = delete; // No std::formatter specialization for this type.
| ^~~~~~~~~
/usr/include/c++/14/format:4098:38: note: use ‘-fdiagnostics-all-candidates’ to display considered candidates
4098 | formatter<_Tp, _CharT> __f;
| ^~~
/usr/include/c++/14/format:4099:42: error: ‘class std::formatter<std::vector<std::__cxx11::basic_string<char> >, char>’ has no member named ‘parse’
4099 | this->_M_pc.advance_to(__f.parse(this->_M_pc));
| ~~~~^~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp: In function ‘std::optional<std::vector<std::__cxx11::basic_string<char> > > findAnyTheme()’:
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: error: call to consteval function ‘std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>("CSystemIconFactory: Found {} as default fallback")’ is not a constant expression
102 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: Found {} as default fallback", themeDir.value());
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp: In member function ‘void Hyprtoolkit::CSystemIconFactory::parseTheme(const std::string&)’:
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:217:30: error: call to consteval function ‘std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>("CSystemIconFactory: parsing inherited theme {}")’ is not a constant expression
217 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: parsing inherited theme {}", *inheritTheme);
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format: In instantiation of ‘static std::__format::_Arg_store<_Context, _Args>::_Element_t std::__format::_Arg_store<_Context, _Args>::_S_make_elt(_Tp&) [with _Tp = std::vector<std::__cxx11::basic_string<char> >; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}; _Element_t = std::__format::_Arg_store<std::basic_format_context<std::__format::_Sink_iter<char>, char>, std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle>::_Element_t]’:
/usr/include/c++/14/format:3755:23: required from ‘std::__format::_Arg_store<_Context, _Args>::_Arg_store(_Tp& ...) [with _Tp = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >}; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}]’
3755 | : _M_args{_S_make_elt(__a)...}
| ~~~~~~~~~~~^~~~~
/usr/include/c++/14/format:3805:14: required from ‘auto std::make_format_args(_Args& ...) [with _Context = basic_format_context<__format::_Sink_iter<char>, char>; _Args = {vector<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, allocator<__cxx11::basic_string<char, char_traits<char>, allocator<char> > > >}]’
3805 | return _Store(__fmt_args...);
| ^~~~~~~~~~~~~~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/../core/Logger.hpp:34:68: required from ‘void Hyprtoolkit::CLogger::log(Hyprtoolkit::eLogLevel, std::format_string<_Args ...>, Args&& ...) [with Args = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&}; std::format_string<_Args ...> = std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>]’
34 | logMsg += std::vformat(fmt.get(), std::make_format_args(args...));
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: required from here
102 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: Found {} as default fallback", themeDir.value());
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3733:25: error: static assertion failed: std::formatter must be specialized for the type of each format arg
3733 | static_assert(is_default_constructible_v<formatter<_Tq, _CharT>>,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3733:25: note: ‘std::is_default_constructible_v<std::formatter<std::vector<std::__cxx11::basic_string<char> >, char> >’ evaluates to false
/usr/include/c++/14/format:3744:38: error: no matching function for call to ‘std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::basic_format_arg(std::vector<std::__cxx11::basic_string<char> >&)’
3744 | basic_format_arg<_Context> __arg(__v);
| ^~~~~
/usr/include/c++/14/format:3480:9: note: candidate: ‘template<class _Tp> requires __formattable_with<_Tp, _Context, typename _Context::formatter_type<typename std::remove_const<_Tp>::type>, std::basic_format_parse_context<typename _Context::char_type> > std::basic_format_arg<_Context>::basic_format_arg(_Tp&) [with _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>]’
3480 | basic_format_arg(_Tp& __v) noexcept
| ^~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3480:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/format:3480:9: note: constraints not satisfied
In file included from /usr/include/c++/14/bits/iterator_concepts.h:36,
from /usr/include/c++/14/bits/stl_iterator_base_types.h:71,
from /usr/include/c++/14/bits/stl_construct.h:61,
from /usr/include/c++/14/bits/stl_tempbuf.h:61,
from /usr/include/c++/14/memory:66:
/usr/include/c++/14/concepts: In substitution of ‘template<class _Tp> requires __formattable_with<_Tp, _Context, typename _Context::formatter_type<typename std::remove_const<_Tp>::type>, std::basic_format_parse_context<typename _Context::char_type> > std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::basic_format_arg(_Tp&) [with _Tp = std::basic_format_context<std::__format::_Sink_iter<char>, char>]’:
/usr/include/c++/14/format:3744:31: required from ‘static std::__format::_Arg_store<_Context, _Args>::_Element_t std::__format::_Arg_store<_Context, _Args>::_S_make_elt(_Tp&) [with _Tp = std::vector<std::__cxx11::basic_string<char> >; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}; _Element_t = std::__format::_Arg_store<std::basic_format_context<std::__format::_Sink_iter<char>, char>, std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle>::_Element_t]’
3744 | basic_format_arg<_Context> __arg(__v);
| ^~~~~
/usr/include/c++/14/format:3755:23: required from ‘std::__format::_Arg_store<_Context, _Args>::_Arg_store(_Tp& ...) [with _Tp = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >}; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}]’
3755 | : _M_args{_S_make_elt(__a)...}
| ~~~~~~~~~~~^~~~~
/usr/include/c++/14/format:3805:14: required from ‘auto std::make_format_args(_Args& ...) [with _Context = basic_format_context<__format::_Sink_iter<char>, char>; _Args = {vector<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, allocator<__cxx11::basic_string<char, char_traits<char>, allocator<char> > > >}]’
3805 | return _Store(__fmt_args...);
| ^~~~~~~~~~~~~~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/../core/Logger.hpp:34:68: required from ‘void Hyprtoolkit::CLogger::log(Hyprtoolkit::eLogLevel, std::format_string<_Args ...>, Args&& ...) [with Args = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&}; std::format_string<_Args ...> = std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>]’
34 | logMsg += std::vformat(fmt.get(), std::make_format_args(args...));
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: required from here
102 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: Found {} as default fallback", themeDir.value());
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/concepts:159:13: required for the satisfaction of ‘constructible_from<_Tp, _Tp>’ [with _Tp = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>]
/usr/include/c++/14/concepts:173:13: required for the satisfaction of ‘move_constructible<_Tp>’ [with _Tp = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>]
/usr/include/c++/14/concepts:178:13: required for the satisfaction of ‘copy_constructible<_Tp>’ [with _Tp = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>]
/usr/include/c++/14/concepts:275:13: required for the satisfaction of ‘copyable<_Tp>’ [with _Tp = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>]
/usr/include/c++/14/concepts:280:13: required for the satisfaction of ‘semiregular<_Formatter>’ [with _Formatter = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>]
/usr/include/c++/14/format:2526:13: required for the satisfaction of ‘__formattable_with<_Tp, _Context, typename _Context::formatter_type<typename std::remove_const<_Tp>::type>, std::basic_format_parse_context<typename _Context::char_type> >’ [with _Tp = std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>]
/usr/include/c++/14/concepts:160:30: note: the expression ‘is_constructible_v<_Tp, _Args ...> [with _Tp = std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>; _Args = {std::formatter<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char>}]’ evaluated to ‘false’
160 | = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format: In instantiation of ‘static std::__format::_Arg_store<_Context, _Args>::_Element_t std::__format::_Arg_store<_Context, _Args>::_S_make_elt(_Tp&) [with _Tp = std::vector<std::__cxx11::basic_string<char> >; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}; _Element_t = std::__format::_Arg_store<std::basic_format_context<std::__format::_Sink_iter<char>, char>, std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle>::_Element_t]’:
/usr/include/c++/14/format:3755:23: required from ‘std::__format::_Arg_store<_Context, _Args>::_Arg_store(_Tp& ...) [with _Tp = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >}; _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>; _Args = {std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::handle}]’
3755 | : _M_args{_S_make_elt(__a)...}
| ~~~~~~~~~~~^~~~~
/usr/include/c++/14/format:3805:14: required from ‘auto std::make_format_args(_Args& ...) [with _Context = basic_format_context<__format::_Sink_iter<char>, char>; _Args = {vector<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, allocator<__cxx11::basic_string<char, char_traits<char>, allocator<char> > > >}]’
3805 | return _Store(__fmt_args...);
| ^~~~~~~~~~~~~~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/../core/Logger.hpp:34:68: required from ‘void Hyprtoolkit::CLogger::log(Hyprtoolkit::eLogLevel, std::format_string<_Args ...>, Args&& ...) [with Args = {std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&}; std::format_string<_Args ...> = std::basic_format_string<char, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>]’
34 | logMsg += std::vformat(fmt.get(), std::make_format_args(args...));
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/tonetillo/GitClones/hyprtoolkit/src/system/Icons.cpp:102:30: required from here
102 | g_logger->log(HT_LOG_TRACE, "CSystemIconFactory: Found {} as default fallback", themeDir.value());
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3280:7: note: candidate: ‘std::basic_format_arg<_Context>::basic_format_arg() [with _Context = std::basic_format_context<std::__format::_Sink_iter<char>, char>]’
3280 | basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
| ^~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3280:7: note: candidate expects 0 arguments, 1 provided
/usr/include/c++/14/format:3223:11: note: candidate: ‘constexpr std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::basic_format_arg(const std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >&)’
3223 | class basic_format_arg
| ^~~~~~~~~~~~~~~~
/usr/include/c++/14/format:3223:11: note: no known conversion for argument 1 from ‘std::vector<std::__cxx11::basic_string<char> >’ to ‘const std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >&’
/usr/include/c++/14/format:3223:11: note: candidate: ‘constexpr std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >::basic_format_arg(std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >&&)’
/usr/include/c++/14/format:3223:11: note: no known conversion for argument 1 from ‘std::vector<std::__cxx11::basic_string<char> >’ to ‘std::basic_format_arg<std::basic_format_context<std::__format::_Sink_iter<char>, char> >&&’
[ 90%] Building CXX object CMakeFiles/hyprtoolkit.dir/protocols/linux-dmabuf-v1.cpp.o
[ 91%] Building CXX object CMakeFiles/hyprtoolkit.dir/protocols/fractional-scale-v1.cpp.o
gmake[2]: *** [CMakeFiles/hyprtoolkit.dir/build.make:1052: CMakeFiles/hyprtoolkit.dir/src/system/Icons.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:1011: CMakeFiles/hyprtoolkit.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
I’m sorry for the big copy-paste but I’m not sure what is relevant or not. I would appreciate any help to build hyprtoolkit.