diff --git a/CMakeLists.txt b/CMakeLists.txt
index 984b2770c..501fab154 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@ endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
########################################################################
# Project setup
########################################################################
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.8)
project(gnss-sdr CXX)
#select the release build type by default to get optimization flags
@@ -58,12 +58,12 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O2")
################################################################################
set(GTEST_DIR $ENV{GTEST_DIR})
if(GTEST_DIR)
- set(GTEST_INCLUDE_DIRECTORIES ${GTEST_DIR}/include ${GTEST_DIR} ${GTEST_DIR}/src)
- include_directories(${GTEST_INCLUDE_DIRECTORIES})
- message("GTEST sources at ${GTEST_DIR}")
+ message("GTEST root folder at ${GTEST_DIR}")
else()
- # Download gtest ?
- message( " GTEST_DIR environment variable not set. ")
+ message (" Googletest has not been found because the variable ")
+ message (" GTEST_DIR is not defined.")
+ message (" Googletest will be downloaded and built automatically ")
+ message (" when doing 'make'. ")
endif(GTEST_DIR)
diff --git a/cmake/Modules/FindGTest.cmake b/cmake/Modules/FindGTest.cmake
deleted file mode 100644
index 5930043ef..000000000
--- a/cmake/Modules/FindGTest.cmake
+++ /dev/null
@@ -1,187 +0,0 @@
-##############################################################################
-00002 # @file FindGTest.cmake
-00003 # @brief Find Google Test package.
-00004 #
-00005 # @par Input variables:
-00006 #
-00007 #
-00008 # @tp @b GTest_DIR @endtp
-00009 # The Google Test package files are searched under the specified
-00010 # root directory. If they are not found there, the default search
-00011 # paths are considered.
-00012 # This variable can also be set as environment variable. |
-00013 #
-00014 #
-00015 # @tp @b GTEST_DIR @endtp
-00016 # Alternative environment variable for @p GTest_DIR. |
-00017 #
-00018 #
-00019 # @tp @b GTest_SHARED_LIBRARIES @endtp
-00020 # Forces this module to search for shared libraries.
-00021 # Otherwise, static libraries are preferred. |
-00022 #
-00023 #
-00024 #
-00025 # @par Output variables:
-00026 #
-00027 #
-00028 # @tp @b GTest_FOUND @endtp
-00029 # Whether the package was found and the following CMake variables are valid. |
-00030 #
-00031 #
-00032 # @tp @b GTest_INCLUDE_DIR @endtp
-00033 # Package include directories. |
-00034 #
-00035 #
-00036 # @tp @b GTest_INCLUDES @endtp
-00037 # Include directories including prerequisite libraries. |
-00038 #
-00039 #
-00040 # @tp @b GTest_LIBRARY @endtp
-00041 # Path of @c gtest library. |
-00042 #
-00043 #
-00044 # @tp @b GTest_main_LIBRARY @endtp
-00045 # Path of @c gtest_main library (optional). |
-00046 #
-00047 #
-00048 # @tp @b GTest_LIBRARIES @endtp
-00049 # Package libraries and prerequisite libraries. |
-00050 #
-00051 #
-00052 #
-00053 # Copyright (c) 2011, 2012 University of Pennsylvania. All rights reserved.
-00054 # See http://www.rad.upenn.edu/sbia/software/license.html or COPYING file.
-00055 #
-00056 # Contact: SBIA Group
-00057 #
-00058 # @ingroup CMakeFindModules
-00059 ##############################################################################
-00060
-00061 # ----------------------------------------------------------------------------
-00062 # initialize search
-00063 if (NOT GTest_DIR)
-00064 if ($ENV{GTEST_DIR})
-00065 set (GTest_DIR "$ENV{GTEST_DIR}" CACHE PATH "Installation prefix for Google Test")
-00066 else ()
-00067 set (GTest_DIR "$ENV{GTest_DIR}" CACHE PATH "Installation prefix for Google Test")
-00068 endif ()
-00069 endif ()
-00070
-00071 set (GTest_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-00072
-00073 if (GTest_SHARED_LIBRARIES)
-00074 if (WIN32)
-00075 set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
-00076 else ()
-00077 set (CMAKE_FIND_LIBRARY_SUFFIXES .so)
-00078 endif()
-00079 else ()
-00080 if (WIN32)
-00081 set (CMAKE_FIND_LIBRARY_SUFFIXES .lib)
-00082 else ()
-00083 set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
-00084 endif()
-00085 endif ()
-00086
-00087 # ----------------------------------------------------------------------------
-00088 # find paths/files
-00089 if (GTest_DIR)
-00090
-00091 find_path (
-00092 GTest_INCLUDE_DIR
-00093 NAMES gtest.h
-00094 HINTS "${GTest_DIR}"
-00095 PATH_SUFFIXES "include/gtest"
-00096 DOC "Include directory for Google Test."
-00097 NO_DEFAULT_PATH
-00098 )
-00099
-00100 find_library (
-00101 GTest_LIBRARY
-00102 NAMES gtest
-00103 HINTS "${GTest_DIR}"
-00104 PATH_SUFFIXES "lib"
-00105 DOC "Link library for Google Test (gtest)."
-00106 NO_DEFAULT_PATH
-00107 )
-00108
-00109 find_library (
-00110 GTest_main_LIBRARY
-00111 NAMES gtest_main
-00112 HINTS "${GTest_DIR}"
-00113 PATH_SUFFIXES "lib"
-00114 DOC "Link library for Google Test's automatic main () definition (gtest_main)."
-00115 NO_DEFAULT_PATH
-00116 )
-00117
-00118 else ()
-00119
-00120 find_path (
-00121 GTest_INCLUDE_DIR
-00122 NAMES gtest.h
-00123 HINTS ENV C_INCLUDE_PATH ENV CXX_INCLUDE_PATH
-00124 DOC "Include directory for Google Test."
-00125 )
-00126
-00127 find_library (
-00128 GTest_LIBRARY
-00129 NAMES gtest
-00130 HINTS ENV LD_LIBRARY_PATH
-00131 DOC "Link library for Google Test (gtest)."
-00132 )
-00133
-00134 find_library (
-00135 GTest_main_LIBRARY
-00136 NAMES gtest_main
-00137 HINTS ENV LD_LIBRARY_PATH
-00138 DOC "Link library for Google Test's automatic main () definition (gtest_main)."
-00139 )
-00140
-00141 endif ()
-00142
-00143 mark_as_advanced (GTest_INCLUDE_DIR)
-00144 mark_as_advanced (GTest_LIBRARY)
-00145 mark_as_advanced (GTest_main_LIBRARY)
-00146
-00147 # ----------------------------------------------------------------------------
-00148 # add prerequisites
-00149 set (GTest_INCLUDES "${GTest_INCLUDE_DIR}")
-00150
-00151 set (GTest_LIBRARIES)
-00152 if (GTest_LIBRARY)
-00153 list (APPEND GTest_LIBRARIES "${GTest_LIBRARY}")
-00154 endif ()
-00155 if (GTest_main_LIBRARY)
-00156 list (APPEND GTest_LIBRARIES "${GTest_main_LIBRARY}")
-00157 endif ()
-00158
-00159 # ----------------------------------------------------------------------------
-00160 # reset CMake variables
-00161 set (CMAKE_FIND_LIBRARY_SUFFIXES ${GTest_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-00162
-00163 # ----------------------------------------------------------------------------
-00164 # aliases / backwards compatibility
-00165 set (GTest_INCLUDE_DIRS "${GTest_INCLUDES}")
-00166
-00167 # ----------------------------------------------------------------------------
-00168 # handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
-00169 # if all listed variables are found or TRUE
-00170 include (FindPackageHandleStandardArgs)
-00171
-00172 find_package_handle_standard_args (
-00173 GTest
-00174 REQUIRED_VARS
-00175 GTest_INCLUDE_DIR
-00176 GTest_LIBRARY
-00177 )
-00178
-00179 set (GTest_FOUND "${GTEST_FOUND}")
-00180
-00181 # ----------------------------------------------------------------------------
-00182 # set GTest_DIR
-00183 if (NOT GTest_DIR AND GTest_FOUND)
-00184 string (REGEX REPLACE "include(/gtest)?/?" "" GTest_PREFIX "${GTest_INCLUDE_DIR}")
-00185 set (GTest_DIR "${GTest_PREFIX}" CACHE PATH "Installation prefix for GTest." FORCE)
-00186 unset (GTest_PREFIX)
-00187 endif ()
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index c2ba5def3..4600ad327 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -16,41 +16,75 @@
# along with GNSS-SDR. If not, see .
#
-set(GTEST_DIR $ENV{GTEST_DIR})
-if(GTEST_DIR)
+set(GTEST_DIR_LOCAL $ENV{GTEST_DIR})
+
+if(NOT GTEST_DIR_LOCAL)
+ # if GTEST_DIR is not defined, we download and build it
+ include(ExternalProject)
+ set(gtest_RELEASE 1.6.0)
+ ExternalProject_Add(
+ gtest-${gtest_RELEASE}
+ URL http://googletest.googlecode.com/files/gtest-${gtest_RELEASE}.zip
+ DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../../download/gtest-${gtest_RELEASE}
+ URL_MD5 "4577b49f2973c90bf9ba69aa8166b786"
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gtest/gtest-${gtest_RELEASE}
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/../../gtest-${gtest_RELEASE}
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ # Set up variables
+ # Set recently downloaded and build Googletest root folder
+ set(GTEST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gtest/gtest-${gtest_RELEASE}")
+ # Source code
+ ExternalProject_Get_Property(gtest-${gtest_RELEASE} source_dir)
+ set(GTEST_INCLUDE_DIR ${source_dir}/include)
+ set(GTEST_INCLUDE_DIRECTORIES ${GTEST_DIR}/include ${GTEST_DIR} ${GTEST_DIR}/src)
+ # Library
+ ExternalProject_Get_Property(gtest-${gtest_RELEASE} binary_dir)
+ set(GTEST_LIBRARY_PATH "${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a;${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main.a")
+ set(GTEST_LIBRARY gtest-${gtest_RELEASE})
+ set(GTEST_LIBRARIES
+ ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a
+ ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main.a
+ )
+ set(GTEST_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/../../gtest-${gtest_RELEASE}")
+endif(NOT GTEST_DIR_LOCAL)
+
+if(GTEST_DIR_LOCAL)
+ # If the variable GTEST_DIR is defined, we use the existing Googletest
+ set(GTEST_DIR $ENV{GTEST_DIR})
set(GTEST_INCLUDE_DIRECTORIES ${GTEST_DIR}/include ${GTEST_DIR} ${GTEST_DIR}/src)
add_library(gtest ${GTEST_DIR}/src/gtest-all.cc ${GTEST_DIR}/src/gtest_main.cc)
- include_directories(
- ${GTEST_INCLUDE_DIRECTORIES}
- ${CMAKE_SOURCE_DIR}/src/core/system_parameters
- ${CMAKE_SOURCE_DIR}/src/core/interfaces
- ${CMAKE_SOURCE_DIR}/src/core/receiver
- ${CMAKE_SOURCE_DIR}/src/core/libs
- ${CMAKE_SOURCE_DIR}/src/algorithms/libs
- ${CMAKE_SOURCE_DIR}/src/algorithms/resampler/gnuradio_blocks
- ${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
- ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/adapters
- ${CMAKE_SOURCE_DIR}/src/algorithms/input_filter/adapters
- ${CMAKE_SOURCE_DIR}/src/algorithms/acquisition/adapters
- ${CMAKE_SOURCE_DIR}/src/algorithms/acquisition/gnuradio_blocks
- ${CMAKE_SOURCE_DIR}/src/algorithms/output_filter/adapters
- ${GLOG_INCLUDE_DIRS}
- ${GFlags_INCLUDE_DIRS}
- ${GNURADIO_CORE_INCLUDE_DIRS}
- ${GNURADIO_GRUEL_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
- )
- add_executable(run_tests ${CMAKE_CURRENT_SOURCE_DIR}/test_main.cc)
- target_link_libraries(run_tests ${Boost_LIBRARIES} glog gflags gtest gnss_sp_libs gnss_rx)
- add_dependencies(run_tests googletest)
- #add_test(tests_gnss ${CMAKE_SOURCE_DIR}/install/run_tests)
- install(TARGETS run_tests DESTINATION ${CMAKE_SOURCE_DIR}/install)
-else()
- message (" ################################ ")
- message (" Googletest not found! ")
- message (" ################################ ")
- message (" GNSS-SDR test system is based on Googletest, which has not been found ")
- message (" Tests will not be build. Please download Googletest source code ")
- message (" and define the environment variable GTEST_DIR pointing to its root folder")
-endif(GTEST_DIR)
\ No newline at end of file
+ set(GTEST_LIBRARIES gtest)
+endif(GTEST_DIR_LOCAL)
+
+include_directories(
+ ${GTEST_INCLUDE_DIRECTORIES}
+ ${CMAKE_SOURCE_DIR}/src/core/system_parameters
+ ${CMAKE_SOURCE_DIR}/src/core/interfaces
+ ${CMAKE_SOURCE_DIR}/src/core/receiver
+ ${CMAKE_SOURCE_DIR}/src/core/libs
+ ${CMAKE_SOURCE_DIR}/src/algorithms/libs
+ ${CMAKE_SOURCE_DIR}/src/algorithms/resampler/gnuradio_blocks
+ ${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
+ ${CMAKE_SOURCE_DIR}/src/algorithms/signal_source/adapters
+ ${CMAKE_SOURCE_DIR}/src/algorithms/input_filter/adapters
+ ${CMAKE_SOURCE_DIR}/src/algorithms/acquisition/adapters
+ ${CMAKE_SOURCE_DIR}/src/algorithms/acquisition/gnuradio_blocks
+ ${CMAKE_SOURCE_DIR}/src/algorithms/output_filter/adapters
+ ${GLOG_INCLUDE_DIRS}
+ ${GFlags_INCLUDE_DIRS}
+ ${GNURADIO_CORE_INCLUDE_DIRS}
+ ${GNURADIO_GRUEL_INCLUDE_DIRS}
+ ${Boost_INCLUDE_DIRS}
+)
+
+add_executable(run_tests ${CMAKE_CURRENT_SOURCE_DIR}/test_main.cc)
+target_link_libraries(run_tests ${Boost_LIBRARIES} glog gflags ${GTEST_LIBRARIES} gnss_sp_libs gnss_rx)
+install(TARGETS run_tests DESTINATION ${CMAKE_SOURCE_DIR}/install)
+
+
+
+