# SPDX-FileCopyrightText: 2019 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later function(get_timestamp _var) string(TIMESTAMP timestamp UTC) set(${_var} "${timestamp}" PARENT_SCOPE) endfunction() include(GetGitRevisionDescription) if(NOT GIT_REF_SPEC) get_git_head_revision(GIT_REF_SPEC GIT_REV) endif() if(NOT GIT_DESC) git_describe(GIT_DESC --always --long --dirty) endif() if (NOT GIT_BRANCH) git_branch_name(GIT_BRANCH) endif() get_timestamp(BUILD_DATE) # Handle the Variant variable from the build script. if (NOT CITRON_VARIANT) set(CITRON_VARIANT "Generic") endif() # Clean up the Git Description (strip -dirty and tags for a clean hash) string(REGEX REPLACE "-dirty$" "" GIT_HASH_CLEAN "${GIT_DESC}") string(REGEX MATCH "[0-9a-fA-F]{7,40}" GIT_HASH_FINAL "${GIT_HASH_CLEAN}") if (NOT GIT_HASH_FINAL) set(GIT_HASH_FINAL "${GIT_HASH_CLEAN}") endif() # Always compute the version number string (e.g. 0.11.0) if(DEFINED CITRON_VERSION_MAJOR) set(CITRON_VERSION_STR "${CITRON_VERSION_MAJOR}.${CITRON_VERSION_MINOR}.${CITRON_VERSION_PATCH}") else() set(CITRON_VERSION_STR "0.11.0") endif() if(CITRON_BUILD_TYPE STREQUAL "Stable") set(BUILD_TYPE_NAME "Stable") set(BUILD_VERSION "${CITRON_VERSION_STR}") set(BUILD_ID ${DISPLAY_VERSION}) else() set(BUILD_TYPE_NAME "Nightly") set(REPO_NAME "") set(BUILD_VERSION "0") set(BUILD_ID ${DISPLAY_VERSION}) if (BUILD_REPOSITORY) string(REGEX MATCH "citron-emu/citron-?(.*)" OUTVAR ${BUILD_REPOSITORY}) if ("${CMAKE_MATCH_COUNT}" GREATER 0) string(REPLACE "-" ";" REPO_NAME_LIST ${CMAKE_MATCH_1}) foreach(WORD ${REPO_NAME_LIST}) string(SUBSTRING ${WORD} 0 1 FIRST_LETTER) string(SUBSTRING ${WORD} 1 -1 REMAINDER) string(TOUPPER ${FIRST_LETTER} FIRST_LETTER) set(REPO_NAME "${REPO_NAME}${FIRST_LETTER}${REMAINDER}") endforeach() if (BUILD_TAG) string(REGEX MATCH "${CMAKE_MATCH_1}-([0-9]+)" OUTVAR ${BUILD_TAG}) if (${CMAKE_MATCH_COUNT} GREATER 0) set(BUILD_VERSION ${CMAKE_MATCH_1}) endif() endif() endif() endif() if (BUILD_VERSION STREQUAL "0") set(BUILD_VERSION ${GIT_HASH_FINAL}) endif() endif() # Final SCM Fullname: e.g. "Nightly | Linux x86_64 v3" set(BUILD_FULLNAME "${BUILD_TYPE_NAME} | ${CITRON_VARIANT} ") set(CITRON_VARIANT_BAKED ${CITRON_VARIANT}) set(CITRON_VERSION_BAKED ${CITRON_VERSION_STR}) set(CITRON_HASH_BAKED ${GIT_HASH_FINAL}) configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)