Skip to content

Commit 4e7d448

Browse files
committed
Merge pull request #9 from nerd-toolkit/git
Transistion from svn to git, fixes #4
2 parents 726cb31 + c26b3b7 commit 4e7d448

File tree

5 files changed

+213
-8
lines changed

5 files changed

+213
-8
lines changed

.gitignore

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Generated by http://gitignore.io
2+
3+
### CMake ###
4+
CMakeCache.txt
5+
CMakeFiles
6+
Makefile
7+
cmake_install.cmake
8+
install_manifest.txt
9+
10+
### C++ ###
11+
# Compiled Object files
12+
*.slo
13+
*.lo
14+
*.o
15+
16+
# Compiled Dynamic libraries
17+
*.so
18+
*.dylib
19+
20+
# Compiled Static libraries
21+
*.lai
22+
*.la
23+
*.a
24+
25+
### Qt ###
26+
# C++ objects and libs
27+
28+
*.slo
29+
*.lo
30+
*.o
31+
*.a
32+
*.la
33+
*.lai
34+
*.so
35+
*.dll
36+
*.dylib
37+
38+
# Qt-es
39+
CMakeLists.txt.user
40+
*.pro.user
41+
*.pro.user.*
42+
moc_*.cpp
43+
qrc_*.cpp
44+
ui_*.h
45+
Makefile
46+
*-build-*

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ endif()
1111

1212
set(CMAKE_BUILD_TYPE Debug)
1313
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-E")
14+
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
1415

1516
add_subdirectory(nerd)
1617
add_subdirectory(extensions)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# - Returns a version string from Git
2+
#
3+
# These functions force a re-configure on each git commit so that you can
4+
# trust the values of the variables in your build system.
5+
#
6+
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
7+
#
8+
# Returns the refspec and sha hash of the current head revision
9+
#
10+
# git_describe(<var> [<additional arguments to git describe> ...])
11+
#
12+
# Returns the results of git describe on the source tree, and adjusting
13+
# the output so that it tests false if an error occurs.
14+
#
15+
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
16+
#
17+
# Returns the results of git describe --exact-match on the source tree,
18+
# and adjusting the output so that it tests false if there was no exact
19+
# matching tag.
20+
#
21+
# Requires CMake 2.6 or newer (uses the 'function' command)
22+
#
23+
# Original Author:
24+
# 2009-2010 Ryan Pavlik <[email protected]> <[email protected]>
25+
# http://academic.cleardefinition.com
26+
# Iowa State University HCI Graduate Program/VRAC
27+
#
28+
# Copyright Iowa State University 2009-2010.
29+
# Distributed under the Boost Software License, Version 1.0.
30+
# (See accompanying file LICENSE_1_0.txt or copy at
31+
# http://www.boost.org/LICENSE_1_0.txt)
32+
33+
if(__get_git_revision_description)
34+
return()
35+
endif()
36+
set(__get_git_revision_description YES)
37+
38+
# We must run the following at "include" time, not at function call time,
39+
# to find the path to this module rather than the path to a calling list file
40+
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
41+
42+
function(get_git_head_revision _refspecvar _hashvar)
43+
set(GIT_PARENT_DIR "${CMAKE_SOURCE_DIR}")
44+
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
45+
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
46+
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
47+
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
48+
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
49+
# We have reached the root directory, we are not in git
50+
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
51+
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
52+
return()
53+
endif()
54+
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
55+
endwhile()
56+
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
57+
if(NOT EXISTS "${GIT_DATA}")
58+
file(MAKE_DIRECTORY "${GIT_DATA}")
59+
endif()
60+
61+
if(NOT EXISTS "${GIT_DIR}/HEAD")
62+
return()
63+
endif()
64+
set(HEAD_FILE "${GIT_DATA}/HEAD")
65+
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
66+
67+
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
68+
"${GIT_DATA}/grabRef.cmake"
69+
@ONLY)
70+
include("${GIT_DATA}/grabRef.cmake")
71+
72+
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
73+
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
74+
endfunction()
75+
76+
function(git_describe _var)
77+
if(NOT GIT_FOUND)
78+
find_package(Git QUIET)
79+
endif()
80+
get_git_head_revision(refspec hash)
81+
if(NOT GIT_FOUND)
82+
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
83+
return()
84+
endif()
85+
if(NOT hash)
86+
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
87+
return()
88+
endif()
89+
90+
# TODO sanitize
91+
#if((${ARGN}" MATCHES "&&") OR
92+
# (ARGN MATCHES "||") OR
93+
# (ARGN MATCHES "\\;"))
94+
# message("Please report the following error to the project!")
95+
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
96+
#endif()
97+
98+
#message(STATUS "Arguments to execute_process: ${ARGN}")
99+
100+
execute_process(COMMAND
101+
"${GIT_EXECUTABLE}"
102+
describe
103+
${hash}
104+
${ARGN}
105+
WORKING_DIRECTORY
106+
"${CMAKE_SOURCE_DIR}"
107+
RESULT_VARIABLE
108+
res
109+
OUTPUT_VARIABLE
110+
out
111+
ERROR_QUIET
112+
OUTPUT_STRIP_TRAILING_WHITESPACE)
113+
if(NOT res EQUAL 0)
114+
set(out "${out}-${res}-NOTFOUND")
115+
endif()
116+
117+
set(${_var} "${out}" PARENT_SCOPE)
118+
endfunction()
119+
120+
function(git_get_exact_tag _var)
121+
git_describe(out --exact-match ${ARGN})
122+
set(${_var} "${out}" PARENT_SCOPE)
123+
endfunction()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#
2+
# Internal file for GetGitRevisionDescription.cmake
3+
#
4+
# Requires CMake 2.6 or newer (uses the 'function' command)
5+
#
6+
# Original Author:
7+
# 2009-2010 Ryan Pavlik <[email protected]> <[email protected]>
8+
# http://academic.cleardefinition.com
9+
# Iowa State University HCI Graduate Program/VRAC
10+
#
11+
# Copyright Iowa State University 2009-2010.
12+
# Distributed under the Boost Software License, Version 1.0.
13+
# (See accompanying file LICENSE_1_0.txt or copy at
14+
# http://www.boost.org/LICENSE_1_0.txt)
15+
16+
set(HEAD_HASH)
17+
18+
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
19+
20+
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
21+
if(HEAD_CONTENTS MATCHES "ref")
22+
# named branch
23+
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
24+
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
25+
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
26+
elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
27+
configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
28+
set(HEAD_HASH "${HEAD_REF}")
29+
endif()
30+
else()
31+
# detached HEAD
32+
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
33+
endif()
34+
35+
if(NOT HEAD_HASH)
36+
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
37+
string(STRIP "${HEAD_HASH}" HEAD_HASH)
38+
endif()

nerd/system/nerd/CMakeLists.txt

+5-8
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,11 @@ QT4_WRAP_CPP(nerd_nerd_MOC_SRCS ${nerd_nerd_MOC_HDRS})
155155
QT4_ADD_RESOURCES(nerd_nerd_RC_SRCS ${nerd_nerd_RCS})
156156
QT4_WRAP_UI(nerd_nerd_UI_HDRS ${nerd_nerd_UIS})
157157

158-
159-
#Create subversion revision number for version string in Core.cpp.
160-
find_package(Subversion)
161-
if(Subversion_FOUND)
162-
Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} ER)
163-
set(SUBVERSION_REVISION ${ER_WC_REVISION})
164-
endif(Subversion_FOUND)
165-
ADD_DEFINITIONS(-DVER="${SUBVERSION_REVISION}")
158+
#Use git describe to annotate builds
159+
#Builds are marked as dirty if the working tree has changes
160+
include(GetGitRevisionDescription)
161+
git_describe(VERSION --tags --dirty=dirty --always)
162+
ADD_DEFINITIONS(-DVER="${VERSION}")
166163

167164
#Create library.
168165
add_library(nerd STATIC ${nerd_nerd_SRCS} ${nerd_nerd_MOC_SRCS} ${nerd_nerd_RC_SRCS} ${nerd_nerd_UI_HDRS})

0 commit comments

Comments
 (0)