EttusResearch / uhd

The USRP™ Hardware Driver Repository
http://uhd.ettus.com
Other
974 stars 654 forks source link

UHD 3.14.0.0 does not build with Boost 1.70.0 #266

Closed fxcoudert closed 5 years ago

fxcoudert commented 5 years ago

Issue Description

Trying to compile UHD 3.14.0.0 on macOS with Boost 1.70.0 (latest version) fails with linker errors, many undefined symbols while trying to link libuhd.3.14.0.dylib:

  "typeinfo for boost::archive::detail::basic_oserializer", referenced from:
      typeinfo for boost::archive::detail::oserializer<boost::archive::text_oarchive, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > in power_container_impl.cpp.o
      typeinfo for boost::archive::detail::oserializer<boost::archive::text_oarchive, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > in power_container_impl.cpp.o
      typeinfo for boost::archive::detail::oserializer<boost::archive::text_oarchive, std::__1::vector<double, std::__1::allocator<double> > > in power_container_impl.cpp.o
      typeinfo for boost::archive::detail::oserializer<boost::archive::text_oarchive, std::__1::pair<std::__1::vector<double, std::__1::allocator<double> > const, double> > in power_container_impl.cpp.o
      typeinfo for boost::archive::detail::oserializer<boost::archive::text_oarchive, std::__1::map<std::__1::vector<double, std::__1::allocator<double> >, double, std::__1::less<std::__1::vector<double, std::__1::allocator<double> > >, std::__1::allocator<std::__1::pair<std::__1::vector<double, std::__1::allocator<double> > const, double> > > > in power_container_impl.cpp.o
  "vtable for boost::detail::thread_data_base", referenced from:
      boost::detail::thread_data_base::thread_data_base() in x300_impl.cpp.o
      boost::detail::thread_data_base::thread_data_base() in tasks.cpp.o
      boost::detail::thread_data_base::thread_data_base() in rpc_client.cpp.o
      boost::detail::thread_data_base::thread_data_base() in zero_copy_recv_offload.cpp.o
      boost::detail::thread_data_base::thread_data_base() in muxed_zero_copy_if.cpp.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.

We compile (as part of Homebrew https://github.com/Homebrew/homebrew-core/pull/38890) with:


.0_1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -Wno-dev -DENABLE_PYTHON3=ON && make```

The same compilation works with Boost 1.69.0. 
michaelld commented 5 years ago

Thanks for the report. Can you check to see if there are Boost files in `$prefix/lib/cmake"? I'm having issues with the new Boost CMake scripts correctly setting the various Boost CMake variables that we expect for using libraries in the UHD CMake scripts. Headers seem to work.

michaelld commented 5 years ago

BTW> We need to test this verify, which means installing Boost 1.70.0 on more than 1 system ... which might take a bit so please have patience!

adamhorden commented 5 years ago

I can supply a Docker container that has all the tools and dependencies to compile Boost 1.70.0 from source with UHD from master?

I have been using this for testing because I have run into the same issues attempting to use GNU Radio with Python 3.7.

michaelld commented 5 years ago

Thanks for the offer. I think we're about to the point of having Boost 1.70.0 going enough to debug these issues. What it looks like is there's linkage missing for some Boost libraries. Keep updating us on progress if you make any, please & we'll do the same.

michaelld commented 5 years ago

Can you post the output of the cmake command? Also: Did the new Boost install also install its CMake files, probably into $prefix/lib/cmake/Boost*? I'm experiencing this issue when I have the new Boost CMake find scripts; the CMake-provided Boost find script seems to work for me && I think these new CMake scripts are new to 1.70.0 ... so, there still might be bugs in them. The cmake debug output is odd with the new scripts, which is why I'm asking for it; just to verify my suspicion here of what's going on. Thx!

fxcoudert commented 5 years ago

We're running:

cmake .. -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/uhd/3.14.0.0_1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -Wno-dev -DENABLE_PYTHON3=ON

and the output is:

-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- The C compiler identification is AppleClang 10.0.1.10010046
-- Check for working CXX compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang++
-- Check for working CXX compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang
-- Check for working C compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- 
-- Configuring the python interpreter...
-- Found PythonInterp: /usr/local/bin/python3 (found suitable version "3.7.3", minimum required is "3.0") 
-- Python interpreter: /usr/local/bin/python3
-- Override with: -DPYTHON_EXECUTABLE=<path-to-python>
-- Python runtime interpreter: /usr/local/bin/python3
-- Override with: -DRUNTIME_PYTHON_EXECUTABLE=<path-to-python>
fatal: not a git repository (or any of the parent directories): .git
-- Could not determine git branch. Probably building from tarball.
fatal: not a git repository (or any of the parent directories): .git
-- Using UHD Images Directory: /usr/local/Cellar/uhd/3.14.0.0_1/share/uhd/images
-- Performing Test HAVE_VISIBILITY_HIDDEN
-- Performing Test HAVE_VISIBILITY_HIDDEN - Success
-- Performing Test HAVE_VISIBILITY_INLINES_HIDDEN
-- Performing Test HAVE_VISIBILITY_INLINES_HIDDEN - Success
-- 
-- Configuring Boost C++ Libraries...
-- Looking for optional Boost components...
-- Found Boost 1.70.0 at /usr/local/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET OPTIONAL_COMPONENTS python3
-- Found boost_headers 1.70.0 at /usr/local/lib/cmake/boost_headers-1.70.0
-- Boost 1.53 found.
-- Found Boost components:
   python3
-- Looking for required Boost components...
-- Found Boost 1.70.0 at /usr/local/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET COMPONENTS chrono;date_time;filesystem;program_options;regex;system;unit_test_framework;serialization;thread
-- Found boost_chrono 1.70.0 at /usr/local/lib/cmake/boost_chrono-1.70.0
--   libboost_chrono-mt.a
--   libboost_chrono.a
-- Adding boost_chrono dependencies: headers
-- Found boost_date_time 1.70.0 at /usr/local/lib/cmake/boost_date_time-1.70.0
--   libboost_date_time-mt.a
--   libboost_date_time.a
-- Adding boost_date_time dependencies: headers
-- Found boost_filesystem 1.70.0 at /usr/local/lib/cmake/boost_filesystem-1.70.0
--   libboost_filesystem-mt.a
--   libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- Found boost_program_options 1.70.0 at /usr/local/lib/cmake/boost_program_options-1.70.0
--   libboost_program_options-mt.a
--   libboost_program_options.a
-- Adding boost_program_options dependencies: headers
-- Found boost_regex 1.70.0 at /usr/local/lib/cmake/boost_regex-1.70.0
--   libboost_regex-mt.a
--   libboost_regex.a
-- Adding boost_regex dependencies: headers
-- Found boost_system 1.70.0 at /usr/local/lib/cmake/boost_system-1.70.0
--   libboost_system-mt.a
--   libboost_system.a
-- Adding boost_system dependencies: headers
-- Found boost_unit_test_framework 1.70.0 at /usr/local/lib/cmake/boost_unit_test_framework-1.70.0
--   libboost_unit_test_framework-mt.a
--   libboost_unit_test_framework.a
-- Adding boost_unit_test_framework dependencies: headers
-- Found boost_serialization 1.70.0 at /usr/local/lib/cmake/boost_serialization-1.70.0
--   libboost_serialization-mt.a
--   libboost_serialization.a
-- Adding boost_serialization dependencies: headers
-- Found boost_thread 1.70.0 at /usr/local/lib/cmake/boost_thread-1.70.0
--   libboost_thread-mt.a
-- Adding boost_thread dependencies: headers
-- Boost 1.53 found.
-- Found Boost components:
   chrono;date_time;filesystem;program_options;regex;system;unit_test_framework;serialization;thread
-- Boost include directories: 
-- Boost library directories: 
-- Boost libraries: 
-- Found PythonInterp: /usr/local/bin/python3 (found suitable version "3.7.3", minimum required is "3") 
-- Found PythonLibs: /usr/local/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib (found suitable version "3.7.3", minimum required is "3") 
-- 
-- Python checking for Python version 3 or greater
-- Python checking for Python version 3 or greater - found
-- 
-- Python checking for Mako templates 0.4.2 or greater
-- Python checking for Mako templates 0.4.2 or greater - found
-- 
-- Python checking for requests 2.0 or greater
-- Python checking for requests 2.0 or greater - "import requests" failed
-- 
-- Python checking for numpy 1.7 or greater
-- Python checking for numpy 1.7 or greater - found
-- 
-- Configuring LibUHD support...
--   Dependency Boost_FOUND = 1
--   Dependency HAVE_PYTHON_PLAT_MIN_VERSION = TRUE
--   Dependency HAVE_PYTHON_MODULE_MAKO = TRUE
--   Enabling LibUHD support.
--   Override with -DENABLE_LIBUHD=ON/OFF
-- 
-- Configuring LibUHD - C API support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling LibUHD - C API support.
--   Override with -DENABLE_C_API=ON/OFF
-- 
-- Configuring LibUHD - Python API support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency BOOST_PYTHON_FOUND = 0
--   Dependency HAVE_PYTHON_MODULE_NUMPY = TRUE
--   Dependency PythonLibs_FOUND = TRUE
--   Disabling LibUHD - Python API support.
--   Override with -DENABLE_PYTHON_API=ON/OFF
-- 
-- Configuring Examples support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling Examples support.
--   Override with -DENABLE_EXAMPLES=ON/OFF
-- 
-- Configuring Utils support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling Utils support.
--   Override with -DENABLE_UTILS=ON/OFF
-- 
-- Configuring Tests support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling Tests support.
--   Override with -DENABLE_TESTS=ON/OFF
-- 
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2") 
-- Looking for libusb_handle_events_timeout_completed
-- Looking for libusb_handle_events_timeout_completed - found
-- Looking for libusb_error_name
-- Looking for libusb_error_name - found
-- Looking for libusb_strerror
-- Looking for libusb_strerror - found
-- Found LIBUSB: /usr/local/lib/libusb-1.0.dylib  
-- Checking for module 'libgps'
--   No package 'libgps' found
-- Checking for module 'libgps >= 3.11'
--   No package 'libgps' found
-- Could NOT find LIBGPS (missing: LIBGPS_LIBRARY LIBGPS_INCLUDE_DIR) 
-- Could NOT find LIBERIO (missing: LIBERIO_LIBRARY LIBERIO_INCLUDE_DIR) 
-- Could NOT find dpdk (missing: DPDK_INCLUDE_DIR) 
-- 
-- Configuring LIBERIO support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency LIBERIO_FOUND = FALSE
--   Disabling LIBERIO support.
--   Override with -DENABLE_LIBERIO=ON/OFF
-- 
-- Configuring USB support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency LIBUSB_FOUND = TRUE
--   Enabling USB support.
--   Override with -DENABLE_USB=ON/OFF
-- 
-- Configuring GPSD support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_GPSD = 
--   Dependency LIBGPS_FOUND = FALSE
--   Disabling GPSD support.
--   Override with -DENABLE_GPSD=ON/OFF
-- 
-- Configuring B100 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_USB = ON
--   Enabling B100 support.
--   Override with -DENABLE_B100=ON/OFF
-- 
-- Configuring B200 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_USB = ON
--   Enabling B200 support.
--   Override with -DENABLE_B200=ON/OFF
-- 
-- Configuring E300 support...
--   Dependency ENABLE_LIBUHD = ON
--   Disabling E300 support.
--   Override with -DENABLE_E300=ON/OFF
-- 
-- Configuring USRP1 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_USB = ON
--   Enabling USRP1 support.
--   Override with -DENABLE_USRP1=ON/OFF
-- 
-- Configuring USRP2 support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling USRP2 support.
--   Override with -DENABLE_USRP2=ON/OFF
-- 
-- Configuring X300 support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling X300 support.
--   Override with -DENABLE_X300=ON/OFF
-- 
-- Configuring N230 support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling N230 support.
--   Override with -DENABLE_N230=ON/OFF
-- 
-- Configuring MPMD support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling MPMD support.
--   Override with -DENABLE_MPMD=ON/OFF
-- 
-- Configuring N300 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_MPMD = ON
--   Enabling N300 support.
--   Override with -DENABLE_N300=ON/OFF
-- 
-- Configuring N320 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_MPMD = ON
--   Enabling N320 support.
--   Override with -DENABLE_N320=ON/OFF
-- 
-- Configuring E320 support...
--   Dependency ENABLE_LIBUHD = ON
--   Dependency ENABLE_MPMD = ON
--   Enabling E320 support.
--   Override with -DENABLE_E320=ON/OFF
-- 
-- Configuring OctoClock support...
--   Dependency ENABLE_LIBUHD = ON
--   Enabling OctoClock support.
--   Override with -DENABLE_OCTOCLOCK=ON/OFF
-- 
-- Configuring DPDK support...
--   Dependency ENABLE_MPMD = ON
--   Dependency DPDK_FOUND = FALSE
--   Disabling DPDK support.
--   Override with -DENABLE_DPDK=ON/OFF
-- 
-- Looking for C++ include emmintrin.h
-- Looking for C++ include emmintrin.h - found
-- 
-- Could NOT find UDev (missing: UDEV_INCLUDE_DIR UDEV_LIBS) 
-- 
-- Configuring priority scheduling...
-- Performing Test HAVE_PTHREAD_SETSCHEDPARAM
-- Performing Test HAVE_PTHREAD_SETSCHEDPARAM - Success
-- Performing Test HAVE_WIN_SETTHREADPRIORITY
-- Performing Test HAVE_WIN_SETTHREADPRIORITY - Failed
--   Priority scheduling supported through pthread_setschedparam.
-- Performing Test HAVE_PTHREAD_SETNAME
-- Performing Test HAVE_PTHREAD_SETNAME - Failed
--   Setting thread names is not supported.
-- 
-- Configuring high resolution timing...
-- Performing Test HAVE_CLOCK_GETTIME
-- Performing Test HAVE_CLOCK_GETTIME - Failed
-- Performing Test HAVE_MACH_ABSOLUTE_TIME
-- Performing Test HAVE_MACH_ABSOLUTE_TIME - Success
-- Performing Test HAVE_QUERY_PERFORMANCE_COUNTER
-- Performing Test HAVE_QUERY_PERFORMANCE_COUNTER - Failed
--   High resolution timing supported through mach_absolute_time.
-- 
-- Configuring module loading...
-- Performing Test HAVE_DLOPEN
-- Performing Test HAVE_DLOPEN - Success
-- Performing Test HAVE_LOAD_LIBRARY
-- Performing Test HAVE_LOAD_LIBRARY - Failed
--   Module loading supported through dlopen.
-- 
-- Processing NI-RIO FPGA LVBITX Bitstreams...
--   Using x300.lvbitx_base for codegen
--   Using x310.lvbitx_base for codegen
-- 
-- USB support enabled via libusb.
-- 
-- Configuring interface address discovery...
-- Performing Test HAVE_GETIFADDRS
-- Performing Test HAVE_GETIFADDRS - Success
-- Looking for C++ include winsock2.h
-- Looking for C++ include winsock2.h - not found
--   Interface address discovery supported through getifaddrs.
-- Looking for C++ include atlbase.h
-- Looking for C++ include atlbase.h - not found
-- 
-- Loading build info.
-- Found Curses: /usr/lib/libcurses.dylib  
-- Performing Test HAVE_C99_STRUCTDECL
-- Performing Test HAVE_C99_STRUCTDECL - Success
-- 
-- Adding B2XX device test target
-- Adding X3x0 device test target
-- Adding N3XX device test target
-- Adding E32x device test target
-- 
-- Could NOT find UDev (missing: UDEV_INCLUDE_DIR UDEV_LIBS) 
CMake Warning at utils/CMakeLists.txt:123 (message):
  Python module `requests' not found -- uhd_images_downloader.py will not
  work without it.

CMake Warning at utils/CMakeLists.txt:124 (message):
  You may be able to install this by running 'pip install requests'

-- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.15") found components:  doxygen missing components:  dot
-- 
-- Configuring Manual support...
--   Dependency DOXYGEN_FOUND = YES
--   Enabling Manual support.
--   Override with -DENABLE_MANUAL=ON/OFF
-- 
-- Configuring API/Doxygen support...
--   Dependency DOXYGEN_FOUND = YES
--   Enabling API/Doxygen support.
--   Override with -DENABLE_DOXYGEN=ON/OFF
-- Found GZip: /usr/bin/gzip  
-- 
-- Configuring Man Pages support...
--   Dependency GZIP_FOUND = TRUE
--   Dependency NOT_WIN32 = TRUE
--   Enabling Man Pages support.
--   Override with -DENABLE_MAN_PAGES=ON/OFF
-- 
-- ######################################################
-- # UHD enabled components                              
-- ######################################################
--   * LibUHD
--   * LibUHD - C API
--   * Examples
--   * Utils
--   * Tests
--   * USB
--   * B100
--   * B200
--   * USRP1
--   * USRP2
--   * X300
--   * N230
--   * MPMD
--   * N300
--   * N320
--   * E320
--   * OctoClock
--   * Manual
--   * API/Doxygen
--   * Man Pages
-- 
-- ######################################################
-- # UHD disabled components                             
-- ######################################################
--   * LibUHD - Python API
--   * LIBERIO
--   * GPSD
--   * E300
--   * DPDK
-- 
-- Building version: 3.14.0.0-0-unknown
-- Using install prefix: /usr/local/Cellar/uhd/3.14.0.0_1
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/uhd-20190505-52633-1lh6xql/uhd-3.14.0.0/host/build
fxcoudert commented 5 years ago

Thus full make output is available here: https://gist.github.com/fxcoudert/36a9dc597a952d5c954b15b0656dd70e

The failing link command is:

/usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang++  -fvisibility=hidden -fvisibility-inlines-hidden -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -dynamiclib -Wl,-headerpad_max_install_names -compatibility_version 3.14.0 -current_version 3.14.0 -o libuhd.3.14.0.dylib -install_name /usr/local/Cellar/uhd/3.14.0.0_1/lib/libuhd.3.14.0.dylib CMakeFiles/uhd.dir/types/device_addr.cpp.o CMakeFiles/uhd.dir/types/mac_addr.cpp.o CMakeFiles/uhd.dir/types/metadata.cpp.o CMakeFiles/uhd.dir/types/ranges.cpp.o CMakeFiles/uhd.dir/types/sensors.cpp.o CMakeFiles/uhd.dir/types/serial.cpp.o CMakeFiles/uhd.dir/types/sid.cpp.o CMakeFiles/uhd.dir/types/time_spec.cpp.o CMakeFiles/uhd.dir/types/tune.cpp.o CMakeFiles/uhd.dir/types/types.cpp.o CMakeFiles/uhd.dir/types/wb_iface.cpp.o CMakeFiles/uhd.dir/types/filters.cpp.o CMakeFiles/uhd.dir/types/byte_vector.cpp.o CMakeFiles/uhd.dir/types/metadata_c.cpp.o CMakeFiles/uhd.dir/types/ranges_c.cpp.o CMakeFiles/uhd.dir/types/sensors_c.cpp.o CMakeFiles/uhd.dir/types/string_vector_c.cpp.o CMakeFiles/uhd.dir/types/tune_c.cpp.o CMakeFiles/uhd.dir/types/usrp_info_c.cpp.o CMakeFiles/uhd.dir/convert/sse2_sc16_to_sc16.cpp.o CMakeFiles/uhd.dir/convert/sse2_sc16_to_fc64.cpp.o CMakeFiles/uhd.dir/convert/sse2_sc16_to_fc32.cpp.o CMakeFiles/uhd.dir/convert/sse2_sc8_to_fc64.cpp.o CMakeFiles/uhd.dir/convert/sse2_sc8_to_fc32.cpp.o CMakeFiles/uhd.dir/convert/sse2_fc64_to_sc16.cpp.o CMakeFiles/uhd.dir/convert/sse2_fc32_to_sc16.cpp.o CMakeFiles/uhd.dir/convert/sse2_fc64_to_sc8.cpp.o CMakeFiles/uhd.dir/convert/sse2_fc32_to_sc8.cpp.o CMakeFiles/uhd.dir/convert/convert_general.cpp.o CMakeFiles/uhd.dir/convert/convert_with_tables.cpp.o CMakeFiles/uhd.dir/convert/convert_impl.cpp.o CMakeFiles/uhd.dir/convert/convert_item32.cpp.o CMakeFiles/uhd.dir/convert/convert_pack_sc12.cpp.o CMakeFiles/uhd.dir/convert/convert_unpack_sc12.cpp.o CMakeFiles/uhd.dir/convert/convert_fc32_item32.cpp.o CMakeFiles/uhd.dir/rfnoc/async_msg_handler.cpp.o CMakeFiles/uhd.dir/rfnoc/block_ctrl_base.cpp.o CMakeFiles/uhd.dir/rfnoc/block_ctrl_base_factory.cpp.o CMakeFiles/uhd.dir/rfnoc/block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/blockdef_xml_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/block_id.cpp.o CMakeFiles/uhd.dir/rfnoc/ctrl_iface.cpp.o CMakeFiles/uhd.dir/rfnoc/graph_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/legacy_compat.cpp.o CMakeFiles/uhd.dir/rfnoc/node_ctrl_base.cpp.o CMakeFiles/uhd.dir/rfnoc/rate_node_ctrl.cpp.o CMakeFiles/uhd.dir/rfnoc/rx_stream_terminator.cpp.o CMakeFiles/uhd.dir/rfnoc/scalar_node_ctrl.cpp.o CMakeFiles/uhd.dir/rfnoc/sink_block_ctrl_base.cpp.o CMakeFiles/uhd.dir/rfnoc/sink_node_ctrl.cpp.o CMakeFiles/uhd.dir/rfnoc/source_block_ctrl_base.cpp.o CMakeFiles/uhd.dir/rfnoc/source_node_ctrl.cpp.o CMakeFiles/uhd.dir/rfnoc/stream_sig.cpp.o CMakeFiles/uhd.dir/rfnoc/tick_node_ctrl.cpp.o CMakeFiles/uhd.dir/rfnoc/tx_stream_terminator.cpp.o CMakeFiles/uhd.dir/rfnoc/wb_iface_adapter.cpp.o CMakeFiles/uhd.dir/rfnoc/ddc_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/duc_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/fir_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/null_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/window_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/radio_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/siggen_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/dma_fifo_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/replay_block_ctrl_impl.cpp.o CMakeFiles/uhd.dir/rfnoc/nocscript/expression.cpp.o CMakeFiles/uhd.dir/rfnoc/nocscript/function_table.cpp.o CMakeFiles/uhd.dir/rfnoc/nocscript/parser.cpp.o CMakeFiles/uhd.dir/rfnoc/nocscript/block_iface.cpp.o CMakeFiles/uhd.dir/cal/power_container_impl.cpp.o CMakeFiles/uhd.dir/usrp/dboard_base.cpp.o CMakeFiles/uhd.dir/usrp/dboard_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/dboard_id.cpp.o CMakeFiles/uhd.dir/usrp/dboard_iface.cpp.o CMakeFiles/uhd.dir/usrp/dboard_manager.cpp.o CMakeFiles/uhd.dir/usrp/gps_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/multi_usrp.cpp.o CMakeFiles/uhd.dir/usrp/subdev_spec.cpp.o CMakeFiles/uhd.dir/usrp/fe_connection.cpp.o CMakeFiles/uhd.dir/usrp/dboard_eeprom_c.cpp.o CMakeFiles/uhd.dir/usrp/mboard_eeprom_c.cpp.o CMakeFiles/uhd.dir/usrp/subdev_spec_c.cpp.o CMakeFiles/uhd.dir/usrp/usrp_c.cpp.o CMakeFiles/uhd.dir/usrp/cores/gpio_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/i2c_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/rx_dsp_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/time64_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/tx_dsp_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/user_settings_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/dma_fifo_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/dsp_core_utils.cpp.o CMakeFiles/uhd.dir/usrp/cores/gpio_atr_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/i2c_core_100_wb32.cpp.o CMakeFiles/uhd.dir/usrp/cores/radio_ctrl_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/rx_dsp_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/rx_frontend_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/rx_frontend_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/rx_vita_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/spi_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/time_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/tx_dsp_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/tx_frontend_core_200.cpp.o CMakeFiles/uhd.dir/usrp/cores/tx_vita_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/cores/user_settings_core_3000.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_basic_and_lf.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_rfx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_xcvr2450.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_sbx_common.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_sbx_version3.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_sbx_version4.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_cbx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_ubx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_wbx_common.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_wbx_version2.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_wbx_version3.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_wbx_version4.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_wbx_simple.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_dbsrx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_unknown.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_tvrx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_dbsrx2.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_tvrx2.cpp.o CMakeFiles/uhd.dir/usrp/dboard/twinrx/twinrx_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/twinrx/twinrx_experts.cpp.o CMakeFiles/uhd.dir/usrp/dboard/twinrx/twinrx_gain_tables.cpp.o CMakeFiles/uhd.dir/usrp/dboard/db_twinrx.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_radio_ctrl_cpld.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_ad9371_iface.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_bands.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_cpld_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/magnesium/magnesium_gain_table.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_radio_ctrl_impl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_radio_ctrl_init.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_radio_ctrl_cpld.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_radio_ctrl_lo.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_bands.cpp.o CMakeFiles/uhd.dir/usrp/dboard/rhodium/rhodium_cpld_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/neon/neon_radio_ctrl_impl.cpp.o CMakeFiles/uhd.dir/usrp/dboard/neon/neon_radio_ctrl_init.cpp.o CMakeFiles/uhd.dir/usrp/dboard/neon/neon_ad9361_iface.cpp.o CMakeFiles/uhd.dir/usrp/dboard/neon/neon_bands.cpp.o CMakeFiles/uhd.dir/usrp/common/fx2_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/common/ad9361_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/common/ad936x_manager.cpp.o CMakeFiles/uhd.dir/usrp/common/ad9361_driver/ad9361_device.cpp.o CMakeFiles/uhd.dir/usrp/common/adf4001_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/common/adf435x.cpp.o CMakeFiles/uhd.dir/usrp/common/adf535x.cpp.o CMakeFiles/uhd.dir/usrp/common/lmx2592.cpp.o CMakeFiles/uhd.dir/usrp/common/apply_corrections.cpp.o CMakeFiles/uhd.dir/usrp/common/validate_subdev_spec.cpp.o CMakeFiles/uhd.dir/usrp/common/recv_packet_demuxer.cpp.o CMakeFiles/uhd.dir/usrp/device3/device3_impl.cpp.o CMakeFiles/uhd.dir/usrp/device3/device3_io_impl.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_find.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_image_loader.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_impl.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_mboard_impl.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_prop_tree.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_xport.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_xport_mgr.cpp.o CMakeFiles/uhd.dir/usrp/mpmd/mpmd_xport_ctrl_udp.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/codec_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/dboard_iface.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/io_impl.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/mb_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/soft_time_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/usrp1_iface.cpp.o CMakeFiles/uhd.dir/usrp/usrp1/usrp1_impl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/clock_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/codec_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/dboard_iface.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/io_impl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/mb_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/usrp2_iface.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/usrp2_impl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/usrp2_fifo_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/usrp2/n200_image_loader.cpp.o CMakeFiles/uhd.dir/usrp/b100/b100_impl.cpp.o CMakeFiles/uhd.dir/usrp/b100/clock_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/b100/codec_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/b100/dboard_iface.cpp.o CMakeFiles/uhd.dir/usrp/b100/io_impl.cpp.o CMakeFiles/uhd.dir/usrp/b100/mb_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/b100/usb_zero_copy_wrapper.cpp.o CMakeFiles/uhd.dir/usrp/b100/fifo_ctrl_excelsior.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_radio_ctrl_impl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_impl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_fw_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_fw_uart.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_adc_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_dac_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_io_impl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_dboard_iface.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_clock_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_image_loader.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_mb_eeprom_iface.cpp.o CMakeFiles/uhd.dir/usrp/x300/x300_mb_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/x300/cdecode.c.o CMakeFiles/uhd.dir/usrp/b200/b200_image_loader.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_impl.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_iface.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_io_impl.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_uart.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_cores.cpp.o CMakeFiles/uhd.dir/usrp/b200/b200_mb_eeprom.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_cores.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_impl.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_resource_manager.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_eeprom_manager.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_stream_manager.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_clk_pps_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_frontend_ctrl.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_uart.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_image_loader.cpp.o CMakeFiles/uhd.dir/usrp/n230/n230_fw_ctrl_iface.cpp.o CMakeFiles/uhd.dir/usrp_clock/multi_usrp_clock.cpp.o CMakeFiles/uhd.dir/usrp_clock/usrp_clock_c.cpp.o CMakeFiles/uhd.dir/usrp_clock/octoclock/octoclock_eeprom.cpp.o CMakeFiles/uhd.dir/usrp_clock/octoclock/octoclock_image_loader.cpp.o CMakeFiles/uhd.dir/usrp_clock/octoclock/octoclock_impl.cpp.o CMakeFiles/uhd.dir/usrp_clock/octoclock/octoclock_uart.cpp.o CMakeFiles/uhd.dir/utils/csv.cpp.o CMakeFiles/uhd.dir/utils/config_parser.cpp.o CMakeFiles/uhd.dir/utils/compat_check.cpp.o CMakeFiles/uhd.dir/utils/eeprom_utils.cpp.o CMakeFiles/uhd.dir/utils/gain_group.cpp.o CMakeFiles/uhd.dir/utils/ihex.cpp.o CMakeFiles/uhd.dir/utils/load_modules.cpp.o CMakeFiles/uhd.dir/utils/log.cpp.o CMakeFiles/uhd.dir/utils/paths.cpp.o CMakeFiles/uhd.dir/utils/pathslib.cpp.o CMakeFiles/uhd.dir/utils/platform.cpp.o CMakeFiles/uhd.dir/utils/prefs.cpp.o CMakeFiles/uhd.dir/utils/static.cpp.o CMakeFiles/uhd.dir/utils/system_time.cpp.o CMakeFiles/uhd.dir/utils/tasks.cpp.o CMakeFiles/uhd.dir/utils/thread.cpp.o CMakeFiles/uhd.dir/utils/log_c.cpp.o CMakeFiles/uhd.dir/utils/thread_priority_c.cpp.o CMakeFiles/uhd.dir/experts/expert_container.cpp.o CMakeFiles/uhd.dir/experts/expert_factory.cpp.o CMakeFiles/uhd.dir/transport/nirio/lvbitx/x300_lvbitx.cpp.o CMakeFiles/uhd.dir/transport/nirio/lvbitx/x310_lvbitx.cpp.o CMakeFiles/uhd.dir/transport/nirio/rpc/rpc_client.cpp.o CMakeFiles/uhd.dir/transport/nirio/rpc/usrprio_rpc_client.cpp.o CMakeFiles/uhd.dir/transport/nirio/nifpga_lvbitx.cpp.o CMakeFiles/uhd.dir/transport/nirio/niusrprio_session.cpp.o CMakeFiles/uhd.dir/transport/nirio/niriok_proxy.cpp.o CMakeFiles/uhd.dir/transport/nirio/niriok_proxy_impl_v1.cpp.o CMakeFiles/uhd.dir/transport/nirio/niriok_proxy_impl_v2.cpp.o CMakeFiles/uhd.dir/transport/nirio/nirio_resource_manager.cpp.o CMakeFiles/uhd.dir/transport/nirio/status.cpp.o CMakeFiles/uhd.dir/transport/nirio/nirio_driver_iface_unsupported.cpp.o CMakeFiles/uhd.dir/transport/libusb1_control.cpp.o CMakeFiles/uhd.dir/transport/libusb1_zero_copy.cpp.o CMakeFiles/uhd.dir/transport/libusb1_base.cpp.o CMakeFiles/uhd.dir/transport/udp_zero_copy.cpp.o CMakeFiles/uhd.dir/transport/vrt_if_packet.cpp.o CMakeFiles/uhd.dir/transport/zero_copy_flow_ctrl.cpp.o CMakeFiles/uhd.dir/transport/zero_copy_recv_offload.cpp.o CMakeFiles/uhd.dir/transport/tcp_zero_copy.cpp.o CMakeFiles/uhd.dir/transport/buffer_pool.cpp.o CMakeFiles/uhd.dir/transport/if_addrs.cpp.o CMakeFiles/uhd.dir/transport/udp_simple.cpp.o CMakeFiles/uhd.dir/transport/chdr.cpp.o CMakeFiles/uhd.dir/transport/muxed_zero_copy_if.cpp.o CMakeFiles/uhd.dir/transport/nirio_zero_copy.cpp.o CMakeFiles/uhd.dir/build_info.cpp.o CMakeFiles/uhd.dir/deprecated.cpp.o CMakeFiles/uhd.dir/device.cpp.o CMakeFiles/uhd.dir/device3.cpp.o CMakeFiles/uhd.dir/image_loader.cpp.o CMakeFiles/uhd.dir/stream.cpp.o CMakeFiles/uhd.dir/exception.cpp.o CMakeFiles/uhd.dir/property_tree.cpp.o CMakeFiles/uhd.dir/version.cpp.o CMakeFiles/uhd.dir/error_c.cpp.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/dispatcher.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/server.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/client.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/this_handler.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/this_session.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/this_server.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/rpc_error.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/detail/server_session.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/detail/response.cc.o deps/rpclib/CMakeFiles/uhd_rpclib.dir/lib/rpc/detail/client_error.cc.o -Wl,-rpath,/usr/local/Cellar/uhd/3.14.0.0_1/lib -lpthread /usr/local/lib/libusb-1.0.dylib

where it is clearing that it is not linking Boost at all.

michaelld commented 5 years ago

You have a Boost configuration issue! CMake is finding both Boost 1.70.0 and 1.53 (See the attached chunk of the CMake log you provided for the specifics). You'll note the final 4 lines, where the actual used Boost parameters are listed ... and are empty, which is why the linking is failing. I'd guess that the Boost headers are installed in ${prefix}/include, which is probably a standard search path for headers and/or is already a directory included for some other project. If the Boost headers were in a nonstandard path, the build would have failed sooner; instead it got to the point of requiring an actual Boost library. You'll note in the link command, there is no -lboost_* or a direct libboost_* listed ... because of this multi-Boost version conflict.

I highly recommend removing the Boost-provided CMake scripts from /usr/local/lib/cmake/*oost_*1.70.0 ... those are just not ready for prime time yet (not just me saying this BTW). When I removed those scripts & used the one provided by CMake UHD found the headers & libraries correctly & built cleanly.

Hope this helps!

-- Looking for optional Boost components...
-- Found Boost 1.70.0 at /usr/local/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET OPTIONAL_COMPONENTS python3
-- Found boost_headers 1.70.0 at /usr/local/lib/cmake/boost_headers-1.70.0
-- Boost 1.53 found.
-- Found Boost components:
   python3
-- Looking for required Boost components...
-- Found Boost 1.70.0 at /usr/local/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET COMPONENTS chrono;date_time;filesystem;program_options;regex;system;unit_test_framework;serialization;thread
-- Found boost_chrono 1.70.0 at /usr/local/lib/cmake/boost_chrono-1.70.0
--   libboost_chrono-mt.a
--   libboost_chrono.a
-- Adding boost_chrono dependencies: headers
-- Found boost_date_time 1.70.0 at /usr/local/lib/cmake/boost_date_time-1.70.0
--   libboost_date_time-mt.a
--   libboost_date_time.a
-- Adding boost_date_time dependencies: headers
-- Found boost_filesystem 1.70.0 at /usr/local/lib/cmake/boost_filesystem-1.70.0
--   libboost_filesystem-mt.a
--   libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- Found boost_program_options 1.70.0 at /usr/local/lib/cmake/boost_program_options-1.70.0
--   libboost_program_options-mt.a
--   libboost_program_options.a
-- Adding boost_program_options dependencies: headers
-- Found boost_regex 1.70.0 at /usr/local/lib/cmake/boost_regex-1.70.0
--   libboost_regex-mt.a
--   libboost_regex.a
-- Adding boost_regex dependencies: headers
-- Found boost_system 1.70.0 at /usr/local/lib/cmake/boost_system-1.70.0
--   libboost_system-mt.a
--   libboost_system.a
-- Adding boost_system dependencies: headers
-- Found boost_unit_test_framework 1.70.0 at /usr/local/lib/cmake/boost_unit_test_framework-1.70.0
--   libboost_unit_test_framework-mt.a
--   libboost_unit_test_framework.a
-- Adding boost_unit_test_framework dependencies: headers
-- Found boost_serialization 1.70.0 at /usr/local/lib/cmake/boost_serialization-1.70.0
--   libboost_serialization-mt.a
--   libboost_serialization.a
-- Adding boost_serialization dependencies: headers
-- Found boost_thread 1.70.0 at /usr/local/lib/cmake/boost_thread-1.70.0
--   libboost_thread-mt.a
-- Adding boost_thread dependencies: headers
-- Boost 1.53 found.
-- Found Boost components:
   chrono;date_time;filesystem;program_options;regex;system;unit_test_framework;serialization;thread
-- Boost include directories: 
-- Boost library directories: 
-- Boost libraries: 
fxcoudert commented 5 years ago
michaelld commented 5 years ago

If CMake is reporting "Boost 1.53 found", then at a minimum there is -something- installed on your system here that was found by CMake & is reporting Boost 1.53 installed -- it might not be actually installed, but something is reporting it that way.

michaelld commented 5 years ago

You can certainly choose to ship the Boost CMake scripts, but they aren't ready for being used yet in my testing because multiple projects I've tested don't work with them ... they do not provide the variables GR CMake scripts expect, and it's not clear to me how to fix the issue. Most importantly, by just not using them (just install Boost with the correct flag, and/or "rm -rf" them once installed) and instead using the CMake provided Boost script this all works out of the box. Hence, I doubt we'll be addressing this issue any time soon as there's a viable current option.

fedya commented 5 years ago

Same here. Reproducible build list https://abf.openmandriva.org/build_lists/508078 error: /lib/libuhd.so.3.14.0: error: undefined reference to 'boost::chrono::steady_clock::now()'

michaelld commented 5 years ago

@fedya A couple points: (1) I don't know how you do this, but adding in verbosity ("VERBOSE=ON") to the "make" command would be really useful when providing an error log. I can see all the linkage errors, but I can't see the actual link command. I'm guessing it's void of any actual Boost library linkage, because ...

(2) As already stated: The Boost-provided CMake scripts do not play nicely with some projects, including but certainly not limited to UHD and GNU Radio. I've spent a little time trying to read through these scripts & it is not clear to me what's going on nor how to fix them. The UHD CMake scripts work fine with the CMake-provided Boost finding scripts, so it seems as though they are not drop-in replacements for one another. I'd advise you to either not install those Boost CMake scripts, to "rm -rf" them for the current Boost version; hopefully they will work better in the next Boost release.

michaelld commented 5 years ago

To be clear: When I install those Boost CMake scripts, I get the exact same errors. The issue is easy to replicate; what's not simple is how to create a fix to the UHD / GR CMake scripts so that they will work with both the Boost CMake scripts and the CMake Boost script. Maybe someone has figured this out & there's a patch or 2 available? I'll admit I haven't looked much as there are more important issues to deal with at the moment.

trungnob commented 5 years ago

@fedya the error log indicate some sort of confusion during CMake trying to find boost. For our UHD we use hint to find boost the hint is at https://github.com/EttusResearch/uhd/blob/master/host/CMakeLists.txt#L313. Without looking at the system, I don't know what is the main reason. Here are some hypothesis:

michaelld commented 5 years ago

@trungnob The CMake "FindBoost.cmake" script isn't being used. Boost 1.70.0 provides their own CMake find scripts, which is, ultimately, what's causing the issue.

trungnob commented 5 years ago

humm .that's odd. Just for another record, I was able to build UHD master on Windows 10 x64 with cmake 3.14.3 and Boost 1.70.0 (binary distribution package) and Visual Studio 2019.

michaelld commented 5 years ago

If someone has Boost 1.70.0 installed and can build UHD and GR without modification to any of these, then they are not using the Boost-provided CMake scripts; they are using the FindBoost.cmake script. Regardless of OS.

fedya commented 5 years ago

@trungnob i'm trying to build 3.14.0.0, not master branch. But let me try...

fedya commented 5 years ago

Same with master branch

[ 92%] Linking CXX shared library libuhd.so
[ 92%] Built target uhd
Scanning dependencies of target uhd_config_info
Scanning dependencies of target uhd_image_loader
Scanning dependencies of target usrp_burn_db_eeprom
Scanning dependencies of target fx2_init_eeprom
Scanning dependencies of target octoclock_burn_eeprom
Scanning dependencies of target usrp_burn_mb_eeprom
Scanning dependencies of target uhd_find_devices
Scanning dependencies of target converter_benchmark
Scanning dependencies of target uhd_cal_rx_iq_balance
Scanning dependencies of target uhd_usrp_probe
Scanning dependencies of target b2xx_fx3_utils
Scanning dependencies of target uhd_cal_tx_dc_offset
Scanning dependencies of target uhd_cal_tx_iq_balance
Scanning dependencies of target query_gpsdo_sensors
Scanning dependencies of target responder
Scanning dependencies of target pyuhd
[ 93%] Building CXX object utils/CMakeFiles/uhd_image_loader.dir/uhd_image_loader.cpp.o
[ 94%] Linking CXX executable uhd_image_loader
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::chrono::steady_clock::now()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::this_thread::interruption_requested()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::thread::thread()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'typeinfo for boost::archive::detail::basic_iserializer'
../lib/libuhd.so.3.15.0: error: undefined reference to 'typeinfo for boost::serialization::typeid_system::extended_type_info_typeid_0'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::extended_type_info::key_unregister() const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::extended_type_info::key_register() const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(boost::serialization::extended_type_info const&) const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iserializer::~basic_iserializer()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iserializer::basic_iserializer(boost::serialization::extended_type_info const&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iarchive::load_object(void*, boost::archive::detail::basic_iserializer const&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'
michaelld commented 5 years ago

FYI that -regardless- of the version of UHD you try to build, whether 3.9LTS, the latest release, any interim release, the current GIT master HEAD, or any prior GIT commit:

==> If you have the Boost CMake scripts installed then the build will fail due to this linking error. <==

michaelld commented 5 years ago

If you can somehow do "make VERBOSE=ON", then you'll see the link command has no Boost libraries included anywhere in it. The issue is that the return variables from the Boost CMake find scripts and from the CMake Boost find script are different, somehow, and UHD's (and virtually -all- projects out there that use CMake and Boost) CMake scripts are tailored for the latter (the CMake Boost find script), not the former (the Boost CMake find scripts). We are working internally to try to figure out "the right thing to do". Please be patient.

fedya commented 5 years ago

verbosed build

[ 94%] Linking CXX executable uhd_image_loader
cd /home/omv/wspr/wsjtx/uhd/BUILD/uhd-3.14.0.0-20190513/host/build/utils && /usr/bin/cmake -E cmake_link_script CMakeFiles/uhd_image_loader.dir/link.txt --verbose=ON
/usr/bin/c++   -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG   CMakeFiles/uhd_image_loader.dir/uhd_image_loader.cpp.o  -o uhd_image_loader -Wl,-rpath,/home/omv/wspr/wsjtx/uhd/BUILD/uhd-3.14.0.0-20190513/host/build/lib: ../lib/libuhd.so.3.15.0 -lpthread -lrt -ldl /usr/lib64/libusb-1.0.so
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::chrono::steady_clock::now()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::this_thread::interruption_requested()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::thread::thread()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'typeinfo for boost::archive::detail::basic_iserializer'
../lib/libuhd.so.3.15.0: error: undefined reference to 'typeinfo for boost::serialization::typeid_system::extended_type_info_typeid_0'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::extended_type_info::key_unregister() const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::extended_type_info::key_register() const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(boost::serialization::extended_type_info const&) const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iserializer::~basic_iserializer()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iserializer::basic_iserializer(boost::serialization::extended_type_info const&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::detail::basic_iarchive::load_object(void*, boost::archive::detail::basic_iserializer const&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'
../lib/libuhd.so.3.15.0: error: undefined reference to 'boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'
michaelld commented 5 years ago

/usr/bin/c++ -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG CMakeFiles/uhd_image_loader.dir/uhd_image_loader.cpp.o -o uhd_image_loader -Wl,-rpath,/home/omv/wspr/wsjtx/uhd/BUILD/uhd-3.14.0.0-20190513/host/build/lib: ../lib/libuhd.so.3.15.0 -lpthread -lrt -ldl /usr/lib64/libusb-1.0.so

Notice: No Boost linkage. The Boost CMake scripts don't assign the expected return variables. Guessing they do assign some variables, just not sure which ones. Getting the return variables correct from any FindPackage call is critical to CMake scripts working correctly!

michaelld commented 5 years ago

In my opinion (and not so humble even), if the Boost folks want to provide their own CMake find scripts, they should at least make them compatible with the CMake Boost find script, so that they are drop-in-compatible! The Boost CMake scripts could also assign other variables, of course, which the main CMake project scripts could choose to use, but this should be a -choice-. So either the Boost CMake scripts are not ready for prime time yet (because they aren't drop-in drop-in-compatible with the CMake Boost find script), or these scripts are intended to break the expected CMake FindPackage return variables. Either way it's a pain for us developers who want to use Boost 1.70.0 and CMake!

michaelld commented 5 years ago

So the good news is: (1) Boost 1.70.0 CMake find scripts are indeed broken. Boost has a fix already, which will be in the next release: https://github.com/boostorg/boost_install/commit/cfa8d55250dfc2635e907e42da423e4eb540dee5

(2) For UHD, we'll create a work-around for this specific version of Boost so that it works with all otherwise-compatible Boost versions including 1.70.0. I'll post a patch here for you to try once we have it working internally.

fedya commented 5 years ago

Yes, fixed.

INFO for Maintainers: if you want to build uhd apply patch https://github.com/boostorg/boost_install/commit/cfa8d55250dfc2635e907e42da423e4eb540dee5 to boost and recompile it with -fPIC

michaelld commented 5 years ago

Great. I'm closing this issue. We'll have an internal fix shortly.