summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt10
-rw-r--r--src/configimpl.l7
-rw-r--r--src/doxygen.cpp29
-rw-r--r--src/gitversion.cpp.in14
-rw-r--r--src/version.h2
-rw-r--r--src/version.py23
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()