summaryrefslogtreecommitdiffstats
path: root/CMakeScripts/inkscape-version.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeScripts/inkscape-version.cmake')
-rw-r--r--CMakeScripts/inkscape-version.cmake34
1 files changed, 34 insertions, 0 deletions
diff --git a/CMakeScripts/inkscape-version.cmake b/CMakeScripts/inkscape-version.cmake
new file mode 100644
index 000000000..1d98a5799
--- /dev/null
+++ b/CMakeScripts/inkscape-version.cmake
@@ -0,0 +1,34 @@
+# This is called by cmake as an extermal process from
+# ./src/CMakeLists.txt and creates inkscape-version.cpp
+#
+# These variables are defined by the caller, matching the CMake equivilents.
+# - ${INKSCAPE_SOURCE_DIR}
+# - ${INKSCAPE_BINARY_DIR}
+
+# We should extract the version from build.xml
+# but for now just hard code
+set(INKSCAPE_REVISION "unknown")
+
+if(EXISTS ${INKSCAPE_SOURCE_DIR}/.bzr/)
+ execute_process(COMMAND
+ bzr revno ${INKSCAPE_SOURCE_DIR}
+ OUTPUT_VARIABLE INKSCAPE_REVISION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+file(WRITE
+ ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt
+ # unlike autoconf, include config.h
+ "#ifdef HAVE_CONFIG_H\n"
+ "# include <config.h>\n"
+ "#endif\n"
+ "\n"
+ "namespace Inkscape {\n"
+ " char const *version_string = VERSION \" \" \"${INKSCAPE_REVISION}\";\n"
+ "}\n")
+
+# Copy the file to the final header only if the version changes
+# and avoid needless rebuilds
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.txt
+ ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp)