From e59516950193f9dea1b903c9fcd5e6091f9bcb70 Mon Sep 17 00:00:00 2001 From: ccremers Date: Mon, 8 Jan 2007 06:17:10 +0000 Subject: [PATCH] - Improved svnversion writes. --- src/SVNVersion.cmake | 53 ++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/src/SVNVersion.cmake b/src/SVNVersion.cmake index 1e476b0..fcc3b60 100644 --- a/src/SVNVersion.cmake +++ b/src/SVNVersion.cmake @@ -14,20 +14,45 @@ set_source_files_properties(version.h GENERATED true) find_program (SVNVERSION_EXECUTABLE NAMES svnversion) mark_as_advanced (SVNVERSION_EXECUTABLE) +mark_as_advanced (SVNVERSION_DYNAMIC) +set (SVNVERSION_DYNAMIC false) if (SVNVERSION_EXECUTABLE) - # svnversion found; we should always build this - mark_as_advanced (SVN_Version) - message (STATUS "Generating version.h using svnversion command") - exec_program (${SVNVERSION_EXECUTABLE} - OUTPUT_VARIABLE SVN_Version - ) - message (STATUS "svnversion gave ${SVN_Version}") - file (WRITE version.h - "#define SVNVERSION \"${SVN_Version}\"\n" - ) -else (SVNVERSION_EXECUTABLE) - # No svnversion. what do we write then? just empty...? - message (STATUS "Generating empty version.h") - file (WRITE version.h "") + # svnversion found + if (UNIX) + # Unix system + # test whether svnversion gives useful info + exec_program (${SVNVERSION_EXECUTABLE} + OUTPUT_VALUE SVN_Result + ) + mark_as_advanced (SVN_Result) + if (SVN_Result STREQUAL "exported") + # svnversion gives useful stuff + set (SVNVERSION_DYNAMIC true) + endif (SVN_Result STREQUAL "exported") + mark_as_advanced (SVNDIR) + endif (UNIX) endif (SVNVERSION_EXECUTABLE) +if (SVNVERSION_DYNAMIC) + # add a command to generate version.h + message (STATUS "Generating version.h dynamically using svnversion command") + add_custom_command ( + OUTPUT version.h + # The version number depends on all the files; if they + # don't change, neither should the version number + # (although this might be incorrect when updating the + # current directory) + DEPENDS ${Scyther_sources} + DEPENDS .svn + COMMAND echo + ARGS "\\#define SVNVERSION \\\"`${SVNVERSION_EXECUTABLE}`\\\"" >version.h + COMMENT "Generating subversion version information in version.h using svnversion command" + ) +else (SVNVERSION_DYNAMIC) + # Don't dynamically generate, simply empty every time + file (WRITE version.h "#define SVNVERSION \"Unknown\"\n") +endif (SVNVERSION_DYNAMIC) + +# add the version number to the sources +set (Scyther_sources ${Scyther_sources} version.h) +