Browse Source

ENH: for CVS CMake have cpack use the version date in the name of the package

Bill Hoffman 18 years ago
parent
commit
de46b1c298
2 changed files with 24 additions and 3 deletions
  1. 8 3
      CMakeCPack.cmake
  2. 16 0
      CMakeLists.txt

+ 8 - 3
CMakeCPack.cmake

@@ -10,10 +10,15 @@ IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
   SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
   SET(CPACK_PACKAGE_VERSION_MAJOR "${CMake_VERSION_MAJOR}")
   SET(CPACK_PACKAGE_VERSION_MINOR "${CMake_VERSION_MINOR}")
-  SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_PATCH}")
+# if version date is set then use that as the patch 
+  IF(CMake_VERSION_DATE)
+    SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_DATE}")
+  ELSE(CMake_VERSION_DATE)
+    SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_PATCH}")
+  ENDIF(CMake_VERSION_DATE)
   SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
   SET(CPACK_SOURCE_PACKAGE_FILE_NAME
-    "cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH}")
+    "cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
   IF(CMake_VERSION_RC)
     SET(CPACK_SOURCE_PACKAGE_FILE_NAME
       "${CPACK_SOURCE_PACKAGE_FILE_NAME}-RC-${CMake_VERSION_RC}")
@@ -53,7 +58,7 @@ IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
     SET(CPACK_PACKAGE_NAME cmake)
     # setup the name of the package for cygwin cmake-2.4.3
     SET(CPACK_PACKAGE_FILE_NAME
-      "${CPACK_PACKAGE_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH}")
+      "${CPACK_PACKAGE_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
     # the source has the same name as the binary
     SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
     # Create a cygwin version number in case there are changes for cygwin

+ 16 - 0
CMakeLists.txt

@@ -345,6 +345,22 @@ ENDMACRO (CMAKE_BUILD_UTILITIES)
 SET(CMake_VERSION_MAJOR 2)
 SET(CMake_VERSION_MINOR 5)
 SET(CMake_VERSION_PATCH 0)
+
+# CVS versions are odd, if this is an odd minor version
+# then set the CMake_VERSION_DATE variable
+MATH(EXPR OUT "${CMake_VERSION_MINOR} & 1")
+IF(OUT EQUAL 1)
+  # extract the version Date from the cmVersion.cxx file
+  FILE(READ "${CMake_SOURCE_DIR}/Source/cmVersion.cxx" 
+    CMAKE_VERSION_FILE_CONTENT)
+  STRING(REGEX MATCH "\\$Date: ([^ ]*) "
+    CMake_VERSION_DATE "${CMAKE_VERSION_FILE_CONTENT}")
+  STRING(REGEX REPLACE "\\$Date: ([^ ]*) " "\\1" 
+    CMake_VERSION_DATE "${CMake_VERSION_DATE}")
+  STRING(REPLACE "/" "" CMake_VERSION_DATE 
+    "${CMake_VERSION_DATE}")
+ENDIF(OUT EQUAL 1)
+
 SET(CMake_VERSION "${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
 SET(CMake_VERSION_FULL "${CMake_VERSION}.${CMake_VERSION_PATCH}")