mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
See the CMake 3.8 documentation on these two variables: https://cmake.org/cmake/help/v3.8/variable/PROJECT-NAME_SOURCE_DIR.html https://cmake.org/cmake/help/v3.8/variable/CMAKE_SOURCE_DIR.html Under normal circumstances, these two are identical. For sub-projects (i.e., when building UHD as part of something else that is also a CMake project), only the former is useful. There is no discernible downside of using UHD_SOURCE_DIR over CMAKE_SOURCE_DIR. This was changed using sed: $ sed -i "s/CMAKE_SOURCE_DIR/UHD_SOURCE_DIR/g" \ `ag -l CMAKE_SOURCE_DIR **/{CMakeLists.txt,*.cmake}` $ sed -i "s/CMAKE_BINARY_DIR/UHD_BINARY_DIR/g" \ `ag -l CMAKE_BINARY_DIR **/{CMakeLists.txt,*.cmake}` At the same time, we also replace the CMake variable UHD_HOST_ROOT (used in MPM) with UHD_SOURCE_DIR. There's no reason to have two variables with the same meaning and different names, but more importantly, this means that UHD_SOURCE_DIR is defined even in those cases where MPM calls into CMake files from UHD without any additional patches. Shoutout to GitHub user marcobergamin for bringing this up.
150 lines
5.4 KiB
CMake
150 lines
5.4 KiB
CMake
#
|
|
# Copyright 2010-2014,2016 Ettus Research LLC
|
|
# Copyright 2018 Ettus Research, a National Instruments Company
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
|
|
########################################################################
|
|
include(UHDPython) #requires python for parsing
|
|
find_package(Git QUIET)
|
|
|
|
########################################################################
|
|
# Setup Version Numbers
|
|
# - Increment major on large-scale library changes
|
|
# - Increment API on API changes
|
|
# - Increment ABI on ABI changes
|
|
# - Increment patch for bugfixes and docs
|
|
# - set UHD_VERSION_DEVEL to true for master and development branches
|
|
########################################################################
|
|
set(UHD_VERSION_MAJOR 4)
|
|
set(UHD_VERSION_API 0)
|
|
set(UHD_VERSION_ABI 0)
|
|
set(UHD_VERSION_PATCH 0)
|
|
set(UHD_VERSION_DEVEL FALSE)
|
|
|
|
########################################################################
|
|
# If we're on a development branch, we skip the patch version
|
|
########################################################################
|
|
if(DEFINED UHD_VERSION_PATCH_OVERRIDE)
|
|
set(UHD_VERSION_DEVEL FALSE)
|
|
set(UHD_VERSION_PATCH ${UHD_VERSION_PATCH_OVERRIDE})
|
|
endif(DEFINED UHD_VERSION_PATCH_OVERRIDE)
|
|
if(NOT DEFINED UHD_VERSION_DEVEL)
|
|
set(UHD_VERSION_DEVEL FALSE)
|
|
endif(NOT DEFINED UHD_VERSION_DEVEL)
|
|
set(UHD_GIT_BRANCH "")
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
WORKING_DIRECTORY ${UHD_SOURCE_DIR}
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
|
OUTPUT_VARIABLE _git_branch OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE _git_branch_result
|
|
)
|
|
if(_git_branch_result EQUAL 0)
|
|
set(UHD_GIT_BRANCH ${_git_branch})
|
|
if(UHD_GIT_BRANCH MATCHES "^UHD-")
|
|
message(STATUS "Operating on release branch (${UHD_GIT_BRANCH}).")
|
|
set(UHD_VERSION_DEVEL FALSE)
|
|
elseif(UHD_GIT_BRANCH STREQUAL "master")
|
|
message(STATUS "Operating on master branch.")
|
|
set(UHD_VERSION_DEVEL TRUE)
|
|
else()
|
|
message(STATUS "Working off of feature or development branch. Updating version number.")
|
|
execute_process(
|
|
COMMAND ${PYTHON_EXECUTABLE} -c "print('${_git_branch}'.replace('/', '-'))"
|
|
OUTPUT_VARIABLE _git_safe_branch OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
set(UHD_VERSION_PATCH ${_git_safe_branch})
|
|
set(UHD_VERSION_DEVEL TRUE)
|
|
endif()
|
|
else()
|
|
message(STATUS "Could not determine git branch. Probably building from tarball.")
|
|
endif()
|
|
else(GIT_FOUND)
|
|
message(WARNING "Could not detect git executable! Could not determine exact version of UHD!")
|
|
endif(GIT_FOUND)
|
|
if(DEFINED UHD_GIT_BRANCH_OVERRIDE)
|
|
message(STATUS "Overriding auto-detected git branch and setting to: ${UHD_GIT_BRANCH_OVERRIDE}")
|
|
set(UHD_GIT_BRANCH ${UHD_GIT_BRANCH_OVERRIDE})
|
|
endif(DEFINED UHD_GIT_BRANCH_OVERRIDE)
|
|
|
|
########################################################################
|
|
# Version information discovery through git log
|
|
########################################################################
|
|
|
|
#grab the git ref id for the current head
|
|
execute_process(
|
|
WORKING_DIRECTORY ${UHD_SOURCE_DIR}
|
|
COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=8 --long
|
|
OUTPUT_VARIABLE _git_describe OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE _git_describe_result
|
|
)
|
|
|
|
#only set the build info on success
|
|
if(_git_describe_result EQUAL 0)
|
|
if(NOT UHD_GIT_COUNT)
|
|
execute_process(
|
|
WORKING_DIRECTORY ${UHD_SOURCE_DIR}
|
|
COMMAND ${PYTHON_EXECUTABLE} -c "
|
|
try:
|
|
print('${_git_describe}'.split('-')[-2])
|
|
except IndexError:
|
|
print('0')
|
|
"
|
|
OUTPUT_VARIABLE UHD_GIT_COUNT OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
if(NOT UHD_GIT_HASH)
|
|
execute_process(
|
|
WORKING_DIRECTORY ${UHD_SOURCE_DIR}
|
|
COMMAND ${PYTHON_EXECUTABLE} -c "
|
|
try:
|
|
print('${_git_describe}'.split('-')[-1])
|
|
except IndexError:
|
|
print('unknown')
|
|
"
|
|
OUTPUT_VARIABLE UHD_GIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
## Set default values if all fails. Make sure they're identical to the ones above.
|
|
if(NOT UHD_GIT_COUNT)
|
|
set(UHD_GIT_COUNT "0")
|
|
endif()
|
|
|
|
if(NOT UHD_GIT_HASH)
|
|
set(UHD_GIT_HASH "unknown")
|
|
endif()
|
|
|
|
if(UHD_RELEASE_MODE)
|
|
set(UHD_GIT_HASH ${UHD_RELEASE_MODE})
|
|
|
|
#Ignore UHD_GIT_COUNT in UHD_VERSION if the string 'release' is in UHD_RELEASE_MODE
|
|
execute_process(
|
|
WORKING_DIRECTORY ${UHD_SOURCE_DIR}
|
|
COMMAND ${PYTHON_EXECUTABLE} -c "print ('release' in '${UHD_RELEASE_MODE}') or ('rc' in '${UHD_RELEASE_MODE}')"
|
|
OUTPUT_VARIABLE TRIM_UHD_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
|
|
|
|
########################################################################
|
|
# Define the derived version variables:
|
|
if(DEFINED UHD_VERSION)
|
|
set(UHD_VERSION "${UHD_VERSION}" CACHE STRING "Set UHD_VERSION to a custom value")
|
|
elseif(TRIM_UHD_VERSION STREQUAL "True")
|
|
set(UHD_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_API}.${UHD_VERSION_ABI}.${UHD_VERSION_PATCH}-${UHD_GIT_HASH}")
|
|
else()
|
|
set(UHD_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_API}.${UHD_VERSION_ABI}.${UHD_VERSION_PATCH}-${UHD_GIT_COUNT}-${UHD_GIT_HASH}")
|
|
endif()
|
|
if(DEFINED UHD_ABI_VERSION)
|
|
set(UHD_ABI_VERSION "${UHD_ABI_VERSION}"
|
|
CACHE STRING "Set UHD_ABI_VERSION to a custom value")
|
|
else()
|
|
set(UHD_ABI_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_API}.${UHD_VERSION_ABI}")
|
|
endif()
|
|
|
|
set(UHD_COMPONENT "UHD")
|