WSJT-X/CMake/getsvn.cmake
Bill Somerville 8d4b36159b Aligned CMake built auto fetch svn revision with old qmake $Id: one.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3951 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-03-29 02:20:37 +00:00

51 lines
2.3 KiB
CMake

find_package (Subversion)
if (Subversion_FOUND AND EXISTS "${SOURCE_DIR}/.svn")
# the FindSubversion.cmake module is part of the standard distribution
include (FindSubversion)
# extract working copy information for SOURCE_DIR into MY_XXX variables
Subversion_WC_INFO (${SOURCE_DIR} MY)
message ("${MY_WC_INFO}")
# determine if the working copy has outstanding changes
execute_process (COMMAND ${Subversion_SVN_EXECUTABLE} status ${SOURCE_DIR}
OUTPUT_FILE "${OUTPUT_DIR}/svn_status.txt"
OUTPUT_STRIP_TRAILING_WHITESPACE)
file (STRINGS "${OUTPUT_DIR}/svn_status.txt" __svn_changes
REGEX "^[^?].*$"
)
if (__svn_changes)
set (MY_WC_REVISION "${MY_WC_REVISION}-dirty")
foreach (__svn_change ${__svn_changes})
message (STATUS "${__svn_change}")
endforeach (__svn_change ${__svn_changes})
endif (__svn_changes)
# write a file with the SVNVERSION define
file (WRITE svnversion.h.txt "#define SVNVERSION r${MY_WC_REVISION}\n")
else (Subversion_FOUND AND EXISTS "${SOURCE_DIR}/.svn")
file (WRITE svnversion.h.txt "#define SVNVERSION local\n")
endif ()
if (Subversion_FOUND AND EXISTS "${SOURCE_DIR}/.git")
# the FindSubversion.cmake module is part of the standard distribution
include (${SOURCE_DIR}/CMake/Modules/FindGitSubversion.cmake)
# extract working copy information for SOURCE_DIR into MY_XXX variables
GitSubversion_WC_INFO (${SOURCE_DIR} MY)
message ("${MY_WC_INFO}")
# try and determine if the working copy has outstanding changes
execute_process (COMMAND ${GIT_EXECUTABLE} --git-dir=${SOURCE_DIR}/.git --work-tree=${SOURCE_DIR} svn dcommit --dry-run
RESULT_VARIABLE __git_svn_status
OUTPUT_FILE "${OUTPUT_DIR}/svn_status.txt"
OUTPUT_STRIP_TRAILING_WHITESPACE)
message (STATUS "git-svn status: ${__git_svn_status}")
if (NOT ${__git_svn_status} EQUAL 0)
set (MY_WC_REVISION "${MY_WC_REVISION}-dirty")
endif ()
# write a file with the SVNVERSION define
file (WRITE svnversion.h.txt "#define SVNVERSION r${MY_WC_REVISION}\n")
else (Subversion_FOUND AND EXISTS "${SOURCE_DIR}/.svn")
file (WRITE svnversion.h.txt "#define SVNVERSION local\n")
endif ()
# copy the file to the final header only if the version changes
# reduces needless rebuilds
execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different svnversion.h.txt svnversion.h)