diff options
Diffstat (limited to 'indra/cmake')
| -rw-r--r-- | indra/cmake/BuildVersion.cmake | 46 | 
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} ) | 
