From ce341fe53bb235f1c8d848ae850ebc136b08f563 Mon Sep 17 00:00:00 2001 From: Dimitri Stolnikov Date: Sun, 2 Jun 2013 14:32:45 +0200 Subject: [PATCH] cmake: add version module --- CMakeLists.txt | 12 ++++++++ cmake/Modules/Version.cmake | 60 +++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 3 +- 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 cmake/Modules/Version.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index b113311..09a9cbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,12 @@ if(NOT LIB_INSTALL_DIR) set(LIB_INSTALL_DIR lib) endif() +# Set the version information here +set(VERSION_INFO_MAJOR_VERSION 0) # increment major on api compatibility changes +set(VERSION_INFO_MINOR_VERSION 0) # increment minor on feature-level changes +set(VERSION_INFO_PATCH_VERSION git) # increment patch for bug fixes and docs +include(Version) # setup version info + ######################################################################## # Compiler specific setup ######################################################################## @@ -146,3 +152,9 @@ INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/librtlsdr.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) + +######################################################################## +# Print Summary +######################################################################## +MESSAGE(STATUS "Building for version: ${VERSION} / ${LIBVER}") +MESSAGE(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}") diff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake new file mode 100644 index 0000000..2d4e76d --- /dev/null +++ b/cmake/Modules/Version.cmake @@ -0,0 +1,60 @@ +# Copyright 2013 OSMOCOM Project +# +# This file is part of rtl-sdr +# +# rtl-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, or (at your option) +# any later version. +# +# rtl-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 rtl-sdr; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +if(DEFINED __INCLUDED_VERSION_CMAKE) + return() +endif() +set(__INCLUDED_VERSION_CMAKE TRUE) + +# VERSION_INFO_* variables must be provided by user +set(MAJOR_VERSION ${VERSION_INFO_MAJOR_VERSION}) +set(MINOR_VERSION ${VERSION_INFO_MINOR_VERSION}) +set(PATCH_VERSION ${VERSION_INFO_PATCH_VERSION}) + +######################################################################## +# Extract the version string from git describe. +######################################################################## +find_package(Git QUIET) + +if(GIT_FOUND) + message(STATUS "Extracting version information from git describe...") + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=4 --long + OUTPUT_VARIABLE GIT_DESCRIBE OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) +else() + set(GIT_DESCRIBE "v${MAJOR_VERSION}.${MINOR_VERSION}.x-xxx-xunknown") +endif() + +######################################################################## +# Use the logic below to set the version constants +######################################################################## +if("${PATCH_VERSION}" STREQUAL "git") + # VERSION: 3.6git-xxx-gxxxxxxxx + # LIBVER: 3.6git + set(VERSION "${GIT_DESCRIBE}") + set(LIBVER "${MAJOR_VERSION}.${MINOR_VERSION}${PATCH_VERSION}") +else() + # This is a numbered release. + # VERSION: 3.6.1 + # LIBVER: 3.6.1 + set(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") + set(LIBVER "${VERSION}") +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4b91a4b..7cd62c8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,7 +35,8 @@ target_link_libraries(rtlsdr_shared set_target_properties(rtlsdr_shared PROPERTIES DEFINE_SYMBOL "rtlsdr_EXPORTS") set_target_properties(rtlsdr_shared PROPERTIES OUTPUT_NAME rtlsdr) -set_target_properties(rtlsdr_shared PROPERTIES SOVERSION 0 VERSION 0.0.0) +set_target_properties(rtlsdr_shared PROPERTIES SOVERSION ${MAJOR_VERSION}) +set_target_properties(rtlsdr_shared PROPERTIES VERSION ${LIBVER}) add_library(rtlsdr_static STATIC librtlsdr.c