Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
14 | pmbaty | 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() |