diff --git a/CMakeLists.txt b/CMakeLists.txt index af7cd4c26..45e0adbfd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -325,27 +325,15 @@ if(NOT GNURADIO_RUNTIME_FOUND) endif(OS_IS_MACOSX) endif(NOT GNURADIO_RUNTIME_FOUND) -find_package(Volk) -find_package(UHD) - if(NOT GNURADIO_BLOCKS_FOUND) message(FATAL_ERROR "*** gnuradio-blocks 3.7 or later is required to build gnss-sdr") endif() -if(NOT UHD_FOUND) - message(FATAL_ERROR "*** UHD is required to build gnss-sdr. Please check http://code.ettus.com/redmine/ettus/projects/uhd/wiki") -endif() -if(NOT GNURADIO_UHD_FOUND) - message(FATAL_ERROR "*** gnuradio-uhd 3.7 or later is required to build gnss-sdr") -endif() if(NOT GNURADIO_FILTER_FOUND) message(FATAL_ERROR "*** gnuradio-filter 3.7 or later is required to build gnss-sdr") endif() if(NOT GNURADIO_FFT_FOUND) message(FATAL_ERROR "*** gnuradio-fft 3.7 or later is required to build gnss-sdr") endif() -if(NOT VOLK_FOUND) - message(FATAL_ERROR "*** VOLK is required to build gnss-sdr") -endif() if(NOT GNURADIO_ANALOG_FOUND) message(FATAL_ERROR "*** gnuradio-analog 3.7 or later is required to build gnss-sdr") endif() @@ -356,6 +344,12 @@ if(NOT GNURADIO_TRELLIS_FOUND) message(FATAL_ERROR "*** gnuradio-trellis 3.7 or later is required to build gnss-sdr") endif() +find_package(Volk) +if(NOT VOLK_FOUND) + message(FATAL_ERROR "*** VOLK is required to build gnss-sdr") +endif() + + ################################################################################ # volk_gnsssdr module - GNSS-SDR's own VOLK library @@ -786,9 +780,25 @@ if(NOT OPENSSL_FOUND) endif(NOT OPENSSL_FOUND) +################################################################################ +# Universal Hardware Driver (UHD) (OPTIONAL, used if found) +################################################################################ +find_package(UHD) +if(NOT UHD_FOUND) + set(ENABLE_UHD OFF) + message(STATUS "The Universal Hardware Driver (UHD) based signal source will not be built,") + message(STATUS "so all USRP-based front-ends will not be usable.") + message(STATUS "Please check http://code.ettus.com/redmine/ettus/projects/uhd/wiki") +else(NOT UHD_FOUND) + if(NOT GNURADIO_UHD_FOUND) + message(FATAL_ERROR "*** gnuradio-uhd 3.7 or later is required to build gnss-sdr") + endif(NOT GNURADIO_UHD_FOUND) + set(ENABLE_UHD ON) +endif(NOT UHD_FOUND) + ################################################################################ -# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL) +# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL, used if found) ################################################################################ find_package(Doxygen) if(DOXYGEN_FOUND) diff --git a/src/algorithms/signal_source/adapters/CMakeLists.txt b/src/algorithms/signal_source/adapters/CMakeLists.txt index 40734ad64..dddf99bf9 100644 --- a/src/algorithms/signal_source/adapters/CMakeLists.txt +++ b/src/algorithms/signal_source/adapters/CMakeLists.txt @@ -101,9 +101,15 @@ if(ENABLE_RTLSDR) set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${RTL_DRIVER_INCLUDE_DIRS}) endif(ENABLE_RTLSDR) +if(ENABLE_UHD) + set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} uhd_signal_source.cc) + set(OPT_LIBRARIES ${OPT_LIBRARIES} ${UHD_LIBRARIES} ${GNURADIO_UHD_LIBRARIES}) + set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${UHD_INCLUDE_DIRS}) +endif(ENABLE_UHD) + + set(SIGNAL_SOURCE_ADAPTER_SOURCES file_signal_source.cc - gen_signal_source.cc - uhd_signal_source.cc + gen_signal_source.cc nsr_file_signal_source.cc ${OPT_DRIVER_SOURCES} ) @@ -116,7 +122,6 @@ include_directories( ${CMAKE_SOURCE_DIR}/src/core/interfaces ${CMAKE_SOURCE_DIR}/src/algorithms/libs ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/gnuradio_blocks - ${UHD_INCLUDE_DIRS} ${GLOG_INCLUDE_DIRS} ${GFlags_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} @@ -135,9 +140,7 @@ source_group(Headers FILES ${SIGNAL_SOURCE_ADAPTER_HEADERS}) target_link_libraries(signal_source_adapters signal_source_gr_blocks ${Boost_LIBRARIES} ${GNURADIO_PMT_LIBRARIES} - ${GNURADIO_BLOCKS_LIBRARIES} - ${UHD_LIBRARIES} - ${GNURADIO_UHD_LIBRARIES} + ${GNURADIO_BLOCKS_LIBRARIES} ${OPT_LIBRARIES} gnss_sp_libs ) diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt index 35279a0d1..9362f9a2f 100644 --- a/src/core/receiver/CMakeLists.txt +++ b/src/core/receiver/CMakeLists.txt @@ -77,6 +77,10 @@ if(ENABLE_RTLSDR) add_definitions(-DRTLSDR_DRIVER=1) endif(ENABLE_RTLSDR) +if(ENABLE_UHD) + add_definitions(-DUHD_DRIVER=1) +endif(ENABLE_UHD) + #Enable OpenCL if found in the system if(OPENCL_FOUND) message(STATUS "Adding processing blocks implemented using OpenCL" ) diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index c9e841cf8..3d63b61a8 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -48,7 +48,7 @@ #include "null_sink_output_filter.h" #include "file_output_filter.h" #include "channel.h" -#include "uhd_signal_source.h" + #include "signal_conditioner.h" #include "array_signal_conditioner.h" #include "ishort_to_complex.h" @@ -104,6 +104,11 @@ #include "rtlsdr_signal_source.h" #endif +#if UHD_DRIVER + #include "uhd_signal_source.h" +#endif + + using google::LogMessage; @@ -386,12 +391,14 @@ std::unique_ptr GNSSBlockFactory::GetBlock( exit(1); } } +#if UHD_DRIVER else if (implementation.compare("UHD_Signal_Source") == 0) { std::unique_ptr block_(new UhdSignalSource(configuration.get(), role, in_streams, out_streams, queue)); block = std::move(block_); } +#endif #if GN3S_DRIVER else if (implementation.compare("GN3S_Signal_Source") == 0) { diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index 5d0fe2457..e21b32933 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -27,6 +27,11 @@ if(ENABLE_GPERFTOOLS) endif(GPERFTOOLS_FOUND) endif(ENABLE_GPERFTOOLS) +if(ENABLE_UHD) + set(GNSS_SDR_OPTIONAL_LIBS ${GNSS_SDR_OPTIONAL_LIBS} ${UHD_LIBRARIES} ${GNURADIO_UHD_LIBRARIES}) + set(GNSS_SDR_OPTIONAL_HEADERS ${GNSS_SDR_OPTIONAL_HEADERS} ${UHD_INCLUDE_DIRS}) +endif(ENABLE_UHD) + include_directories( ${CMAKE_SOURCE_DIR}/src/core/system_parameters ${CMAKE_SOURCE_DIR}/src/core/interfaces @@ -69,11 +74,10 @@ target_link_libraries(gnss-sdr ${MAC_LIBRARIES} ${GFlags_LIBS} ${GLOG_LIBRARIES} ${ARMADILLO_LIBRARIES} - ${UHD_LIBRARIES} - gnss_sp_libs - gnss_rx ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES} ${GNSS_SDR_OPTIONAL_LIBS} + gnss_sp_libs + gnss_rx ) @@ -105,7 +109,7 @@ find_program(GZIP /sbin ) if(NOT GZIP_NOTFOUND) - execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/cmake/Packaging/gnss-sdr-manpage + execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/docs/manpage/gnss-sdr-manpage WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_FILE "${CMAKE_BINARY_DIR}/gnss-sdr.1.gz") install(FILES ${CMAKE_BINARY_DIR}/gnss-sdr.1.gz DESTINATION share/man/man1)