analogdevicesinc / gr-iio

IIO blocks for GNU Radio
GNU General Public License v3.0
94 stars 61 forks source link

Fix GNU Radio detection #72

Open wkazubski opened 4 years ago

wkazubski commented 4 years ago

In branch upgrade-3.8 (and fixes-3.8) the GNU Radio is searched twice, first time in line 86: find_package(Gnuradio "3.8" REQUIRED)

and then in line 113: find_package(Gnuradio COMPONENTS blocks analog volk pmt filter fft)

This triggers an error while building on openSUSE: CMake Error at /usr/lib64/cmake/gnuradio/FindLOG4CPP.cmake:52 (add_library): add_library cannot create imported target "Log4Cpp::log4cpp" because another target with the same name already exists. Call Stack (most recent call first): /usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake:47 (find_package) /usr/lib64/cmake/gnuradio/GnuradioConfig.cmake:25 (find_dependency) CMakeLists.txt:113 (find_package)

Please merge both lines to one (line 86): find_package(Gnuradio "3.8" REQUIRED COMPONENTS blocks analog volk pmt filter fft)

Also, the line 114: find_package(Gnuradio PATHS "c:/Program Files/gnuradio/lib/cmake/gnuradio" REQUIRED) is Windows specific and does not help in Linux or Mac.

wkazubski commented 4 years ago

Thanks, now GNU Radio is detected correctly and build goes on until linking: [ 55%] Linking CXX shared library libgnuradio-iio.so cd /home/wk/rpmbuild/BUILD/gr-iio/build/lib && /usr/bin/cmake -E cmake_link_script CMakeFiles/gnuradio-iio.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -DNDEBUG -O2 -g -DNDEBUG -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -shared -Wl,-soname,libgnuradio-iio.so... -o libgnuradio-iio.so.... CMakeFiles/gnuradio-iio.dir/device_source_impl.cc.o CMakeFiles/gnuradio-iio.dir/device_sink_impl.cc.o CMakeFiles/gnuradio-iio.dir/fmcomms2_source_impl.cc.o CMakeFiles/gnuradio-iio.dir/fmcomms2_sink_impl.cc.o CMakeFiles/gnuradio-iio.dir/fmcomms5_source_impl.cc.o CMakeFiles/gnuradio-iio.dir/fmcomms5_sink_impl.cc.o CMakeFiles/gnuradio-iio.dir/pluto_source_impl.cc.o CMakeFiles/gnuradio-iio.dir/pluto_sink_impl.cc.o CMakeFiles/gnuradio-iio.dir/attr_sink_impl.cc.o CMakeFiles/gnuradio-iio.dir/attr_source_impl.cc.o CMakeFiles/gnuradio-iio.dir/converter_ss_impl.cc.o CMakeFiles/gnuradio-iio.dir/iio_math_impl.cc.o CMakeFiles/gnuradio-iio.dir/iio_math_gen_impl.cc.o CMakeFiles/gnuradio-iio.dir/iio_power_ff_impl.cc.o CMakeFiles/gnuradio-iio.dir/iio_modulo_ff_impl.cc.o CMakeFiles/gnuradio-iio.dir/iio_modulo_const_ff_impl.cc.o CMakeFiles/gnuradio-iio.dir/lexer.c.o CMakeFiles/gnuradio-iio.dir/parser.c.o /usr/lib64/libgnuradio-analog.so.3.8.0.0 /usr/lib64/libgnuradio-filter.so.3.8.0.0 /usr/lib64/libgnuradio-fft.so.3.8.0.0 /usr/lib64/libiio.so /usr/lib64/libad9361.so /usr/lib64/libgnuradio-blocks.so.3.8.0.0 /usr/lib64/libgnuradio-runtime.so.3.8.0.0 /usr/lib64/libgnuradio-pmt.so.3.8.0.0 /usr/lib64/libboost_program_options.so.1.71.0 /usr/lib64/libboost_filesystem.so.1.71.0 /usr/lib64/libboost_system.so.1.71.0 /usr/lib64/libboost_regex.so.1.71.0 /usr/lib64/libboost_thread.so.1.71.0 -lpthread /usr/lib64/liblog4cpp.so /usr/lib64/libgmpxx.so /usr/lib64/libgmp.so -lrt /usr/lib64/libfftw3f.so /usr/lib64/libfftw3f_threads.so /usr/lib64/libvolk.so.2.1 -ldl /usr/lib64/liborc-0.4.so -lm /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gnuradio-iio.dir/attr_source_impl.cc.o: in functionbool boost::condition_variable::wait_for<long, boost::ratio<1l, 1000l>, bool ()()>(boost::unique_lock&, boost::chrono::duration<long, boost::ratio<1l, 1000l> > const&, bool ()())': /usr/include/boost/thread/pthread/condition_variable_fwd.hpp:321: undefined reference to boost::chrono::steady_clock::now()' collect2: error: ld returned 1 exit status make[2]: *** [lib/CMakeFiles/gnuradio-iio.dir/build.make:373: lib/libgnuradio-iio.so....] Error 1

tfcollins commented 4 years ago

Do you have boost chrono?

wkazubski commented 4 years ago

Yes. It was installed at that time, but is neither checked for by cmake nor used for linking. In openSUSE, gnuradio 3.8 checks for those boost modules: date_time program_options filesystem system regex thread unit_test_framework.

tfcollins commented 4 years ago

Let me load up a SUSE vm and check this out

commodo commented 4 years ago

Try docker. It’s faster. There should be some prebuilt images on dockerhub.