summaryrefslogtreecommitdiffstats
path: root/CMakeScripts/inkscape-version.cmake
blob: a100f9a9b8a01b8bb671ba09dc4bb7d827bc118d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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()