813d030 Add module to get information about a git repo b2070d7 Fix installing docs optionally, even on old cmake versions e8cbbf5 Hide the module variable if we find it manually c1ad55e Fix opencv finder for old libraries 9ca6a00 Make the opencv module handle finding the config file, if it exists. beabdbd Merge commit 'aca0ca0aea326a4b8c10f6638024a6e8c0279d02' e36bb5b Merge branch 'master' of git@github.com:rpavlik/wiimote-head-tracker-gui.git b75b7df Improve wiiuse locator 92f1870 Remove all old build systems ee0ce40 Add Windows HID library finder b8878cb Update wiiuse finder to locate DLL from cmake-based install 5b7d5d9 Add a Bluez find module ee17e2a Update cmake modules 30e28b2 Update cmake files dc48ba7 Fix windows build 1958481 Fix RPATH handling on Linux 3fe03cd Initial commit git-subtree-dir: cmake git-subtree-split: 813d0301a4ed5b53d8187608c2986904ce99ab4e
105 lines
3.3 KiB
CMake
105 lines
3.3 KiB
CMake
# - 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.
|
|
#
|
|
# get_git_head_revision(<refspecvar> <hashvar> [<additonal arguments to git describe> ...])
|
|
#
|
|
# Returns the refspec and sha hash of the current head revision
|
|
#
|
|
# git_describe(<var> [<additonal arguments to git describe> ...])
|
|
#
|
|
# 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> [<additonal 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_DIR "${CMAKE_SOURCE_DIR}/.git")
|
|
if(NOT EXISTS "${GIT_DIR}")
|
|
# not in git
|
|
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
|
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
|
return()
|
|
endif()
|
|
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
|
|
if(NOT EXISTS "${GIT_DATA}")
|
|
file(MAKE_DIRECTORY "${GIT_DATA}")
|
|
endif()
|
|
set(HEAD_FILE "${GIT_DATA}/HEAD")
|
|
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
|
|
|
|
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" "${GIT_DATA}/grabRef.cmake" @ONLY)
|
|
include("${GIT_DATA}/grabRef.cmake")
|
|
|
|
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
|
|
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
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()
|
|
|
|
# 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()
|
|
|
|
#message(STATUS "Arguments to execute_process: ${ARGN}")
|
|
|
|
execute_process(COMMAND "${GIT_EXECUTABLE}" describe ${hash} ${ARGN}
|
|
WORKING_DIRECTORY "${CMAKE_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()
|
|
|
|
set(${_var} "${out}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(git_get_exact_tag _var)
|
|
git_describe(out --exact-match ${ARGN})
|
|
set(${_var} "${out}" PARENT_SCOPE)
|
|
endfunction()
|