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