# Get info from git, e.g., v2.10-35-g85fe7b13
# In order to work, add tag to git in a form "v3.4"
execute_process(COMMAND CMD /c git describe --tags --long --abbrev=8 --match v[0-9]* OUTPUT_VARIABLE GIT_COMMIT_INFO)

# Check if git tag is found
set(VERSION_REGEX "v([0-9]+)\.([0-9]+)")
if(NOT GIT_COMMIT_INFO MATCHES ${VERSION_REGEX})
  message(FATAL_ERROR "ERROR: Tag not found: Set a tag with version number in git, e.g., v3.4")
endif()

# Get major and minor versions
string(REGEX MATCH ${VERSION_REGEX} CENOS_TEMP ${GIT_COMMIT_INFO})
set(VERSION_MAJOR ${CMAKE_MATCH_1})
set(VERSION_MINOR ${CMAKE_MATCH_2})

# Get number of commits after the tag and use it as a patch version. Get also commit hash
string(REGEX MATCH "-([0-9a-f]+)-g([0-9a-f]+)" CENOS_TEMP ${GIT_COMMIT_INFO})
set(VERSION_PATCH ${CMAKE_MATCH_1})
set(VERSION_HASH ${CMAKE_MATCH_2})

# Compose version
set(CENOS_BACKEND_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
message(${CENOS_BACKEND_VERSION} " <= CENOS BACKEND VERSION")

# Add version number to files
configure_file(${CMAKE_SOURCE_DIR}/version.rc.in ${CMAKE_BINARY_DIR}/version.rc @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/version.json.in ${CMAKE_BINARY_DIR}/version.json @ONLY)
