-
-
Notifications
You must be signed in to change notification settings - Fork 494
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Better window title and git version detection
- Loading branch information
Showing
6 changed files
with
65 additions
and
214 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,130 +1,69 @@ | ||
# - Returns a version string from Git | ||
# | ||
# These functions force a re-configure on each git commit so that you can | ||
# trust the values of the variables in your build system. | ||
# SuperTux | ||
# Copyright (C) 2024 MatusGuy <matusguy@supertuxproject.org> | ||
# | ||
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...]) | ||
# This program is free software; you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License as published by | ||
# the Free Software Foundation; either version 2 of the License, or | ||
# (at your option) any later version. | ||
# | ||
# Returns the refspec and sha hash of the current head revision | ||
# This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU General Public License for more details. | ||
# | ||
# git_describe(<var> [<additional arguments to git describe> ...]) | ||
# You should have received a copy of the GNU General Public License | ||
# along with this program; if not, write to the Free Software | ||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
# | ||
# Returns the results of git describe on the source tree, and adjusting | ||
# the output so that it tests false if an error occurs. | ||
# | ||
# git_get_exact_tag(<var> [<additional arguments to git describe> ...]) | ||
# | ||
# Returns the results of git describe --exact-match on the source tree, | ||
# and adjusting the output so that it tests false if there was no exact | ||
# matching tag. | ||
# | ||
# Requires CMake 2.6 or newer (uses the 'function' command) | ||
# | ||
# Original Author: | ||
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> | ||
# http://academic.cleardefinition.com | ||
# Iowa State University HCI Graduate Program/VRAC | ||
# | ||
# Copyright Iowa State University 2009-2010. | ||
# Distributed under the Boost Software License, Version 1.0. | ||
# (See accompanying file LICENSE_1_0.txt or copy at | ||
# http://www.boost.org/LICENSE_1_0.txt) | ||
|
||
if(__get_git_revision_description) | ||
return() | ||
endif() | ||
set(__get_git_revision_description YES) | ||
|
||
# We must run the following at "include" time, not at function call time, | ||
# to find the path to this module rather than the path to a calling list file | ||
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) | ||
|
||
function(get_git_head_revision _refspecvar _hashvar) | ||
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") | ||
set(GIT_DIR "${GIT_PARENT_DIR}/.git") | ||
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories | ||
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") | ||
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) | ||
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) | ||
# We have reached the root directory, we are not in git | ||
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) | ||
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) | ||
return() | ||
endif() | ||
set(GIT_DIR "${GIT_PARENT_DIR}/.git") | ||
endwhile() | ||
# check if this is a submodule | ||
if(NOT IS_DIRECTORY ${GIT_DIR}) | ||
file(READ ${GIT_DIR} submodule) | ||
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) | ||
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) | ||
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) | ||
endif() | ||
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") | ||
if(NOT EXISTS "${GIT_DATA}") | ||
file(MAKE_DIRECTORY "${GIT_DATA}") | ||
endif() | ||
|
||
if(NOT EXISTS "${GIT_DIR}/HEAD") | ||
return() | ||
endif() | ||
set(HEAD_FILE "${GIT_DATA}/HEAD") | ||
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) | ||
find_package(Git QUIET) | ||
|
||
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" | ||
"${GIT_DATA}/grabRef.cmake" | ||
@ONLY) | ||
include("${GIT_DATA}/grabRef.cmake") | ||
macro(git_run) | ||
cmake_parse_arguments(GIT_RUN "" "RESULT;OUTPUT" "COMMAND" ${ARGN}) | ||
|
||
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) | ||
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) | ||
endfunction() | ||
if(NOT GIT_FOUND) | ||
set(${GIT_RUN_OUTPUT} ${GIT_RUN_OUTPUT}-NOTFOUND) | ||
# Can't use a return command here because... Macro. | ||
else() | ||
execute_process(COMMAND ${GIT_EXECUTABLE} ${GIT_RUN_COMMAND} | ||
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" | ||
RESULT_VARIABLE ${GIT_RUN_RESULT} | ||
OUTPUT_VARIABLE ${GIT_RUN_OUTPUT}) | ||
|
||
function(git_describe _var) | ||
if(NOT GIT_FOUND) | ||
find_package(Git QUIET) | ||
endif() | ||
get_git_head_revision(refspec hash) | ||
if(NOT GIT_FOUND) | ||
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) | ||
return() | ||
endif() | ||
if(NOT hash) | ||
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) | ||
return() | ||
endif() | ||
if(${${GIT_RUN_RESULT}} EQUAL 0) | ||
string(REPLACE "\n" "" ${GIT_RUN_OUTPUT} "${${GIT_RUN_OUTPUT}}") | ||
else() | ||
message(STATUS "\"${GIT_EXECUTABLE} ${GIT_RUN_COMMAND}\" failed with result \"${${GIT_RUN_RESULT}}\".") | ||
set(${GIT_RUN_OUTPUT} ${GIT_RUN_OUTPUT}-NOTFOUND) | ||
endif() | ||
endif() | ||
endmacro() | ||
|
||
# TODO sanitize | ||
#if((${ARGN}" MATCHES "&&") OR | ||
# (ARGN MATCHES "||") OR | ||
# (ARGN MATCHES "\\;")) | ||
# message("Please report the following error to the project!") | ||
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") | ||
#endif() | ||
macro(git_project_version out is_release) | ||
if(NOT GIT_FOUND OR NOT EXISTS "${PROJECT_SOURCE_DIR}/.git") | ||
set(${out} ${out}-NOTFOUND) | ||
set(${is_release} NO) | ||
# Can't use a return command here because... Macro. | ||
else() | ||
# Tag | ||
git_run(COMMAND describe --tags --abbrev=0 OUTPUT _tag RESULT _result) | ||
|
||
#message(STATUS "Arguments to execute_process: ${ARGN}") | ||
# Commits since tag | ||
git_run(COMMAND rev-list ${_tag}..HEAD --count OUTPUT _tagn RESULT _result) | ||
|
||
execute_process(COMMAND | ||
"${GIT_EXECUTABLE}" | ||
describe | ||
${hash} | ||
${ARGN} | ||
WORKING_DIRECTORY | ||
"${CMAKE_CURRENT_SOURCE_DIR}" | ||
RESULT_VARIABLE | ||
res | ||
OUTPUT_VARIABLE | ||
out | ||
# ERROR_QUIET | ||
OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
if(NOT res EQUAL 0) | ||
set(out "${out}-${res}-NOTFOUND") | ||
endif() | ||
if(_tagn STREQUAL "0") | ||
set(${is_release} YES) | ||
set(${out} "${_tag}") | ||
else() | ||
# Commit hash | ||
git_run(COMMAND rev-parse --short HEAD OUTPUT _hash RESULT _result) | ||
|
||
set(${_var} "${out}" PARENT_SCOPE) | ||
endfunction() | ||
# Branch | ||
git_run(COMMAND rev-parse --abbrev-ref HEAD OUTPUT _branch RESULT _result) | ||
|
||
function(git_get_exact_tag _var) | ||
git_describe(out --exact-match ${ARGN}) | ||
set(${_var} "${out}" PARENT_SCOPE) | ||
endfunction() | ||
set(${is_release} NO) | ||
set(${out} "${_tag} (${_tagn}) - ${_hash} (${_branch})") | ||
endif() | ||
endif() | ||
endmacro() |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
#ifndef VERSION_H | ||
#define VERSION_H | ||
#define PACKAGE_VERSION "${SUPERTUX_VERSION}" | ||
#define SUPERTUX_BUILD_NUMBER "${VERSION_NUMBER_GIT}" | ||
#define PACKAGE_VERSION "${SUPERTUX_PACKAGE_VERSION}" | ||
#define LOGO_FILE "${LOGO_FILE}" | ||
#endif |