version.cmake 3.03 KB
Newer Older
“yuguo”'s avatar
2.5  
“yuguo” committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Get the latest git tag.
set(CINN_VERSION $ENV{CINN_VERSION})
set(tmp_version "HEAD")
set(TAG_VERSION_REGEX "[0-9]+\\.[0-9]+\\.[0-9]+(\\.(a|b|rc)\\.[0-9]+)?")
set(COMMIT_VERSION_REGEX "[0-9a-f]+[0-9a-f]+[0-9a-f]+[0-9a-f]+[0-9a-f]+")
while("${CINN_VERSION}" STREQUAL "")
  # Check current branch name
  execute_process(
    COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref ${tmp_version}
    WORKING_DIRECTORY ${PADDLE_SOURCE_DIR}
    OUTPUT_VARIABLE GIT_BRANCH_NAME
    RESULT_VARIABLE GIT_BRANCH_RESULT
    ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
  if(NOT ${GIT_BRANCH_RESULT})
    execute_process(
      COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0 --always
              ${tmp_version}
      WORKING_DIRECTORY ${PADDLE_SOURCE_DIR}
      OUTPUT_VARIABLE GIT_TAG_NAME
      RESULT_VARIABLE GIT_RESULT
      ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
    if(NOT ${GIT_RESULT})
      # Check if current branch is release branch
      if(${GIT_BRANCH_NAME} MATCHES "release/${TAG_VERSION_REGEX}")
        # Check the tag is a correct version
        if(${GIT_TAG_NAME} MATCHES "${COMMIT_VERSION_REGEX}")
          # if no tag was found, set CINN_VERSION to 0.0.0 to represent latest
          set(CINN_VERSION "0.0.0")
        elseif(${GIT_TAG_NAME} MATCHES "v${TAG_VERSION_REGEX}")
          string(REPLACE "v" "" CINN_VERSION ${GIT_TAG_NAME})
        else() # otherwise, get the previous git tag name.
          set(tmp_version "${GIT_TAG_NAME}~1")
        endif()
      else()
        execute_process(
          COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags ${tmp_version}
          WORKING_DIRECTORY ${PADDLE_SOURCE_DIR}
          OUTPUT_VARIABLE GIT_EXACT_TAG_NAME
          RESULT_VARIABLE GIT_EXACT_TAG_RESULT
          ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
        if(NOT ${GIT_EXACT_TAG_NAME})
          # Check if current branch is tag branch
          if(${GIT_EXACT_TAG_NAME} MATCHES "v${TAG_VERSION_REGEX}")
            string(REPLACE "v" "" CINN_VERSION ${GIT_EXACT_TAG_NAME})
          else()
            set(CINN_VERSION "0.0.0")
          endif()
        else()
          # otherwise, we always set CINN_VERSION to 0.0.0 to represent latest
          set(CINN_VERSION "0.0.0")
        endif()
      endif()
    else()
      set(CINN_VERSION "0.0.0")
      message(WARNING "Cannot add CINN version from git tag")
    endif()
  else()
    set(CINN_VERSION "0.0.0")
    message(WARNING "Cannot add CINN version for wrong git branch result")
  endif()
endwhile()

string(REPLACE "-" "." CINN_VER_LIST ${CINN_VERSION})
string(REPLACE "." ";" CINN_VER_LIST ${CINN_VER_LIST})
list(GET CINN_VER_LIST 0 CINN_MAJOR_VER)
list(GET CINN_VER_LIST 1 CINN_MINOR_VER)
list(GET CINN_VER_LIST 2 CINN_PATCH_VER)
math(EXPR CINN_VERSION_INTEGER "${CINN_MAJOR_VER} * 1000000
    + ${CINN_MINOR_VER} * 1000 + ${CINN_PATCH_VER}")

add_definitions(-DCINN_VERSION=${CINN_VERSION})
add_definitions(-DCINN_VERSION_INTEGER=${CINN_VERSION_INTEGER})
message(
  STATUS
    "CINN version is ${CINN_VERSION} (major: ${CINN_MAJOR_VER}, minor: ${CINN_MINOR_VER}, patch: ${CINN_PATCH_VER})"
)