diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 10 | ||||
-rw-r--r-- | src/configimpl.l | 7 | ||||
-rw-r--r-- | src/doxygen.cpp | 29 | ||||
-rw-r--r-- | src/gitversion.cpp.in | 14 | ||||
-rw-r--r-- | src/version.h | 2 | ||||
-rw-r--r-- | src/version.py | 23 |
6 files changed, 79 insertions, 6 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 92a302a..9539228 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,7 @@ # vim:ts=4:sw=4:expandtab:autoindent: +include(${CMAKE_SOURCE_DIR}/cmake/git_watcher.cmake) + include_directories( ${CMAKE_SOURCE_DIR}/qtools ${CMAKE_SOURCE_DIR}/libmd5 @@ -31,8 +33,10 @@ set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1) # generate version.cpp -file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp - CONTENT "char versionString[]=\"${VERSION}\";" +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC}/version.cpp + DEPENDS ${CMAKE_SOURCE_DIR}/VERSION ${CMAKE_SOURCE_DIR}/src/version.py + OUTPUT ${GENERATED_SRC}/version.cpp ) set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) @@ -137,6 +141,7 @@ add_library(_doxygen STATIC ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/layout_default.xml.h ${GENERATED_SRC}/version.cpp + ${POST_CONFIGURE_GIT_VERSION_FILE} ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/resources.cpp @@ -240,6 +245,7 @@ add_library(_doxygen STATIC docbookvisitor.cpp docbookgen.cpp ) +add_dependencies( _doxygen check_git_repository ) add_executable(doxygen main.cpp) diff --git a/src/configimpl.l b/src/configimpl.l index 644250f..321ca5c 100644 --- a/src/configimpl.l +++ b/src/configimpl.l @@ -964,7 +964,12 @@ void ConfigImpl::writeTemplate(FTextStream &t,bool sl,bool upd) void ConfigImpl::compareDoxyfile(FTextStream &t) { - t << "# Difference with default Doxyfile " << versionString << endl; + t << "# Difference with default Doxyfile " << versionString; + if (strlen(gitVersionString)) + { + t << " (" << gitVersionString << ")"; + } + t << endl; QListIterator<ConfigOption> it = iterator(); ConfigOption *option; for (;(option=it.current());++it) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 99878a5..aabb688 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -9927,7 +9927,14 @@ static void devUsage() static void usage(const char *name) { - msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2015\n\n",versionString); + if (strlen(gitVersionString)) + { + msg("Doxygen version %s (%s)\nCopyright Dimitri van Heesch 1997-2015\n\n",versionString,gitVersionString); + } + else + { + msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2015\n\n",versionString); + } msg("You can use doxygen in a number of ways:\n\n"); msg("1) Use doxygen to generate a template configuration file:\n"); msg(" %s [-s] -g [configName]\n\n",name); @@ -9982,6 +9989,8 @@ void initDoxygen() setlocale(LC_CTYPE,"C"); // to get isspace(0xA0)==0, needed for UTF-8 setlocale(LC_NUMERIC,"C"); + correctGitVersion(); + portable_correct_path(); Doxygen::runningTime.start(); @@ -10387,7 +10396,14 @@ void readConfiguration(int argc, char **argv) g_dumpSymbolMap = TRUE; break; case 'v': - msg("%s\n",versionString); + if (strlen(gitVersionString)) + { + msg("%s (%s)\n",versionString,gitVersionString); + } + else + { + msg("%s\n",versionString); + } cleanUpDoxygen(); exit(0); break; @@ -10399,7 +10415,14 @@ void readConfiguration(int argc, char **argv) } else if (qstrcmp(&argv[optind][2],"version")==0) { - msg("%s\n",versionString); + if (strlen(gitVersionString)) + { + msg("%s (%s)\n",versionString,gitVersionString); + } + else + { + msg("%s\n",versionString); + } cleanUpDoxygen(); exit(0); } diff --git a/src/gitversion.cpp.in b/src/gitversion.cpp.in new file mode 100644 index 0000000..cbb9b13 --- /dev/null +++ b/src/gitversion.cpp.in @@ -0,0 +1,14 @@ +#include <string.h> + +char gitVersionString[]="@GIT_HEAD_SHA1@"; + +/* - On some systems git is not installed or + * installed on a place whete FindGit.cmake cannot find it + * - No git information is present (no .git directory) + * in those cases clear the gitVersionString (would have string GIT-NOTFOUND). + */ +void correctGitVersion(void) +{ + if (!strcmp(gitVersionString, "GIT-NOTFOUND")) gitVersionString[0] = '\0'; +} + diff --git a/src/version.h b/src/version.h index 16bf9df..09d1b4f 100644 --- a/src/version.h +++ b/src/version.h @@ -19,5 +19,7 @@ #define VERSION_H extern char versionString[]; +extern char gitVersionString[]; +void correctGitVersion(void); #endif diff --git a/src/version.py b/src/version.py new file mode 100644 index 0000000..4aedee0 --- /dev/null +++ b/src/version.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# python script to generate version.cpp from first argument +# +# Copyright (C) 1997-2018 by Dimitri van Heesch. +# +# Permission to use, copy, modify, and distribute this software and its +# documentation under the terms of the GNU General Public License is hereby +# granted. No representations are made about the suitability of this software +# for any purpose. It is provided "as is" without express or implied warranty. +# See the GNU General Public License for more details. +# +# Documents produced by Doxygen are derivative works derived from the +# input used in their production; they are not affected by this license. +# +import sys + +def main(): + if len(sys.argv)<2: + sys.exit('Usage: %s <version>' % sys.argv[0]) + print('char versionString[]="%s";' % sys.argv[1]) + +if __name__ == '__main__': + main() |