build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
--- a/CMakeLists.txt Thu Jan 15 20:38:23 2009 +0200
+++ b/CMakeLists.txt Thu Jan 15 21:33:54 2009 +0200
@@ -1,10 +1,6 @@
set(PROJECT_SHORT_NAME "kg")
set(PROJECT_LONG_NAME "Kisna Glista")
-# XXX: wrong
-set(PROJECT_VERSION_MAJOR 0)
-set(PROJECT_VERSION_MINOR 1)
-
project(${PROJECT_SHORT_NAME})
cmake_minimum_required(VERSION 2.6)
@@ -16,10 +12,6 @@
# Where to find project source code (hh+cc)
set(PROJECT_SOURCECODE_DIR "${CMAKE_SOURCE_DIR}/src")
-# Project version
-# XXX: hardcoded
-set(PROJECT_VERSION "0.1.0")
-
# Where to install project data files
set(PROJECT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_SHORT_NAME}")
@@ -32,6 +24,12 @@
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif(NOT CMAKE_BUILD_TYPE)
+# include cmake stuff
+include ("cmake/FindVersion.cmake")
+
+# Determine PROJECT_VERSION
+FindProjectVersion ("${CMAKE_SOURCE_DIR}")
+
# skip source code definitions if just building docs
if (NOT KG_DOC_ONLY)
add_subdirectory(src)
--- a/build/mkcmake.sh Thu Jan 15 20:38:23 2009 +0200
+++ b/build/mkcmake.sh Thu Jan 15 21:33:54 2009 +0200
@@ -26,7 +26,7 @@
if [ -x /p/contrib/bin/doxygen ]; then
echo "Detected doxygen in /p/contrib/bin/"
- DOXYGEN_HOME=/p/contrib/bin
+ export DOXYGEN_HOME=/p/contrib/bin
fi
# output parameters
@@ -38,6 +38,6 @@
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
-DCMAKE_CXX_FLAGS="-Wall -Wextra -Wconversion" \
- -DDOXYGEN_HOME=${DOXYGEN_HOME} \
+# -DDOXYGEN_HOME=${DOXYGEN_HOME} \
${EXTRA_OPTS}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/FindVersion.cmake Thu Jan 15 21:33:54 2009 +0200
@@ -0,0 +1,48 @@
+#
+# CMake build script to determine project version number.
+#
+# this will set PROJECT_VERSION to a string
+#
+FUNCTION (FindProjectVersion project_path)
+ # XXX: only support mercurial for now
+
+ MESSAGE (STATUS "project_path=${project_path}")
+
+ # first, determine tag
+ EXECUTE_PROCESS (
+ COMMAND hg identify --tag
+ WORKING_DIRECTORY "${project_path}"
+ RESULT_VARIABLE hg_error_code
+ OUTPUT_VARIABLE hg_tag
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ if (hg_error_code)
+ MESSAGE (FATAL_ERROR "`hg identify --tag` failed")
+ endif (hg_error_code)
+
+ # if tag is other than tip, use that
+ if ("${hg_tag}" STREQUAL "tip")
+ # use the revision hash
+ EXECUTE_PROCESS (
+ COMMAND hg identify --id
+ WORKING_DIRECTORY "${project_path}"
+ RESULT_VARIABLE hg_error_code
+ OUTPUT_VARIABLE hg_id
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ if (hg_error_code)
+ MESSAGE (FATAL_ERROR "`hg identify --id` failed")
+ endif (hg_error_code)
+
+ SET (PROJECT_VERSION "${hg_id}" PARENT_SCOPE)
+ MESSAGE (STATUS "Version: mercurial tip id: ${hg_id}")
+
+ else ("${hg_tag}" STREQUAL "tip")
+ SET (PROJECT_VERSION "${hg_tag}" PARENT_SCOPE)
+ MESSAGE (STATUS "Version: mercurial tag: ${hg_tag}")
+
+ endif ("${hg_tag}" STREQUAL "tip")
+
+ENDFUNCTION (FindProjectVersion)
--- a/cmake/Modules/FindDoxygen.cmake Thu Jan 15 20:38:23 2009 +0200
+++ b/cmake/Modules/FindDoxygen.cmake Thu Jan 15 21:33:54 2009 +0200
@@ -27,18 +27,16 @@
FIND_PROGRAM (DOXYGEN_EXECUTABLE
NAMES doxygen
DOC "Path to doxygen binary"
- PATHS
- $ENV{DOXYGEN_HOME}
+ PATHS $ENV{DOXYGEN_HOME}
)
-#MESSAGE("DBG DOXYGEN_EXECUTABLE=${DOXYGEN_EXECUTABLE}")
+#MESSAGE(STATUS "DBG DOXYGEN_EXECUTABLE=${DOXYGEN_EXECUTABLE}")
FIND_PROGRAM (DOXYGEN_DOT_EXECUTABLE
NAMES dot
DOC "Path to dot binary from Graphiz (for doxygen)"
- PATHS
- $ENV{DOT_HOME}
+ PATHS $ENV{DOT_HOME}
)
-#MESSAGE("DBG DOXYGEN_DOT_EXECUTABLE=${DOXYGEN_DOT_EXECUTABLE}")
+#MESSAGE(STATUS "DBG DOXYGEN_DOT_EXECUTABLE=${DOXYGEN_DOT_EXECUTABLE}")
IF (DOXYGEN_EXECUTABLE)
SET (DOXYGEN_FOUND TRUE)
--- a/doc/CMakeLists.txt Thu Jan 15 20:38:23 2009 +0200
+++ b/doc/CMakeLists.txt Thu Jan 15 21:33:54 2009 +0200
@@ -28,5 +28,8 @@
MESSAGE (STATUS "Doxygen: output will be installed in ${PROJECT_DOXYGEN_DIR}")
+ELSE (DOXYGEN_FOUND)
+ MESSAGE (STATUS "Doxygen: not found :(")
+
ENDIF (DOXYGEN_FOUND)
--- a/src/Config.hh Thu Jan 15 20:38:23 2009 +0200
+++ b/src/Config.hh Thu Jan 15 21:33:54 2009 +0200
@@ -113,7 +113,7 @@
const CL_Color COLOR_ROCK(132, 136, 135);
// graphics params
-const std::string GRAPHICS_WINDOW_TITLE = "Kisna Glista";
+const std::string GRAPHICS_WINDOW_TITLE = (PROJECT_LONG_NAME " : Version " PROJECT_VERSION);
const uint32_t GRAPHICS_RESOLUTION_WIDTH = 800;
const uint32_t GRAPHICS_RESOLUTION_HEIGHT = 600;
const uint16_t GRAPHICS_UPDATE_INTERVAL_MS = 20;
--- a/src/config.h.in Thu Jan 15 20:38:23 2009 +0200
+++ b/src/config.h.in Thu Jan 15 21:33:54 2009 +0200
@@ -7,7 +7,7 @@
#define PROJECT_DATA_DIR "@PROJECT_DATA_DIR@"
#define PROJECT_SHORT_NAME "@PROJECT_SHORT_NAME@"
#define PROJECT_LONG_NAME "@PROJECT_LONG_NAME@"
-#define PROJECT_VERSION "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@"
+#define PROJECT_VERSION "@PROJECT_VERSION@"
#endif