summaryrefslogtreecommitdiff
path: root/indra/cmake/BuildVersion.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake/BuildVersion.cmake')
-rw-r--r--indra/cmake/BuildVersion.cmake46
1 files changed, 26 insertions, 20 deletions
diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake
index 389ded1d98..195d6e705e 100644
--- a/indra/cmake/BuildVersion.cmake
+++ b/indra/cmake/BuildVersion.cmake
@@ -15,27 +15,33 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n
message("Revision (from environment): ${VIEWER_VERSION_REVISION}")
else (DEFINED ENV{revision})
- find_program(MERCURIAL hg)
- find_program(WORDCOUNT wc)
- find_program(SED sed)
- if (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
- execute_process(
- COMMAND ${MERCURIAL} log -r tip:0 --template '\\n'
- COMMAND ${WORDCOUNT} -l
- COMMAND ${SED} "s/ //g"
- OUTPUT_VARIABLE VIEWER_VERSION_REVISION
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
- message("Revision (from hg) ${VIEWER_VERSION_REVISION}")
- else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
- message("Revision not set (repository not found?); using 0")
- set(VIEWER_VERSION_REVISION 0 )
- endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
- else (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
- message("Revision not set: 'hg', 'wc' or 'sed' not found; using 0")
+ find_program(MERCURIAL
+ NAMES hg
+ PATHS [HKEY_LOCAL_MACHINE\\Software\\TortoiseHG]
+ PATH_SUFFIXES Mercurial)
+ mark_as_advanced(MERCURIAL)
+ if (MERCURIAL)
+ execute_process(COMMAND ${MERCURIAL} identify --num --rev tip
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ RESULT_VARIABLE hg_id_result
+ ERROR_VARIABLE hg_id_error
+ OUTPUT_VARIABLE VIEWER_VERSION_REVISION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (NOT ${hg_id_result} EQUAL 0)
+ message(SEND_ERROR "Revision number generation failed with output:\n${hg_id_error}")
+ else (NOT ${hg_id_result} EQUAL 0)
+ string(REGEX REPLACE "[^0-9a-f]" "" VIEWER_VERSION_REVISION ${VIEWER_VERSION_REVISION})
+ endif (NOT ${hg_id_result} EQUAL 0)
+ if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
+ message("Revision (from hg) ${VIEWER_VERSION_REVISION}")
+ else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
+ message("Revision not set (repository not found?); using 0")
+ set(VIEWER_VERSION_REVISION 0 )
+ endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
+ else (MERCURIAL)
+ message("Revision not set: mercurial not found; using 0")
set(VIEWER_VERSION_REVISION 0)
- endif (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
+ endif (MERCURIAL)
endif (DEFINED ENV{revision})
message("Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
else ( EXISTS ${VIEWER_VERSION_BASE_FILE} )