diff --git a/CMakeLists.txt b/CMakeLists.txt index 418e91fb6..b45267c28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,20 +16,34 @@ # along with GNSS-SDR. If not, see . # -######################################################################## -if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - message(FATAL_ERROR "Prevented in-tree build. This is bad practice. Try 'cd build && cmake ../' ") -endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) ######################################################################## # Project setup ######################################################################## +if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "Prevented in-tree build. This is bad practice. Try 'cd build && cmake ../' ") +endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) cmake_minimum_required(VERSION 2.8) project(gnss-sdr CXX C) - list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) +file(RELATIVE_PATH RELATIVE_CMAKE_CALL ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) -# Set the version information here + +######################################################################## +# Determine optional blocks/libraries to be built (default: not built) +# Enable them here or at the command line by doing 'cmake -DENABLE_XXX=ON ../' +######################################################################## + +option(ENABLE_GN3S "Enable the use of the GN3S dongle as signal source (experimental)" OFF) +option(ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal source (experimental)" OFF) +option(ENABLE_RTLSDR "Enable the use of RTL dongles as signal source (experimental)" OFF) +option(ENABLE_OPENCL "Enable building of processing blocks implemented with OpenCL (experimental)" OFF) +option(ENABLE_GPERFTOOLS "Enable linking to Gperftools libraries (tcmalloc and profiler)" OFF) + + +############################### +# GNSS-SDR version information +############################### # Get the current working branch execute_process( COMMAND git rev-parse --abbrev-ref HEAD @@ -51,7 +65,7 @@ set(VERSION_INFO_API_COMPAT 0) set(VERSION_INFO_MINOR_VERSION 3.git-${GIT_BRANCH}-${GIT_COMMIT_HASH}) set(VERSION ${VERSION_INFO_MAJOR_VERSION}.${VERSION_INFO_API_COMPAT}.${VERSION_INFO_MINOR_VERSION}) -file(RELATIVE_PATH RELATIVE_CMAKE_CALL ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + ######################################################################## # Environment setup @@ -198,6 +212,7 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") endif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7) endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + ################################################################################ # Googletest - http://code.google.com/p/googletest/ ################################################################################ @@ -219,7 +234,6 @@ endif(GTEST_DIR) ################################################################################ # Boost - http://www.boost.org ################################################################################ - if(UNIX AND EXISTS "/usr/lib64") list(APPEND BOOST_LIBRARYDIR "/usr/lib64") # Fedora 64-bit fix endif(UNIX AND EXISTS "/usr/lib64") @@ -247,9 +261,7 @@ endif(NOT Boost_FOUND) ################################################################################ # GNU Radio - http://gnuradio.org/redmine/projects/gnuradio/wiki ################################################################################ - find_package(Gnuradio) - if(NOT GNURADIO_RUNTIME_FOUND) message(STATUS "CMake cannot find GNU Radio >= 3.7") if(OS_IS_LINUX) @@ -372,7 +384,6 @@ endif(NOT GFlags_FOUND OR LOCAL_GLOG) ################################################################################ # glog - http://code.google.com/p/google-glog/ ################################################################################ - find_package(GLOG) set(glog_RELEASE 0.3.3) if (NOT GLOG_FOUND OR LOCAL_GFLAGS) @@ -474,93 +485,9 @@ endif(NOT GLOG_FOUND OR LOCAL_GFLAGS) - -################################################################################ -# GPerftools - http://code.google.com/p/gperftools/ -################################################################################ - -set(GCC_GPERFTOOLS_FLAGS "") -find_package(Gperftools) -if ( NOT GPERFTOOLS_FOUND ) - message(STATUS "The optional library GPerftools has not been found.") -else( NOT GPERFTOOLS_FOUND ) - message (STATUS "GPerftools library found." ) - link_libraries(${GPERFTOOLS_PROFILER} ${GPERFTOOLS_TCMALLOC}) -endif( NOT GPERFTOOLS_FOUND ) -list(APPEND CMAKE_CXX_FLAGS ${GCC_GPERFTOOLS_FLAGS}) - - - - -################################################################################ -# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html -################################################################################ - -find_package(Doxygen) -if(DOXYGEN_FOUND) - message(STATUS "Doxygen found.") - message(STATUS "You can build the documentation with 'make doc'." ) - message(STATUS "When done, point your browser to ${CMAKE_SOURCE_DIR}/html/index.html") - set(HAVE_DOT ${DOXYGEN_DOT_FOUND}) - file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} top_srcdir) - file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} top_builddir) - find_package(LATEX) - if (PDFLATEX_COMPILER) - set(GENERATE_PDF_DOCUMENTATION "YES") - set(GNSSSDR_USE_MATHJAX "NO") - else(PDFLATEX_COMPILER) - set(GENERATE_PDF_DOCUMENTATION "NO") - set(GNSSSDR_USE_MATHJAX "YES") - endif(PDFLATEX_COMPILER) - configure_file(${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile.in - ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile - @ONLY - ) - add_custom_target(doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating API documentation with Doxygen." VERBATIM - ) - if(LATEX_COMPILER) - message(STATUS "'make pdfmanual' will generate a manual at ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf") - add_custom_target(pdfmanual - COMMAND ${CMAKE_MAKE_PROGRAM} - COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf - COMMAND ${CMAKE_MAKE_PROGRAM} clean - DEPENDS doc - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docs/latex - COMMENT "Generating PDF manual with Doxygen." VERBATIM - ) - endif(LATEX_COMPILER) - message(STATUS "'make doc-clean' will clean the documentation.") - add_custom_target(doc-clean - COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/html - COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/latex - COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf - COMMENT "Cleaning documentation." VERBATIM - ) -else(DOXYGEN_FOUND) - message(STATUS " Doxygen has not been found in your system.") - message(STATUS " You can get nice code documentation by using it!") - message(STATUS " Get it from http://www.stack.nl/~dimitri/doxygen/index.html") - if(OS_IS_LINUX) - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" or simply by doing 'sudo yum install doxygen-latex'.") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" or simply by doing 'sudo apt-get install doxygen-latex'.") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - endif(OS_IS_LINUX) - if(OS_IS_MACOSX) - message(STATUS " or simply by doing 'sudo port install doxygen +latex'.") - endif(OS_IS_MACOSX) -endif(DOXYGEN_FOUND) - - - ################################################################################ # Armadillo - http://arma.sourceforge.net/ ################################################################################ - if(OS_IS_LINUX) ############################################################################# # Check that LAPACK is found in the system @@ -696,6 +623,9 @@ if(NOT ARMADILLO_FOUND) ExternalProject_Get_Property(armadillo-${armadillo_RELEASE} binary_dir) set(ARMADILLO_INCLUDE_DIRS ${binary_dir}/include ) find_library(LAPACK NAMES lapack HINTS /usr/lib /usr/local/lib /usr/lib64) + if(OS_IS_MACOSX) + find_library(BLAS blas) + endif(OS_IS_MACOSX) find_package(OpenBLAS) if(OPENBLAS_FOUND) set(BLAS ${OPENBLAS}) @@ -714,27 +644,6 @@ endif(NOT ARMADILLO_FOUND) -############################################################################### -# OpenCL -############################################################################### -find_package(OpenCL) -if($ENV{DISABLE_OPENCL}) - set(DISABLE_OPENCL TRUE) -endif($ENV{DISABLE_OPENCL}) -if(DISABLE_OPENCL) - set(OPENCL_FOUND FALSE) -else(DISABLE_OPENCL) - if(OPENCL_FOUND) - message(STATUS "OpenCL has been found and will be used by some processing blocks") - message(STATUS "You can disable OpenCL use by doing 'cmake -DDISABLE_OPENCL=1 ../' ") - endif(OPENCL_FOUND) -endif(DISABLE_OPENCL) -if(NOT OPENCL_FOUND) - message(STATUS "Processing blocks using OpenCL will not be built.") -endif(NOT OPENCL_FOUND) - - - ################################################################################ # OpenSSL - http://www.openssl.org ################################################################################ @@ -756,41 +665,166 @@ if(NOT OPENSSL_FOUND) endif(NOT OPENSSL_FOUND) + +################################################################################ +# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL) +################################################################################ +find_package(Doxygen) +if(DOXYGEN_FOUND) + message(STATUS "Doxygen found.") + message(STATUS "You can build the documentation with 'make doc'." ) + message(STATUS "When done, point your browser to ${CMAKE_SOURCE_DIR}/html/index.html") + set(HAVE_DOT ${DOXYGEN_DOT_FOUND}) + file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} top_srcdir) + file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} top_builddir) + find_package(LATEX) + if (PDFLATEX_COMPILER) + set(GENERATE_PDF_DOCUMENTATION "YES") + set(GNSSSDR_USE_MATHJAX "NO") + else(PDFLATEX_COMPILER) + set(GENERATE_PDF_DOCUMENTATION "NO") + set(GNSSSDR_USE_MATHJAX "YES") + endif(PDFLATEX_COMPILER) + configure_file(${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile.in + ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile + @ONLY + ) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Generating API documentation with Doxygen." VERBATIM + ) + if(LATEX_COMPILER) + message(STATUS "'make pdfmanual' will generate a manual at ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf") + add_custom_target(pdfmanual + COMMAND ${CMAKE_MAKE_PROGRAM} + COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf + COMMAND ${CMAKE_MAKE_PROGRAM} clean + DEPENDS doc + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docs/latex + COMMENT "Generating PDF manual with Doxygen." VERBATIM + ) + endif(LATEX_COMPILER) + message(STATUS "'make doc-clean' will clean the documentation.") + add_custom_target(doc-clean + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/html + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/latex + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf + COMMENT "Cleaning documentation." VERBATIM + ) +else(DOXYGEN_FOUND) + message(STATUS " Doxygen has not been found in your system.") + message(STATUS " You can get nice code documentation by using it!") + message(STATUS " Get it from http://www.stack.nl/~dimitri/doxygen/index.html") + if(OS_IS_LINUX) + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" or simply by doing 'sudo yum install doxygen-latex'.") + else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" or simply by doing 'sudo apt-get install doxygen-latex'.") + endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + endif(OS_IS_LINUX) + if(OS_IS_MACOSX) + message(STATUS " or simply by doing 'sudo port install doxygen +latex'.") + endif(OS_IS_MACOSX) +endif(DOXYGEN_FOUND) + + + +############################################################################### +# OpenCL (OPTIONAL) +############################################################################### +if(ENABLE_OPENCL) + find_package(OpenCL) + if($ENV{DISABLE_OPENCL}) + set(DISABLE_OPENCL TRUE) + endif($ENV{DISABLE_OPENCL}) + if(DISABLE_OPENCL) + set(OPENCL_FOUND FALSE) + else(DISABLE_OPENCL) + if(OPENCL_FOUND) + message(STATUS "OpenCL has been found and will be used by some processing blocks") + message(STATUS "You can disable OpenCL use by doing 'cmake -DENABLE_OPENCL=OFF ../' ") + endif(OPENCL_FOUND) + endif(DISABLE_OPENCL) + if(NOT OPENCL_FOUND) + message(STATUS "Processing blocks using OpenCL will not be built.") + endif(NOT OPENCL_FOUND) +else(ENABLE_OPENCL) + set(OPENCL_FOUND FALSE) +endif(ENABLE_OPENCL) + + + + +################################################################################ +# GPerftools - http://code.google.com/p/gperftools/ (OPTIONAL) +################################################################################ + +if(ENABLE_GPERFTOOLS) + find_package(Gperftools) + if ( NOT GPERFTOOLS_FOUND ) + message(STATUS "The optional library GPerftools has not been found.") + else( NOT GPERFTOOLS_FOUND ) + message (STATUS "GPerftools library found." ) + endif( NOT GPERFTOOLS_FOUND ) +endif(ENABLE_GPERFTOOLS) + + + ################################################################################ # Setup of optional drivers ################################################################################ -if( $ENV{GN3S_DRIVER} ) - message(STATUS "GN3S_DRIVER variable found." ) - # copy firmware to install folder - # Build project gr-gn3s -else( $ENV{GN3S_DRIVER} ) - if( GN3S_DRIVER ) - message(STATUS "GN3S driver will be compiled") - else( GNSS_DRIVER ) - message(STATUS "GN3S_DRIVER is not defined." ) - message(STATUS "Define it with 'export GN3S_DRIVER=1' to add support for the GN3S dongle." ) - endif( GN3S_DRIVER ) -endif($ENV{GN3S_DRIVER} ) -if( $ENV{RAW_ARRAY_DRIVER} ) - message(STATUS "RAW_ARRAY_DRIVER variable found." ) +if($ENV{GN3S_DRIVER}) + message(STATUS "GN3S_DRIVER environment variable found." ) + set(ENABLE_GN3S ON) +endif($ENV{GN3S_DRIVER}) +if(GN3S_DRIVER) + set(ENABLE_GN3S ON) +endif(GN3S_DRIVER) +if(ENABLE_GN3S) + message(STATUS "The GN3S driver will be compiled.") + message(STATUS "You can disable it with 'cmake -DENABLE_GN3S=OFF ../'" ) +else(ENABLE_GN3S) + message(STATUS "The (optional and experimental) GN3S driver is not enabled." ) + message(STATUS "Enable it with 'cmake -DENABLE_GN3S=ON ../' to add support for the GN3S dongle." ) +endif(ENABLE_GN3S) + + +if($ENV{RAW_ARRAY_DRIVER}) + message(STATUS "RAW_ARRAY_DRIVER environment variable found." ) + set(ENABLE_ARRAY ON) +endif($ENV{RAW_ARRAY_DRIVER}) +if(RAW_ARRAY_DRIVER) + set(ENABLE_ARRAY ON) +endif(RAW_ARRAY_DRIVER) +if(ENABLE_ARRAY) + message(STATUS "CTTC's Antenna Array front-end driver will be compiled." ) + message(STATUS "You can disable it with 'cmake -DENABLE_ARRAY=OFF ../'" ) # copy firmware to install folder # Build project gr-dbfcttc -else( $ENV{RAW_ARRAY_DRIVER} ) - if( RAW_ARRAY_DRIVER ) - message(STATUS "RAW_ARRAY_DRIVER driver will be compiled") - else( RAW_ARRAY_DRIVER ) - message(STATUS "RAW_ARRAY_DRIVER is not defined." ) - message(STATUS "Define it with 'export RAW_ARRAY_DRIVER=1' to add support for the CTTC experimental array front-end." ) - endif( RAW_ARRAY_DRIVER ) -endif($ENV{RAW_ARRAY_DRIVER} ) +else(ENABLE_ARRAY) + message(STATUS "The (optional) CTTC's Antenna Array front-end driver is not enabled." ) + message(STATUS "Enable it with 'cmake -DENABLE_ARRAY=ON ../' to add support for the CTTC experimental array front-end." ) +endif(ENABLE_ARRAY) -if( $ENV{RTLSDR_DRIVER} ) - message(STATUS "RTLSDR_DRIVER variable found." ) + +if($ENV{RTLSDR_DRIVER}) + message(STATUS "RTLSDR_DRIVER environment variable found." ) + set(ENABLE_RTLSDR ON) +endif($ENV{RTLSDR_DRIVER}) +if(RAW_ARRAY_DRIVER) + set(ENABLE_RTLSDR ON) +endif(RAW_ARRAY_DRIVER) +if(ENABLE_RTLSDR) + message(STATUS "The driver for RTL-based dongles will be compiled." ) + message(STATUS "You can disable it with 'cmake -DENABLE_RTLSDR=OFF ../'" ) # find libosmosdr (done in src/algorithms/signal_sources/adapters) # find gr-osmosdr (done in src/algorithms/signal_sources/adapters) -endif($ENV{RTLSDR_DRIVER} ) - +else(ENABLE_RTLSDR) + message(STATUS "The (optional) driver for RTL-based dongles is not enabled." ) + message(STATUS "Enable it with 'cmake -DENABLE_RTLSDR=ON ../' to add support for Realtek's RTL2832U-based USB dongles." ) +endif(ENABLE_RTLSDR) ######################################################################## @@ -825,13 +859,18 @@ if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) add_definitions(-fvisibility=hidden) endif() -# Set GPerftools related flags if it is available -# See http://gperftools.googlecode.com/svn/trunk/README -if(GPERFTOOLS_FOUND) - if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") - endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) -endif(GPERFTOOLS_FOUND) +if(ENABLE_GPERFTOOLS) + # Set GPerftools related flags if it is available + # See http://gperftools.googlecode.com/svn/trunk/README + if(GPERFTOOLS_FOUND) + if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) + set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") + endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin") + endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + endif(GPERFTOOLS_FOUND) +endif(ENABLE_GPERFTOOLS) list(APPEND CMAKE_CXX_FLAGS ${MY_CXX_FLAGS}) diff --git a/src/algorithms/signal_source/adapters/CMakeLists.txt b/src/algorithms/signal_source/adapters/CMakeLists.txt index 269ad0fc4..6027298a9 100644 --- a/src/algorithms/signal_source/adapters/CMakeLists.txt +++ b/src/algorithms/signal_source/adapters/CMakeLists.txt @@ -18,7 +18,7 @@ # Optional drivers -if($ENV{GN3S_DRIVER}) +if(ENABLE_GN3S) ############################################## # GN3S (USB dongle) ############################################## @@ -49,12 +49,10 @@ if($ENV{GN3S_DRIVER}) file(COPY ${CMAKE_SOURCE_DIR}/firmware/GN3S_v2/bin/gn3s_firmware.ihx DESTINATION ${CMAKE_SOURCE_DIR}/install/ ) -endif($ENV{GN3S_DRIVER}) +endif(ENABLE_GN3S) -if($ENV{RAW_ARRAY_DRIVER}) - set(RAW_ARRAY_DRIVER ON) -endif($ENV{RAW_ARRAY_DRIVER}) -if(RAW_ARRAY_DRIVER) + +if(ENABLE_ARRAY) ############################################## # GRDBFCTTC GNSS EXPERIMENTAL ARRAY PROTOTYPE ############################################## @@ -82,13 +80,10 @@ if(RAW_ARRAY_DRIVER) set(OPT_LIBRARIES ${OPT_LIBRARIES} ${GRDBFCTTC_LIBRARIES}) set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${GRDBFCTTC_INCLUDE_DIRS}) set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} raw_array_signal_source.cc) -endif(RAW_ARRAY_DRIVER) +endif(ENABLE_ARRAY) -if($ENV{RTLSDR_DRIVER}) - set(RTLSDR_DRIVER ON) -endif($ENV{RTLSDR_DRIVER}) -if(RTLSDR_DRIVER) +if(ENABLE_RTLSDR) ################################################################################ # OsmoSDR - http://sdr.osmocom.org/trac/ ################################################################################ @@ -104,7 +99,7 @@ if(RTLSDR_DRIVER) set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} rtlsdr_signal_source.cc) set(OPT_LIBRARIES ${OPT_LIBRARIES} ${GROSMOSDR_LIBRARIES}) set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${RTL_DRIVER_INCLUDE_DIRS}) -endif(RTLSDR_DRIVER) +endif(ENABLE_RTLSDR) set(SIGNAL_SOURCE_ADAPTER_SOURCES file_signal_source.cc gen_signal_source.cc diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt index 2b54995c2..4f4c0200a 100644 --- a/src/core/receiver/CMakeLists.txt +++ b/src/core/receiver/CMakeLists.txt @@ -65,37 +65,17 @@ include_directories( ) -#Enable GN3S module if the flag is present -if( $ENV{GN3S_DRIVER} ) - message(STATUS "Support for RF front-end GN3S v2 enabled" ) +if(ENABLE_GN3S) add_definitions(-DGN3S_DRIVER=1) -endif( $ENV{GN3S_DRIVER} ) -if( GN3S_DRIVER ) - message(STATUS "Support for RF front-end GN3S v2 enabled" ) - add_definitions(-DGN3S_DRIVER=1) -endif( GN3S_DRIVER ) +endif(ENABLE_GN3S) - -if( $ENV{RAW_ARRAY_DRIVER} ) - message(STATUS "Support for CTTC RAW ARRAY enabled" ) +if(ENABLE_ARRAY) add_definitions(-DRAW_ARRAY_DRIVER=1) -endif( $ENV{RAW_ARRAY_DRIVER} ) +endif(ENABLE_ARRAY) -if( RAW_ARRAY_DRIVER ) - message(STATUS "Support for CTTC RAW ARRAY enabled" ) - add_definitions(-DRAW_ARRAY_DRIVER=1) -endif( RAW_ARRAY_DRIVER ) - -#Enable RTL-SDR module if the flag is present -if( $ENV{RTLSDR_DRIVER} ) - message(STATUS "Support for RF front-end based on RTL dongle enabled" ) +if(ENABLE_RTLSDR) add_definitions(-DRTLSDR_DRIVER=1) -endif( $ENV{RTLSDR_DRIVER} ) - -if( RTLSDR_DRIVER ) - message(STATUS "Support for RF front-end based on RTL dongle enabled" ) - add_definitions(-DRTLSDR_DRIVER=1) -endif( RTLSDR_DRIVER ) +endif(ENABLE_RTLSDR) #Enable OpenCL if found in the system if(OPENCL_FOUND) diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index 2140b352e..c3765cded 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2012-2013 (see AUTHORS file for a list of contributors) +# Copyright (C) 2012-2014 (see AUTHORS file for a list of contributors) # # This file is part of GNSS-SDR. # # GNSS-SDR is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or -# at your option) any later version. +# (at your option) any later version. # # GNSS-SDR is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,6 +16,15 @@ # along with GNSS-SDR. If not, see . # +set(GNSS_SDR_OPTIONAL_LIBS "") +set(GNSS_SDR_OPTIONAL_HEADERS "") + +if(ENABLE_GPERFTOOLS) + if(GPERFTOOLS_FOUND) + set(GNSS_SDR_OPTIONAL_LIBS "${GNSS_SDR_OPTIONAL_LIBS};${GPERFTOOLS_LIBRARIES}") + set(GNSS_SDR_OPTIONAL_HEADERS "${GNSS_SDR_OPTIONAL_HEADERS};${GPERFTOOLS_INCLUDE_DIR}") + endif(GPERFTOOLS_FOUND) +endif(ENABLE_GPERFTOOLS) include_directories( ${CMAKE_SOURCE_DIR}/src/core/system_parameters @@ -30,6 +39,7 @@ include_directories( ${ARMADILLO_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${GNURADIO_RUNTIME_INCLUDE_DIRS} + ${GNSS_SDR_OPTIONAL_HEADERS} ) add_definitions( -DGNSS_SDR_VERSION="${VERSION}" ) @@ -57,6 +67,7 @@ target_link_libraries(gnss-sdr ${MAC_LIBRARIES} ${UHD_LIBRARIES} gnss_sp_libs gnss_rx + ${GNSS_SDR_OPTIONAL_LIBS} ) diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 568ee181e..5d38ed1e7 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2010-2013 (see AUTHORS file for a list of contributors) +# Copyright (C) 2010-2014 (see AUTHORS file for a list of contributors) # # This file is part of GNSS-SDR. # # GNSS-SDR is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or -# at your option) any later version. +# (at your option) any later version. # # GNSS-SDR is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -89,6 +89,16 @@ else(NOT GTEST_DIR_LOCAL) endif(NOT GTEST_DIR_LOCAL) +set(GNSS_SDR_TEST_OPTIONAL_LIBS "") +set(GNSS_SDR_TEST_OPTIONAL_HEADERS "") + +if(ENABLE_GPERFTOOLS) + if(GPERFTOOLS_FOUND) + set(GNSS_SDR_TEST_OPTIONAL_LIBS "${GNSS_SDR_TEST_OPTIONAL_LIBS};${GPERFTOOLS_LIBRARIES}") + set(GNSS_SDR_TEST_OPTIONAL_HEADERS "${GNSS_SDR_TEST_OPTIONAL_HEADERS};${GPERFTOOLS_INCLUDE_DIR}") + endif(GPERFTOOLS_FOUND) +endif(ENABLE_GPERFTOOLS) + include_directories( ${GTEST_INCLUDE_DIRECTORIES} @@ -120,6 +130,7 @@ include_directories( ${Boost_INCLUDE_DIRS} ${ARMADILLO_INCLUDE_DIRS} ${VOLK_INCLUDE_DIRS} + ${GNSS_SDR_TEST_OPTIONAL_HEADERS} ) @@ -158,6 +169,7 @@ target_link_libraries(run_tests ${MAC_LIBRARIES} signal_generator_adapters out_adapters pvt_gr_blocks + ${GNSS_SDR_TEST_OPTIONAL_LIBS} ) install(TARGETS run_tests DESTINATION ${CMAKE_SOURCE_DIR}/install) diff --git a/src/utils/front-end-cal/CMakeLists.txt b/src/utils/front-end-cal/CMakeLists.txt index aa82e9fe5..5a4b1ae17 100644 --- a/src/utils/front-end-cal/CMakeLists.txt +++ b/src/utils/front-end-cal/CMakeLists.txt @@ -1,11 +1,11 @@ -# Copyright (C) 2012-2013 (see AUTHORS file for a list of contributors) +# Copyright (C) 2012-2014 (see AUTHORS file for a list of contributors) # # This file is part of GNSS-SDR. # # GNSS-SDR is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or -# at your option) any later version. +# (at your option) any later version. # # GNSS-SDR is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,11 +17,7 @@ # -if($ENV{RTLSDR_DRIVER}) - set(RTLSDR_DRIVER ON) -endif($ENV{RTLSDR_DRIVER}) - -if(RTLSDR_DRIVER) +if(ENABLE_RTLSDR) set(FRONT_END_CAL_SOURCES front_end_cal.cc) include_directories( @@ -76,4 +72,4 @@ if(RTLSDR_DRIVER) DESTINATION ${CMAKE_SOURCE_DIR}/install ) -endif(RTLSDR_DRIVER) +endif(ENABLE_RTLSDR)