From b52846e7fd1d4a6d776555c58f4444d508851c0f Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 27 Dec 2012 17:09:16 +0000 Subject: [PATCH] Added support for RTL devices. If the variable RTLSDR_DRIVER is set, CMake looks for libosmosdr and gnuradio-osmosdr libraries and compiles the corresponding signal source. git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@298 64b25241-fba3-4117-9849-534c7e92360d --- CMakeLists.txt | 14 +---- cmake/Modules/FindGrOsmoSDR.cmake | 51 +++++++++++++++++++ cmake/Modules/FindLibOsmoSDR.cmake | 27 ++++++++++ .../signal_source/adapters/CMakeLists.txt | 41 +++++++++++---- 4 files changed, 110 insertions(+), 23 deletions(-) create mode 100644 cmake/Modules/FindGrOsmoSDR.cmake create mode 100644 cmake/Modules/FindLibOsmoSDR.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 501fab154..fa7f81867 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,7 +213,7 @@ endif($ENV{RTLSDR_DRIVER} ) ######################################################################## -# Setup the include and linker paths +# Setup the include paths ######################################################################## include_directories( ${Boost_INCLUDE_DIRS} @@ -225,15 +225,6 @@ include_directories( ${GPERFTOOLS_INCLUDE_DIRS} ) -link_directories( - ${Boost_LIBRARY_DIRS} - ${GRUEL_LIBRARY_DIRS} - ${GNURADIO_CORE_LIBRARY_DIRS} - ${GLOG_LIBRARY_DIRS} - ${GFLAGS_LIBRARY_DIRS} - ${GPERFTOOLS_LIBRARY_DIRS} -) - ######################################################################## # Set compiler flags @@ -279,7 +270,6 @@ add_subdirectory(src) #add_subdirectory(drivers) #add_subdirectory(firmware) -#add_subdirectory($OSMOSDR_ROOT/include/osmosdr) -#add_subdirectory(${GTEST_DIR}/include) + diff --git a/cmake/Modules/FindGrOsmoSDR.cmake b/cmake/Modules/FindGrOsmoSDR.cmake new file mode 100644 index 000000000..119cbdef4 --- /dev/null +++ b/cmake/Modules/FindGrOsmoSDR.cmake @@ -0,0 +1,51 @@ +# Tries to find gr-osmosdr. +# +# Usage of this module as follows: +# +# find_package(GrOsmoSDR) +# +# Variables used by this module, they can change the default behaviour and need +# to be set before calling find_package: +# +# GrOsmoSDR_ROOT_DIR Set this variable to the root installation of +# gr-osmosdr if the module has problems finding +# the proper installation path. +# +# Variables defined by this module: +# +# GROSMOSDR_FOUND System has gr-osmosdr libs/headers +# GROSMOSDR_LIBRARIES The gr-osmosdr libraries (gnuradio-osmosdr) +# GROSMOSDR_INCLUDE_DIR The location of gr-osmosdr headers + + + +FIND_PATH(GROSMOSDR_INCLUDE_DIR + NAMES osmosdr/osmosdr_source_c.h + osmosdr/osmosdr_api.h + HINTS ${GrOsmoSDR_ROOT_DIR}/include + PATHS /usr/local/include + /usr/include +) + + +find_library(GROSMOSDR_LIBRARIES + NAMES gnuradio-osmosdr + HINTS ${GrOsmoSDR_ROOT_DIR}/lib + PATHS /usr/local/lib + /usr/lib + ) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + GrOsmoSDR + DEFAULT_MSG + GROSMOSDR_LIBRARIES + GROSMOSDR_INCLUDE_DIR +) + +mark_as_advanced( + GrOsmoSDR_ROOT_DIR + GROSMOSDR_LIBRARIES + GROSMOSDR_INCLUDE_DIR +) diff --git a/cmake/Modules/FindLibOsmoSDR.cmake b/cmake/Modules/FindLibOsmoSDR.cmake new file mode 100644 index 000000000..d9dbe7b5e --- /dev/null +++ b/cmake/Modules/FindLibOsmoSDR.cmake @@ -0,0 +1,27 @@ +if(NOT LIBOSMOSDR_FOUND) + pkg_check_modules (LIBOSMOSDR_PKG libosmosdr) + find_path(LIBOSMOSDR_INCLUDE_DIR NAMES osmosdr.h + PATHS + ${LIBOSMOSDR_PKG_INCLUDE_DIRS} + /usr/include + /usr/local/include + ) + + find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr + PATHS + ${LIBOSMOSDR_PKG_LIBRARY_DIRS} + /usr/lib + /usr/local/lib + ) + +if(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES) + set(LIBOSMOSDR_FOUND TRUE CACHE INTERNAL "libosmosdr found") + message(STATUS "Found libosmosdr: ${LIBOSMOSDR_INCLUDE_DIR}, ${LIBOSMOSDR_LIBRARIES}") +else(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES) + set(LIBOSMOSDR_FOUND FALSE CACHE INTERNAL "libosmosdr found") + message(STATUS "libosmosdr not found.") +endif(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES) + +mark_as_advanced(LIBOSMOSDR_INCLUDE_DIR LIBOSMOSDR_LIBRARIES) + +endif(NOT LIBOSMOSDR_FOUND) diff --git a/src/algorithms/signal_source/adapters/CMakeLists.txt b/src/algorithms/signal_source/adapters/CMakeLists.txt index b5f91986b..a024ffd98 100644 --- a/src/algorithms/signal_source/adapters/CMakeLists.txt +++ b/src/algorithms/signal_source/adapters/CMakeLists.txt @@ -16,25 +16,46 @@ # along with GNSS-SDR. If not, see . # + +#set(OPT_DRIVER_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/adapters) + + # Optional drivers -IF($ENV{GN3S_DRIVER}) +if($ENV{GN3S_DRIVER}) message(" GN3S ") set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/adapters) set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} gn3s_signal_source.cc) -ENDIF($ENV{GN3S_DRIVER}) +endif($ENV{GN3S_DRIVER}) -IF($ENV{RTLSDR_DRIVER}) - message(" RTLSDR ") - set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/adapters) +if($ENV{RTLSDR_DRIVER}) + ################################################################################ + # OsmoSDR - http://sdr.osmocom.org/trac/ + ################################################################################ + find_package(LibOsmoSDR) + if(NOT LIBOSMOSDR_FOUND) + message(FATAL_ERROR "libosmosdr required to build gnss-sdr with the optional RTLSDR driver") + endif(NOT LIBOSMOSDR_FOUND) + find_package(GrOsmoSDR REQUIRED) + if(NOT GROSMOSDR_FOUND) + message(FATAL_ERROR "gr-osmosdr required to build gnss-sdr with the optional RTLSDR driver") + endif(NOT GROSMOSDR_FOUND) + # set RTL include dirs + set(RTL_DRIVER_INCLUDE_DIRS + ${OPT_DRIVER_INCLUDE_DIRS} + ${GROSMOSDR_INCLUDE_DIR}/osmosdr + ${LIBOSMOSDR_INCLUDE_DIR} + ) set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} rtlsdr_signal_source.cc) -ENDIF($ENV{RTLSDR_DRIVER}) + set(OPT_LIBRARIES ${OPT_LIBRARIES} ${LIBOSMOSDR_LIBRARIES} ${GROSMOSDR_LIBRARIES}) + set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${RTL_DRIVER_INCLUDE_DIRS}) +endif($ENV{RTLSDR_DRIVER}) set(SIGNAL_SOURCE_ADAPTER_SOURCES file_signal_source.cc uhd_signal_source.cc ${OPT_DRIVER_SOURCES}) include_directories( - $(CMAKE_CURRENT_SOURCE_DIR) - $(OPT_DRIVER_INCLUDE_DIRS) + ${CMAKE_CURRENT_SOURCE_DIR} + ${OPT_DRIVER_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/src/core/system_parameters ${CMAKE_SOURCE_DIR}/src/core/interfaces ${CMAKE_SOURCE_DIR}/src/algorithms/libs @@ -45,7 +66,5 @@ include_directories( ${Boost_INCLUDE_DIRS} ) -link_directories(${Boost_LIBRARY_DIR}) - add_library(signal_source_adapters ${SIGNAL_SOURCE_ADAPTER_SOURCES}) -target_link_libraries(signal_source_adapters gnss_sp_libs ${Boost_LIBRARIES} uhd gnuradio-uhd) \ No newline at end of file +target_link_libraries(signal_source_adapters gnss_sp_libs ${Boost_LIBRARIES} uhd gnuradio-uhd ${OPT_LIBRARIES}) \ No newline at end of file