2017-02-05 19:47:57 +00:00
# Copyright (C) 2010-2017 (see AUTHORS file for a list of contributors)
2012-12-24 02:33:50 +00:00
#
# 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
2014-06-30 18:46:36 +00:00
# (at your option) any later version.
2012-12-24 02:33:50 +00:00
#
# GNSS-SDR is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
#
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
########################################################################
# Project setup
2012-12-24 02:33:50 +00:00
########################################################################
if ( ${ CMAKE_SOURCE_DIR } STREQUAL ${ CMAKE_BINARY_DIR } )
2015-03-20 14:23:16 +00:00
message ( WARNING "In-tree build is bad practice. Try 'cd build && cmake ../' " )
2012-12-24 02:33:50 +00:00
endif ( ${ CMAKE_SOURCE_DIR } STREQUAL ${ CMAKE_BINARY_DIR } )
2017-08-07 17:29:05 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 } )
2014-09-30 23:09:44 +00:00
2016-10-25 11:01:20 +00:00
if ( NOT CMAKE_PREFIX_PATH )
if ( DEFINED ENV{PYBOMBS_PREFIX} )
set ( CMAKE_PREFIX_PATH $ENV{ PYBOMBS_PREFIX } )
endif ( DEFINED ENV{PYBOMBS_PREFIX} )
if ( DEFINED ENV{SNAP} )
set ( CMAKE_PREFIX_PATH $ENV{ SNAP } )
endif ( DEFINED ENV{SNAP} )
endif ( NOT CMAKE_PREFIX_PATH )
2012-12-24 02:33:50 +00:00
2016-11-27 22:47:45 +00:00
2012-12-24 02:33:50 +00:00
########################################################################
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
# Determine optional blocks/libraries to be built (default: not built)
# Enable them here or at the command line by doing 'cmake -DENABLE_XXX=ON ../'
2012-12-24 02:33:50 +00:00
########################################################################
2015-05-03 08:15:51 +00:00
# Support of optional RF front-ends
2014-12-15 18:25:36 +00:00
option ( ENABLE_OSMOSDR "Enable the use of OsmoSDR and other front-ends (RTL-based dongles, HackRF, bladeRF, etc.) as signal source (experimental)" OFF )
2015-05-03 08:15:51 +00:00
option ( ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNURadio driver" OFF )
option ( ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal source (experimental)" OFF )
option ( ENABLE_GN3S "Enable the use of the GN3S dongle as signal source (experimental)" OFF )
2017-10-30 21:31:20 +00:00
option ( ENABLE_PLUTOSDR "Enable the use of ADALM-PLUTO Evaluation Boards (Analog Devices Inc.), requires gr-iio" OFF )
2017-10-31 14:40:14 +00:00
option ( ENABLE_FMCOMMS2 "Enable the use of FMCOMMS4-EBZ + ZedBoard hardware, requires gr-iio" OFF )
2015-05-03 08:15:51 +00:00
# Performance analysis tools
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
option ( ENABLE_GPERFTOOLS "Enable linking to Gperftools libraries (tcmalloc and profiler)" OFF )
2015-05-03 08:15:51 +00:00
option ( ENABLE_GPROF "Enable the use of the GNU profiler tool 'gprof'" OFF )
# Acceleration
2016-07-02 16:54:39 +00:00
option ( ENABLE_PROFILING "Enable execution of volk_gnsssdr_profile at the end of the building" OFF )
2015-05-03 08:15:51 +00:00
option ( ENABLE_OPENCL "Enable building of processing blocks implemented with OpenCL (experimental)" OFF )
2015-08-25 17:01:02 +00:00
option ( ENABLE_CUDA "Enable building of processing blocks implemented with CUDA (experimental, requires CUDA SDK)" OFF )
2017-02-13 16:20:49 +00:00
option ( ENABLE_FPGA "Enable building of processing blocks implemented with FPGA (experimental, requires EZDMA driver)" OFF )
2015-05-03 08:15:51 +00:00
# Building and packaging options
2014-09-07 17:35:41 +00:00
option ( ENABLE_GENERIC_ARCH "Builds a portable binary" OFF )
2014-11-11 22:50:38 +00:00
option ( ENABLE_PACKAGING "Enable software packaging" OFF )
2014-11-14 00:40:43 +00:00
option ( ENABLE_OWN_GLOG "Download glog and link it to gflags" OFF )
2017-02-03 11:04:15 +00:00
option ( ENABLE_OWN_ARMADILLO "Download and build Armadillo locally" OFF )
2015-05-23 09:20:26 +00:00
option ( ENABLE_LOG "Enable logging" ON )
2014-11-14 00:40:43 +00:00
if ( ENABLE_PACKAGING )
2014-11-11 22:50:38 +00:00
set ( ENABLE_GENERIC_ARCH ON )
2014-11-14 00:40:43 +00:00
endif ( ENABLE_PACKAGING )
2012-12-24 02:33:50 +00:00
2016-10-01 23:59:12 +00:00
# Testing
2017-01-10 17:57:38 +00:00
option ( ENABLE_UNIT_TESTING "Build unit tests" ON )
2017-01-28 15:49:46 +00:00
option ( ENABLE_UNIT_TESTING_EXTRA "Download external files and build extra unit tests" OFF )
2017-01-10 17:57:38 +00:00
option ( ENABLE_SYSTEM_TESTING "Build system tests" OFF )
option ( ENABLE_SYSTEM_TESTING_EXTRA "Download external tools and build extra system tests" OFF )
if ( ENABLE_SYSTEM_TESTING_EXTRA )
set ( ENABLE_SYSTEM_TESTING ON )
endif ( ENABLE_SYSTEM_TESTING_EXTRA )
option ( ENABLE_OWN_GPSTK "Force to download, build and link GPSTk for system tests, even if it is already installed" OFF )
2017-02-17 00:02:07 +00:00
option ( ENABLE_INSTALL_TESTS "Install QA code system-wide" OFF )
if ( ENABLE_FPGA )
set ( ENABLE_INSTALL_TESTS ON )
endif ( ENABLE_FPGA )
2016-11-27 22:47:45 +00:00
2017-08-07 17:29:05 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
###############################
2015-03-20 16:02:41 +00:00
# GNSS-SDR version information
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
###############################
2017-02-13 22:10:48 +00:00
set ( THIS_IS_A_RELEASE OFF ) # only related to version name, no further implications.
2015-01-13 10:11:23 +00:00
if ( NOT ${ THIS_IS_A_RELEASE } )
# Get the current working branch
execute_process (
C O M M A N D g i t r e v - p a r s e - - a b b r e v - r e f H E A D
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ B R A N C H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
)
# Get the latest abbreviated commit hash of the working branch
execute_process (
C O M M A N D g i t l o g - 1 - - f o r m a t = % h
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ C O M M I T _ H A S H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
)
endif ( NOT ${ THIS_IS_A_RELEASE } )
2014-04-10 20:05:04 +00:00
2012-12-24 02:33:50 +00:00
set ( VERSION_INFO_MAJOR_VERSION 0 )
2014-04-10 20:05:04 +00:00
set ( VERSION_INFO_API_COMPAT 0 )
2015-01-13 10:11:23 +00:00
if ( ${ THIS_IS_A_RELEASE } )
2017-02-05 19:47:57 +00:00
set ( VERSION_INFO_MINOR_VERSION 9 )
2015-01-13 10:11:23 +00:00
else ( ${ THIS_IS_A_RELEASE } )
2017-02-05 19:47:57 +00:00
set ( VERSION_INFO_MINOR_VERSION 9.git- ${ GIT_BRANCH } - ${ GIT_COMMIT_HASH } )
2015-01-13 10:11:23 +00:00
endif ( ${ THIS_IS_A_RELEASE } )
2012-12-24 02:33:50 +00:00
2015-01-13 10:11:23 +00:00
set ( VERSION ${ VERSION_INFO_MAJOR_VERSION } . ${ VERSION_INFO_API_COMPAT } . ${ VERSION_INFO_MINOR_VERSION } )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
2012-12-24 02:33:50 +00:00
2016-11-27 22:47:45 +00:00
2012-12-24 02:33:50 +00:00
########################################################################
# Environment setup
########################################################################
2012-12-29 21:07:43 +00:00
include ( ExternalProject )
2013-12-10 20:17:57 +00:00
# Detect 64-bits machine
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( ARCH_64BITS TRUE )
endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
2013-01-27 20:50:38 +00:00
set ( OS_IS_MACOSX "" )
set ( OS_IS_LINUX "" )
2013-12-10 20:17:57 +00:00
2015-03-20 16:02:41 +00:00
# Detect Linux Distribution
2013-01-19 17:10:57 +00:00
if ( ${ CMAKE_SYSTEM_NAME } MATCHES "Linux" )
set ( OperatingSystem "Linux" )
2013-01-27 20:50:38 +00:00
set ( OS_IS_LINUX TRUE )
2013-12-10 20:17:57 +00:00
if ( ARCH_64BITS )
set ( ARCH_ "(64 bits)" )
else ( ARCH_64BITS )
set ( ARCH_ "(32 bits)" )
endif ( ARCH_64BITS )
2013-12-11 23:27:46 +00:00
if ( EXISTS "/etc/lsb-release" )
2013-12-10 20:17:57 +00:00
execute_process ( COMMAND cat /etc/lsb-release
C O M M A N D g r e p D I S T R I B _ I D
C O M M A N D a w k - F = " { p r i n t $ 2 } "
C O M M A N D t r " \ n " " "
C O M M A N D s e d " s / / / "
O U T P U T _ V A R I A B L E L I N U X _ D I S T R I B U T I O N
R E S U L T _ V A R I A B L E L I N U X _ I D _ R E S U L T
)
execute_process ( COMMAND cat /etc/lsb-release
C O M M A N D g r e p D I S T R I B _ R E L E A S E
C O M M A N D a w k - F = " { p r i n t $ 2 } "
C O M M A N D t r " \ n " " "
C O M M A N D s e d " s / / / "
O U T P U T _ V A R I A B L E L I N U X _ V E R
R E S U L T _ V A R I A B L E L I N U X _ V E R _ R E S U L T
)
2013-12-11 23:27:46 +00:00
endif ( EXISTS "/etc/lsb-release" )
2013-12-14 14:36:33 +00:00
if ( NOT LINUX_DISTRIBUTION )
if ( EXISTS "/etc/linuxmint/info" )
set ( LINUX_DISTRIBUTION "LinuxMint" )
execute_process ( COMMAND cat /etc/linuxmint/info
C O M M A N D g r e p - m 1 R E L E A S E
C O M M A N D a w k - F = " { p r i n t $ 2 } "
C O M M A N D t r " \ n " " "
C O M M A N D s e d " s / / / "
O U T P U T _ V A R I A B L E L I N U X _ V E R
R E S U L T _ V A R I A B L E L I N U X _ V E R _ R E S U L T
)
endif ( EXISTS "/etc/linuxmint/info" )
2015-03-20 16:02:41 +00:00
endif ( NOT LINUX_DISTRIBUTION )
2013-12-10 20:17:57 +00:00
if ( NOT LINUX_DISTRIBUTION )
if ( EXISTS "/etc/os-release" )
2013-12-11 23:27:46 +00:00
execute_process ( COMMAND cat /etc/os-release
2013-12-14 14:36:33 +00:00
C O M M A N D g r e p - m 1 N A M E
2013-12-10 20:17:57 +00:00
C O M M A N D a w k - F = " { p r i n t $ 2 } "
C O M M A N D t r " \ n " " "
C O M M A N D s e d " s / / / "
O U T P U T _ V A R I A B L E L I N U X _ D I S T R I B U T I O N
R E S U L T _ V A R I A B L E L I N U X _ I D _ R E S U L T
)
execute_process ( COMMAND cat /etc/os-release
C O M M A N D g r e p V E R S I O N _ I D
C O M M A N D a w k - F = " { p r i n t $ 2 } "
C O M M A N D t r " \ n " " "
C O M M A N D s e d " s / / / "
O U T P U T _ V A R I A B L E L I N U X _ V E R
R E S U L T _ V A R I A B L E L I N U X _ V E R _ R E S U L T
)
2013-12-14 14:36:33 +00:00
if ( ${ LINUX_DISTRIBUTION } MATCHES "Debian" )
set ( LINUX_DISTRIBUTION "Debian" )
2014-10-18 07:10:13 +00:00
file ( READ /etc/debian_version LINUX_VER )
2013-12-14 14:36:33 +00:00
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Debian" )
2015-03-20 16:02:41 +00:00
endif ( EXISTS "/etc/os-release" )
2013-12-10 20:17:57 +00:00
endif ( NOT LINUX_DISTRIBUTION )
if ( NOT LINUX_DISTRIBUTION )
if ( EXISTS "/etc/redhat-release" )
set ( LINUX_DISTRIBUTION "Red Hat" )
file ( READ /etc/redhat-release LINUX_VER )
endif ( EXISTS "/etc/redhat-release" )
endif ( NOT LINUX_DISTRIBUTION )
if ( NOT LINUX_DISTRIBUTION )
if ( EXISTS "/etc/debian_version" )
set ( LINUX_DISTRIBUTION "Debian" )
file ( READ /etc/debian_version LINUX_VER )
endif ( EXISTS "/etc/debian_version" )
endif ( NOT LINUX_DISTRIBUTION )
if ( NOT LINUX_DISTRIBUTION )
set ( LINUX_DISTRIBUTION "Generic" )
set ( LINUX_VER "Unknown" )
2015-03-20 16:02:41 +00:00
endif ( NOT LINUX_DISTRIBUTION )
2014-06-30 18:46:36 +00:00
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${LINUX_DISTRIBUTION} GNU/Linux Release ${LINUX_VER} ${ARCH_}" )
2013-01-19 17:10:57 +00:00
endif ( ${ CMAKE_SYSTEM_NAME } MATCHES "Linux" )
2017-11-26 00:48:48 +00:00
if ( NOT LINUX_DISTRIBUTION )
set ( LINUX_DISTRIBUTION "Unknown" )
endif ( NOT LINUX_DISTRIBUTION )
2013-01-19 17:10:57 +00:00
2017-10-30 19:15:12 +00:00
# Detect macOS / Mac OS X Version
2013-01-19 17:10:57 +00:00
if ( ${ CMAKE_SYSTEM_NAME } MATCHES "Darwin" )
set ( OperatingSystem "Mac OS X" )
2013-01-27 20:50:38 +00:00
set ( OS_IS_MACOSX TRUE )
2013-11-09 10:51:11 +00:00
exec_program ( uname ARGS -v OUTPUT_VARIABLE DARWIN_VERSION )
string ( REGEX MATCH "[0-9]+" DARWIN_VERSION ${ DARWIN_VERSION } )
2017-10-30 19:15:12 +00:00
if ( ${ DARWIN_VERSION } MATCHES "17" )
set ( MACOS_HIGH_SIERRA TRUE )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14" )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS High Sierra 10.13" )
endif ( ${ DARWIN_VERSION } MATCHES "17" )
2016-09-21 18:37:52 +00:00
if ( ${ DARWIN_VERSION } MATCHES "16" )
set ( MACOS_SIERRA TRUE )
2017-10-30 19:15:12 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14" )
2016-09-21 18:37:52 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS Sierra 10.12" )
endif ( ${ DARWIN_VERSION } MATCHES "16" )
2015-09-08 00:16:03 +00:00
if ( ${ DARWIN_VERSION } MATCHES "15" )
set ( MACOSX_EL_CAPITAN TRUE )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.11 El Capitan" )
endif ( ${ DARWIN_VERSION } MATCHES "15" )
2014-10-18 07:43:44 +00:00
if ( ${ DARWIN_VERSION } MATCHES "14" )
set ( MACOSX_YOSEMITE TRUE )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.10 Yosemite" )
endif ( ${ DARWIN_VERSION } MATCHES "14" )
2013-11-09 10:51:11 +00:00
if ( ${ DARWIN_VERSION } MATCHES "13" )
set ( MACOSX_MAVERICKS TRUE )
2013-11-13 21:07:33 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
set ( CMAKE_XCODE_ATTRIBUTE_GCC_VERSION= "com.apple.compilers.llvm.clang.1_0" )
2014-06-30 18:46:36 +00:00
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.9 Mavericks" )
2013-11-09 10:51:11 +00:00
endif ( ${ DARWIN_VERSION } MATCHES "13" )
2013-12-10 20:17:57 +00:00
if ( ${ DARWIN_VERSION } MATCHES "12" )
2014-06-30 18:46:36 +00:00
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.8 Mountain Lion" )
2013-12-10 20:17:57 +00:00
endif ( ${ DARWIN_VERSION } MATCHES "12" )
if ( ${ DARWIN_VERSION } MATCHES "11" )
2014-06-30 18:46:36 +00:00
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.7 Lion" )
2013-12-10 20:17:57 +00:00
endif ( ${ DARWIN_VERSION } MATCHES "11" )
if ( ${ DARWIN_VERSION } MATCHES "10" )
2014-06-30 18:46:36 +00:00
message ( STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.6 Snow Leopard" )
2013-12-10 20:17:57 +00:00
endif ( ${ DARWIN_VERSION } MATCHES "10" )
2013-01-19 17:10:57 +00:00
endif ( ${ CMAKE_SYSTEM_NAME } MATCHES "Darwin" )
2013-12-10 20:17:57 +00:00
#select the release build type by default to get optimization flags
if ( NOT CMAKE_BUILD_TYPE )
2015-05-03 08:15:51 +00:00
if ( ENABLE_GPERFTOOLS OR ENABLE_GPROF )
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" )
message ( STATUS "Build type not specified: defaulting to RelWithDebInfo." )
else ( ENABLE_GPERFTOOLS OR ENABLE_GPROF )
set ( CMAKE_BUILD_TYPE "Release" )
message ( STATUS "Build type not specified: defaulting to Release." )
endif ( ENABLE_GPERFTOOLS OR ENABLE_GPROF )
else ( NOT CMAKE_BUILD_TYPE )
message ( STATUS "Build type set to ${CMAKE_BUILD_TYPE}." )
2013-12-10 20:17:57 +00:00
endif ( NOT CMAKE_BUILD_TYPE )
set ( CMAKE_BUILD_TYPE ${ CMAKE_BUILD_TYPE } CACHE STRING "" )
2013-01-19 17:10:57 +00:00
2013-12-10 20:17:57 +00:00
# Append -O2 optimization flag for Debug builds
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O2" )
2013-10-01 20:32:04 +00:00
2017-04-14 08:28:57 +00:00
# allow 'large' files in 32 bit builds
if ( UNIX )
add_definitions ( -D_LARGEFILE_SOURCE
- D _ F I L E _ O F F S E T _ B I T S = 6 4
- D _ L A R G E _ F I L E S
)
endif ( UNIX )
2017-08-07 17:29:05 +00:00
# Determine if we are using make or ninja
2017-07-06 17:29:29 +00:00
if ( CMAKE_MAKE_PROGRAM MATCHES "make" )
set ( CMAKE_MAKE_PROGRAM_PRETTY_NAME "make" )
endif ( CMAKE_MAKE_PROGRAM MATCHES "make" )
if ( CMAKE_MAKE_PROGRAM MATCHES "ninja" )
set ( CMAKE_MAKE_PROGRAM_PRETTY_NAME "ninja" )
endif ( CMAKE_MAKE_PROGRAM MATCHES "ninja" )
if ( NOT CMAKE_MAKE_PROGRAM_PRETTY_NAME )
set ( CMAKE_MAKE_PROGRAM_PRETTY_NAME "${CMAKE_MAKE_PROGRAM}" )
endif ( NOT CMAKE_MAKE_PROGRAM_PRETTY_NAME )
2017-04-14 08:28:57 +00:00
2014-10-28 00:00:04 +00:00
2016-11-27 22:47:45 +00:00
2014-10-27 04:19:26 +00:00
################################################################################
2017-08-07 17:29:05 +00:00
# Minimum required versions
################################################################################
set ( GNSSSDR_CMAKE_MIN_VERSION "2.8.8" )
set ( GNSSSDR_GCC_MIN_VERSION "4.7.2" )
set ( GNSSSDR_CLANG_MIN_VERSION "3.4.0" )
set ( GNSSSDR_APPLECLANG_MIN_VERSION "500" )
set ( GNSSSDR_GNURADIO_MIN_VERSION "3.7.3" )
set ( GNSSSDR_BOOST_MIN_VERSION "1.45" )
set ( GNSSSDR_PYTHON_MIN_VERSION "2.7" )
set ( GNSSSDR_MAKO_MIN_VERSION "0.4.2" )
set ( GNSSSDR_ARMADILLO_MIN_VERSION "4.200.0" )
2018-02-24 17:01:10 +00:00
set ( GNSSSDR_MATIO_MIN_VERSION "1.5.3" )
2017-08-07 17:29:05 +00:00
2017-08-08 12:18:19 +00:00
2017-11-04 18:22:40 +00:00
################################################################################
# Versions to download and build (but not installed) if not found
################################################################################
set ( GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.1" )
set ( GNSSSDR_GLOG_LOCAL_VERSION "0.3.5" )
set ( GNSSSDR_ARMADILLO_LOCAL_VERSION "unstable" )
set ( GNSSSDR_GTEST_LOCAL_VERSION "1.8.0" )
set ( GNSSSDR_GNSS_SIM_LOCAL_VERSION "master" )
set ( GNSSSDR_GPSTK_LOCAL_VERSION "2.10" )
2017-11-17 20:20:56 +00:00
set ( GNSSSDR_MATIO_LOCAL_VERSION "1.5.11" )
2017-11-04 18:22:40 +00:00
2017-08-07 17:29:05 +00:00
################################################################################
# Check cmake version
2014-10-27 04:19:26 +00:00
################################################################################
2017-08-07 17:29:05 +00:00
if ( CMAKE_VERSION VERSION_LESS ${ GNSSSDR_CMAKE_MIN_VERSION } )
message ( STATUS "Your CMake version is too old and does not support some features required by GNSS-SDR. CMake version must be at least ${GNSSSDR_CMAKE_MIN_VERSION}. For more information check https://github.com/joakimkarlsson/bandit/issues/40" )
message ( FATAL_ERROR "Fatal error: CMake >= ${GNSSSDR_CMAKE_MIN_VERSION} required." )
endif ( CMAKE_VERSION VERSION_LESS ${ GNSSSDR_CMAKE_MIN_VERSION } )
2014-10-27 04:19:26 +00:00
2014-10-28 00:00:04 +00:00
2016-11-27 22:47:45 +00:00
2014-05-07 20:08:41 +00:00
################################################################################
2017-08-07 17:29:05 +00:00
# Check compiler version
2014-05-07 20:08:41 +00:00
################################################################################
2017-08-07 17:29:05 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${ GNSSSDR_GCC_MIN_VERSION } )
2017-08-08 12:18:19 +00:00
message ( STATUS "Your GCC version is too old and does not support some C++ features required by GNSS-SDR. GCC version must be at least ${GNSSSDR_GCC_MIN_VERSION}" )
2014-05-30 17:07:01 +00:00
if ( ${ LINUX_DISTRIBUTION } MATCHES "Ubuntu" )
if ( ${ LINUX_VER } MATCHES "12.04" )
message ( STATUS "For instructions on how to upgrade GCC, check http://askubuntu.com/a/271561" )
endif ( ${ LINUX_VER } MATCHES "12.04" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Ubuntu" )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "Fatal error: GCC >= ${GNSSSDR_GCC_MIN_VERSION} required." )
endif ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${ GNSSSDR_GCC_MIN_VERSION } )
endif ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
execute_process ( COMMAND
$ { C M A K E _ C X X _ C O M P I L E R } - v
R E S U L T _ V A R I A B L E _ r e s E R R O R _ V A R I A B L E _ e r r
E R R O R _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
if ( ${ _res } STREQUAL "0" )
# output is in error stream
string ( REGEX MATCH "^Apple.*" IS_APPLE ${ _err } )
if ( "${IS_APPLE}" STREQUAL "" )
set ( MIN_VERSION ${ GNSSSDR_CLANG_MIN_VERSION } )
set ( APPLE_STR "" )
# retrieve the compiler's version from it
string ( REGEX MATCH "clang version [0-9.]+" CLANG_OTHER_VERSION ${ _err } )
string ( REGEX MATCH "[0-9.]+" CLANG_VERSION ${ CLANG_OTHER_VERSION } )
else ( "${IS_APPLE}" STREQUAL "" )
set ( MIN_VERSION ${ GNSSSDR_APPLECLANG_MIN_VERSION } )
set ( APPLE_STR "Apple " )
# retrieve the compiler's version from it
string ( REGEX MATCH "(clang-[0-9.]+)" CLANG_APPLE_VERSION ${ _err } )
string ( REGEX MATCH "[0-9.]+" CLANG_VERSION ${ CLANG_APPLE_VERSION } )
endif ( "${IS_APPLE}" STREQUAL "" )
if ( ${ CLANG_VERSION } VERSION_LESS "${MIN_VERSION}" )
message ( WARNING "\nThe compiler selected to build GNSS-SDR (${APPLE_STR}Clang version ${CLANG_VERSION} : ${CMAKE_CXX_COMPILER}) is older than that officially supported (${MIN_VERSION} minimum). This build may or not work. We highly recommend using Apple Clang version ${APPLECLANG_MIN_VERSION} or more recent, or Clang version ${CLANG_MIN_VERSION} or more recent." )
endif ( ${ CLANG_VERSION } VERSION_LESS "${MIN_VERSION}" )
else ( ${ _res } STREQUAL "0" )
message ( WARNING "\nCannot determine the version of the compiler selected to build GNSS-SDR (${APPLE_STR}Clang : ${CMAKE_CXX_COMPILER}). This build may or not work. We highly recommend using Apple Clang version ${APPLECLANG_MIN_VERSION} or more recent, or Clang version ${CLANG_MIN_VERSION} or more recent." )
endif ( ${ _res } STREQUAL "0" )
endif ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
2013-01-19 17:10:57 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
2016-11-27 22:47:45 +00:00
2014-09-30 23:09:44 +00:00
################################################################################
# Check if the compiler defines the architecture as ARM
################################################################################
if ( NOT OS_IS_MACOSX )
2016-12-20 01:35:52 +00:00
if ( CMAKE_CROSSCOMPILING )
set ( IS_ARM TRUE )
else ( CMAKE_CROSSCOMPILING )
include ( TestForARM )
endif ( CMAKE_CROSSCOMPILING )
2014-09-30 23:09:44 +00:00
endif ( NOT OS_IS_MACOSX )
2016-11-27 22:47:45 +00:00
2014-09-30 23:09:44 +00:00
################################################################################
# Check for availability of SSE
################################################################################
if ( NOT ENABLE_GENERIC_ARCH )
include ( TestForSSE )
endif ( NOT ENABLE_GENERIC_ARCH )
2016-11-27 22:47:45 +00:00
2017-11-25 19:09:10 +00:00
################################################################################
2017-11-25 23:18:21 +00:00
# Find the POSIX thread (pthread) libraries
2017-11-25 19:09:10 +00:00
################################################################################
2017-11-25 23:18:21 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.1 )
2017-11-25 20:47:39 +00:00
find_package ( Threads REQUIRED )
link_libraries ( ${ CMAKE_THREAD_LIBS_INIT } )
2017-11-25 23:18:21 +00:00
else ( CMAKE_VERSION VERSION_LESS 3.1 )
set ( CMAKE_THREAD_PREFER_PTHREAD TRUE )
if ( CMAKE_CROSSCOMPILING )
set ( THREADS_PREFER_PTHREAD_FLAG FALSE )
else ( CMAKE_CROSSCOMPILING )
set ( THREADS_PREFER_PTHREAD_FLAG TRUE )
endif ( CMAKE_CROSSCOMPILING )
find_package ( Threads REQUIRED )
link_libraries ( Threads::Threads )
endif ( CMAKE_VERSION VERSION_LESS 3.1 )
2016-11-27 22:47:45 +00:00
2017-08-08 12:18:19 +00:00
2012-12-25 10:28:29 +00:00
################################################################################
2015-08-24 11:17:48 +00:00
# Googletest - https://github.com/google/googletest
2012-12-25 10:28:29 +00:00
################################################################################
2012-12-28 15:40:03 +00:00
enable_testing ( )
2016-10-01 23:59:12 +00:00
if ( ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING )
if ( EXISTS $ENV{ GTEST_DIR } )
set ( GTEST_DIR $ENV{ GTEST_DIR } )
endif ( EXISTS $ENV{ GTEST_DIR } )
if ( GTEST_DIR )
message ( STATUS "Googletest root folder set at ${GTEST_DIR}" )
find_path ( LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS ${ GTEST_DIR } )
if ( LIBGTEST_DEV_DIR )
message ( STATUS "Googletest has been found." )
else ( LIBGTEST_DEV_DIR )
message ( FATAL_ERROR " Googletest source code has not been found at ${GTEST_DIR}." )
endif ( LIBGTEST_DEV_DIR )
find_path ( GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${ GTEST_DIR } /include )
else ( GTEST_DIR )
2018-02-05 18:59:22 +00:00
find_path ( LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS /usr/src/googletest/googletest /usr/src/gtest /opt/local/src/gtest-1.7.0 )
2016-10-01 23:59:12 +00:00
find_path ( GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS /usr/include /opt/local/src/gtest-1.7.0/include )
if ( LIBGTEST_DEV_DIR )
2018-02-05 18:59:22 +00:00
message ( STATUS "Googletest package has been found." )
2016-10-01 23:59:12 +00:00
else ( LIBGTEST_DEV_DIR )
message ( STATUS " Googletest has not been found." )
message ( STATUS " Googletest will be downloaded and built automatically " )
2017-07-06 17:29:29 +00:00
message ( STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. " )
2016-10-01 23:59:12 +00:00
endif ( LIBGTEST_DEV_DIR )
endif ( GTEST_DIR )
endif ( ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING )
2012-12-25 10:28:29 +00:00
2013-07-04 13:47:40 +00:00
################################################################################
# Boost - http://www.boost.org
################################################################################
if ( UNIX AND EXISTS "/usr/lib64" )
2013-12-14 10:23:33 +00:00
list ( APPEND BOOST_LIBRARYDIR "/usr/lib64" ) # Fedora 64-bit fix
2013-07-04 13:47:40 +00:00
endif ( UNIX AND EXISTS "/usr/lib64" )
set ( Boost_ADDITIONAL_VERSIONS
" 1 . 4 5 . 0 " " 1 . 4 5 " " 1 . 4 6 . 0 " " 1 . 4 6 " " 1 . 4 8 . 0 " " 1 . 4 8 " " 1 . 4 9 . 0 " " 1 . 4 9 "
" 1 . 5 0 . 0 " " 1 . 5 0 " " 1 . 5 1 . 0 " " 1 . 5 1 " " 1 . 5 3 . 0 " " 1 . 5 3 " " 1 . 5 4 . 0 " " 1 . 5 4 "
" 1 . 5 5 . 0 " " 1 . 5 5 " " 1 . 5 6 . 0 " " 1 . 5 6 " " 1 . 5 7 . 0 " " 1 . 5 7 " " 1 . 5 8 . 0 " " 1 . 5 8 " " 1 . 5 9 . 0 " " 1 . 5 9 "
" 1 . 6 0 . 0 " " 1 . 6 0 " " 1 . 6 1 . 0 " " 1 . 6 1 " " 1 . 6 2 . 0 " " 1 . 6 2 " " 1 . 6 3 . 0 " " 1 . 6 3 " " 1 . 6 4 . 0 " " 1 . 6 4 "
" 1 . 6 5 . 0 " " 1 . 6 5 " " 1 . 6 6 . 0 " " 1 . 6 6 " " 1 . 6 7 . 0 " " 1 . 6 7 " " 1 . 6 8 . 0 " " 1 . 6 8 " " 1 . 6 9 . 0 " " 1 . 6 9 "
2016-05-24 15:26:34 +00:00
" 1 . 7 0 . 0 " " 1 . 7 0 " " 1 . 7 1 . 0 " " 1 . 7 1 " " 1 . 7 2 . 0 " " 1 . 7 2 " " 1 . 7 3 . 0 " " 1 . 7 3 " " 1 . 7 4 . 0 " " 1 . 7 4 "
2017-08-07 17:29:05 +00:00
" 1 . 7 5 . 0 " " 1 . 7 5 " " 1 . 7 6 . 0 " " 1 . 7 6 " " 1 . 7 7 . 0 " " 1 . 7 7 " " 1 . 7 8 . 0 " " 1 . 7 8 " " 1 . 7 9 . 0 " " 1 . 7 9 "
2013-07-04 13:47:40 +00:00
)
set ( Boost_USE_MULTITHREAD ON )
set ( Boost_USE_STATIC_LIBS OFF )
2018-02-09 13:32:13 +00:00
find_package ( Boost COMPONENTS date_time system filesystem thread serialization chrono REQUIRED )
2013-07-04 13:47:40 +00:00
if ( NOT Boost_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "Fatal error: Boost (version >=${GNSSSDR_BOOST_MIN_VERSION}) required." )
2013-07-04 13:47:40 +00:00
endif ( NOT Boost_FOUND )
2016-11-27 22:47:45 +00:00
2013-01-19 17:10:57 +00:00
################################################################################
2016-05-24 15:26:34 +00:00
# GNU Radio - http://gnuradio.org
2013-01-19 17:10:57 +00:00
################################################################################
2016-02-02 22:32:48 +00:00
set ( GR_REQUIRED_COMPONENTS RUNTIME ANALOG BLOCKS FFT FILTER PMT )
2013-12-11 23:27:46 +00:00
find_package ( Gnuradio )
2014-12-23 17:54:09 +00:00
if ( PC_GNURADIO_RUNTIME_VERSION )
2017-08-07 17:29:05 +00:00
if ( PC_GNURADIO_RUNTIME_VERSION VERSION_LESS ${ GNSSSDR_GNURADIO_MIN_VERSION } )
2014-12-23 17:54:09 +00:00
set ( GNURADIO_RUNTIME_FOUND )
message ( STATUS "The GNU Radio version installed in your system is too old." )
2017-08-07 17:29:05 +00:00
endif ( PC_GNURADIO_RUNTIME_VERSION VERSION_LESS ${ GNSSSDR_GNURADIO_MIN_VERSION } )
2014-12-23 17:54:09 +00:00
endif ( PC_GNURADIO_RUNTIME_VERSION )
2013-12-10 20:17:57 +00:00
if ( NOT GNURADIO_RUNTIME_FOUND )
2017-08-07 17:29:05 +00:00
message ( STATUS "CMake cannot find GNU Radio >= ${GNSSSDR_GNURADIO_MIN_VERSION}" )
2013-12-10 20:17:57 +00:00
if ( OS_IS_LINUX )
2016-05-24 15:26:34 +00:00
message ( "Go to https://github.com/gnuradio/pybombs" )
2013-12-10 20:17:57 +00:00
message ( "and follow the instructions to install GNU Radio in your system." )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "GNU Radio ${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-12-10 20:17:57 +00:00
endif ( OS_IS_LINUX )
if ( OS_IS_MACOSX )
2016-05-24 15:26:34 +00:00
message ( "You can install it easily via Macports:" )
message ( " sudo port install gnuradio " )
message ( "Alternatively, you can use homebrew:" )
message ( " brew tap odrisci/gnuradio" )
message ( " brew install gnuradio" )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "GNU Radio ${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-12-10 20:17:57 +00:00
endif ( OS_IS_MACOSX )
endif ( NOT GNURADIO_RUNTIME_FOUND )
2016-01-06 10:01:16 +00:00
if ( NOT GNURADIO_ANALOG_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "*** The gnuradio-analog library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2016-01-06 10:01:16 +00:00
endif ( )
2013-07-06 02:15:09 +00:00
if ( NOT GNURADIO_BLOCKS_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "*** The gnuradio-blocks library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-07-06 02:15:09 +00:00
endif ( )
if ( NOT GNURADIO_FILTER_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "*** The gnuradio-filter library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-07-06 02:15:09 +00:00
endif ( )
if ( NOT GNURADIO_FFT_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "*** The gnuradio-fft library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-07-06 02:15:09 +00:00
endif ( )
2016-01-06 10:01:16 +00:00
if ( NOT GNURADIO_PMT_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "*** The gnuradio-pmt library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr" )
2013-07-06 02:15:09 +00:00
endif ( )
2013-01-01 11:24:42 +00:00
2014-11-17 19:42:50 +00:00
2016-01-06 01:05:34 +00:00
2014-11-17 19:42:50 +00:00
################################################################################
# VOLK - Vector-Optimized Library of Kernels
################################################################################
2014-11-14 20:42:22 +00:00
find_package ( Volk )
if ( NOT VOLK_FOUND )
message ( FATAL_ERROR "*** VOLK is required to build gnss-sdr" )
endif ( )
2013-01-01 11:24:42 +00:00
2017-04-25 18:08:45 +00:00
################################################################################
2018-02-07 17:35:45 +00:00
# Log4cpp - http://log4cpp.sourceforge.net/
2017-04-25 18:08:45 +00:00
################################################################################
find_package ( Log4cpp )
if ( NOT LOG4CPP_FOUND )
2018-01-31 13:47:33 +00:00
message ( FATAL_ERROR "*** Log4cpp is required to build gnss-sdr" )
2017-04-25 18:08:45 +00:00
endif ( )
2014-10-28 00:00:04 +00:00
################################################################################
2014-11-07 17:23:59 +00:00
# volk_gnsssdr module - GNSS-SDR's own VOLK library
2014-10-28 00:00:04 +00:00
################################################################################
2014-11-07 19:51:01 +00:00
find_package ( VolkGnssSdr )
2016-12-25 19:40:29 +00:00
2014-11-07 19:51:01 +00:00
if ( NOT VOLK_GNSSSDR_FOUND )
2017-07-06 17:29:29 +00:00
message ( STATUS " volk_gnsssdr will be built along with gnss-sdr when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'" )
2016-12-25 19:40:29 +00:00
###############################
# Find Python required modules
###############################
include ( SetupPython ) #sets PYTHON_EXECUTABLE and PYTHON_DASH_B
2017-08-07 17:29:05 +00:00
GNSSSDR_PYTHON_CHECK_MODULE ( "python >= ${GNSSSDR_PYTHON_MIN_VERSION}" sys "sys.version.split()[0] >= '${GNSSSDR_PYTHON_MIN_VERSION}'" PYTHON_MIN_VER_FOUND )
GNSSSDR_PYTHON_CHECK_MODULE ( "mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND )
2016-12-25 19:40:29 +00:00
GNSSSDR_PYTHON_CHECK_MODULE ( "six - python 2 and 3 compatibility library" six "True" SIX_FOUND )
if ( NOT PYTHON_MIN_VER_FOUND )
2017-08-07 17:29:05 +00:00
message ( FATAL_ERROR "Python ${GNSSSDR_PYTHON_MIN_VERSION} or greater required to build VOLK_GNSSSDR" )
2016-12-25 19:40:29 +00:00
endif ( )
# Mako
if ( NOT MAKO_FOUND )
2016-12-26 11:27:07 +00:00
message ( STATUS "Mako templates not found. See http://www.makotemplates.org/ " )
2016-12-26 10:42:38 +00:00
message ( STATUS " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo yum install python-mako" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( STATUS " sudo zypper install python-Mako" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo apt-get install python-mako" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
2016-12-25 19:40:29 +00:00
message ( FATAL_ERROR "Mako templates required to build VOLK_GNSSSDR" )
endif ( NOT MAKO_FOUND )
2016-12-26 11:42:20 +00:00
2016-12-25 19:40:29 +00:00
# Six
if ( NOT SIX_FOUND )
2016-12-26 11:27:07 +00:00
message ( STATUS "python-six not found. See https://pythonhosted.org/six/ " )
2016-12-26 10:42:38 +00:00
message ( STATUS " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo yum install python-six" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( STATUS " sudo zypper install python-six" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo apt-get install python-six" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
2016-12-25 19:40:29 +00:00
message ( FATAL_ERROR "six - python 2 and 3 compatibility library required to build VOLK_GNSSSDR" )
endif ( NOT SIX_FOUND )
2016-12-26 11:42:20 +00:00
2018-02-05 13:53:07 +00:00
set ( READ_ENVIRO "" )
2016-12-25 19:40:29 +00:00
if ( ENABLE_PACKAGING )
if ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
2017-07-23 19:09:41 +00:00
set ( STRIP_VOLK_GNSSSDR_PROFILE "-DENABLE_STRIP=ON -DCMAKE_VERBOSE_MAKEFILE=ON" )
2016-12-25 19:40:29 +00:00
endif ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
2018-02-05 14:02:23 +00:00
set ( READ_ENVIRO ${ CMAKE_COMMAND } -E environment )
2016-12-25 19:40:29 +00:00
endif ( ENABLE_PACKAGING )
2016-12-26 11:42:20 +00:00
2017-06-21 06:54:47 +00:00
set ( VOLK_GNSSSDR_BUILD_COMMAND "${CMAKE_MAKE_PROGRAM}" )
2016-12-25 19:40:29 +00:00
if ( PYTHON_EXECUTABLE )
set ( USE_THIS_PYTHON "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" )
endif ( PYTHON_EXECUTABLE )
if ( OS_IS_MACOSX )
if ( CMAKE_GENERATOR STREQUAL Xcode )
set ( VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" "-configuration" "Debug" "-target" )
endif ( CMAKE_GENERATOR STREQUAL Xcode )
endif ( OS_IS_MACOSX )
2016-12-26 11:42:20 +00:00
2017-04-06 19:16:44 +00:00
if ( CMAKE_CROSSCOMPILING )
set ( VOLK_GNSSSDR_COMPILER "" )
else ( CMAKE_CROSSCOMPILING )
2016-12-20 02:29:40 +00:00
set ( VOLK_GNSSSDR_COMPILER -DCMAKE_C_COMPILER= ${ CMAKE_C_COMPILER } -DCMAKE_CXX_COMPILER= ${ CMAKE_CXX_COMPILER } )
2016-12-20 01:35:52 +00:00
endif ( CMAKE_CROSSCOMPILING )
set ( VOLK_GNSSSDR_CMAKE_ARGS ${ VOLK_GNSSSDR_COMPILER }
2015-09-06 15:06:00 +00:00
- D C M A K E _ I N S T A L L _ P R E F I X = $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l
- D E N A B L E _ S T A T I C _ L I B S = O N
2016-07-02 16:54:39 +00:00
- D E N A B L E _ P R O F I L I N G = $ { E N A B L E _ P R O F I L I N G }
2016-12-29 00:15:51 +00:00
- D C M A K E _ I N C L U D E _ P A T H = $ { B o o s t _ I N C L U D E _ D I R }
2017-04-01 09:47:13 +00:00
- D E N A B L E _ O R C = O F F
2016-09-21 18:37:52 +00:00
$ { S T R I P _ V O L K _ G N S S S D R _ P R O F I L E }
2015-09-06 15:06:00 +00:00
$ { U S E _ T H I S _ P Y T H O N } )
2016-12-20 01:35:52 +00:00
if ( EXISTS $ENV{ OECORE_TARGET_SYSROOT } )
2017-04-06 19:16:44 +00:00
set ( VOLK_GNSSSDR_CMAKE_ARGS ${ VOLK_GNSSSDR_CMAKE_ARGS }
2016-12-20 01:35:52 +00:00
- D C M A K E _ T O O L C H A I N _ F I L E = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / T o o l c h a i n s / o e - s d k _ c r o s s . c m a k e
- D C R O S S C O M P I L E _ M U L T I L I B = T R U E )
endif ( EXISTS $ENV{ OECORE_TARGET_SYSROOT } )
2017-06-22 18:17:37 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add ( volk_gnsssdr_module
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / a l g o r i t h m s / l i b s / v o l k _ g n s s s d r _ m o d u l e / v o l k _ g n s s s d r
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / b u i l d
2018-02-05 13:53:07 +00:00
C M A K E _ A R G S $ { R E A D _ E N V I R O } $ { V O L K _ G N S S S D R _ C M A K E _ A R G S }
2017-06-22 18:17:37 +00:00
D O W N L O A D _ C O M M A N D " "
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
2018-02-05 13:53:07 +00:00
B U I L D _ C O M M A N D $ { R E A D _ E N V I R O } $ { V O L K _ G N S S S D R _ B U I L D _ C O M M A N D } v o l k _ g n s s s d r _ p r o f i l e
2017-07-13 15:28:08 +00:00
I N S T A L L _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l
2017-06-22 18:17:37 +00:00
)
else ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add ( volk_gnsssdr_module
2014-11-07 20:44:44 +00:00
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / a l g o r i t h m s / l i b s / v o l k _ g n s s s d r _ m o d u l e / v o l k _ g n s s s d r
2015-03-20 20:24:02 +00:00
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / b u i l d
2018-02-05 13:53:07 +00:00
C M A K E _ A R G S $ { R E A D _ E N V I R O } $ { V O L K _ G N S S S D R _ C M A K E _ A R G S }
2014-11-07 20:44:44 +00:00
D O W N L O A D _ C O M M A N D " "
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
2018-02-05 13:53:07 +00:00
B U I L D _ C O M M A N D $ { R E A D _ E N V I R O } $ { V O L K _ G N S S S D R _ B U I L D _ C O M M A N D } v o l k _ g n s s s d r _ p r o f i l e
2017-06-21 06:54:47 +00:00
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l / l i b / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } v o l k _ g n s s s d r $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l / b i n / v o l k _ g n s s s d r _ p r o f i l e
2017-07-13 15:28:08 +00:00
I N S T A L L _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l
2014-11-07 20:44:44 +00:00
)
2017-06-22 18:17:37 +00:00
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
2014-11-07 20:44:44 +00:00
find_package ( ORC )
if ( NOT ORC_FOUND )
set ( ORC_LIBRARIES "" )
set ( ORC_INCLUDE_DIRS "" )
endif ( NOT ORC_FOUND )
2015-03-20 16:02:41 +00:00
2014-11-07 20:44:44 +00:00
add_library ( volk_gnsssdr UNKNOWN IMPORTED )
2017-06-21 06:54:47 +00:00
set_property ( TARGET volk_gnsssdr PROPERTY IMPORTED_LOCATION ${ CMAKE_CURRENT_BINARY_DIR } /volk_gnsssdr_module/install/lib/libvolk_gnsssdr ${ CMAKE_STATIC_LIBRARY_SUFFIX } )
2014-11-17 19:42:50 +00:00
set ( VOLK_GNSSSDR_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/build/include/;${CMAKE_CURRENT_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include;${ORC_INCLUDE_DIRS}" )
2016-10-23 09:12:13 +00:00
set ( VOLK_GNSSSDR_LIBRARIES volk_gnsssdr ${ ORC_LIBRARIES } )
2014-11-07 17:23:59 +00:00
2017-06-22 18:59:45 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.2 )
add_custom_command ( TARGET volk_gnsssdr_module POST_BUILD
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l / b i n / v o l k _ g n s s s d r _ p r o f i l e
$ { C M A K E _ S O U R C E _ D I R } / i n s t a l l / v o l k _ g n s s s d r _ p r o f i l e )
else ( CMAKE_VERSION VERSION_LESS 3.2 )
add_custom_command ( TARGET volk_gnsssdr_module POST_BUILD
2016-07-06 18:25:39 +00:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l / b i n / v o l k _ g n s s s d r _ p r o f i l e
2017-06-21 06:54:47 +00:00
$ { C M A K E _ S O U R C E _ D I R } / i n s t a l l / v o l k _ g n s s s d r _ p r o f i l e
B Y P R O D U C T S $ { C M A K E _ S O U R C E _ D I R } / i n s t a l l / v o l k _ g n s s s d r _ p r o f i l e )
2017-06-22 18:59:45 +00:00
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
2017-07-13 15:28:08 +00:00
2016-07-06 18:25:39 +00:00
add_custom_command ( TARGET volk_gnsssdr_module POST_BUILD
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v o l k _ g n s s s d r _ m o d u l e / i n s t a l l / b i n / v o l k _ g n s s s d r - c o n f i g - i n f o
2016-09-21 18:37:52 +00:00
$ { C M A K E _ S O U R C E _ D I R } / i n s t a l l / v o l k _ g n s s s d r - c o n f i g - i n f o )
2014-11-07 19:51:01 +00:00
endif ( NOT VOLK_GNSSSDR_FOUND )
2014-09-07 23:56:09 +00:00
2013-11-13 21:07:33 +00:00
2016-11-27 22:47:45 +00:00
2013-01-01 11:24:42 +00:00
################################################################################
2015-03-24 18:53:10 +00:00
# gflags - https://github.com/gflags/gflags
2013-01-01 11:24:42 +00:00
################################################################################
2014-11-12 19:22:02 +00:00
set ( LOCAL_GFLAGS false )
2013-01-01 11:24:42 +00:00
find_package ( GFlags )
2014-11-09 20:04:52 +00:00
if ( NOT GFlags_FOUND )
2013-12-20 00:11:14 +00:00
message ( STATUS " gflags library has not been found." )
message ( STATUS " gflags will be downloaded and built automatically " )
message ( STATUS " when doing 'make'. " )
2017-07-13 15:28:08 +00:00
2017-06-22 18:17:37 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
2017-11-04 18:22:40 +00:00
g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
2017-06-22 18:17:37 +00:00
G I T _ R E P O S I T O R Y g i t : / / g i t h u b . c o m / g f l a g s / g f l a g s . g i t
2017-11-04 18:22:40 +00:00
G I T _ T A G v $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g f l a g s / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
2017-06-22 18:17:37 +00:00
C M A K E _ A R G S - D B U I L D _ S H A R E D _ L I B S = O N - D B U I L D _ S T A T I C _ L I B S = O N - D B U I L D _ g f l a g s _ n o t h r e a d s _ L I B = O F F - D C M A K E _ C X X _ C O M P I L E R = $ { C M A K E _ C X X _ C O M P I L E R }
B U I L D _ C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M }
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
I N S T A L L _ C O M M A N D " "
)
else ( CMAKE_VERSION VERSION_LESS 3.2 )
2013-01-01 11:24:42 +00:00
ExternalProject_Add (
2017-11-04 18:22:40 +00:00
g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
2015-04-30 13:16:44 +00:00
G I T _ R E P O S I T O R Y g i t : / / g i t h u b . c o m / g f l a g s / g f l a g s . g i t
2017-11-04 18:22:40 +00:00
G I T _ T A G v $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g f l a g s / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N }
2015-03-24 18:53:10 +00:00
C M A K E _ A R G S - D B U I L D _ S H A R E D _ L I B S = O N - D B U I L D _ S T A T I C _ L I B S = O N - D B U I L D _ g f l a g s _ n o t h r e a d s _ L I B = O F F - D C M A K E _ C X X _ C O M P I L E R = $ { C M A K E _ C X X _ C O M P I L E R }
2017-06-21 06:54:47 +00:00
B U I L D _ C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M }
2017-11-04 18:22:40 +00:00
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N } / l i b / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } g f l a g s $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
2013-01-01 11:24:42 +00:00
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
I N S T A L L _ C O M M A N D " "
)
2017-06-22 18:17:37 +00:00
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
2017-07-13 15:28:08 +00:00
2015-03-20 16:02:41 +00:00
set ( GFlags_INCLUDE_DIRS
2017-11-04 18:22:40 +00:00
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g f l a g s - $ { G N S S S D R _ G F L A G S _ L O C A L _ V E R S I O N } / i n c l u d e C A C H E P A T H " L o c a l G f l a g s h e a d e r s "
2013-01-01 11:24:42 +00:00
)
2015-03-20 16:02:41 +00:00
2013-12-20 03:02:47 +00:00
add_library ( gflags UNKNOWN IMPORTED )
2017-11-04 18:22:40 +00:00
set_property ( TARGET gflags PROPERTY IMPORTED_LOCATION ${ CMAKE_CURRENT_BINARY_DIR } /gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } /lib/ ${ CMAKE_FIND_LIBRARY_PREFIXES } gflags ${ CMAKE_STATIC_LIBRARY_SUFFIX } )
add_dependencies ( gflags gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } )
2013-12-20 03:02:47 +00:00
set ( GFlags_LIBS gflags )
2017-11-04 18:22:40 +00:00
file ( GLOB GFlags_SHARED_LIBS "${CMAKE_CURRENT_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_SHARED_LIBRARY_SUFFIX}*" )
set ( GFlags_LIBRARY gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } )
set ( GFlags_LIBRARY_PATH ${ CMAKE_CURRENT_BINARY_DIR } /gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } /lib )
2013-01-01 11:24:42 +00:00
link_directories ( ${ GFlags_LIBRARY_PATH } )
2013-12-20 03:02:47 +00:00
set ( GFlags_lib ${ GFlags_LIBS } CACHE FILEPATH "Local Gflags library" )
2013-01-01 11:24:42 +00:00
set ( GFlags_LIBRARY_PATH ${ GFlags_LIBS } )
2013-12-20 03:02:47 +00:00
set ( LOCAL_GFLAGS true CACHE STRING "GFlags downloaded and built automatically" FORCE )
2014-11-09 20:04:52 +00:00
endif ( NOT GFlags_FOUND )
2013-01-01 11:24:42 +00:00
2016-11-27 22:47:45 +00:00
2012-12-24 02:33:50 +00:00
################################################################################
2015-03-24 20:44:03 +00:00
# glog - https://github.com/google/glog
2012-12-24 02:33:50 +00:00
################################################################################
2014-11-14 00:40:43 +00:00
if ( NOT ${ ENABLE_OWN_GLOG } )
find_package ( GLOG )
2014-12-07 11:05:38 +00:00
if ( GLOG_INCLUDE_DIRS )
set ( GLOG_FOUND ON )
endif ( GLOG_INCLUDE_DIRS )
2014-11-14 00:40:43 +00:00
endif ( NOT ${ ENABLE_OWN_GLOG } )
2017-11-04 18:22:40 +00:00
set ( glog_RELEASE ${ GNSSSDR_GLOG_LOCAL_VERSION } )
2014-11-11 22:50:38 +00:00
if ( NOT GLOG_FOUND OR ${ LOCAL_GFLAGS } )
2013-12-20 00:11:14 +00:00
message ( STATUS " glog library has not been found" )
2013-07-04 13:47:40 +00:00
if ( NOT GFlags_FOUND )
2013-12-20 00:11:14 +00:00
message ( STATUS " or it is likely not linked to gflags." )
2013-07-04 13:47:40 +00:00
endif ( NOT GFlags_FOUND )
2013-12-20 00:11:14 +00:00
message ( STATUS " glog will be downloaded and built automatically " )
message ( STATUS " when doing 'make'. " )
2014-11-09 20:04:52 +00:00
if ( NOT ${ LOCAL_GFLAGS } )
2017-11-04 18:22:40 +00:00
add_library ( gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } UNKNOWN IMPORTED )
set_property ( TARGET gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}" )
2014-11-09 20:04:52 +00:00
endif ( NOT ${ LOCAL_GFLAGS } )
2017-11-04 18:22:40 +00:00
set ( TARGET_GFLAGS gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } )
2014-11-09 20:04:52 +00:00
if ( ${ LOCAL_GFLAGS } )
2016-11-04 15:25:34 +00:00
set ( GFLAGS_LIBRARIES_TO_LINK ${ GFlags_SHARED_LIBS } )
2017-11-04 18:22:40 +00:00
set ( GFLAGS_LIBRARY_DIR_TO_LINK ${ CMAKE_CURRENT_BINARY_DIR } /gflags- ${ GNSSSDR_GFLAGS_LOCAL_VERSION } /lib )
2016-11-24 18:49:35 +00:00
else ( ${ LOCAL_GFLAGS } )
2016-11-04 15:25:34 +00:00
set ( GFLAGS_LIBRARIES_TO_LINK ${ GFlags_LIBS } )
2016-11-05 08:20:24 +00:00
set ( GFLAGS_LIBRARY_DIR_TO_LINK ${ GFlags_LIBRARY_DIRS } )
2016-11-04 15:25:34 +00:00
endif ( ${ LOCAL_GFLAGS } )
2016-11-24 18:49:35 +00:00
2016-11-04 15:25:34 +00:00
if ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2017-11-04 18:22:40 +00:00
file ( WRITE ${ CMAKE_CURRENT_BINARY_DIR } /glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } /tmp/configure_with_gflags
2014-05-18 10:53:16 +00:00
" #!/bin/sh
e x p o r t C P P F L A G S = - I $ { G F l a g s _ I N C L U D E _ D I R S }
2016-11-05 08:20:24 +00:00
e x p o r t L D F L A G S = - L $ { G F L A G S _ L I B R A R Y _ D I R _ T O _ L I N K }
e x p o r t L I B S = \ " $ { G F L A G S _ L I B R A R I E S _ T O _ L I N K } - l c + + \ "
2015-03-20 16:02:41 +00:00
e x p o r t C X X F L A G S = \ " - s t d l i b = l i b c + + \ "
e x p o r t C C = c l a n g
2014-05-18 10:53:16 +00:00
e x p o r t C X X = c l a n g + +
2017-11-04 18:22:40 +00:00
c d $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } /
2016-11-04 11:55:09 +00:00
a c l o c a l
a u t o m a k e - - a d d - m i s s i n g
a u t o r e c o n f - v f i
2017-11-04 18:22:40 +00:00
c d $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / c o n f i g u r e " )
2016-11-04 15:25:34 +00:00
else ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2017-11-04 18:22:40 +00:00
file ( WRITE ${ CMAKE_CURRENT_BINARY_DIR } /glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } /tmp/configure_with_gflags
2014-11-09 20:04:52 +00:00
" #!/bin/sh
e x p o r t C P P F L A G S = - I $ { G F l a g s _ I N C L U D E _ D I R S }
2016-11-05 08:20:24 +00:00
e x p o r t L D F L A G S = - L $ { G F L A G S _ L I B R A R Y _ D I R _ T O _ L I N K }
2016-11-04 15:25:34 +00:00
e x p o r t L I B S = $ { G F L A G S _ L I B R A R I E S _ T O _ L I N K }
2017-11-04 18:22:40 +00:00
c d $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } /
2016-11-04 11:55:09 +00:00
a c l o c a l
a u t o m a k e - - a d d - m i s s i n g
a u t o r e c o n f - v f i
2017-11-04 18:22:40 +00:00
c d $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / c o n f i g u r e " )
2016-11-04 15:25:34 +00:00
endif ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2017-11-04 18:22:40 +00:00
file ( COPY ${ CMAKE_CURRENT_BINARY_DIR } /glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } /tmp/configure_with_gflags
D E S T I N A T I O N $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2016-11-04 15:25:34 +00:00
F I L E _ P E R M I S S I O N S O W N E R _ R E A D O W N E R _ W R I T E O W N E R _ E X E C U T E G R O U P _ R E A D
G R O U P _ E X E C U T E W O R L D _ R E A D W O R L D _ E X E C U T E )
2013-07-04 13:47:40 +00:00
2017-11-04 18:22:40 +00:00
set ( GLOG_CONFIGURE ${ CMAKE_CURRENT_BINARY_DIR } /glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } /configure_with_gflags )
2017-04-06 19:16:44 +00:00
2016-11-27 12:42:52 +00:00
# Ensure that aclocal and libtool are present
if ( OS_IS_LINUX )
if ( EXISTS "/usr/bin/libtoolize" )
2018-02-23 21:16:20 +00:00
if ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2016-11-27 12:42:52 +00:00
# Everything ok, we can move on
2018-02-23 21:16:20 +00:00
else ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2016-11-27 12:42:52 +00:00
message ( " aclocal has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum groupinstall 'Development Tools'" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( " sudo zypper install automake" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install automake" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "aclocal is required to build glog from source" )
2018-02-23 21:16:20 +00:00
endif ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2016-11-27 22:47:45 +00:00
else ( EXISTS "/usr/bin/libtoolize" )
2016-11-27 12:42:52 +00:00
message ( " libtool has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum groupinstall 'Development Tools'" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( " sudo zypper install libtoool" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install libtool" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "libtool is required to build glog from source" )
2016-11-27 22:47:45 +00:00
endif ( EXISTS "/usr/bin/libtoolize" )
2016-11-27 12:42:52 +00:00
endif ( OS_IS_LINUX )
2015-03-24 20:44:03 +00:00
2017-06-22 18:17:37 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
2017-11-04 18:22:40 +00:00
g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2017-06-22 18:17:37 +00:00
D E P E N D S $ { T A R G E T _ G F L A G S }
2017-11-04 18:22:40 +00:00
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2017-06-22 18:17:37 +00:00
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / g o o g l e / g l o g /
2017-11-04 18:22:40 +00:00
G I T _ T A G v $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2017-06-22 18:17:37 +00:00
C O N F I G U R E _ C O M M A N D $ { G L O G _ C O N F I G U R E } - - p r e f i x = < I N S T A L L _ D I R >
B U I L D _ C O M M A N D " $ { C M A K E _ M A K E _ P R O G R A M } "
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
I N S T A L L _ C O M M A N D " "
)
else ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
2017-11-04 18:22:40 +00:00
g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2015-03-24 20:44:03 +00:00
D E P E N D S $ { T A R G E T _ G F L A G S }
2017-11-04 18:22:40 +00:00
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2015-03-24 20:44:03 +00:00
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / g o o g l e / g l o g /
2017-11-04 18:22:40 +00:00
G I T _ T A G v $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N }
2015-03-24 20:44:03 +00:00
C O N F I G U R E _ C O M M A N D $ { G L O G _ C O N F I G U R E } - - p r e f i x = < I N S T A L L _ D I R >
2017-06-21 06:54:47 +00:00
B U I L D _ C O M M A N D " $ { C M A K E _ M A K E _ P R O G R A M } "
2017-11-04 18:22:40 +00:00
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / . l i b s / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } g l o g $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
2015-03-24 20:44:03 +00:00
U P D A T E _ C O M M A N D " "
P A T C H _ C O M M A N D " "
I N S T A L L _ C O M M A N D " "
2017-06-22 18:17:37 +00:00
)
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
2015-03-24 20:44:03 +00:00
2012-12-29 21:07:43 +00:00
# Set up variables
2015-03-20 16:02:41 +00:00
set ( GLOG_INCLUDE_DIRS
2017-11-04 18:22:40 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / g l o g / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / s r c /
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / s r c
2012-12-29 21:07:43 +00:00
)
2015-03-20 16:02:41 +00:00
set ( GLOG_LIBRARIES
2017-11-04 18:22:40 +00:00
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / g l o g - $ { G N S S S D R _ G L O G _ L O C A L _ V E R S I O N } / . l i b s / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } g l o g $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
2012-12-29 21:07:43 +00:00
)
2013-12-20 03:02:47 +00:00
set ( LOCAL_GLOG true CACHE STRING "Glog downloaded and built automatically" FORCE )
2015-03-20 16:02:41 +00:00
else ( NOT GLOG_FOUND OR ${ LOCAL_GFLAGS } )
2017-11-04 18:22:40 +00:00
add_library ( glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } UNKNOWN IMPORTED )
set_property ( TARGET glog- ${ GNSSSDR_GLOG_LOCAL_VERSION } PROPERTY IMPORTED_LOCATION "${GLOG_LIBRARIES}" )
2014-11-11 22:50:38 +00:00
endif ( NOT GLOG_FOUND OR ${ LOCAL_GFLAGS } )
2012-12-24 02:33:50 +00:00
2015-05-23 09:20:26 +00:00
if ( NOT ENABLE_LOG )
message ( STATUS "Logging is not enabled" )
add_definitions ( -DGOOGLE_STRIP_LOG=1 )
endif ( NOT ENABLE_LOG )
2013-01-11 14:13:07 +00:00
2017-11-26 00:48:48 +00:00
#############################################################################
# Check that BLAS (Basic Linear Algebra Subprograms) is found in the system
# See http://www.netlib.org/blas/
#############################################################################
find_library ( BLAS blas )
if ( NOT BLAS )
message ( " The BLAS library has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum install blas-devel" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install libblas-dev" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "BLAS is required to build gnss-sdr" )
endif ( NOT BLAS )
#############################################################################
# Check that LAPACK (Linear Algebra PACKage) is found in the system
# See http://www.netlib.org/lapack/
#############################################################################
find_library ( LAPACK lapack )
if ( NOT LAPACK )
message ( " The LAPACK library has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum install lapack-devel" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( " sudo zypper install lapack-devel" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install liblapack-dev" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "LAPACK is required to build gnss-sdr" )
endif ( NOT LAPACK )
2017-11-25 19:09:10 +00:00
2013-11-27 21:11:21 +00:00
2017-11-25 19:09:10 +00:00
################################################################################
# Armadillo - http://arma.sourceforge.net/
################################################################################
2012-12-24 02:33:50 +00:00
find_package ( Armadillo )
2017-08-08 12:18:19 +00:00
if ( ARMADILLO_FOUND )
if ( ${ ARMADILLO_VERSION_STRING } VERSION_LESS ${ GNSSSDR_ARMADILLO_MIN_VERSION } )
set ( ARMADILLO_FOUND false )
set ( ENABLE_OWN_ARMADILLO true )
endif ( ${ ARMADILLO_VERSION_STRING } VERSION_LESS ${ GNSSSDR_ARMADILLO_MIN_VERSION } )
endif ( ARMADILLO_FOUND )
2017-08-07 17:29:05 +00:00
2017-02-03 11:04:15 +00:00
if ( NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO )
2015-03-22 10:33:28 +00:00
message ( STATUS " Armadillo has not been found." )
2017-04-06 19:16:44 +00:00
message ( STATUS " Armadillo will be downloaded and built automatically" )
2017-07-06 17:29:29 +00:00
message ( STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. " )
2017-11-04 18:22:40 +00:00
set ( armadillo_BRANCH ${ GNSSSDR_ARMADILLO_LOCAL_VERSION } )
2017-04-06 19:16:44 +00:00
set ( armadillo_RELEASE ${ armadillo_BRANCH } )
2018-01-31 13:47:33 +00:00
2017-11-26 00:48:48 +00:00
#############################################
# Check if GFORTRAN is found in the system
#############################################
if ( NOT OS_IS_MACOSX )
find_package ( GFORTRAN )
if ( NOT GFORTRAN )
message ( STATUS "The gfortran library has not been found." )
message ( STATUS " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo yum install gcc-fortran" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( STATUS " sudo zypper install gcc-fortran" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( STATUS " sudo apt-get install gfortran" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "gfortran is required to build gnss-sdr" )
endif ( NOT GFORTRAN )
endif ( NOT OS_IS_MACOSX )
2015-03-20 16:02:41 +00:00
2017-11-26 00:48:48 +00:00
#############################################
# Download and build Armadillo
#############################################
2017-06-22 18:17:37 +00:00
if ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / c o n r a d s n i c t a / a r m a d i l l o - c o d e . g i t
G I T _ T A G $ { a r m a d i l l o _ B R A N C H }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / a r m a d i l l o / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
C M A K E _ A R G S - D C M A K E _ C X X _ C O M P I L E R = $ { C M A K E _ C X X _ C O M P I L E R } - D B U I L D _ S H A R E D _ L I B S = O F F - D C M A K E _ C X X _ F L A G S = - s t d = c + + 1 1
B U I L D _ C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M }
U P D A T E _ C O M M A N D " "
I N S T A L L _ C O M M A N D " "
2017-07-13 15:28:08 +00:00
)
2017-06-22 18:17:37 +00:00
else ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
2014-05-31 09:18:24 +00:00
a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
2017-04-06 19:16:44 +00:00
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / c o n r a d s n i c t a / a r m a d i l l o - c o d e . g i t
G I T _ T A G $ { a r m a d i l l o _ B R A N C H }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / a r m a d i l l o / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
2017-04-07 10:29:50 +00:00
B I N A R Y _ D I R $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E }
2017-04-07 11:22:17 +00:00
C M A K E _ A R G S - D C M A K E _ C X X _ C O M P I L E R = $ { C M A K E _ C X X _ C O M P I L E R } - D B U I L D _ S H A R E D _ L I B S = O F F - D C M A K E _ C X X _ F L A G S = - s t d = c + + 1 1
2017-06-21 06:54:47 +00:00
B U I L D _ C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M }
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / a r m a d i l l o - $ { a r m a d i l l o _ R E L E A S E } / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } a r m a d i l l o $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
2015-03-20 16:02:41 +00:00
U P D A T E _ C O M M A N D " "
2014-05-31 09:18:24 +00:00
I N S T A L L _ C O M M A N D " "
2017-06-22 18:17:37 +00:00
)
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
2014-05-31 09:18:24 +00:00
2013-01-03 01:48:34 +00:00
# Set up variables
ExternalProject_Get_Property ( armadillo- ${ armadillo_RELEASE } binary_dir )
2017-04-07 10:29:50 +00:00
set ( ARMADILLO_INCLUDE_DIRS ${ CMAKE_CURRENT_SOURCE_DIR } /thirdparty/armadillo/armadillo- ${ armadillo_RELEASE } /include )
2015-03-22 10:33:28 +00:00
if ( NOT GFORTRAN )
set ( GFORTRAN "" )
endif ( NOT GFORTRAN )
2017-06-21 06:54:47 +00:00
set ( ARMADILLO_LIBRARIES ${ BLAS } ${ LAPACK } ${ GFORTRAN } ${ binary_dir } / ${ CMAKE_FIND_LIBRARY_PREFIXES } armadillo ${ CMAKE_STATIC_LIBRARY_SUFFIX } )
2014-01-08 10:20:11 +00:00
set ( LOCAL_ARMADILLO true CACHE STRING "Armadillo downloaded and built automatically" FORCE )
2017-02-03 11:04:15 +00:00
set ( ARMADILLO_VERSION_STRING ${ armadillo_RELEASE } )
else ( NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO )
2015-03-20 16:02:41 +00:00
set ( armadillo_RELEASE ${ ARMADILLO_VERSION_STRING } )
2014-06-20 01:34:19 +00:00
add_library ( armadillo- ${ armadillo_RELEASE } UNKNOWN IMPORTED )
set_property ( TARGET armadillo- ${ armadillo_RELEASE } PROPERTY IMPORTED_LOCATION "${ARMADILLO_LIBRARIES}" )
2017-02-03 11:04:15 +00:00
endif ( NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO )
2012-12-24 02:33:50 +00:00
2013-10-18 18:26:06 +00:00
2013-11-27 21:11:21 +00:00
################################################################################
2015-09-14 23:41:18 +00:00
# GnuTLS - http://www.gnutls.org/
2013-11-27 21:11:21 +00:00
################################################################################
2015-09-14 23:41:18 +00:00
find_package ( GnuTLS )
2015-10-27 19:18:48 +00:00
find_library ( GNUTLS_OPENSSL_LIBRARY NAMES gnutls-openssl libgnutls-openssl.so.27
2016-09-21 18:37:52 +00:00
H I N T S / u s r / l i b
/ u s r / l i b 6 4
/ u s r / l o c a l / l i b
/ u s r / l o c a l / l i b 6 4
2015-10-27 19:18:48 +00:00
/ o p t / l o c a l / l i b
/ u s r / l i b / x 8 6 _ 6 4 - l i n u x - g n u
/ u s r / l i b / a a r c h 6 4 - l i n u x - g n u
/ u s r / l i b / a r m - l i n u x - g n u e a b i h f
/ u s r / l i b / a r m - l i n u x - g n u e a b i
/ u s r / l i b / i 3 8 6 - l i n u x - g n u
2016-11-27 22:51:51 +00:00
/ u s r / l i b / a l p h a - l i n u x - g n u
/ u s r / l i b / h p p a - l i n u x - g n u
2017-11-25 19:09:10 +00:00
/ u s r / l i b / i 3 8 6 - g n u
2016-11-27 22:51:51 +00:00
/ u s r / l i b / i 6 8 6 - g n u
/ u s r / l i b / i 6 8 6 - l i n u x - g n u
/ u s r / l i b / x 8 6 _ 6 4 - k f r e e b s d - g n u
/ u s r / l i b / i 6 8 6 - k f r e e b s d - g n u
/ u s r / l i b / m 6 8 k - l i n u x - g n u
/ u s r / l i b / m i p s - l i n u x - g n u
/ u s r / l i b / m i p s 6 4 e l - l i n u x - g n u a b i 6 4
/ u s r / l i b / m i p s e l - l i n u x - g n u
/ u s r / l i b / p o w e r p c - l i n u x - g n u
/ u s r / l i b / p o w e r p c - l i n u x - g n u s p e
/ u s r / l i b / p o w e r p c 6 4 - l i n u x - g n u
/ u s r / l i b / p o w e r p c 6 4 l e - l i n u x - g n u
/ u s r / l i b / s 3 9 0 x - l i n u x - g n u
/ u s r / l i b / s p a r c 6 4 - l i n u x - g n u
/ u s r / l i b / x 8 6 _ 6 4 - l i n u x - g n u x 3 2
/ u s r / l i b / s h 4 - l i n u x - g n u
2015-10-27 19:18:48 +00:00
)
2016-09-21 18:37:52 +00:00
2015-10-27 19:18:48 +00:00
if ( NOT GNUTLS_OPENSSL_LIBRARY )
message ( STATUS "Looking for OpenSSL instead..." )
find_package ( OpenSSL )
if ( OPENSSL_FOUND )
set ( GNUTLS_INCLUDE_DIR ${ OPENSSL_INCLUDE_DIR } )
set ( GNUTLS_LIBRARIES "" )
set ( GNUTLS_OPENSSL_LIBRARY ${ OPENSSL_SSL_LIBRARY } )
else ( OPENSSL_FOUND )
message ( " The GnuTLS library with openssl compatibility enabled has not been found." )
2015-10-27 19:39:02 +00:00
message ( " You can try to install the required libraries by typing:" )
2015-10-27 19:18:48 +00:00
if ( OS_IS_LINUX )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
2015-10-27 19:39:02 +00:00
message ( " sudo yum install openssl-devel" )
2015-10-27 19:18:48 +00:00
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install libgnutls-openssl-dev" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
endif ( OS_IS_LINUX )
if ( OS_IS_MACOSX )
message ( " sudo port install gnutls" )
endif ( OS_IS_MACOSX )
message ( FATAL_ERROR "GnuTLS libraries with openssl compatibility are required to build gnss-sdr" )
endif ( OPENSSL_FOUND )
endif ( NOT GNUTLS_OPENSSL_LIBRARY )
2013-11-27 21:11:21 +00:00
2016-11-27 22:47:45 +00:00
2013-10-18 18:26:06 +00:00
2017-11-26 09:49:42 +00:00
########################################################################
# Matio - https://github.com/tbeu/matio
########################################################################
find_package ( MATIO )
2018-02-24 17:01:10 +00:00
if ( NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${ GNSSSDR_MATIO_MIN_VERSION } )
2018-02-24 17:28:52 +00:00
if ( MATIO_FOUND )
message ( STATUS " Matio installed version (${MATIO_VERSION_STRING}) is too old (>= ${GNSSSDR_MATIO_MIN_VERSION} is required)." )
endif ( MATIO_FOUND )
message ( STATUS " Matio will be downloaded and built automatically" )
message ( STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. " )
2017-11-26 09:49:42 +00:00
find_package ( ZLIB )
if ( ZLIB_FOUND )
get_filename_component ( ZLIB_BASE_DIR ${ ZLIB_INCLUDE_DIRS } DIRECTORY )
2018-02-23 22:46:16 +00:00
if ( OS_IS_LINUX )
if ( NOT EXISTS "/usr/bin/libtoolize" )
message ( " libtool has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum groupinstall 'Development Tools'" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( " sudo zypper install libtoool" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install libtool" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "libtool is required to build matio from source" )
endif ( NOT EXISTS "/usr/bin/libtoolize" )
2018-02-24 00:15:07 +00:00
if ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2018-02-24 17:28:52 +00:00
message ( STATUS "Automake found." )
2018-02-24 00:15:07 +00:00
else ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2018-02-23 22:46:16 +00:00
message ( " aclocal has not been found." )
message ( " You can try to install it by typing:" )
if ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo yum groupinstall 'Development Tools'" )
elseif ( ${ LINUX_DISTRIBUTION } MATCHES "openSUSE" )
message ( " sudo zypper install automake" )
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( " sudo apt-get install automake" )
endif ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
message ( FATAL_ERROR "aclocal is required to build matio from source" )
2018-02-24 00:15:07 +00:00
endif ( EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10" )
2018-02-23 22:46:16 +00:00
endif ( OS_IS_LINUX )
2017-11-26 09:49:42 +00:00
find_package ( HDF5 )
if ( HDF5_FOUND )
list ( GET HDF5_LIBRARIES 0 HDF5_FIRST_DIR )
get_filename_component ( HDF5_BASE_DIR2 ${ HDF5_FIRST_DIR } DIRECTORY )
get_filename_component ( HDF5_BASE_DIR ${ HDF5_BASE_DIR2 } DIRECTORY )
if ( OS_IS_MACOSX )
if ( EXISTS /opt/local/include/hdf5.h )
set ( HDF5_BASE_DIR /opt/local )
endif ( EXISTS /opt/local/include/hdf5.h )
if ( EXISTS /usr/local/include/hdf5.h )
set ( HDF5_BASE_DIR /usr/local )
endif ( EXISTS /usr/local/include/hdf5.h )
endif ( OS_IS_MACOSX )
if ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
2018-01-30 14:46:13 +00:00
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / m a t i o
2017-11-26 09:49:42 +00:00
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / t b e u / m a t i o
G I T _ T A G v $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
U P D A T E _ C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N } / a u t o g e n . s h
C O N F I G U R E _ C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N } / c o n f i g u r e - - w i t h - h d f 5 = $ { H D F 5 _ B A S E _ D I R } - - w i t h - z l i b = $ { Z L I B _ B A S E _ D I R } - - w i t h - d e f a u l t - f i l e - v e r = 7 . 3 - - e n a b l e - m a t 7 3 = y e s - - p r e f i x = < I N S T A L L _ D I R >
B U I L D _ C O M M A N D m a k e
)
else ( CMAKE_VERSION VERSION_LESS 3.2 )
ExternalProject_Add (
m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / m a t i o
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / t b e u / m a t i o
G I T _ T A G v $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N }
U P D A T E _ C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N } / a u t o g e n . s h
C O N F I G U R E _ C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y / m a t i o / m a t i o - $ { G N S S S D R _ M A T I O _ L O C A L _ V E R S I O N } / c o n f i g u r e - - w i t h - h d f 5 = $ { H D F 5 _ B A S E _ D I R } - - w i t h - z l i b = $ { Z L I B _ B A S E _ D I R } - - w i t h - d e f a u l t - f i l e - v e r = 7 . 3 - - e n a b l e - m a t 7 3 = y e s - - p r e f i x = < I N S T A L L _ D I R >
B U I L D _ C O M M A N D m a k e
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / m a t i o / l i b / $ { C M A K E _ F I N D _ L I B R A R Y _ P R E F I X E S } m a t i o $ { C M A K E _ S T A T I C _ L I B R A R Y _ S U F F I X }
)
endif ( CMAKE_VERSION VERSION_LESS 3.2 )
set ( MATIO_LIBRARIES ${ CMAKE_CURRENT_BINARY_DIR } /matio/lib/ ${ CMAKE_FIND_LIBRARY_PREFIXES } matio ${ CMAKE_STATIC_LIBRARY_SUFFIX } ${ HDF5_LIBRARIES } ${ ZLIB_LIBRARIES } )
set ( MATIO_INCLUDE_DIRS ${ CMAKE_CURRENT_BINARY_DIR } /matio/include )
set ( MATIO_LOCAL true )
else ( HDF5_FOUND )
message ( STATUS " The hdf5 library has not been found in your system." )
message ( STATUS " Please try to install it by doing:" )
if ( OS_IS_MACOSX )
message ( STATUS " $ sudo port install hdf5" )
message ( STATUS " or" )
message ( STATUS " $ brew install hdf5" )
endif ( OS_IS_MACOSX )
if ( OS_IS_LINUX )
message ( STATUS " $ sudo apt-get install libhdf5-dev" )
endif ( OS_IS_LINUX )
message ( FATAL_ERROR "*** The hdf5 library is required to build gnss-sdr" )
endif ( HDF5_FOUND )
else ( ZLIB_FOUND )
message ( FATAL_ERROR "*** The zlib library is required to build gnss-sdr" )
endif ( ZLIB_FOUND )
2018-02-24 17:01:10 +00:00
endif ( NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${ GNSSSDR_MATIO_MIN_VERSION } )
2017-11-26 09:49:42 +00:00
2014-11-14 20:42:22 +00:00
################################################################################
2016-02-02 22:32:48 +00:00
# USRP Hardware Driver (UHD) - OPTIONAL
2014-11-14 20:42:22 +00:00
################################################################################
find_package ( UHD )
if ( NOT UHD_FOUND )
set ( ENABLE_UHD OFF )
2016-02-02 22:32:48 +00:00
message ( STATUS " The USRP Hardware Driver (UHD) signal source will not be built," )
message ( STATUS " so all USRP-based front-ends will not be usable." )
message ( STATUS " Please check http://files.ettus.com/manual/" )
2014-11-14 20:42:22 +00:00
else ( NOT UHD_FOUND )
2016-02-02 22:54:48 +00:00
set ( GR_REQUIRED_COMPONENTS UHD )
find_package ( Gnuradio )
2014-11-14 20:42:22 +00:00
set ( ENABLE_UHD ON )
endif ( NOT UHD_FOUND )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
2016-11-27 22:47:45 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
################################################################################
2014-11-14 20:42:22 +00:00
# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL, used if found)
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
################################################################################
find_package ( Doxygen )
if ( DOXYGEN_FOUND )
message ( STATUS "Doxygen found." )
2017-07-06 17:29:29 +00:00
message ( STATUS "You can build the documentation with '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'." )
2016-05-12 17:35:55 +00:00
message ( STATUS "When done, point your browser to ${CMAKE_BINARY_DIR}/html/index.html" )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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
2016-05-12 17:35:55 +00:00
$ { C M A K E _ B I N A R Y _ D I R } / d o c s / d o x y g e n / D o x y f i l e
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
@ O N L Y
)
add_custom_target ( doc
2016-05-12 17:35:55 +00:00
$ { D O X Y G E N _ E X E C U T A B L E } $ { C M A K E _ B I N A R Y _ D I R } / d o c s / d o x y g e n / D o x y f i l e
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ B I N A R Y _ D I R }
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
C O M M E N T " G e n e r a t i n g A P I d o c u m e n t a t i o n w i t h D o x y g e n . " V E R B A T I M
)
if ( LATEX_COMPILER )
2017-07-06 17:29:29 +00:00
message ( STATUS "'${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual' will generate a manual at ${CMAKE_BINARY_DIR}/docs/GNSS-SDR_manual.pdf" )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
add_custom_target ( pdfmanual
C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M }
2016-05-12 17:35:55 +00:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y r e f m a n . p d f $ { C M A K E _ B I N A R Y _ D I R } / d o c s / G N S S - S D R _ m a n u a l . p d f
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
C O M M A N D $ { C M A K E _ M A K E _ P R O G R A M } c l e a n
D E P E N D S d o c
2016-05-12 17:35:55 +00:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ B I N A R Y _ D I R } / d o c s / l a t e x
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
C O M M E N T " G e n e r a t i n g P D F m a n u a l w i t h D o x y g e n . " V E R B A T I M
)
endif ( LATEX_COMPILER )
2017-07-06 17:29:29 +00:00
message ( STATUS "'${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc-clean' will clean the documentation." )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
add_custom_target ( doc-clean
2016-05-12 17:35:55 +00:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E r e m o v e _ d i r e c t o r y $ { C M A K E _ B I N A R Y _ D I R } / d o c s / h t m l
C O M M A N D $ { C M A K E _ C O M M A N D } - E r e m o v e _ d i r e c t o r y $ { C M A K E _ B I N A R Y _ D I R } / d o c s / l a t e x
C O M M A N D $ { C M A K E _ C O M M A N D } - E r e m o v e $ { C M A K E _ B I N A R Y _ D I R } / d o c s / G N S S - S D R _ m a n u a l . p d f
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
C O M M E N T " C l e a n i n g d o c u m e n t a t i o n . " V E R B A T I M
)
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" )
2018-02-10 13:35:42 +00:00
message ( STATUS " or simply by doing 'sudo yum install doxygen-latex'." )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
else ( ${ LINUX_DISTRIBUTION } MATCHES "Fedora" OR ${ LINUX_DISTRIBUTION } MATCHES "Red Hat" )
2018-02-10 13:35:42 +00:00
message ( STATUS " or simply by doing 'sudo apt-get install doxygen-latex'." )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 )
2014-09-07 17:35:41 +00:00
if ( ENABLE_GENERIC_ARCH )
set ( OPENCL_FOUND FALSE )
message ( STATUS "ENABLE_GENERIC_ARCH is set to ON so the use of OpenCL has been disabled." )
endif ( ENABLE_GENERIC_ARCH )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 )
2016-11-27 22:47:45 +00:00
2015-08-25 17:01:02 +00:00
###############################################################################
# CUDA (OPTIONAL)
###############################################################################
if ( $ENV{ CUDA_GPU_ACCEL } )
message ( STATUS "CUDA_GPU_ACCEL environment variable found." )
set ( ENABLE_CUDA ON )
endif ( $ENV{ CUDA_GPU_ACCEL } )
if ( ENABLE_CUDA )
FIND_PACKAGE ( CUDA REQUIRED )
message ( STATUS "NVIDIA CUDA GPU Acceleration will be enabled." )
message ( STATUS "You can disable it with 'cmake -DENABLE_CUDA=OFF ../'" )
else ( ENABLE_CUDA )
message ( STATUS "NVIDIA CUDA GPU Acceleration will be not enabled." )
message ( STATUS "Enable it with 'cmake -DENABLE_CUDA=ON ../' to add support for GPU-based acceleration using CUDA." )
endif ( ENABLE_CUDA )
2017-08-07 17:29:05 +00:00
2017-02-13 16:20:49 +00:00
###############################################################################
# FPGA (OPTIONAL)
###############################################################################
if ( ENABLE_FPGA )
message ( STATUS "FPGA Acceleration will be enabled." )
message ( STATUS "You can disable it with 'cmake -DENABLE_FPGA=OFF ../'" )
else ( ENABLE_FPGA )
message ( STATUS "Fpga Acceleration will be not enabled." )
message ( STATUS "Enable it with 'cmake -DENABLE_FPGA=ON ../' to add support for GPU-based acceleration using the FPGA." )
endif ( ENABLE_FPGA )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
2017-08-07 17:29:05 +00:00
2012-12-24 11:42:23 +00:00
################################################################################
2012-12-24 02:33:50 +00:00
# Setup of optional drivers
2012-12-24 11:42:23 +00:00
################################################################################
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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." )
2015-03-20 16:02:41 +00:00
message ( STATUS "You can disable it with 'cmake -DENABLE_GN3S=OFF ../'" )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
else ( ENABLE_GN3S )
message ( STATUS "The (optional and experimental) GN3S driver is not enabled." )
2015-03-20 16:02:41 +00:00
message ( STATUS "Enable it with 'cmake -DENABLE_GN3S=ON ../' to add support for the GN3S dongle." )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 } )
2015-03-03 17:07:26 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
if ( RAW_ARRAY_DRIVER )
set ( ENABLE_ARRAY ON )
endif ( RAW_ARRAY_DRIVER )
2015-03-03 17:07:26 +00:00
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
if ( ENABLE_ARRAY )
message ( STATUS "CTTC's Antenna Array front-end driver will be compiled." )
2015-03-20 16:02:41 +00:00
message ( STATUS "You can disable it with 'cmake -DENABLE_ARRAY=OFF ../'" )
2014-02-18 19:40:44 +00:00
# copy firmware to install folder
# Build project gr-dbfcttc
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 environment variable found." )
2014-12-15 16:39:22 +00:00
set ( ENABLE_OSMOSDR ON )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
endif ( $ENV{ RTLSDR_DRIVER } )
2015-03-03 17:07:26 +00:00
2014-12-15 16:39:22 +00:00
if ( ENABLE_OSMOSDR )
Improve portability
In some architectures (e.g. alpha, hppa, powerpcspe, m68k, sh4, sparc64, x32) the package gr-osmosdr is not available. So when the package is build with -DENABLE_OSMOSDR=ON, it breaks on the mentioned architectures. This is expected behaviour (it breaks because a required dependency is not found), but prevents from building the package on such architectures. This commit introduces a small change: when compilation is called with
cmake -DENABLE_OSMOSDR=ON -DENABLE_PACKAGING=ON ..
then, the compilation does not break if gr-osmosdr is not found.
This commit also fixes building when UHD is present but gnuradio-uhd is not (for instance, in hurd-i386)
2017-04-12 16:06:04 +00:00
find_package ( GrOsmoSDR )
if ( GROSMOSDR_FOUND )
message ( STATUS "The driver for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.) will be compiled." )
message ( STATUS "You can disable it with 'cmake -DENABLE_OSMOSDR=OFF ../'" )
else ( GROSMOSDR_FOUND )
if ( ENABLE_PACKAGING )
message ( WARNING "gr-osmosdr has not been found. Source blocks depending on it will NOT be built." )
else ( ENABLE_PACKAGING )
message ( FATAL_ERROR "gr-osmosdr required to build gnss-sdr with the optional OSMOSDR driver" )
endif ( ENABLE_PACKAGING )
endif ( GROSMOSDR_FOUND )
2014-12-15 16:39:22 +00:00
else ( ENABLE_OSMOSDR )
message ( STATUS "The (optional) driver for OsmoSDR and related front-ends is not enabled." )
2014-12-23 21:41:28 +00:00
message ( STATUS "Enable it with 'cmake -DENABLE_OSMOSDR=ON ../' to add support for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based USB dongles, etc.)" )
2014-12-15 16:39:22 +00:00
endif ( ENABLE_OSMOSDR )
2012-12-24 02:33:50 +00:00
2015-03-03 17:07:26 +00:00
if ( $ENV{ FLEXIBAND_DRIVER } )
message ( STATUS "FLEXIBAND_DRIVER environment variable found." )
set ( ENABLE_FLEXIBAND ON )
endif ( $ENV{ FLEXIBAND_DRIVER } )
if ( FLEXIBAND_DRIVER )
set ( ENABLE_FLEXIBAND ON )
endif ( FLEXIBAND_DRIVER )
if ( ENABLE_FLEXIBAND )
2017-08-14 11:59:35 +00:00
message ( STATUS "The Teleorbit Flexiband front-end source will be compiled." )
2015-03-20 16:02:41 +00:00
message ( STATUS "You can disable it with 'cmake -DENABLE_FLEXIBAND=OFF ../'" )
2015-03-03 17:07:26 +00:00
else ( ENABLE_FLEXIBAND )
message ( STATUS "The (optional) Teleorbit Flexiband front-end driver adapter is not enabled." )
message ( STATUS "Enable it with 'cmake -DENABLE_FLEXIBAND=ON ../' to add support for the Teleorbit Flexiband front-end." )
endif ( ENABLE_FLEXIBAND )
2013-10-18 18:26:06 +00:00
2012-12-25 10:28:29 +00:00
2016-11-27 22:47:45 +00:00
################################################################################
# GPerftools - https://github.com/gperftools/gperftools (OPTIONAL)
################################################################################
if ( ENABLE_GPERFTOOLS )
find_package ( Gperftools )
if ( NOT GPERFTOOLS_FOUND )
message ( STATUS "Although ENABLE_GPERFTOOLS has been set to ON, GPerftools has not been found." )
message ( STATUS "Binaries will be compiled without 'tcmalloc' and 'profiler' libraries." )
message ( STATUS "You can install GPerftools from https://github.com/gperftools/gperftools" )
else ( NOT GPERFTOOLS_FOUND )
message ( STATUS "GPerftools libraries found." )
message ( STATUS "Binaries will be compiled with 'tcmalloc' and 'profiler' libraries." )
endif ( NOT GPERFTOOLS_FOUND )
endif ( ENABLE_GPERFTOOLS )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
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 )
2015-03-20 16:02:41 +00:00
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free" )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
endif ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
2015-03-20 16:02:41 +00:00
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin" )
Improving handling of optional processing blocks and linking libraries.
New options ENABLE_GN3S, ENABLE_RTLSDR, ENABLE_OPENCL, ENABLE_ARRAY and
ENABLE_GPERFTOOLS, all set by default to OFF. Users can enable that
features by 'cmake -DENABLE_XXX=ON ../ '. OpenCL is now not used by
default since it was giving problems in some platforms. Old variables
(RTSDR_DRIVER, GN3S_DRIVER, RAW_ARRAY_DRIVER and DISABLE_OPENCL) are
still honored and can be used in the same way, but the new ENABLE_XXX
are recommended for the sake of more uniform naming. Main CMakeFile.txt
has been rearranged, putting options first, then searching for the
required libraries, and then the optional ones. If Gperftools is enabled
and found, binaries are linked to the tcmalloc and profiler libraries,
and using the adequate flags. Fixed building in Mac OSX if Armadillo and
OpenBLAS were not installed in the system.
2014-08-07 19:04:01 +00:00
endif ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
endif ( GPERFTOOLS_FOUND )
endif ( ENABLE_GPERFTOOLS )
2012-12-24 02:33:50 +00:00
2016-11-27 22:47:45 +00:00
########################################################################
# GNU gprof (OPTIONAL) - https://sourceware.org/binutils/docs/gprof/
########################################################################
2015-05-03 08:15:51 +00:00
if ( ENABLE_GPROF )
2015-05-06 16:10:11 +00:00
#if(CMAKE_COMPILER_IS_GNUCXX)
2015-05-03 08:15:51 +00:00
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -pg" )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg" )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg" )
2015-05-06 16:10:11 +00:00
#endif(CMAKE_COMPILER_IS_GNUCXX)
2015-05-03 08:15:51 +00:00
endif ( ENABLE_GPROF )
2016-11-27 22:47:45 +00:00
########################################################################
# Set compiler flags
########################################################################
2017-08-08 12:18:19 +00:00
# Enable C++14 support in GCC / Fallback to C++11 when using GCC < 6.1.1
2016-11-27 22:47:45 +00:00
if ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
2017-08-08 12:18:19 +00:00
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++11" )
else ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++14" )
endif ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -Wall -Wextra" ) #Add warning flags: For "-Wall" see http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2016-11-27 22:47:45 +00:00
endif ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
2017-08-07 09:08:05 +00:00
2017-08-08 12:18:19 +00:00
# Enable C++14 support in Clang from 3.5 / Fallback to C++11 if older version and use lib++ if working in macOS
2016-11-27 22:47:45 +00:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
2017-08-08 12:18:19 +00:00
if ( OS_IS_MACOSX )
# See https://trac.macports.org/wiki/XcodeVersionInfo for Apple Clang version equivalences
if ( CLANG_VERSION VERSION_LESS "600" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++11" )
else ( CLANG_VERSION VERSION_LESS "600" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++14" )
endif ( CLANG_VERSION VERSION_LESS "600" )
2017-08-25 22:22:12 +00:00
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -Wno-deprecated-declarations" )
2017-11-25 19:09:10 +00:00
else ( OS_IS_MACOSX )
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++11" )
else ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++14" )
endif ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0" )
2017-08-08 12:18:19 +00:00
endif ( OS_IS_MACOSX )
2016-11-27 22:47:45 +00:00
if ( CMAKE_BUILD_TYPE MATCHES "Release" )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -Wno-unused-private-field" )
endif ( CMAKE_BUILD_TYPE MATCHES "Release" )
2017-08-07 09:08:05 +00:00
if ( OS_IS_MACOSX )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} -stdlib=libc++" )
endif ( OS_IS_MACOSX )
2016-11-27 22:47:45 +00:00
endif ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
2017-08-08 12:18:19 +00:00
if ( NOT ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 ) AND NOT ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) )
if ( NOT ( CMAKE_VERSION VERSION_LESS "3.1" ) )
set ( CMAKE_C_STANDARD 11 )
set ( CMAKE_CXX_STANDARD 14 )
endif ( NOT ( CMAKE_VERSION VERSION_LESS "3.1" ) )
endif ( NOT ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 ) AND NOT ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) )
2016-11-27 22:47:45 +00:00
# Processor-architecture related flags
# See http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options
if ( NOT ARCH_COMPILER_FLAGS )
if ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
if ( OS_IS_MACOSX )
set ( ARCH_COMPILER_FLAGS "-march=corei7 -mfpmath=sse" )
else ( OS_IS_MACOSX )
if ( NOT ${ ENABLE_GENERIC_ARCH } )
if ( IS_ARM ) # ARM-specific options (https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html)
2016-12-20 01:35:52 +00:00
if ( NOT CMAKE_CROSSCOMPILING )
if ( ARM_VERSION STREQUAL "arm" )
# Unknown arm version - try our best to detect
set ( ARCH_COMPILER_FLAGS "-mcpu=native" )
else ( ARM_VERSION STREQUAL "arm" )
set ( ARCH_COMPILER_FLAGS "-march=${ARM_VERSION}" )
endif ( ARM_VERSION STREQUAL "arm" )
endif ( NOT CMAKE_CROSSCOMPILING )
2016-11-27 22:47:45 +00:00
else ( IS_ARM )
set ( ARCH_COMPILER_FLAGS "-march=native -mfpmath=sse" )
endif ( IS_ARM )
endif ( NOT ${ ENABLE_GENERIC_ARCH } )
endif ( OS_IS_MACOSX )
endif ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
endif ( NOT ARCH_COMPILER_FLAGS )
set ( MY_CXX_FLAGS "${MY_CXX_FLAGS} ${ARCH_COMPILER_FLAGS}" )
2014-11-02 14:13:44 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_FLAGS}" )
2012-12-24 11:20:23 +00:00
2016-11-27 22:47:45 +00:00
if ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
#http://gcc.gnu.org/wiki/Visibility
add_definitions ( -fvisibility=hidden )
endif ( CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32 )
2013-07-04 13:47:40 +00:00
2013-07-10 21:07:43 +00:00
########################################################################
# Create uninstall target
########################################################################
configure_file (
2014-11-04 00:10:58 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / c m a k e _ u n i n s t a l l . c m a k e . i n
2013-07-10 21:07:43 +00:00
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e
2014-11-04 00:10:58 +00:00
@ O N L Y )
2013-07-10 21:07:43 +00:00
add_custom_target ( uninstall
2014-11-04 00:10:58 +00:00
C O M M A N D $ { C M A K E _ C O M M A N D } - P $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e )
2013-01-22 20:40:25 +00:00
2016-11-27 22:47:45 +00:00
2012-12-24 02:33:50 +00:00
########################################################################
# Add subdirectories (in order of deps)
########################################################################
add_subdirectory ( src )