1 if(CMAKE_VERSION VERSION_LESS "2.8.10")
2 find_program(HG_EXECUTABLE hg)
6 find_package(Git QUIET) # present in 2.8.8
8 # defaults, in case everything below fails
9 set(X265_VERSION "1.4+222+hg5f9f7194267b")
10 set(X265_LATEST_TAG "1.4")
11 set(X265_TAG_DISTANCE "222")
13 if(EXISTS ${CMAKE_SOURCE_DIR}/../.hg_archival.txt)
14 # read the lines of the archive summary file to extract the version
15 file(READ ${CMAKE_SOURCE_DIR}/../.hg_archival.txt archive)
16 STRING(REGEX REPLACE "\n" ";" archive "${archive}")
18 string(FIND "${f}" ": " pos)
19 string(SUBSTRING "${f}" 0 ${pos} key)
20 string(SUBSTRING "${f}" ${pos} -1 value)
21 string(SUBSTRING "${value}" 2 -1 value)
22 set(hg_${key} ${value})
25 set(X265_VERSION ${hg_tag})
26 set(X265_LATEST_TAG ${hg_tag})
27 set(X265_TAG_DISTANCE "222")
28 elseif(DEFINED hg_node)
29 string(SUBSTRING "${hg_node}" 0 16 hg_id)
30 set(X265_VERSION "${hg_latesttag}+${hg_latesttagdistance}-${hg_id}")
32 elseif(HG_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/../.hg)
33 if(EXISTS "${HG_EXECUTABLE}.bat")
34 # mercurial source installs on Windows require .bat extension
35 set(HG_EXECUTABLE "${HG_EXECUTABLE}.bat")
37 message(STATUS "hg found at ${HG_EXECUTABLE}")
39 execute_process(COMMAND
40 ${HG_EXECUTABLE} log -r. --template "{latesttag}"
41 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
42 OUTPUT_VARIABLE X265_LATEST_TAG
44 OUTPUT_STRIP_TRAILING_WHITESPACE
46 execute_process(COMMAND
47 ${HG_EXECUTABLE} log -r. --template "{latesttagdistance}"
48 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
49 OUTPUT_VARIABLE X265_TAG_DISTANCE
51 OUTPUT_STRIP_TRAILING_WHITESPACE
55 ${HG_EXECUTABLE} log -r. --template "{node|short}"
56 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
57 OUTPUT_VARIABLE HG_REVISION_ID
59 OUTPUT_STRIP_TRAILING_WHITESPACE
62 if(X265_LATEST_TAG MATCHES "^r")
63 string(SUBSTRING ${X265_LATEST_TAG} 1 -1 X265_LATEST_TAG)
65 if(X265_TAG_DISTANCE STREQUAL "0")
66 set(X265_VERSION "${X265_LATEST_TAG}")
68 set(X265_VERSION "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${HG_REVISION_ID}")
70 elseif(GIT_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/../.git)
73 ${GIT_EXECUTABLE} describe --tags --abbrev=0
74 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
75 OUTPUT_VARIABLE X265_LATEST_TAG
77 OUTPUT_STRIP_TRAILING_WHITESPACE
82 ${GIT_EXECUTABLE} describe --tags
83 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
84 OUTPUT_VARIABLE X265_VERSION
86 OUTPUT_STRIP_TRAILING_WHITESPACE
90 message(STATUS "x265 version ${X265_VERSION}")