aboutsummaryrefslogtreecommitdiffstats
path: root/host/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'host/CMakeLists.txt')
-rw-r--r--host/CMakeLists.txt88
1 files changed, 74 insertions, 14 deletions
diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt
index 9534dd7cd..643857708 100644
--- a/host/CMakeLists.txt
+++ b/host/CMakeLists.txt
@@ -31,6 +31,56 @@ ENABLE_TESTING()
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
########################################################################
+# Check Compiler Version
+########################################################################
+# Full C++11 came with GCC 4.7.
+SET(GCC_MIN_VERSION "4.8.0")
+# for c++0x or c++11 support, require:
+# Apple Clang >= 500
+# or
+# Clang >= 3.3.0
+SET(CLANG_MIN_VERSION "3.3.0")
+SET(APPLECLANG_MIN_VERSION "500")
+
+IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+ IF(DEFINED CMAKE_CXX_COMPILER_VERSION)
+ IF(${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS ${GCC_MIN_VERSION})
+ MESSAGE(WARNING "\nThe compiler selected to build UHD (GCC version ${CMAKE_CXX_COMPILER_VERSION} : ${CMAKE_CXX_COMPILER}) is older than that officially supported (${GCC_MIN_VERSION} minimum). This build may or not work. We highly recommend using a more recent GCC version.")
+ ENDIF()
+ ELSE()
+ MESSAGE(WARNING "\nCannot determine the version of the compiler selected to build UHD (GCC : ${CMAKE_CXX_COMPILER}). This build may or not work. We highly recommend using GCC version ${GCC_MIN_VERSION} or more recent.")
+ ENDIF()
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
+ELSEIF(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ EXECUTE_PROCESS(COMMAND
+ ${CMAKE_CXX_COMPILER} -v
+ RESULT_VARIABLE res ERROR_VARIABLE err
+ ERROR_STRIP_TRAILING_WHITESPACE)
+ IF(${res} STREQUAL "0")
+ # output is in error stream
+ STRING(REGEX MATCH "^Apple.*" IS_APPLE ${err})
+ IF("${IS_APPLE}" STREQUAL "")
+ SET(MIN_VERSION ${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()
+ SET(MIN_VERSION ${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()
+ IF(${CLANG_VERSION} VERSION_LESS "${MIN_VERSION}")
+ MESSAGE(WARNING "\nThe compiler selected to build UHD (${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()
+ ELSE()
+ MESSAGE(WARNING "\nCannot determine the version of the compiler selected to build UHD (${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()
+ENDIF()
+
+########################################################################
# Packaging Variables
########################################################################
@@ -138,7 +188,8 @@ SET(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "")
#force UHD_RELEASE_MODE to be a string for cmake-gui
SET(UHD_RELEASE_MODE "${UHD_RELEASE_MODE}" CACHE STRING "UHD Release Mode")
-IF(CMAKE_COMPILER_IS_GNUCXX)
+IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR
+ ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
IF(STRIP_BINARIES)
IF(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s")
@@ -155,7 +206,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY_HIDDEN)
UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-fvisibility-inlines-hidden HAVE_VISIBILITY_INLINES_HIDDEN)
ENDIF(NOT WIN32)
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+ENDIF()
IF(MSVC)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/cmake/msvc)
@@ -187,6 +238,7 @@ ENDIF(WIN32)
MESSAGE(STATUS "")
MESSAGE(STATUS "Configuring Boost C++ Libraries...")
SET(BOOST_REQUIRED_COMPONENTS
+ chrono
date_time
filesystem
program_options
@@ -217,9 +269,9 @@ ENDIF(MSVC)
SET(Boost_ADDITIONAL_VERSIONS
"1.46.0" "1.46" "1.47.0" "1.47" "1.48.0" "1.48" "1.48.0" "1.49" "1.50.0" "1.50"
"1.51.0" "1.51" "1.52.0" "1.52" "1.53.0" "1.53" "1.54.0" "1.54" "1.55.0" "1.55"
- "1.56.0" "1.56"
+ "1.56.0" "1.56" "1.57" "1.57" "1.58" "1.59" "1.60"
)
-FIND_PACKAGE(Boost 1.46 COMPONENTS ${BOOST_REQUIRED_COMPONENTS})
+FIND_PACKAGE(Boost 1.53 COMPONENTS ${BOOST_REQUIRED_COMPONENTS})
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
@@ -231,6 +283,8 @@ MESSAGE(STATUS "Boost libraries: ${Boost_LIBRARIES}")
########################################################################
# Additional settings for build environment
########################################################################
+# Note: RFNoC never gets fully disabled, but the public APIs do
+SET(ENABLE_RFNOC OFF CACHE BOOL "Export RFNoC includes and symbols")
INCLUDE(UHDGlobalDefs)
########################################################################
@@ -239,8 +293,8 @@ INCLUDE(UHDGlobalDefs)
INCLUDE(UHDPython)
PYTHON_CHECK_MODULE(
- "Python version 2.6 or greater"
- "platform" "platform.python_version() >= '2.6'"
+ "Python version 2.7 or greater"
+ "platform" "platform.python_version() >= '2.7'"
HAVE_PYTHON_PLAT_MIN_VERSION
)
@@ -278,8 +332,8 @@ UHD_INSTALL(FILES
#{{{IMG_SECTION
# This section is written automatically by /images/create_imgs_package.py
# Any manual changes in here will be overwritten.
-SET(UHD_IMAGES_MD5SUM "c33b36a74d82198c8cfede64d8775c46")
-SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.009.004-release.zip")
+SET(UHD_IMAGES_MD5SUM "26473d4f18d2c9a207062e107bda1d11")
+SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.010.000.000-release.zip")
#}}}
########################################################################
@@ -309,8 +363,6 @@ ENDIF(EXISTS "${FPGA_SUBMODULE_DIR}/docs/fpga.md")
########################################################################
# Add the subdirectories
########################################################################
-ADD_SUBDIRECTORY(docs)
-
IF(ENABLE_LIBUHD)
ADD_SUBDIRECTORY(lib)
ENDIF(ENABLE_LIBUHD)
@@ -329,6 +381,8 @@ IF(ENABLE_UTILS)
ADD_SUBDIRECTORY(utils)
ENDIF(ENABLE_UTILS)
+ADD_SUBDIRECTORY(docs)
+
########################################################################
# Create Pkg Config File
########################################################################
@@ -380,6 +434,12 @@ ENDFOREACH(Boost_Comp)
IF(ENABLE_USB)
LIST(APPEND UHD_LINK_LIST_STATIC "usb-1.0")
ENDIF(ENABLE_USB)
+# UHDConfig.cmake also needs UHD_RFNOC_FOUND
+IF(ENABLE_RFNOC)
+ SET(UHD_RFNOC_FOUND "TRUE")
+ELSE()
+ SET(UHD_RFNOC_FOUND "FALSE")
+ENDIF(ENABLE_RFNOC)
CONFIGURE_FILE(
${CMAKE_SOURCE_DIR}/cmake/Modules/UHDConfigVersion.cmake.in
@@ -430,9 +490,9 @@ ELSEIF(UHDHOST_PKG)
SET(PRINT_APPEND " (Debian uhd-host package configuration)")
ENDIF(LIBUHD_PKG)
UHD_PRINT_COMPONENT_SUMMARY()
-IF(UHD_VERSION_DEVEL)
+IF(UHD_VERSION_DEVEL AND NOT UHD_GIT_BRANCH STREQUAL "maint")
MESSAGE(STATUS "******************************************************")
- IF(UHD_VERSION_PATCH STREQUAL "git")
+ IF(UHD_GIT_BRANCH STREQUAL "master")
MESSAGE(STATUS "* You are building the UHD development master branch.")
MESSAGE(STATUS "* For production code, we recommend our stable,")
MESSAGE(STATUS "* releases or using the release branch (maint).")
@@ -441,8 +501,8 @@ IF(UHD_VERSION_DEVEL)
MESSAGE(STATUS "* These branches are designed to provide early access")
MESSAGE(STATUS "* to UHD and USRP features, but should be considered")
MESSAGE(STATUS "* unstable and/or experimental!")
- ENDIF(UHD_VERSION_PATCH STREQUAL "git")
+ ENDIF(UHD_GIT_BRANCH STREQUAL "master")
MESSAGE(STATUS "******************************************************")
-ENDIF(UHD_VERSION_DEVEL)
+ENDIF(UHD_VERSION_DEVEL AND NOT UHD_GIT_BRANCH STREQUAL "maint")
MESSAGE(STATUS "Building version: ${UHD_VERSION}${PRINT_APPEND}")
MESSAGE(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}")