diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a88d5fe95d70ca16f244db3ae32b1976b779c65..b1d59305c663644d46779f032cd52a1e37d189ef 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 0000000000000000000000000000000000000000..126adba8e261e1953573474e37a735fa9790a84b
--- /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 0000000000000000000000000000000000000000..51672e4e253d0f0b2f202a0f066f7ff80a4ee6c1
--- /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 3be3d1f68bc085034e7006f483b2d7ff2c16101c..00697549a17300114a597f5db7e90633f641538d 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