OSDN Git Service

temp
[gengkapak/clang-GengKapak.git] / lib / cmake / llvm / VersionFromVCS.cmake
1 # Adds version control information to the variable VERS. For
2 # determining the Version Control System used (if any) it inspects the
3 # existence of certain subdirectories under SOURCE_DIR (if provided as an
4 # extra argument, otherwise uses CMAKE_CURRENT_SOURCE_DIR).
5
6 function(get_source_info path revision repository)
7   find_package(Git QUIET)
8   if(GIT_FOUND)
9     execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir
10       WORKING_DIRECTORY ${path}
11       RESULT_VARIABLE git_result
12       OUTPUT_VARIABLE git_output
13       ERROR_QUIET)
14     if(git_result EQUAL 0)
15       string(STRIP "${git_output}" git_output)
16       get_filename_component(git_dir ${git_output} ABSOLUTE BASE_DIR ${path})
17       execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
18         WORKING_DIRECTORY ${path}
19         RESULT_VARIABLE git_result
20         OUTPUT_VARIABLE git_output)
21       if(git_result EQUAL 0)
22         string(STRIP "${git_output}" git_output)
23         set(${revision} ${git_output} PARENT_SCOPE)
24       endif()
25       execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref --symbolic-full-name @{upstream}
26         WORKING_DIRECTORY ${path}
27         RESULT_VARIABLE git_result
28         OUTPUT_VARIABLE git_output
29         ERROR_QUIET)
30       if(git_result EQUAL 0)
31         string(REPLACE "/" ";" branch ${git_output})
32         list(GET branch 0 remote)
33       else()
34         set(remote "origin")
35       endif()
36       execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote}
37         WORKING_DIRECTORY ${path}
38         RESULT_VARIABLE git_result
39         OUTPUT_VARIABLE git_output
40         ERROR_QUIET)
41       if(git_result EQUAL 0)
42         string(STRIP "${git_output}" git_output)
43         set(${repository} ${git_output} PARENT_SCOPE)
44       else()
45         set(${repository} ${path} PARENT_SCOPE)
46       endif()
47     endif()
48   else()
49     message(WARNING "Git not found. Version cannot be determined.")
50   endif()
51 endfunction()