nooploop / piejam

PieJam - an audio mixer with touch interface for Raspberry Pi
GNU General Public License v3.0
66 stars 1 forks source link

Raspberry Pi 4B - LADSPA Header not found & Problems with building and mipp #6

Closed Xenox003 closed 2 years ago

Xenox003 commented 2 years ago

When trying to build the piejam application via cmake i get following error:

CMake Error at piejam_libs/audio/CMakeLists.txt:8 (message): LADSPA header not found

I got the ladspa sdk running on my PI, is there any other packages i need to install? Or do i need to add anything special to PATH?

Update: my ladspa.h is located in /usr/include but the compiler does not seem to find it for some reason

nooploop commented 2 years ago

puh, weird, normally CMake should find it without problems, when it's in /usr/include. Just to make sure the header must be on your build system, it doesn't need to be present on the PI then, unless your PI is also your build system.

Xenox003 commented 2 years ago

Building it directly on the PI, as you can see in the video the ladspa.h header is there and cmake cannot find it for some reason: https://streamable.com/wr0oiw

Also tested it on debian, same problem

nooploop commented 2 years ago

hm... what if you remove the check in piejam/piejam_libs/audio/CMakeLists.txt just remove all those lines:

include(CheckIncludeFile) check_include_file("ladspa.h" LADSPA_HEADER) if(NOT LADSPA_HEADER) message(FATAL_ERROR "LADSPA header not found") endif()

i also would suggest not to build inside the source directory. create a build folder beside the source directory, e.g. piejam_build and then call inside the build folder:

cmake -DCMAKE_BUILD_TYPE=Release ../piejam

Xenox003 commented 2 years ago

Hi, thanks for the suggestion of build the app in a seperate dir, i commented the lines doing the check. I needed to install some missing libs and boom, it was building.

Currently letting make run over that, lets see how that works out. Thanks!

Xenox003 commented 2 years ago

Looks like theres soe problem with MIPP, anyone know whats wrong here?

Warning Long log incoming:

Scanning dependencies of target piejam_system
[  0%] Building CXX object piejam_libs/system/CMakeFiles/piejam_system.dir/src/piejam/system/avg_cpu_load_tracker.cpp.o
[  0%] Building CXX object piejam_libs/system/CMakeFiles/piejam_system.dir/src/piejam/system/cpu_load.cpp.o
[  1%] Building CXX object piejam_libs/system/CMakeFiles/piejam_system.dir/src/piejam/system/cpu_temp.cpp.o
[  1%] Building CXX object piejam_libs/system/CMakeFiles/piejam_system.dir/src/piejam/system/dll.cpp.o
[  1%] Building CXX object piejam_libs/system/CMakeFiles/piejam_system.dir/src/piejam/system/device.cpp.o
[  2%] Linking CXX static library libpiejam_system.a
[  2%] Built target piejam_system
Scanning dependencies of target piejam_thread
[  2%] Building CXX object piejam_libs/thread/CMakeFiles/piejam_thread.dir/src/piejam/thread/affinity.cpp.o
[  2%] Building CXX object piejam_libs/thread/CMakeFiles/piejam_thread.dir/src/piejam/thread/configuration.cpp.o
[  3%] Building CXX object piejam_libs/thread/CMakeFiles/piejam_thread.dir/src/piejam/thread/name.cpp.o
[  3%] Building CXX object piejam_libs/thread/CMakeFiles/piejam_thread.dir/src/piejam/thread/priority.cpp.o
[  3%] Building CXX object piejam_libs/thread/CMakeFiles/piejam_thread.dir/src/piejam/thread/semaphore.cpp.o
[  4%] Linking CXX static library libpiejam_thread.a
[  4%] Built target piejam_thread
Scanning dependencies of target piejam_numeric
[  4%] Building CXX object piejam_libs/numeric/CMakeFiles/piejam_numeric.dir/src/piejam/numeric/dft.cpp.o
[  5%] Linking CXX static library libpiejam_numeric.a
[  5%] Built target piejam_numeric
Scanning dependencies of target piejam_audio
[  5%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/alsa/get_pcm_io_descriptors.cpp.o
[  5%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/alsa/get_set_hw_params.cpp.o
[  6%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/alsa/pcm_io.cpp.o
[  6%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/alsa/process_step.cpp.o
[  6%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/components/amplifier.cpp.o
[  7%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/components/level_meter.cpp.o
[  7%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/components/pan.cpp.o
[  7%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/components/stereo_balance.cpp.o
[  8%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/cpu_load_meter.cpp.o
[  8%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/device_manager.cpp.o
[  8%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/audio_slice.cpp.o
[  9%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/clip_processor.cpp.o
[  9%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/dag.cpp.o
[  9%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/event_to_audio_processor.cpp.o
[  9%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/export_graph_as_dot.cpp.o
[ 10%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/graph.cpp.o
[ 10%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/graph_algorithms.cpp.o
[ 10%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/graph_to_dag.cpp.o
[ 11%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/identity_processor.cpp.o
[ 11%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/input_processor.cpp.o
[ 11%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/level_meter_processor.cpp.o
[ 12%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/mix_processor.cpp.o
In file included from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:13,
                 from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/mix_processor.cpp:10:
/usr/include/boost/hof/capture.hpp: In instantiation of ‘constexpr decltype (boost::hof::detail::capture_invoke<F, Pack>(static_cast<F&&>(f), (Pack&&)(static_cast<const Pack&>((* boost::hof::always(declval<boost::hof::detail::capture_pack<Pack>::fit_const_this_type>())(f)))))) boost::hof::detail::capture_pack<Pack>::operator()(F) const [with F = std::plus<void>; Pack = boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> >; decltype (boost::hof::detail::capture_invoke<F, Pack>(static_cast<F&&>(f), (Pack&&)(static_cast<const Pack&>((* boost::hof::always(declval<boost::hof::detail::capture_pack<Pack>::fit_const_this_type>())(f)))))) = boost::hof::detail::capture_invoke<std::plus<void>, boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >; boost::hof::detail::capture_pack<Pack>::fit_const_this_type = const boost::hof::detail::capture_pack<boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >*]’:
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:48:53:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::detail::slice_add<T>::operator()(const typename piejam::audio::engine::slice<T>::span_t&, T) const [with T = float; typename piejam::audio::engine::slice<T>::span_t = std::span<const float, 4294967295>]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:60:23:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::detail::slice_add<T>::operator()(T, const typename piejam::audio::engine::slice<T>::span_t&) const [with T = float; typename piejam::audio::engine::slice<T>::span_t = std::span<const float, 4294967295>]’
/usr/include/c++/10/bits/invoke.h:60:36:   required from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = piejam::audio::engine::slice<float>; _Fn = piejam::audio::engine::detail::slice_add<float>; _Args = {const float&, const std::span<const float, 4294967295>&}]’
/usr/include/c++/10/bits/invoke.h:95:40:   required from ‘constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable = piejam::audio::engine::detail::slice_add<float>; _Args = {const float&, const std::span<const float, 4294967295>&}; typename std::__invoke_result<_Functor, _ArgTypes>::type = piejam::audio::engine::slice<float>]’
/usr/include/c++/10/variant:1020:24:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/10/variant:955:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::integer_sequence<unsigned int, _Idxs ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; unsigned int __index = 0; _Tp = std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> > (*)(piejam::audio::engine::detail::slice_add<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&), 2>; _Result_type = std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >; _Visitor = piejam::audio::engine::detail::slice_add<float>&&; unsigned int ...__dimensions = {2, 2}; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}; unsigned int ...__indices = {}]’
/usr/include/c++/10/variant:955:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >, piejam::audio::engine::detail::slice_add<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&>::_S_vtable’
/usr/include/c++/10/variant:1699:45:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with _Result_type = std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >; _Visitor = piejam::audio::engine::detail::slice_add<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/usr/include/c++/10/variant:1718:35:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = piejam::audio::engine::detail::slice_add<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:323:22:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::add(const piejam::audio::engine::slice<T>&, const piejam::audio::engine::slice<T>&, const std::span<_Type, 4294967295>&) [with T = float]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/mix_processor.cpp:37:72:   required from here
/usr/include/boost/hof/capture.hpp:152:20: note: parameter passing for argument of type ‘boost::hof::detail::capture_invoke<std::plus<void>, boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >’ when C++17 is enabled changed to match C++14 in GCC 10.1
  152 |     constexpr auto operator()(F f) const BOOST_HOF_SFINAE_RETURNS
      |                    ^~~~~~~~
[ 12%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/multiply_processor.cpp.o
In file included from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:13,
                 from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/multiply_processor.cpp:10:
/usr/include/boost/hof/capture.hpp: In instantiation of ‘constexpr decltype (boost::hof::detail::capture_invoke<F, Pack>(static_cast<F&&>(f), (Pack&&)(static_cast<const Pack&>((* boost::hof::always(declval<boost::hof::detail::capture_pack<Pack>::fit_const_this_type>())(f)))))) boost::hof::detail::capture_pack<Pack>::operator()(F) const [with F = std::multiplies<void>; Pack = boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> >; decltype (boost::hof::detail::capture_invoke<F, Pack>(static_cast<F&&>(f), (Pack&&)(static_cast<const Pack&>((* boost::hof::always(declval<boost::hof::detail::capture_pack<Pack>::fit_const_this_type>())(f)))))) = boost::hof::detail::capture_invoke<std::multiplies<void>, boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >; boost::hof::detail::capture_pack<Pack>::fit_const_this_type = const boost::hof::detail::capture_pack<boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >*]’:
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:102:53:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::detail::slice_multiply<T>::operator()(const typename piejam::audio::engine::slice<T>::span_t&, T) const [with T = float; typename piejam::audio::engine::slice<T>::span_t = std::span<const float, 4294967295>]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:114:23:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::detail::slice_multiply<T>::operator()(T, const typename piejam::audio::engine::slice<T>::span_t&) const [with T = float; typename piejam::audio::engine::slice<T>::span_t = std::span<const float, 4294967295>]’
/usr/include/c++/10/bits/invoke.h:60:36:   required from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = piejam::audio::engine::slice<float>; _Fn = piejam::audio::engine::detail::slice_multiply<float>; _Args = {const float&, const std::span<const float, 4294967295>&}]’
/usr/include/c++/10/bits/invoke.h:95:40:   required from ‘constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable = piejam::audio::engine::detail::slice_multiply<float>; _Args = {const float&, const std::span<const float, 4294967295>&}; typename std::__invoke_result<_Functor, _ArgTypes>::type = piejam::audio::engine::slice<float>]’
/usr/include/c++/10/variant:1020:24:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/10/variant:955:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::integer_sequence<unsigned int, _Idxs ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; unsigned int __index = 0; _Tp = std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> > (*)(piejam::audio::engine::detail::slice_multiply<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&), 2>; _Result_type = std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >; _Visitor = piejam::audio::engine::detail::slice_multiply<float>&&; unsigned int ...__dimensions = {2, 2}; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}; unsigned int ...__indices = {}]’
/usr/include/c++/10/variant:955:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >, piejam::audio::engine::detail::slice_multiply<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&>::_S_vtable’
/usr/include/c++/10/variant:1699:45:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with _Result_type = std::__detail::__variant::__deduce_visit_result<piejam::audio::engine::slice<float> >; _Visitor = piejam::audio::engine::detail::slice_multiply<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/usr/include/c++/10/variant:1718:35:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = piejam::audio::engine::detail::slice_multiply<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:334:22:   required from ‘constexpr piejam::audio::engine::slice<T> piejam::audio::engine::multiply(const piejam::audio::engine::slice<T>&, const piejam::audio::engine::slice<T>&, const std::span<_Type, 4294967295>&) [with T = float]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/multiply_processor.cpp:39:77:   required from here
/usr/include/boost/hof/capture.hpp:152:20: note: parameter passing for argument of type ‘boost::hof::detail::capture_invoke<std::multiplies<void>, boost::hof::detail::pack_base<boost::hof::detail::seq<0>, mipp::Reg<float> > >’ when C++17 is enabled changed to match C++14 in GCC 10.1
  152 |     constexpr auto operator()(F f) const BOOST_HOF_SFINAE_RETURNS
      |                    ^~~~~~~~
[ 12%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/output_processor.cpp.o
[ 12%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/pan_balance_processor.cpp.o
[ 13%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/process.cpp.o
[ 13%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/processor_job.cpp.o
[ 13%] Building CXX object piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/stream_processor.cpp.o
In file included from /home/xenox003/PieJamTest/piejam/libs/MIPP/src/mipp.h:1321,
                 from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/stream_processor.h:10,
                 from /home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/stream_processor.cpp:5:
/home/xenox003/PieJamTest/piejam/libs/MIPP/src/mipp_object.hxx: In instantiation of ‘void mipp::Regx2<T>::store(T*) const [with T = float]’:
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/simd.h:81:22:   required from ‘void piejam::audio::simd::interleave(std::span<const T>, const T*, T*) [with T = float]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:309:25:   required from ‘constexpr void piejam::audio::engine::detail::slice_interleave<T>::operator()(const typename piejam::audio::engine::slice<T>::span_t&, const typename piejam::audio::engine::slice<T>::span_t&) const [with T = float; typename piejam::audio::engine::slice<T>::span_t = std::span<const float>]’
/usr/include/c++/10/bits/invoke.h:60:36:   required from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = piejam::audio::engine::detail::slice_interleave<float>; _Args = {const std::span<const float, 4294967295>&, const std::span<const float, 4294967295>&}]’
/usr/include/c++/10/bits/invoke.h:95:40:   required from ‘constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable = piejam::audio::engine::detail::slice_interleave<float>; _Args = {const std::span<const float, 4294967295>&, const std::span<const float, 4294967295>&}; typename std::__invoke_result<_Functor, _ArgTypes>::type = void]’
/usr/include/c++/10/variant:1020:24:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/10/variant:955:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::integer_sequence<unsigned int, _Idxs ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; unsigned int __index = 1; _Tp = std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(piejam::audio::engine::detail::slice_interleave<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&), 2>; _Result_type = std::__detail::__variant::__deduce_visit_result<void>; _Visitor = piejam::audio::engine::detail::slice_interleave<float>&&; unsigned int ...__dimensions = {2, 2}; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}; unsigned int ...__indices = {}]’
/usr/include/c++/10/variant:955:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<std::__detail::__variant::__deduce_visit_result<void>, piejam::audio::engine::detail::slice_interleave<float>&&, const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&>::_S_vtable’
/usr/include/c++/10/variant:1699:45:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with _Result_type = std::__detail::__variant::__deduce_visit_result<void>; _Visitor = piejam::audio::engine::detail::slice_interleave<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/usr/include/c++/10/variant:1718:35:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = piejam::audio::engine::detail::slice_interleave<float>; _Variants = {const std::variant<float, std::span<const float, 4294967295> >&, const std::variant<float, std::span<const float, 4294967295> >&}]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/include/piejam/audio/engine/slice_algorithms.h:384:15:   required from ‘constexpr auto piejam::audio::engine::interleave(const piejam::audio::engine::slice<T>&, const piejam::audio::engine::slice<T>&, const std::span<_Type, 4294967295>&) [with T = float]’
/home/xenox003/PieJamTest/piejam/piejam_libs/audio/src/piejam/audio/engine/stream_processor.cpp:66:61:   required from here
/home/xenox003/PieJamTest/piejam/libs/MIPP/src/mipp_object.hxx:622:70: error: cannot convert ‘const mipp::Reg<float>’ to ‘float’ in assignment
  622 |  inline void     store       (T* data         ) const { data[0] = val[0]; data[1] = val[1];                                                    }
      |                                                                   ~~~^
      |                                                                      |
      |                                                                      const mipp::Reg<float>
/home/xenox003/PieJamTest/piejam/libs/MIPP/src/mipp_object.hxx:622:88: error: cannot convert ‘const mipp::Reg<float>’ to ‘float’ in assignment
  622 | oid     store       (T* data         ) const { data[0] = val[0]; data[1] = val[1];                                                    }
      |                                                                            ~~~^
      |                                                                               |
      |                                                                               const mipp::Reg<float>

make[2]: *** [piejam_libs/audio/CMakeFiles/piejam_audio.dir/build.make:433: piejam_libs/audio/CMakeFiles/piejam_audio.dir/src/piejam/audio/engine/stream_processor.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:727: piejam_libs/audio/CMakeFiles/piejam_audio.dir/all] Error 2
make: *** [Makefile:149: all] Error 2
Xenox003 commented 2 years ago

Tried it on debian, there it works fine but i cannot run the program on my pi. "Could not execute binary file"

probably because i need 32 bit debian, not sure tho

What machine do you build it on?

nooploop commented 2 years ago

The error in MIPP might come from an outdated compiler. The project requires C++20, so you must make sure that the compiler is quite up to date.

For the PI i'm crosscompiling it using buildroot. The whole buildsystem is in the PieJamOS project.

You can also build and run it on a x86 system, for testing this should work too.

nooploop commented 2 years ago

The project also using submodules, you must clone it with submodules: git clone --recursive https://github.com/nooploop/piejam.git i guess you did this?

Xenox003 commented 2 years ago

Yep its cloned recursively

Edit: didnt see the first message, ill set up an x86 linux vm to try build it

Xenox003 commented 2 years ago

Update: exactly same issues with make on Debian 11 x86

Update: Does not appear to be a C++ version problem, exactly same version of C++ on x64 and x86 versions of Debian image

nooploop commented 2 years ago

hm, gcc10 might be not enough. The image is built using gcc11 cross compiler. And on my development system, i'm using gcc12 already.

Xenox003 commented 2 years ago

Which system are you running on? ARM based x86?

I guess i will try building it on the PI directly since my pc can only run i386 as VM's cause its not ARM based

nooploop commented 2 years ago

I'm using a x86 system for development, running Arch Linux.

But for raspi it needs to be cross-compiled to ARM (32bit) of course.

Xenox003 commented 2 years ago

I guess i'll just setup an Arch Linux VM for development, just like you.

How did you get cross compilation for the PI running with QT Creator? Cause i cannot seem to figure that out.

nooploop commented 2 years ago

I don't cross compile with QtCreator. Cross-compilation happens inside the PieJamOS project. It's a buildroot based Linux system.

Xenox003 commented 2 years ago

Just realised Arch Linux runs on ARM meaning i have literally no way to cross compile at all, i need to compile it on my pi. Seems like i resolved the issues with MIPP above by using the command line option (from this issue) -DCMAKE_CXX_FLAGS="-mfpu=neon-fp-armv8" on the cmake command, it was building properly now.

Took a little time to build on the pi but ig that does not matter.

I wrote a little batch script to automatically install all dependencies and create a basic folder setup (also contains content from the issue mentioned above): setup.sh:

rm -f -R ./build
rm -f -R ./piejam

mkdir build
git clone --recursive https://github.com/nooploop/piejam

sudo bash ./build.sh

build.sh

apt-get update
apt-get -y full-upgrade
apt-get -y install tzdata
cp /usr/share/zoneinfo/America/New_York /etc/localtime
apt-get -y install git cmake build-essential libboost-system-dev libboost-thread-dev ladspa-sdk libspdlog-dev libfmt-dev nlohmann-json3-dev pkg-config
apt-get -y install qtbase5-dev qtdeclarative5-dev qtquickcontrols2-5-dev libqt5quickcontrols2-5 libqt5svg5-dev libqt5virtualkeyboard5-dev
apt-get -y install libfftw3-dev
apt-get -y install libsndfile-dev
apt-get -y install lasdpa-sdk

cd build

cmake -DCMAKE_CXX_FLAGS="-mfpu=neon-fp-armv8" -DCMAKE_BUILD_TYPE=Release ../piejam
make

There are some issues with running the app tho:

xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ sudo ./piejam_app
[2022-06-22 08:57:07.297] [warning] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' (:0, )
[2022-06-22 08:57:07.868] [warning] QQmlApplicationEngine failed to load component (:0, )
[2022-06-22 08:57:07.868] [warning] qrc:/Main.qml:10:1: Type MainWindow unavailable (qrc:/Main.qml:10, )
[2022-06-22 08:57:07.869] [warning] qrc:/PieJam/Views/MainWindow.qml:22:5: Type RootView unavailable (qrc:/PieJam/Views/MainWindow.qml:22, )
[2022-06-22 08:57:07.869] [warning] qrc:/PieJam/Views/RootView.qml:127:5: Type InputPanel unavailable (qrc:/PieJam/Views/RootView.qml:127, )
[2022-06-22 08:57:07.869] [warning] qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127:5: Type Keyboard unavailable (qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127, )
[2022-06-22 08:57:07.869] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 08:57:07.869] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )
[2022-06-22 08:57:07.869] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 08:57:07.869] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )

Looks like some dependencie issues but i should have all of them installed, i'll experiment a little. When i try running it without sudo i get this:

xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ ./piejam_app
terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted
Aborted
nooploop commented 2 years ago

The QtKeyboard plugin needs to be activated, run first: export QT_IM_MODULE=qtvirtualkeyboard

nooploop commented 2 years ago

You also might need to create the folder /piejam

nooploop commented 2 years ago

Also those variables must be set: export QT_QPA_EGLFS_PHYSICAL_WIDTH=155 export QT_QPA_EGLFS_PHYSICAL_HEIGHT=86

Xenox003 commented 2 years ago

I executed following now:

sudo mkdir /piejam
export QT_IM_MODULE=qtvirtualkeyboard
export QT_QPA_EGLFS_PHYSICAL_WIDTH=155
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=86

And this is the output when trying to run the app now:

xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ sudo ./piejam_app
[2022-06-22 09:14:30.720] [warning] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' (:0, )
[2022-06-22 09:14:30.920] [warning] QQmlApplicationEngine failed to load component (:0, )
[2022-06-22 09:14:30.920] [warning] qrc:/Main.qml:10:1: Type MainWindow unavailable (qrc:/Main.qml:10, )
[2022-06-22 09:14:30.920] [warning] qrc:/PieJam/Views/MainWindow.qml:22:5: Type RootView unavailable (qrc:/PieJam/Views/MainWindow.qml:22, )
[2022-06-22 09:14:30.920] [warning] qrc:/PieJam/Views/RootView.qml:127:5: Type InputPanel unavailable (qrc:/PieJam/Views/RootView.qml:127, )
[2022-06-22 09:14:30.920] [warning] qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127:5: Type Keyboard unavailable (qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127, )
[2022-06-22 09:14:30.920] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 09:14:30.920] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )
[2022-06-22 09:14:30.920] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 09:14:30.921] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )
Xenox003 commented 2 years ago

It also takes about 30 seconds before it does anything at all, not sure if thats because of my PI's performance or its something with the application itself

https://user-images.githubusercontent.com/68594244/175038778-ccc950c5-7caf-4228-9040-649e58708e8f.mp4

nooploop commented 2 years ago

hm, maybe install also libqt5virtualkeyboard5

Xenox003 commented 2 years ago

I got both the -dev and the "normal" version installed:

xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ sudo apt-get install libqt5virtualkeyboard5
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libqt5virtualkeyboard5 is already the newest version (5.15.2+dfsg-2).
libqt5virtualkeyboard5 set to manually installed.
The following packages were automatically installed and are no longer required:
  libbasicusageenvironment1 libfuse2 libgroupsock8 liblivemedia77
  libusageenvironment3
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ sudo apt-get install libqt5virtualkeyboard5-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libqt5virtualkeyboard5-dev is already the newest version (5.15.2+dfsg-2).
The following packages were automatically installed and are no longer required:
  libbasicusageenvironment1 libfuse2 libgroupsock8 liblivemedia77
  libusageenvironment3
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
nooploop commented 2 years ago

Something isn't right with Qt installation, it can't find the installed plugins. There are some variables which can alter the path, maybe this can help, e.g. QT_PLUGIN_PATH or QML2_IMPORT_PATH .

Xenox003 commented 2 years ago

Both of those are not defined: image

By any chance do you know what those are supposed to be set to?

nooploop commented 2 years ago

Depends where the package manager installs the files on your system. Can you list the installed file of libqt5virtualkeyboard5 package?

Xenox003 commented 2 years ago

Looks like /usr/lib is what we are looking for image

nooploop commented 2 years ago

There must be some qt/plugins and qt/qml subfolders.

Xenox003 commented 2 years ago

After using the magical find command i've found those directories and set those vars image

xenox003@raspberrypi:/usr/lib/arm-linux-gnueabihf/qt5 $ export QML2_IMPORT_PATH=/usr/lib/arm-linux-gnueabihf/qt5/qml
xenox003@raspberrypi:/usr/lib/arm-linux-gnueabihf/qt5 $ export QT_PLUGIN_PATH=/usr/lib/arm-linux-gnueabihf/qt5/plugins

After launching the application i get those messages:

xenox003@raspberrypi:~/Development/PieJam/build/piejam_app $ sudo ./piejam_app
[2022-06-22 11:44:56.474] [warning] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' (:0, )
[2022-06-22 11:44:56.662] [warning] QQmlApplicationEngine failed to load component (:0, )
[2022-06-22 11:44:56.662] [warning] qrc:/Main.qml:10:1: Type MainWindow unavailable (qrc:/Main.qml:10, )
[2022-06-22 11:44:56.662] [warning] qrc:/PieJam/Views/MainWindow.qml:22:5: Type RootView unavailable (qrc:/PieJam/Views/MainWindow.qml:22, )
[2022-06-22 11:44:56.662] [warning] qrc:/PieJam/Views/RootView.qml:127:5: Type InputPanel unavailable (qrc:/PieJam/Views/RootView.qml:127, )
[2022-06-22 11:44:56.662] [warning] qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127:5: Type Keyboard unavailable (qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:127, )
[2022-06-22 11:44:56.662] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 11:44:56.662] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )
[2022-06-22 11:44:56.662] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39:1: module "Qt.labs.folderlistmodel" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:39, )
[2022-06-22 11:44:56.662] [warning] qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38:1: module "QtQuick.VirtualKeyboard.Plugins" is not installed (qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:38, )
nooploop commented 2 years ago

hm, you might also try to set: export QTDIR=/usr/lib/arm-linux-gnueabihf/qt5

otherwise, i'm out of ideas

Xenox003 commented 2 years ago

Ok seems like this does not work either, google is also out of ideas so i guess i will just take my raspberry pi and throw it out of the window

because for some fucking reason everything i touch breaks so fucking bad

nooploop commented 2 years ago

hehe, not so fast :) try the prebuilt image again, i think i found a solution there, look here: https://github.com/nooploop/piejam_os/issues/1#issuecomment-1163218821

Xenox003 commented 2 years ago

I guess i'll take a look at that later

Xenox003 commented 2 years ago

Issues above resolved by settint the QT_IM_MODULE Variable to qtvirtualkeyboard This solution worked on my debian machine, did not test it on my PI