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.cmake52
1 files changed, 52 insertions, 0 deletions
diff --git a/CMakeScripts/inkscape-version.cmake b/CMakeScripts/inkscape-version.cmake
new file mode 100644
index 0000000..a100f9a
--- /dev/null
+++ b/CMakeScripts/inkscape-version.cmake
@@ -0,0 +1,52 @@
+# This is called by cmake as an extermal process from
+# ./src/CMakeLists.txt and creates inkscape-version.cpp
+#
+# It's also included directly in ./CMakeScripts/Dist.cmake to
+# determine INKSCAPE_REVISION, INKSCAPE_REVISION_HASH and INKSCAPE_REVISION_DATE
+# for the 'dist' targets
+#
+# These variables are defined by the caller, matching the CMake equivilents.
+# - ${INKSCAPE_SOURCE_DIR}
+# - ${INKSCAPE_BINARY_DIR}
+
+set(INKSCAPE_REVISION "0e150ed6c4, 2023-07-21")
+
+if(EXISTS ${INKSCAPE_SOURCE_DIR}/.git)
+ execute_process(COMMAND git rev-parse --short HEAD
+ WORKING_DIRECTORY ${INKSCAPE_SOURCE_DIR}
+ OUTPUT_VARIABLE INKSCAPE_REVISION_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND git log -n 1 --pretty=%cd --date=short
+ WORKING_DIRECTORY ${INKSCAPE_SOURCE_DIR}
+ OUTPUT_VARIABLE INKSCAPE_REVISION_DATE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(INKSCAPE_REVISION "${INKSCAPE_REVISION_HASH}, ${INKSCAPE_REVISION_DATE}")
+
+ execute_process(COMMAND
+ git status -s ${INKSCAPE_SOURCE_DIR}/src
+ WORKING_DIRECTORY ${INKSCAPE_SOURCE_DIR}
+ OUTPUT_VARIABLE INKSCAPE_SOURCE_MODIFIED
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(NOT INKSCAPE_SOURCE_MODIFIED STREQUAL "")
+ set(INKSCAPE_REVISION "${INKSCAPE_REVISION}, custom")
+ endif()
+elseif(EXISTS ${INKSCAPE_SOURCE_DIR}/debian/git-build-recipe.manifest)
+ # workaround for debian packaging in ppa (where we have no repo)
+ # TODO: figure out how to match this to standard build environments
+ execute_process(COMMAND sed -n "s/.*deb-version\\s*//p" git-build-recipe.manifest
+ WORKING_DIRECTORY ${INKSCAPE_SOURCE_DIR}/debian
+ OUTPUT_VARIABLE DEB_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(INKSCAPE_REVISION "${DEB_VERSION}")
+endif()
+
+if(${INKSCAPE_REVISION_DATE} MATCHES "^([0-9][0-9][0-9][0-9])-[0-9][0-9]-[0-9][0-9]$")
+ set(INKSCAPE_BUILD_YEAR ${CMAKE_MATCH_1})
+else()
+ string(TIMESTAMP INKSCAPE_BUILD_YEAR %Y UTC)
+endif()
+
+if(NOT "${INKSCAPE_BINARY_DIR}" STREQUAL "")
+ message("revision is " ${INKSCAPE_REVISION})
+ configure_file(${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp.in ${INKSCAPE_BINARY_DIR}/src/inkscape-version.cpp)
+endif()