| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- # - Extract information from a subversion working copy
- # The module defines the following variables:
- # Subversion_SVN_EXECUTABLE - path to svn command line client
- # Subversion_VERSION_SVN - version of svn command line client
- # Subversion_FOUND - true if the command line client was found
- # If the command line client executable is found the macro
- # Subversion_WC_INFO(<dir> <var-prefix>)
- # is defined to extract information of a subversion working copy at
- # a given location. The macro defines the following variables:
- # <var-prefix>_WC_URL - url of the repository (at <dir>)
- # <var-prefix>_WC_ROOT - root url of the repository
- # <var-prefix>_WC_REVISION - current revision
- # <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
- # <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
- # <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
- # <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision
- # <var-prefix>_WC_INFO - output of command `svn info <dir>'
- # Example usage:
- # FIND_PACKAGE(Subversion)
- # IF(Subversion_FOUND)
- # Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
- # MESSAGE("Current revision is ${Project_WC_REVISION}")
- # ENDIF(Subversion_FOUND)
- # Copyright (c) 2006, Tristan Carel
- # All rights reserved.
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are met:
- #
- # * Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # * Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in the
- # documentation and/or other materials provided with the distribution.
- # * Neither the name of the University of California, Berkeley nor the
- # names of its contributors may be used to endorse or promote products
- # derived from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
- # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
- # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- # $Id$
- SET(Subversion_FOUND FALSE)
- SET(Subversion_SVN_FOUND FALSE)
- FIND_PROGRAM(Subversion_SVN_EXECUTABLE svn
- DOC "subversion command line client")
- MARK_AS_ADVANCED(Subversion_SVN_EXECUTABLE)
- IF(Subversion_SVN_EXECUTABLE)
- SET(Subversion_SVN_FOUND TRUE)
- SET(Subversion_FOUND TRUE)
- MACRO(Subversion_WC_INFO dir prefix)
- EXECUTE_PROCESS(COMMAND ${Subversion_SVN_EXECUTABLE} --version
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- OUTPUT_VARIABLE Subversion_VERSION_SVN
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- EXECUTE_PROCESS(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir}
- OUTPUT_VARIABLE ${prefix}_WC_INFO
- ERROR_VARIABLE Subversion_svn_info_error
- RESULT_VARIABLE Subversion_svn_info_result
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- IF(NOT ${Subversion_svn_info_result} EQUAL 0)
- MESSAGE(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}")
- ELSE(NOT ${Subversion_svn_info_result} EQUAL 0)
- STRING(REGEX REPLACE "^(.*\n)?svn, version ([.0-9]+).*"
- "\\2" Subversion_VERSION_SVN "${Subversion_VERSION_SVN}")
- STRING(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
- "\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
- STRING(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
- "\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
- STRING(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
- STRING(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
- STRING(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
- ENDIF(NOT ${Subversion_svn_info_result} EQUAL 0)
- EXECUTE_PROCESS(COMMAND
- ${Subversion_SVN_EXECUTABLE} log -r BASE ${dir}
- OUTPUT_VARIABLE Subversion_LAST_CHANGED_LOG
- ERROR_VARIABLE Subversion_svn_log_error
- RESULT_VARIABLE Subversion_svn_log_result
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- IF(NOT ${Subversion_svn_log_result} EQUAL 0)
- MESSAGE(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} log -r BASE ${dir}\" failed with output:\n${Subversion_svn_log_error}")
- ENDIF(NOT ${Subversion_svn_log_result} EQUAL 0)
- ENDMACRO(Subversion_WC_INFO)
- ENDIF(Subversion_SVN_EXECUTABLE)
- IF(NOT Subversion_FOUND)
- IF(NOT Subversion_FIND_QUIETLY)
- MESSAGE(STATUS "Subversion was not found.")
- ELSE(NOT Subversion_FIND_QUIETLY)
- IF(Subversion_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Subversion was not found.")
- ENDIF(Subversion_FIND_REQUIRED)
- ENDIF(NOT Subversion_FIND_QUIETLY)
- ENDIF(NOT Subversion_FOUND)
- # FindSubversion.cmake ends here.
|