Skip to content

Commit 54eb1ad

Browse files
author
homann
committedFeb 22, 2007
Fixed qgssvnversion.h generation on Linux, Cygwin, cmd.exe and hopefully also on Mac
git-svn-id: http://svn.osgeo.org/qgis/branches/Release-0_8_0@6673 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 3669b87 commit 54eb1ad

File tree

3 files changed

+38
-12
lines changed

3 files changed

+38
-12
lines changed
 

‎CMakeLists.txt

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,21 +181,29 @@ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
181181

182182
#############################################################
183183
# create qgssvnversion.h
184+
# see http://public.kitware.com/pipermail/cmake/2006-July/010299.html
184185

185-
IF (WIN32)
186-
SET (SVNVER_H ${CMAKE_BINARY_DIR}/qgssvnversion.h)
187-
IF (NOT EXISTS ${SVNVER_H})
188-
WRITE_FILE(${SVNVER_H} "#define QGSSVNVERSION \"svn_rev_unavailable\"")
189-
ENDIF (NOT EXISTS ${SVNVER_H})
190-
ELSE (WIN32)
186+
# We only do this if we are in a .svn dir
191187

192-
ADD_CUSTOM_TARGET(svnversion ALL
193-
QGSSVNDEF='\#define QGSSVNVERSION \"'`svnversion ${QGIS_SOURCE_DIR}`'\"' &&
194-
if [ \"`grep QGSSVNVERSION qgssvnversion.h 2>/dev/null`\" != \"$$QGSSVNDEF\" ]; then
195-
echo $$QGSSVNDEF > qgssvnversion.h \; fi
196-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
188+
FIND_FILE(SVN_MARKER ${CMAKE_SOURCE_DIR}/.svn/entries)
197189

198-
ENDIF (WIN32)
190+
IF (NOT SVN_MARKER)
191+
SET (SVN_MARKER ${CMAKE_SOURCE_DIR}/CMakeLists.txt) # Dummy file
192+
ENDIF (NOT SVN_MARKER)
193+
# Add a custom command to drive the svn script whenever the svn entries
194+
# file changes.
195+
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/svnscript.cmake.in_cmake
196+
${CMAKE_CURRENT_BINARY_DIR}/svnscript.cmake
197+
@ONLY)
198+
199+
ADD_CUSTOM_COMMAND (
200+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qgssvnversion.h
201+
DEPENDS ${SVN_MARKER}
202+
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/svnscript.cmake
203+
)
204+
205+
# Add a custom target to drive the custom command.
206+
ADD_CUSTOM_TARGET(svnversion ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/qgssvnversion.h)
199207

200208
#############################################################
201209
# process subdirs

‎qgssvnversion.h.in_cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#define QGSSVNVERSION "@MYVERSION@"

‎svnscript.cmake.in_cmake

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Magnus Homann svn hack
2+
# Required?
3+
SET(CMAKE_BACKWARDS_COMPATIBILITY "2.4")
4+
5+
# See if we have svn installed
6+
FIND_PROGRAM(SVNVERSION svnversion)
7+
8+
# Read the version if installed, else set to "unknown"
9+
IF (SVNVERSION)
10+
EXEC_PROGRAM(${SVNVERSION} ARGS @CMAKE_CURRENT_SOURCE_DIR@ OUTPUT_VARIABLE MYVERSION)
11+
ELSE (SVNVERSION)
12+
SET(MYVERSION unknown)
13+
ENDIF (SVNVERSION)
14+
15+
# Configure the qgssvnversion.h
16+
CONFIGURE_FILE(@CMAKE_CURRENT_SOURCE_DIR@/qgssvnversion.h.in_cmake
17+
@CMAKE_CURRENT_BINARY_DIR@/qgssvnversion.h)

0 commit comments

Comments
 (0)
Please sign in to comment.