From 0c7029c6420d6387b74a85bb8e62194e80b4e879 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 20 Apr 2012 11:20:48 -0400 Subject: [PATCH] Refactor CMake version handling Move the CMake version number components out of "CMakeLists.txt" into dedicated file "Source/CMakeVersion.cmake". Set the TWEAK level to the date explicitly. Add a "Source/CMakeVersion.bash" script to update the date, thus replacing KWSys DateStamp for CMake. Teach the bootstrap script to extract the version components from their new location. --- CMakeLists.txt | 19 +++---------------- Source/CMakeVersion.bash | 7 +++++++ Source/CMakeVersion.cmake | 6 ++++++ bootstrap | 12 +----------- 4 files changed, 17 insertions(+), 27 deletions(-) create mode 100755 Source/CMakeVersion.bash create mode 100644 Source/CMakeVersion.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a88d5fe9..b1d59305c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -422,26 +422,13 @@ ENDIF() # The main section of the CMakeLists file # #----------------------------------------------------------------------- -# The CMake version number. -SET(CMake_VERSION_MAJOR 2) -SET(CMake_VERSION_MINOR 8) -SET(CMake_VERSION_PATCH 8) -#SET(CMake_VERSION_TWEAK 0) -#SET(CMake_VERSION_RC 1) - -# Releases define a tweak level. -IF(DEFINED CMake_VERSION_TWEAK) +INCLUDE(Source/CMakeVersion.cmake) +# Releases define a small tweak level. +IF("${CMake_VERSION_TWEAK}" VERSION_LESS 20000000) SET(CMake_VERSION_IS_RELEASE 1) SET(CMake_VERSION_SOURCE "") ELSE() SET(CMake_VERSION_IS_RELEASE 0) - - # Use the date as the tweak level. - INCLUDE(${CMake_SOURCE_DIR}/Source/kwsys/kwsysDateStamp.cmake) - SET(CMake_VERSION_TWEAK - "${KWSYS_DATE_STAMP_YEAR}${KWSYS_DATE_STAMP_MONTH}${KWSYS_DATE_STAMP_DAY}" - ) - INCLUDE(${CMake_SOURCE_DIR}/Source/CMakeVersionSource.cmake) ENDIF() diff --git a/Source/CMakeVersion.bash b/Source/CMakeVersion.bash new file mode 100755 index 000000000..126adba8e --- /dev/null +++ b/Source/CMakeVersion.bash @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Update the version component if it looks like a date or -f is given. +if test "x$1" = "x-f"; then shift ; n='*' ; else n='\{8\}' ; fi +if test "$#" -gt 0; then echo 1>&2 "usage: CMakeVersion.bash [-f]"; exit 1; fi +sed -i -e ' +s/\(^SET(CMake_VERSION_TWEAK\) [0-9]'"$n"'\(.*\)/\1 '"$(date +%Y%m%d)"'\2/ +' "${BASH_SOURCE%/*}/CMakeVersion.cmake" diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake new file mode 100644 index 000000000..51672e4e2 --- /dev/null +++ b/Source/CMakeVersion.cmake @@ -0,0 +1,6 @@ +# CMake version number components. +SET(CMake_VERSION_MAJOR 2) +SET(CMake_VERSION_MINOR 8) +SET(CMake_VERSION_PATCH 8) +SET(CMake_VERSION_TWEAK 20120420) +#SET(CMake_VERSION_RC 1) diff --git a/bootstrap b/bootstrap index 3be3d1f68..00697549a 100755 --- a/bootstrap +++ b/bootstrap @@ -18,18 +18,11 @@ die() { # Version number extraction function. cmake_version_component() { - cat "${cmake_source_dir}/CMakeLists.txt" | sed -n " + cat "${cmake_source_dir}/Source/CMakeVersion.cmake" | sed -n " /^SET(CMake_VERSION_${1}/ {s/SET(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;} " } -cmake_date_stamp_component() -{ - cat "${cmake_source_dir}/Source/kwsys/kwsysDateStamp.cmake" | sed -n " -/KWSYS_DATE_STAMP_${1}/ {s/^.* \([0-9][0-9]*\))$/\1/;p;} -" -} - cmake_toupper() { echo "$1" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' @@ -46,9 +39,6 @@ cmake_version_minor="`cmake_version_component MINOR`" cmake_version_patch="`cmake_version_component PATCH`" cmake_version="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}" cmake_version_tweak="`cmake_version_component TWEAK`" -if [ "x$cmake_version_tweak" = "x" ]; then - cmake_version_tweak="`cmake_date_stamp_component YEAR``cmake_date_stamp_component MONTH``cmake_date_stamp_component DAY`" -fi if [ "$cmake_version_tweak" != "0" ]; then cmake_version="${cmake_version}.${cmake_version_tweak}" fi