xref: /phasta/phSolver/cmake/GetGitRevisionDescription.cmake.in (revision 43c56ca5a35722d85cb4464ff0683d63f8eb4a00)
1*43c56ca5SCameron Smith#
2*43c56ca5SCameron Smith# Internal file for GetGitRevisionDescription.cmake
3*43c56ca5SCameron Smith#
4*43c56ca5SCameron Smith# Requires CMake 2.6 or newer (uses the 'function' command)
5*43c56ca5SCameron Smith#
6*43c56ca5SCameron Smith# Original Author:
7*43c56ca5SCameron Smith# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
8*43c56ca5SCameron Smith# http://academic.cleardefinition.com
9*43c56ca5SCameron Smith# Iowa State University HCI Graduate Program/VRAC
10*43c56ca5SCameron Smith#
11*43c56ca5SCameron Smith# Copyright Iowa State University 2009-2010.
12*43c56ca5SCameron Smith# Distributed under the Boost Software License, Version 1.0.
13*43c56ca5SCameron Smith# (See accompanying file LICENSE_1_0.txt or copy at
14*43c56ca5SCameron Smith# http://www.boost.org/LICENSE_1_0.txt)
15*43c56ca5SCameron Smith
16*43c56ca5SCameron Smithset(HEAD_HASH)
17*43c56ca5SCameron Smith
18*43c56ca5SCameron Smithfile(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
19*43c56ca5SCameron Smith
20*43c56ca5SCameron Smithstring(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
21*43c56ca5SCameron Smithif(HEAD_CONTENTS MATCHES "ref")
22*43c56ca5SCameron Smith    # named branch
23*43c56ca5SCameron Smith    string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
24*43c56ca5SCameron Smith    if(EXISTS "@GIT_DIR@/${HEAD_REF}")
25*43c56ca5SCameron Smith        configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
26*43c56ca5SCameron Smith    else()
27*43c56ca5SCameron Smith        configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
28*43c56ca5SCameron Smith        file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
29*43c56ca5SCameron Smith        if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
30*43c56ca5SCameron Smith            set(HEAD_HASH "${CMAKE_MATCH_1}")
31*43c56ca5SCameron Smith        endif()
32*43c56ca5SCameron Smith    endif()
33*43c56ca5SCameron Smithelse()
34*43c56ca5SCameron Smith    # detached HEAD
35*43c56ca5SCameron Smith    configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
36*43c56ca5SCameron Smithendif()
37*43c56ca5SCameron Smith
38*43c56ca5SCameron Smithif(NOT HEAD_HASH)
39*43c56ca5SCameron Smith    file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
40*43c56ca5SCameron Smith    string(STRIP "${HEAD_HASH}" HEAD_HASH)
41*43c56ca5SCameron Smithendif()
42