diff options
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | addon/doxyapp/CMakeLists.txt | 2 | ||||
-rw-r--r-- | addon/doxyparse/CMakeLists.txt | 2 | ||||
-rw-r--r-- | addon/doxywizard/CMakeLists.txt | 12 | ||||
-rwxr-xr-x | addon/doxywizard/doxywizard.cpp | 2 | ||||
-rw-r--r-- | addon/doxywizard/expert.cpp | 2 | ||||
-rw-r--r-- | cmake/doxygen_version.cmake | 96 | ||||
-rw-r--r-- | cmake/git_watcher.cmake | 213 | ||||
-rw-r--r-- | libversion/CMakeLists.txt | 27 | ||||
-rw-r--r-- | libversion/doxyversion.cpp.in | 7 | ||||
-rw-r--r-- | libversion/gitversion.cpp.in | 16 | ||||
-rw-r--r-- | libversion/version.h (renamed from addon/doxywizard/version.h) | 5 | ||||
-rw-r--r-- | src/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/configimpl.l | 9 | ||||
-rw-r--r-- | src/context.cpp | 2 | ||||
-rw-r--r-- | src/doxygen.cpp | 27 | ||||
-rw-r--r-- | src/htmlgen.cpp | 18 | ||||
-rw-r--r-- | src/latexgen.cpp | 8 | ||||
-rw-r--r-- | src/layout.cpp | 2 | ||||
-rw-r--r-- | src/resourcemgr.cpp | 2 | ||||
-rw-r--r-- | src/rtfgen.cpp | 4 | ||||
-rw-r--r-- | src/searchindex.cpp | 2 | ||||
-rw-r--r-- | src/sqlite3gen.cpp | 2 | ||||
-rw-r--r-- | src/util.cpp | 2 | ||||
-rw-r--r-- | src/version.h | 23 | ||||
-rw-r--r-- | src/xmlgen.cpp | 4 |
26 files changed, 432 insertions, 69 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c95f71..2621844 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ # Documents produced by Doxygen are derivative works derived from the # input used in their production; they are not affected by this license. -cmake_minimum_required(VERSION 3.1.3) +cmake_minimum_required(VERSION 3.2) project(doxygen) option(build_wizard "Build the GUI frontend for doxygen." OFF) @@ -155,6 +155,7 @@ endif() add_subdirectory(libmd5) add_subdirectory(liblodepng) add_subdirectory(libmscgen) +add_subdirectory(libversion) add_subdirectory(qtools) add_subdirectory(vhdlparser) add_subdirectory(src) diff --git a/addon/doxyapp/CMakeLists.txt b/addon/doxyapp/CMakeLists.txt index 3312f1a..f205664 100644 --- a/addon/doxyapp/CMakeLists.txt +++ b/addon/doxyapp/CMakeLists.txt @@ -2,6 +2,7 @@ find_package(Iconv) include_directories( ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/libversion ${GENERATED_SRC} ${CMAKE_SOURCE_DIR}/qtools ${ICONV_INCLUDE_DIR} @@ -22,6 +23,7 @@ qtools md5 lodepng mscgen +version doxycfg vhdlparser ${ICONV_LIBRARIES} diff --git a/addon/doxyparse/CMakeLists.txt b/addon/doxyparse/CMakeLists.txt index 7741dab..e76f031 100644 --- a/addon/doxyparse/CMakeLists.txt +++ b/addon/doxyparse/CMakeLists.txt @@ -2,6 +2,7 @@ find_package(Iconv) include_directories( ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/libversion ${GENERATED_SRC} ${CMAKE_SOURCE_DIR}/qtools ${ICONV_INCLUDE_DIR} @@ -22,6 +23,7 @@ qtools md5 lodepng mscgen +version doxycfg vhdlparser ${ICONV_LIBRARIES} diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt index a89864d..9aba4e4 100644 --- a/addon/doxywizard/CMakeLists.txt +++ b/addon/doxywizard/CMakeLists.txt @@ -30,6 +30,7 @@ endif() include_directories( . + ${CMAKE_SOURCE_DIR}/libversion ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/qtools ${GENERATED_SRC} @@ -57,8 +58,10 @@ CONTENT "#ifndef SETTINGS_H set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERATED 1) # generate version.cpp -file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp - CONTENT "char versionString[]=\"${VERSION}\";" +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC_WIZARD}/version.cpp + DEPENDS ${CMAKE_SOURCE_DIR}/VERSION ${CMAKE_SOURCE_DIR}/src/version.py + OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp ) set_source_files_properties(${GENERATED_SRC_WIZARD}/version.cpp PROPERTIES GENERATED 1) @@ -93,7 +96,6 @@ inputstring.cpp inputint.cpp inputstrlist.cpp ${GENERATED_SRC_WIZARD}/settings.h -${GENERATED_SRC_WIZARD}/version.cpp ${GENERATED_SRC_WIZARD}/config_doxyw.cpp ${GENERATED_SRC_WIZARD}/configdoc.cpp ${doxywizard_MOC} @@ -102,9 +104,9 @@ doxywizard.rc ) if(Qt5Core_FOUND) - target_link_libraries(doxywizard Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Xml) + target_link_libraries(doxywizard Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Xml version) else() - target_link_libraries(doxywizard ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY}) + target_link_libraries(doxywizard ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} version) endif() install(TARGETS doxywizard DESTINATION bin) diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp index 56378ed..02e8cd0 100755 --- a/addon/doxywizard/doxywizard.cpp +++ b/addon/doxywizard/doxywizard.cpp @@ -216,7 +216,7 @@ void MainWindow::about() QString msg; QTextStream t(&msg,QIODevice::WriteOnly); t << QString::fromLatin1("<qt><center>A tool to configure and run doxygen version ")+ - QString::fromLatin1(versionString)+ + QString::fromLatin1(getVersion())+ QString::fromLatin1(" on your source files.</center><p><br>" "<center>Written by<br> Dimitri van Heesch<br>© 2000-2015</center><p>" "</qt>"); diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp index 44dea78..c875d8d 100644 --- a/addon/doxywizard/expert.cpp +++ b/addon/doxywizard/expert.cpp @@ -781,7 +781,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec, bool Expert::writeConfig(QTextStream &t,bool brief) { // write global header - t << "# Doxyfile " << versionString << endl << endl; + t << "# Doxyfile " << getVersion() << endl << endl; if (!brief) { t << convertToComment(m_header); diff --git a/cmake/doxygen_version.cmake b/cmake/doxygen_version.cmake new file mode 100644 index 0000000..2433889 --- /dev/null +++ b/cmake/doxygen_version.cmake @@ -0,0 +1,96 @@ +# doxygen_version.cmake +# + +# This file defines the functions and targets needed to monitor +# doxygen VERSION file. +# +# The behavior of this script can be modified by defining any of these variables: +# +# PRE_CONFIGURE_DOXYGEN_VERSION_FILE (REQUIRED) +# -- The path to the file that'll be configured. +# +# POST_CONFIGURE_DOXYGEN_VERSION_FILE (REQUIRED) +# -- The path to the configured PRE_CONFIGURE_DOXYGEN_VERSION_FILE. +# +# DOXY_STATE_FILE (OPTIONAL) +# -- The path to the file used to store the doxygen version information. +# +# This file is based on git_watcher.cmake + +# Short hand for converting paths to absolute. +macro(PATH_TO_ABSOLUTE var_name) + get_filename_component(${var_name} "${${var_name}}" ABSOLUTE) +endmacro() + +# Check that a required variable is set. +macro(CHECK_REQUIRED_VARIABLE var_name) + if(NOT DEFINED ${var_name}) + message(FATAL_ERROR "The \"${var_name}\" variable must be defined.") + endif() + PATH_TO_ABSOLUTE(${var_name}) +endmacro() + +# Check that an optional variable is set, or, set it to a default value. +macro(CHECK_OPTIONAL_VARIABLE var_name default_value) + if(NOT DEFINED ${var_name}) + set(${var_name} ${default_value}) + endif() + PATH_TO_ABSOLUTE(${var_name}) +endmacro() + +CHECK_REQUIRED_VARIABLE(PRE_CONFIGURE_DOXYGEN_VERSION_FILE) +CHECK_REQUIRED_VARIABLE(POST_CONFIGURE_DOXYGEN_VERSION_FILE) +CHECK_OPTIONAL_VARIABLE(DOXY_STATE_FILE "${CMAKE_SOURCE_DIR}/VERSION") + +# Function: DoxygenStateChangedAction +# Description: this function is executed when the +# doxygen version file has changed. +function(DoxygenStateChangedAction _state_as_list) + # Set variables by index, then configure the file w/ these variables defined. + LIST(GET _state_as_list 0 DOXYGEN_VERSION) + configure_file("${PRE_CONFIGURE_DOXYGEN_VERSION_FILE}" "${POST_CONFIGURE_DOXYGEN_VERSION_FILE}" @ONLY) +endfunction() + + + +# Function: SetupDoxyMonitoring +# Description: this function sets up custom commands that make the build system +# check the doxygen version file before every build. If it has +# changed, then a file is configured. +function(SetupDoxyMonitoring) + add_custom_target(check_doxygen_version + ALL + DEPENDS ${PRE_CONFIGURE_DOXYGEN_VERSION_FILE} + BYPRODUCTS ${POST_CONFIGURE_DOXYGEN_VERSION_FILE} + COMMENT "Checking the doxygen version for changes..." + COMMAND + ${CMAKE_COMMAND} + -D_BUILD_TIME_CHECK_DOXY=TRUE + -DDOXY_STATE_FILE=${DOXY_STATE_FILE} + -DPRE_CONFIGURE_DOXYGEN_VERSION_FILE=${PRE_CONFIGURE_DOXYGEN_VERSION_FILE} + -DPOST_CONFIGURE_DOXYGEN_VERSION_FILE=${POST_CONFIGURE_DOXYGEN_VERSION_FILE} + -P "${CMAKE_CURRENT_LIST_FILE}") +endfunction() + + + +# Function: Main +# Description: primary entry-point to the script. Functions are selected based +# on whether it's configure or build time. +function(Main) + file(STRINGS "${DOXY_STATE_FILE}" DOXYGEN_VERSION) + if(_BUILD_TIME_CHECK_DOXY) + # Check if the doxygen version file has changed. + # If so, run the change action. + if(${DOXY_STATE_FILE} IS_NEWER_THAN ${POST_CONFIGURE_DOXYGEN_VERSION_FILE}) + DoxygenStateChangedAction("${DOXYGEN_VERSION}") + endif() + else() + # >> Executes at configure time. + SetupDoxyMonitoring() + DoxygenStateChangedAction("${DOXYGEN_VERSION}") + endif() +endfunction() + +# And off we go... +Main() diff --git a/cmake/git_watcher.cmake b/cmake/git_watcher.cmake new file mode 100644 index 0000000..6447b86 --- /dev/null +++ b/cmake/git_watcher.cmake @@ -0,0 +1,213 @@ +# git_watcher.cmake +# +# License: MIT +# Source: https://raw.githubusercontent.com/andrew-hardin/cmake-git-version-tracking/master/git_watcher.cmake + + +# This file defines the functions and targets needed to monitor +# the state of a git repo. If the state changes (e.g. a commit is made), +# then a file gets reconfigured. +# +# The behavior of this script can be modified by defining any of these variables: +# +# PRE_CONFIGURE_GIT_VERSION_FILE (REQUIRED) +# -- The path to the file that'll be configured. +# +# POST_CONFIGURE_GIT_VERSION_FILE (REQUIRED) +# -- The path to the configured PRE_CONFIGURE_GIT_VERSION_FILE. +# +# GIT_STATE_FILE (OPTIONAL) +# -- The path to the file used to store the previous build's git state. +# Defaults to the current binary directory. +# +# GIT_WORKING_DIR (OPTIONAL) +# -- The directory from which git commands will be run. +# Defaults to the directory with the top level CMakeLists.txt. +# +# GIT_EXECUTABLE (OPTIONAL) +# -- The path to the git executable. It'll automatically be set if the +# user doesn't supply a path. +# +# Script design: +# - This script was designed similar to a Python application +# with a Main() function. I wanted to keep it compact to +# simplify "copy + paste" usage. +# +# - This script is made to operate in two CMake contexts: +# 1. Configure time context (when build files are created). +# 2. Build time context (called via CMake -P) +# If you see something odd (e.g. the NOT DEFINED clauses), +# consider that it can run in one of two contexts. + +# Short hand for converting paths to absolute. +macro(PATH_TO_ABSOLUTE var_name) + get_filename_component(${var_name} "${${var_name}}" ABSOLUTE) +endmacro() + +# Check that a required variable is set. +macro(CHECK_REQUIRED_VARIABLE var_name) + if(NOT DEFINED ${var_name}) + message(FATAL_ERROR "The \"${var_name}\" variable must be defined.") + endif() + PATH_TO_ABSOLUTE(${var_name}) +endmacro() + +# Check that an optional variable is set, or, set it to a default value. +macro(CHECK_OPTIONAL_VARIABLE var_name default_value) + if(NOT DEFINED ${var_name}) + set(${var_name} ${default_value}) + endif() + PATH_TO_ABSOLUTE(${var_name}) +endmacro() + +CHECK_REQUIRED_VARIABLE(PRE_CONFIGURE_GIT_VERSION_FILE) +CHECK_REQUIRED_VARIABLE(POST_CONFIGURE_GIT_VERSION_FILE) +CHECK_OPTIONAL_VARIABLE(GIT_STATE_FILE "${GENERATED_SRC}/git_state") +#CHECK_REQUIRED_VARIABLE(GIT_STATE_FILE) +CHECK_OPTIONAL_VARIABLE(GIT_WORKING_DIR "${CMAKE_SOURCE_DIR}") + +# Check the optional git variable. +# If it's not set, we'll try to find it using the CMake packaging system. +if(NOT DEFINED GIT_EXECUTABLE) + find_package(Git QUIET REQUIRED) +endif() +CHECK_REQUIRED_VARIABLE(GIT_EXECUTABLE) + + + +# Function: GitStateChangedAction +# Description: this function is executed when the state of the git +# repo changes (e.g. a commit is made). +function(GitStateChangedAction _state_as_list) + # Set variables by index, then configure the file w/ these variables defined. + LIST(GET _state_as_list 0 GIT_RETRIEVED_STATE) + LIST(GET _state_as_list 1 GIT_HEAD_SHA1) + LIST(GET _state_as_list 2 GIT_IS_DIRTY) + configure_file("${PRE_CONFIGURE_GIT_VERSION_FILE}" "${POST_CONFIGURE_GIT_VERSION_FILE}" @ONLY) +endfunction() + + + +# Function: GetGitState +# Description: gets the current state of the git repo. +# Args: +# _working_dir (in) string; the directory from which git commands will be executed. +# _state (out) list; a collection of variables representing the state of the +# repository (e.g. commit SHA). +function(GetGitState _working_dir _state) + + # Get the hash for HEAD. + set(_success "true") + execute_process(COMMAND + "${GIT_EXECUTABLE}" rev-parse --verify HEAD + WORKING_DIRECTORY "${_working_dir}" + RESULT_VARIABLE res + OUTPUT_VARIABLE _hashvar + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(_success "false") + set(_hashvar "GIT-NOTFOUND") + endif() + + # Get whether or not the working tree is dirty. + execute_process(COMMAND + "${GIT_EXECUTABLE}" status --porcelain + WORKING_DIRECTORY "${_working_dir}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(_success "false") + set(_dirty "false") + else() + if(NOT "${out}" STREQUAL "") + set(_dirty "true") + else() + set(_dirty "false") + endif() + endif() + + # Return a list of our variables to the parent scope. + set(${_state} ${_success} ${_hashvar} ${_dirty} PARENT_SCOPE) +endfunction() + + + +# Function: CheckGit +# Description: check if the git repo has changed. If so, update the state file. +# Args: +# _working_dir (in) string; the directory from which git commands will be ran. +# _state_changed (out) bool; whether or no the state of the repo has changed. +# _state (out) list; the repository state as a list (e.g. commit SHA). +function(CheckGit _working_dir _state_changed _state) + + # Get the current state of the repo. + GetGitState("${_working_dir}" state) + + # Set the output _state variable. + # (Passing by reference in CMake is awkward...) + set(${_state} ${state} PARENT_SCOPE) + + # Check if the state has changed compared to the backup on disk. + if(EXISTS "${GIT_STATE_FILE}") + file(READ "${GIT_STATE_FILE}" OLD_HEAD_CONTENTS) + if(OLD_HEAD_CONTENTS STREQUAL "${state}") + # State didn't change. + set(${_state_changed} "false" PARENT_SCOPE) + return() + endif() + endif() + + # The state has changed. + # We need to update the state file on disk. + # Future builds will compare their state to this file. + file(WRITE "${GIT_STATE_FILE}" "${state}") + set(${_state_changed} "true" PARENT_SCOPE) +endfunction() + + + +# Function: SetupGitMonitoring +# Description: this function sets up custom commands that make the build system +# check the state of git before every build. If the state has +# changed, then a file is configured. +function(SetupGitMonitoring) + add_custom_target(check_git_repository + ALL + DEPENDS ${PRE_CONFIGURE_GIT_VERSION_FILE} + BYPRODUCTS ${POST_CONFIGURE_GIT_VERSION_FILE} + COMMENT "Checking the git repository for changes..." + COMMAND + ${CMAKE_COMMAND} + -D_BUILD_TIME_CHECK_GIT=TRUE + -DGIT_WORKING_DIR=${GIT_WORKING_DIR} + -DGIT_EXECUTABLE=${GIT_EXECUTABLE} + -DGIT_STATE_FILE=${GIT_STATE_FILE} + -DPRE_CONFIGURE_GIT_VERSION_FILE=${PRE_CONFIGURE_GIT_VERSION_FILE} + -DPOST_CONFIGURE_GIT_VERSION_FILE=${POST_CONFIGURE_GIT_VERSION_FILE} + -P "${CMAKE_CURRENT_LIST_FILE}") +endfunction() + + + +# Function: Main +# Description: primary entry-point to the script. Functions are selected based +# on whether it's configure or build time. +function(Main) + if(_BUILD_TIME_CHECK_GIT) + # Check if the repo has changed. + # If so, run the change action. + CheckGit("${GIT_WORKING_DIR}" did_change state) + if(did_change) + GitStateChangedAction("${state}") + endif() + else() + # >> Executes at configure time. + SetupGitMonitoring() + endif() +endfunction() + +# And off we go... +Main() diff --git a/libversion/CMakeLists.txt b/libversion/CMakeLists.txt new file mode 100644 index 0000000..1a430fd --- /dev/null +++ b/libversion/CMakeLists.txt @@ -0,0 +1,27 @@ +# vim:ts=4:sw=4:expandtab:autoindent: + +# setup information for doxygen version handling +set(PRE_CONFIGURE_DOXYGEN_VERSION_FILE "${CMAKE_SOURCE_DIR}/libversion/doxyversion.cpp.in") +set(POST_CONFIGURE_DOXYGEN_VERSION_FILE "${GENERATED_SRC}/doxyversion.cpp") + +# setup information for git version handling +set(PRE_CONFIGURE_GIT_VERSION_FILE "${CMAKE_SOURCE_DIR}/libversion/gitversion.cpp.in") +set(POST_CONFIGURE_GIT_VERSION_FILE "${GENERATED_SRC}/gitversion.cpp") + +include(${CMAKE_SOURCE_DIR}/cmake/git_watcher.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/doxygen_version.cmake) + +include_directories( + . +) + +add_library(version STATIC + ${POST_CONFIGURE_DOXYGEN_VERSION_FILE} + ${POST_CONFIGURE_GIT_VERSION_FILE} +) + +add_dependencies( version check_git_repository ) +add_dependencies( version check_doxygen_version ) + +set_source_files_properties(${POST_CONFIGURE_GIT_VERSION_FILE} PROPERTIES GENERATED 1) +set_source_files_properties(${POST_CONFIGURE_DOXYGEN_VERSION_FILE} PROPERTIES GENERATED 1) diff --git a/libversion/doxyversion.cpp.in b/libversion/doxyversion.cpp.in new file mode 100644 index 0000000..11bca8d --- /dev/null +++ b/libversion/doxyversion.cpp.in @@ -0,0 +1,7 @@ +#include "version.h" + +char *getVersion(void) +{ + static char versionString[] = "@DOXYGEN_VERSION@"; + return versionString; +} diff --git a/libversion/gitversion.cpp.in b/libversion/gitversion.cpp.in new file mode 100644 index 0000000..164b50b --- /dev/null +++ b/libversion/gitversion.cpp.in @@ -0,0 +1,16 @@ +#include <string.h> +#include <version.h> + +/* - On some systems git is not installed or + * installed on a place where FindGit.cmake cannot find it + * - No git information is present (no .git directory) + * in those cases clear the gitVersionString (would have string GIT-NOTFOUND). + */ +char *getGitVersion(void) +{ + static char gitVersionString[100]; + strcpy(gitVersionString,"@GIT_HEAD_SHA1@"); + strcat(gitVersionString,!strcmp("@GIT_IS_DIRTY@","true")?"*":""); + if (!strcmp("@GIT_HEAD_SHA1@", "GIT-NOTFOUND")) gitVersionString[0] = '\0'; + return gitVersionString; +} diff --git a/addon/doxywizard/version.h b/libversion/version.h index 16bf9df..a656e74 100644 --- a/addon/doxywizard/version.h +++ b/libversion/version.h @@ -17,7 +17,6 @@ #ifndef VERSION_H #define VERSION_H - -extern char versionString[]; - +char *getVersion(void); +char *getGitVersion(void); #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9721bf0..06e0e44 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,6 +5,7 @@ include_directories( ${CMAKE_SOURCE_DIR}/libmd5 ${CMAKE_SOURCE_DIR}/liblodepng ${CMAKE_SOURCE_DIR}/libmscgen + ${CMAKE_SOURCE_DIR}/libversion ${CMAKE_SOURCE_DIR}/vhdlparser ${CMAKE_SOURCE_DIR}/src ${CLANG_INCLUDEDIR} @@ -32,12 +33,6 @@ CONTENT "#ifndef SETTINGS_H 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}\";" -) -set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) - # configvalues.h add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h @@ -142,7 +137,6 @@ add_library(_doxygen STATIC ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/layout_default.xml.h - ${GENERATED_SRC}/version.cpp ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/resources.cpp @@ -286,6 +280,7 @@ target_link_libraries(doxygen md5 lodepng mscgen + version vhdlparser ${SQLITE3_LIBRARIES} ${ICONV_LIBRARIES} diff --git a/src/configimpl.l b/src/configimpl.l index bc08cbf..72c826d 100644 --- a/src/configimpl.l +++ b/src/configimpl.l @@ -943,7 +943,7 @@ void ConfigImpl::writeTemplate(FTextStream &t,bool sl,bool upd) { t << takeStartComment() << endl; } - t << "# Doxyfile " << versionString << endl << endl; + t << "# Doxyfile " << getVersion() << endl << endl; if (!sl) { t << convertToComment(m_header,""); @@ -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 " << getVersion(); + if (strlen(getGitVersion())) + { + t << " (" << getGitVersion() << ")"; + } + t << endl; QListIterator<ConfigOption> it = iterator(); ConfigOption *option; for (;(option=it.current());++it) diff --git a/src/context.cpp b/src/context.cpp index 66206b1..49c9afa 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -380,7 +380,7 @@ class DoxygenContext::Private public: TemplateVariant version() const { - return versionString; + return getVersion(); } TemplateVariant date() const { diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 0d05f13..92e5292 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -10129,7 +10129,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(getGitVersion())) + { + msg("Doxygen version %s (%s)\nCopyright Dimitri van Heesch 1997-2015\n\n",getVersion(),getGitVersion()); + } + else + { + msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2015\n\n",getVersion()); + } 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); @@ -10589,7 +10596,14 @@ void readConfiguration(int argc, char **argv) g_dumpSymbolMap = TRUE; break; case 'v': - msg("%s\n",versionString); + if (strlen(getGitVersion())) + { + msg("%s (%s)\n",getVersion(),getGitVersion()); + } + else + { + msg("%s\n",getVersion()); + } cleanUpDoxygen(); exit(0); break; @@ -10601,7 +10615,14 @@ void readConfiguration(int argc, char **argv) } else if (qstrcmp(&argv[optind][2],"version")==0) { - msg("%s\n",versionString); + if (strlen(getGitVersion())) + { + msg("%s (%s)\n",getVersion(),getGitVersion()); + } + else + { + msg("%s\n",getVersion()); + } cleanUpDoxygen(); exit(0); } diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index b3abd09..402b4e4 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -878,7 +878,7 @@ void HtmlGenerator::writeSearchData(const char *dir) { searchCss = mgr.getAsString("search.css"); } - searchCss = substitute(replaceColorMarkers(searchCss),"$doxygenversion",versionString); + searchCss = substitute(replaceColorMarkers(searchCss),"$doxygenversion",getVersion()); t << searchCss; Doxygen::indexList->addStyleSheetFile("search/search.css"); } @@ -887,20 +887,20 @@ void HtmlGenerator::writeSearchData(const char *dir) void HtmlGenerator::writeStyleSheetFile(QFile &file) { FTextStream t(&file); - t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString)); + t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",getVersion())); } void HtmlGenerator::writeHeaderFile(QFile &file, const char * /*cssname*/) { FTextStream t(&file); - t << "<!-- HTML header for doxygen " << versionString << "-->" << endl; + t << "<!-- HTML header for doxygen " << getVersion() << "-->" << endl; t << ResourceMgr::instance().getAsString("header.html"); } void HtmlGenerator::writeFooterFile(QFile &file) { FTextStream t(&file); - t << "<!-- HTML footer for doxygen " << versionString << "-->" << endl; + t << "<!-- HTML footer for doxygen " << getVersion() << "-->" << endl; t << ResourceMgr::instance().getAsString("footer.html"); } @@ -925,7 +925,7 @@ void HtmlGenerator::startFile(const char *name,const char *, t << substituteHtmlKeywords(g_header,convertToHtml(filterTitle(title)),relPath); t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen " - << versionString << " -->" << endl; + << getVersion() << " -->" << endl; //static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW); static bool searchEngine = Config_getBool(SEARCHENGINE); if (searchEngine /*&& !generateTreeView*/) @@ -990,7 +990,7 @@ QCString HtmlGenerator::writeLogoAsString(const char *path) "<img class=\"footer\" src=\""; result += path; result += "doxygen.png\" alt=\"doxygen\"/></a> "; - result += versionString; + result += getVersion(); result += " "; return result; } @@ -1043,7 +1043,7 @@ void HtmlGenerator::writeStyleInfo(int part) //t << "H1 { text-align: center; border-width: thin none thin none;" << endl; //t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl; - t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString)); + t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",getVersion())); endPlainFile(); Doxygen::indexList->addStyleSheetFile("doxygen.css"); } @@ -2461,7 +2461,7 @@ void HtmlGenerator::writeSearchPage() t << substituteHtmlKeywords(g_header,"Search",""); t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen " - << versionString << " -->" << endl; + << getVersion() << " -->" << endl; t << "<script type=\"text/javascript\">\n"; t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"; t << "var searchBox = new SearchBox(\"searchBox\", \"" @@ -2515,7 +2515,7 @@ void HtmlGenerator::writeExternalSearchPage() t << substituteHtmlKeywords(g_header,"Search",""); t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen " - << versionString << " -->" << endl; + << getVersion() << " -->" << endl; t << "<script type=\"text/javascript\">\n"; t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"; t << "var searchBox = new SearchBox(\"searchBox\", \"" diff --git a/src/latexgen.cpp b/src/latexgen.cpp index f88f79b..e6c6861 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -776,7 +776,7 @@ static void writeDefaultHeaderPart3(FTextStream &t) { // part 3 // Finalize project number - t << " Doxygen " << versionString << "}\\\\\n"; + t << " Doxygen " << getVersion() << "}\\\\\n"; if (Config_getBool(LATEX_TIMESTAMP)) t << "\\vspace*{0.5cm}\n" "{\\small " << dateToString(TRUE) << "}\\\\\n"; @@ -845,7 +845,7 @@ static void writeDefaultFooter(FTextStream &t) void LatexGenerator::writeHeaderFile(QFile &f) { FTextStream t(&f); - t << "% Latex header for doxygen " << versionString << endl; + t << "% Latex header for doxygen " << getVersion() << endl; writeDefaultHeaderPart1(t); t << "Your title here"; writeDefaultHeaderPart2(t); @@ -856,14 +856,14 @@ void LatexGenerator::writeHeaderFile(QFile &f) void LatexGenerator::writeFooterFile(QFile &f) { FTextStream t(&f); - t << "% Latex footer for doxygen " << versionString << endl; + t << "% Latex footer for doxygen " << getVersion() << endl; writeDefaultFooter(t); } void LatexGenerator::writeStyleSheetFile(QFile &f) { FTextStream t(&f); - t << "% stylesheet for doxygen " << versionString << endl; + t << "% stylesheet for doxygen " << getVersion() << endl; writeDefaultStyleSheet(t); } diff --git a/src/layout.cpp b/src/layout.cpp index 4ffdfb8..30c41f9 100644 --- a/src/layout.cpp +++ b/src/layout.cpp @@ -1561,7 +1561,7 @@ void writeDefaultLayoutFile(const char *fileName) return; } QTextStream t(&f); - t << substitute(layout_default,"$doxygenversion",versionString); + t << substitute(layout_default,"$doxygenversion",getVersion()); } //---------------------------------------------------------------------------------- diff --git a/src/resourcemgr.cpp b/src/resourcemgr.cpp index ab7422a..8cb831e 100644 --- a/src/resourcemgr.cpp +++ b/src/resourcemgr.cpp @@ -144,7 +144,7 @@ bool ResourceMgr::copyResourceAs(const char *name,const char *targetDir,const ch } else { - t << substitute(buf,"$doxygenversion",versionString); + t << substitute(buf,"$doxygenversion",getVersion()); } return TRUE; } diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 2f24ca7..948d4cf 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -102,7 +102,7 @@ RTFGenerator::~RTFGenerator() void RTFGenerator::writeStyleSheetFile(QFile &file) { FTextStream t(&file); - t << "# Generated by doxygen " << versionString << "\n\n"; + t << "# Generated by doxygen " << getVersion() << "\n\n"; t << "# This file describes styles used for generating RTF output.\n"; t << "# All text after a hash (#) is considered a comment and will be ignored.\n"; t << "# Remove a hash to activate a line.\n\n"; @@ -119,7 +119,7 @@ void RTFGenerator::writeStyleSheetFile(QFile &file) void RTFGenerator::writeExtensionsFile(QFile &file) { FTextStream t(&file); - t << "# Generated by doxygen " << versionString << "\n\n"; + t << "# Generated by doxygen " << getVersion() << "\n\n"; t << "# This file describes extensions used for generating RTF output.\n"; t << "# All text after a hash (#) is considered a comment and will be ignored.\n"; t << "# Remove a hash to activate a line.\n\n"; diff --git a/src/searchindex.cpp b/src/searchindex.cpp index e5f9ac8..b21d587 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -984,7 +984,7 @@ void writeJavascriptSearchIndex() " \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl; t << "<html><head><title></title>" << endl; t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>" << endl; - t << "<meta name=\"generator\" content=\"Doxygen " << versionString << "\"/>" << endl; + t << "<meta name=\"generator\" content=\"Doxygen " << getVersion() << "\"/>" << endl; t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl; t << "<script type=\"text/javascript\" src=\"" << baseName << ".js\"></script>" << endl; t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl; diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index 5a8e81d..012a0c0 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -924,7 +924,7 @@ static int insertPath(QCString name, bool local=TRUE, bool found=TRUE, int type= static void recordMetadata() { - bindTextParameter(meta_insert,":doxygen_version",versionString); + bindTextParameter(meta_insert,":doxygen_version",getVersion()); bindTextParameter(meta_insert,":schema_version","0.2.0"); //TODO: this should be a constant somewhere; not sure where bindTextParameter(meta_insert,":generated_at",dateToString(TRUE), FALSE); bindTextParameter(meta_insert,":generated_on",dateToString(FALSE), FALSE); diff --git a/src/util.cpp b/src/util.cpp index 70c0fce..695a52c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -5337,7 +5337,7 @@ QCString substituteKeywords(const QCString &s,const char *title, result = substitute(result,"$datetime",dateToString(TRUE)); result = substitute(result,"$date",dateToString(FALSE)); result = substitute(result,"$year",yearToString()); - result = substitute(result,"$doxygenversion",versionString); + result = substitute(result,"$doxygenversion",getVersion()); result = substitute(result,"$projectname",projName); result = substitute(result,"$projectnumber",projNum); result = substitute(result,"$projectbrief",projBrief); diff --git a/src/version.h b/src/version.h deleted file mode 100644 index 16bf9df..0000000 --- a/src/version.h +++ /dev/null @@ -1,23 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2015 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. - * - */ - -#ifndef VERSION_H -#define VERSION_H - -extern char versionString[]; - -#endif diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index b992b81..16abbf2 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -154,7 +154,7 @@ static void writeXMLHeader(FTextStream &t) t << "<?xml version='1.0' encoding='UTF-8' standalone='no'?>" << endl;; t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; t << "xsi:noNamespaceSchemaLocation=\"compound.xsd\" "; - t << "version=\"" << versionString << "\">" << endl; + t << "version=\"" << getVersion() << "\">" << endl; } static void writeCombineScript() @@ -1981,7 +1981,7 @@ void generateXML() t << "<?xml version='1.0' encoding='UTF-8' standalone='no'?>" << endl;; t << "<doxygenindex xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" "; - t << "version=\"" << versionString << "\">" << endl; + t << "version=\"" << getVersion() << "\">" << endl; { ClassSDict::Iterator cli(*Doxygen::classSDict); |