mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-03-23 09:59:39 -04:00
81 lines
2.5 KiB
CMake
81 lines
2.5 KiB
CMake
# 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)
|