./0000755000004100000410000000000013060517015011241 5ustar www-datawww-data./CMakeLists.txt0000644000004100000410000000076313060517015014007 0ustar www-datawww-datacmake_minimum_required(VERSION 3.0.2) project(cmake-extras) include(GNUInstallDirs) # Modules using the newer find_package() "config" extension mechanism. install( DIRECTORY "src/" DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/" USE_SOURCE_PERMISSIONS ) # Modules installed directly to CMAKE_ROOT # TODO: migrate these to the above tree, since installing to # CMAKE_ROOT is frowned upon. install( DIRECTORY "modules/" DESTINATION "${CMAKE_ROOT}/Modules/" USE_SOURCE_PERMISSIONS ) ./src/0000755000004100000410000000000013060517015012030 5ustar www-datawww-data./src/GSettings/0000755000004100000410000000000013060517015013737 5ustar www-datawww-data./src/GSettings/GSettingsConfig.cmake0000644000004100000410000000723713060517015020007 0ustar www-datawww-data# GSettingsConfig.cmake, CMake macros written for Marlin, feel free to re-use them. find_package(PkgConfig REQUIRED) # We need this for generating unique target identifiers find_package(Gettext REQUIRED) # Find the binary for compiling schemas execute_process( COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _GLIB_COMPILE_SCHEMAS OUTPUT_STRIP_TRAILING_WHITESPACE ) # Have an option to not install the schema into where GLib is option (GSETTINGS_LOCALINSTALL "Install GSettings schemas locally instead of to the GLib prefix" OFF) if (GSETTINGS_LOCALINSTALL) message(STATUS "GSettings schemas will be installed locally.") set (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") else (GSETTINGS_LOCALINSTALL) execute_process ( COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE ) set (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") endif (GSETTINGS_LOCALINSTALL) message (STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") # Have an option to compile the schemas once installed option (GSETTINGS_COMPILE "Compile GSettings schemas after installation" OFF) if(GSETTINGS_COMPILE) message(STATUS "Installed GSettings schemas will be compiled.") endif() function(add_schema SCHEMA_NAME) # Make sure a target exists if(NOT TARGET ${SCHEMA_NAME}) add_custom_target( ${SCHEMA_NAME} COMMAND true ) endif() # Always copy the schema file to BINARY_DIR as schema compilation # should be done on binary dir, when needed for tests. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}) set(SCHEMA_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}") file(COPY "${SCHEMA_FILE}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") else() set(SCHEMA_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SCHEMA_NAME}") endif() set_property( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} APPEND PROPERTY _SCHEMA_FILES "${SCHEMA_NAME}" ) add_test( NAME "validate-${SCHEMA_NAME}" COMMAND ${_GLIB_COMPILE_SCHEMAS} --dry-run --schema-file=${SCHEMA_FILE} ) # Install the schemas install (FILES ${SCHEMA_FILE} DESTINATION ${GSETTINGS_DIR} OPTIONAL) # Add a rule to compile the schemas if so enabled # FIXME: This should ideally only be called once, after all the files # have been installed, but we must do so every time currently, due # to a bug in cmake lacking ability to order last (LP: #1665006) if(GSETTINGS_COMPILE) install (CODE " find_package(GSettings REQUIRED) compile_schemas(${GSETTINGS_DIR}) " ) endif() endfunction() function(compile_schemas SCHEMA_DIR) if (${SCHEMA_DIR} MATCHES "^${CMAKE_SOURCE_DIR}.*$") set(OUTPUT_FILE "${SCHEMA_DIR}/gschemas.compiled") get_property( _SCHEMA_FILES DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY _SCHEMA_FILES ) add_custom_command( OUTPUT ${OUTPUT_FILE} COMMAND "${_GLIB_COMPILE_SCHEMAS}" "${SCHEMA_DIR}" BYPRODUCTS ${OUTPUT_FILE} DEPENDS ${_SCHEMA_FILES} ) _GETTEXT_GET_UNIQUE_TARGET_NAME("gschemas.compiled" _UNIQUE_TARGET_NAME) add_custom_target( ${_UNIQUE_TARGET_NAME} ALL DEPENDS ${OUTPUT_FILE} ) else() message(STATUS "Compiling GSettings schemas in: ${SCHEMA_DIR}") execute_process( COMMAND "${_GLIB_COMPILE_SCHEMAS}" "${SCHEMA_DIR}" ERROR_VARIABLE _schema_compile_error OUTPUT_STRIP_TRAILING_WHITESPACE ) if(_schema_compile_error) message(SEND_ERROR "Schemas compile failed: ${_schema_compile_error}") endif(_schema_compile_error) endif() endfunction() ./src/Lcov/0000755000004100000410000000000013060517015012733 5ustar www-datawww-data./src/Lcov/LcovConfig.cmake0000644000004100000410000000233713060517015015773 0ustar www-datawww-data# - Find lcov # Will define: # # LCOV_EXECUTABLE - the lcov binary # GENHTML_EXECUTABLE - the genhtml executable # # Copyright (C) 2010 by Johannes Wienke # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The development of this software was supported by: # CoR-Lab, Research Institute for Cognition and Robotics # Bielefeld University INCLUDE(FindPackageHandleStandardArgs) FIND_PROGRAM(LCOV_EXECUTABLE lcov) FIND_PROGRAM(GENHTML_EXECUTABLE genhtml) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lcov DEFAULT_MSG LCOV_EXECUTABLE GENHTML_EXECUTABLE) # only visible in advanced view MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE) ./src/gcovr/0000755000004100000410000000000013060517015013150 5ustar www-datawww-data./src/gcovr/gcovrConfig.cmake0000644000004100000410000000265713060517015016432 0ustar www-datawww-data# - Find gcovr scrip # Will define: # # GCOVR_EXECUTABLE - the gcovr script # # Uses: # # GCOVR_ROOT - root to search for the script # # Copyright (C) 2011 by Johannes Wienke # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The development of this software was supported by: # CoR-Lab, Research Institute for Cognition and Robotics # Bielefeld University INCLUDE(FindPackageHandleStandardArgs) FIND_PROGRAM(GCOVR_EXECUTABLE gcovr HINTS ${GCOVR_ROOT} "${GCOVR_ROOT}/bin" "${GCOVR_ROOT}/share/python" "/usr/share/python" "/usr/local/share/python" "${CMAKE_INSTALL_PREFIX}/share/python") FIND_PACKAGE_HANDLE_STANDARD_ARGS(gcovr DEFAULT_MSG GCOVR_EXECUTABLE) # only visible in advanced view MARK_AS_ADVANCED(GCOVR_EXECUTABLE) ./src/CoverageReport/0000755000004100000410000000000013060517015014757 5ustar www-datawww-data./src/CoverageReport/CoverageReportConfig.cmake0000644000004100000410000000040613060517015022036 0ustar www-datawww-datafind_package(Lcov) find_package(gcovr) # decide if there is any tool to create coverage data set(CoverageReport_FOUND FALSE) if(Lcov_FOUND OR gcovr_FOUND) set(CoverageReport_FOUND TRUE) endif() include("${CMAKE_CURRENT_LIST_DIR}/EnableCoverageReport.cmake") ./src/CoverageReport/EnableCoverageReport.cmake0000644000004100000410000002170313060517015022022 0ustar www-datawww-data# - Creates a special coverage build type and target on GCC. # # Defines a function ENABLE_COVERAGE_REPORT which generates the coverage target # for selected targets. Optional arguments to this function are used to filter # unwanted results using globbing expressions. Moreover targets with tests for # the source code can be specified to trigger regenerating the report if the # test has changed. # # ENABLE_COVERAGE_REPORT(TARGETS target... [FILTER filter...] [TESTS test targets...]) # # To generate a coverage report first build the project with # CMAKE_BUILD_TYPE=coverage, then call make test and afterwards make coverage. # # The coverage report is based on gcov. Depending on the availability of lcov # a HTML report will be generated and/or an XML report of gcovr is found. # The generated coverage target executes all found solutions. Special targets # exist to create e.g. only the xml report: coverage-xml. # # Copyright (C) 2010 by Johannes Wienke # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The development of this software was supported by: # CoR-Lab, Research Institute for Cognition and Robotics # Bielefeld University FUNCTION(_CoverageReport_SET_GCC_VERSION) EXECUTE_PROCESS(COMMAND gcc -dumpversion OUTPUT_VARIABLE GCC_VERSION) STRING(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION}) LIST(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR) LIST(GET GCC_VERSION_COMPONENTS 1 GCC_MINOR) STRING(LENGTH ${GCC_MAJOR} MINOR_LEN) IF(${MINOR_LEN} EQUAL 1) SET(GCC_MINOR "0${GCC_MINOR}") ENDIF() SET(GCC_VERSION "${GCC_MAJOR}${GCC_MINOR}" PARENT_SCOPE) ENDFUNCTION() FUNCTION(ENABLE_COVERAGE_REPORT) # argument parsing SET(MULTI_VALUE_ARGS FILTER TARGETS TESTS) CMAKE_PARSE_ARGUMENTS(ENABLE_COVERAGE_REPORT "" "" "${MULTI_VALUE_ARGS}" ${ARGN}) SET(COVERAGE_RAW_FILE "${CMAKE_BINARY_DIR}/coverage.raw.info") SET(COVERAGE_FILTERED_FILE "${CMAKE_BINARY_DIR}/coverage.info") SET(COVERAGE_REPORT_DIR "${CMAKE_BINARY_DIR}/coveragereport") SET(COVERAGE_XML_FILE "${CMAKE_BINARY_DIR}/coverage.xml") # decide if there is any tool to create coverage data IF(NOT CoverageReport_FOUND) MESSAGE(STATUS "Cannot enable coverage targets because neither lcov nor gcovr are found.") ENDIF() STRING(TOLOWER "${CMAKE_BUILD_TYPE}" LOWER_CMAKE_BUILD_TYPE) IF(CoverageReport_FOUND AND "${LOWER_CMAKE_BUILD_TYPE}" STREQUAL "coverage") MESSAGE(STATUS "Coverage support enabled for targets: ${ENABLE_COVERAGE_REPORT_TARGETS}") # create coverage build type SET(CMAKE_CXX_FLAGS_COVERAGE ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE) SET(CMAKE_C_FLAGS_COVERAGE ${CMAKE_C_FLAGS_DEBUG} PARENT_SCOPE) SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} coverage PARENT_SCOPE) # instrument targets # If we are using Clang, tell it to generate coverage data suitable for gcovr. IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") _CoverageReport_SET_GCC_VERSION() set(CLANG_COVERAGE_ARGS " -Xclang -coverage-cfg-checksum -Xclang -coverage-no-function-names-in-data -Xclang -coverage-version='${GCC_VERSION}*'") ENDIF() FOREACH(T ${ENABLE_COVERAGE_REPORT_TARGETS}) SET_PROPERTY(TARGET ${T} APPEND_STRING PROPERTY COMPILE_FLAGS " -g --coverage") SET_PROPERTY(TARGET ${T} APPEND_STRING PROPERTY LINK_FLAGS " -g --coverage") SET_PROPERTY(TARGET ${T} APPEND_STRING PROPERTY COMPILE_FLAGS ${CLANG_COVERAGE_ARGS}) ENDFOREACH() FOREACH(T ${ENABLE_COVERAGE_REPORT_TESTS}) SET_PROPERTY(TARGET ${T} APPEND_STRING PROPERTY LINK_FLAGS " -g --coverage") ENDFOREACH() # html report IF (LCOV_FOUND) MESSAGE(STATUS "Enabling HTML coverage report") # set up coverage target ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_RAW_FILE} COMMAND ${LCOV_EXECUTABLE} -c -d ${CMAKE_BINARY_DIR} -o ${COVERAGE_RAW_FILE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Collecting coverage data" DEPENDS ${ENABLE_COVERAGE_REPORT_TARGETS} ${ENABLE_COVERAGE_REPORT_TESTS} VERBATIM) # filter unwanted stuff LIST(LENGTH ENABLE_COVERAGE_REPORT_FILTER FILTER_LENGTH) IF(${FILTER_LENGTH} GREATER 0) SET(FILTER COMMAND ${LCOV_EXECUTABLE} -r ${COVERAGE_FILTERED_FILE} ${ENABLE_COVERAGE_REPORT_FILTER} -o ${COVERAGE_FILTERED_FILE}) ELSE() SET(FILTER "") ENDIF() ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_FILTERED_FILE} COMMAND ${LCOV_EXECUTABLE} -e ${COVERAGE_RAW_FILE} "${CMAKE_SOURCE_DIR}*" -o ${COVERAGE_FILTERED_FILE} ${FILTER} DEPENDS ${COVERAGE_RAW_FILE} COMMENT "Filtering recorded coverage data for project-relevant entries" VERBATIM) ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_REPORT_DIR} COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_REPORT_DIR} COMMAND ${GENHTML_EXECUTABLE} --legend --show-details -t "${PROJECT_NAME} test coverage" -o ${COVERAGE_REPORT_DIR} ${COVERAGE_FILTERED_FILE} DEPENDS ${COVERAGE_FILTERED_FILE} COMMENT "Generating HTML coverage report in ${COVERAGE_REPORT_DIR}" VERBATIM) ADD_CUSTOM_TARGET(coverage-html DEPENDS ${COVERAGE_REPORT_DIR}) ENDIF() # xml coverage report IF(GCOVR_FOUND) MESSAGE(STATUS "Enabling XML coverage report") # filter unwanted stuff SET(GCOVR_FILTER "") FOREACH(F ${ENABLE_COVERAGE_REPORT_FILTER}) # Convert the pattern to a regexp using the same rules # as lcov's transform_pattern() function. STRING(REPLACE "\\" "\\\\" F ${F}) STRING(REPLACE "/" "\\/" F ${F}) STRING(REPLACE "^" "\\^" F ${F}) STRING(REPLACE "\$" "\\\$" F ${F}) STRING(REPLACE "(" "\\(" F ${F}) STRING(REPLACE ")" "\\)" F ${F}) STRING(REPLACE "[" "\\[" F ${F}) STRING(REPLACE "]" "\\]" F ${F}) STRING(REPLACE "{" "\\{" F ${F}) STRING(REPLACE "}" "\\}" F ${F}) STRING(REPLACE "." "\\." F ${F}) STRING(REPLACE "," "\\," F ${F}) STRING(REPLACE "|" "\\|" F ${F}) STRING(REPLACE "+" "\\+" F ${F}) STRING(REPLACE "!" "\\!" F ${F}) STRING(REPLACE "*" ".*" F ${F}) STRING(REPLACE "?" "." F ${F}) SET(GCOVR_FILTER ${GCOVR_FILTER} -e "^${F}\$") ENDFOREACH() ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_XML_FILE} COMMAND "${GCOVR_EXECUTABLE}" -x -r "${CMAKE_SOURCE_DIR}" ${GCOVR_FILTER} -o "${COVERAGE_XML_FILE}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" COMMENT "Generating coverage XML report" VERBATIM) ADD_CUSTOM_TARGET(coverage-xml DEPENDS ${COVERAGE_XML_FILE}) ENDIF() # provide a global coverage target executing both steps if available SET(GLOBAL_DEPENDS "") IF(LCOV_FOUND) LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_REPORT_DIR}) ENDIF() IF(GCOVR_FOUND) LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_XML_FILE}) ENDIF() IF(LCOV_FOUND OR GCOVR_FOUND) ADD_CUSTOM_TARGET(coverage DEPENDS ${GLOBAL_DEPENDS}) ENDIF() ENDIF() # This gets rid of any stale .gcda files. Run this if a running a binary causes lots of # messages about about a "merge mismatch for summaries". ADD_CUSTOM_TARGET(clean-coverage COMMAND find ${CMAKE_BINARY_DIR} -name '*.gcda' | xargs rm -f) ENDFUNCTION() ./src/CopyrightTest/0000755000004100000410000000000013060517015014640 5ustar www-datawww-data./src/CopyrightTest/check_copyright.sh0000755000004100000410000000356213060517015020352 0ustar www-datawww-data#!/bin/sh # # Copyright (C) 2013 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # # Authored by: Michi Henning # James Henstridge # # # Check that we have acceptable license information in our source files. # set -e prog_name=$(basename "$0") usage="usage: $prog_name [-c include_pattern] [-i ignore_pattern] [-d ignore_dir] source_dir test_name" while getopts "hc:i:d:" opt do case "$opt" in '?') echo $usage >&2 exit 2 ;; 'h') echo $usage exit 0 ;; 'c') include_pat="$OPTARG" ;; 'i') ignore_pat="$OPTARG" ;; 'd') ignore_dir="$OPTARG" ;; esac done shift $((OPTIND-1)) [ "$1" = "--" ] && shift [ $# -ne 2 ] && { echo $usage >&2 exit 2 } testname="$2" logfile="${testname}.log" filteredfile="${testname}_filtered.log" args="-r $1" [ -n "$include_pat" ] && args="-c $include_pat $args" [ -n "$ignore_pat" ] && args="-i $ignore_pat $args" licensecheck $args > $logfile if [ -n "$ignore_dir" ]; then cat $logfile | grep -v -F "$ignore_dir" | grep "No copyright" > $filteredfile || : else cat $logfile | grep "No copyright" > $filteredfile || : fi if [ -s $filteredfile ]; then cat $filteredfile exit 1 fi exit 0 ./src/CopyrightTest/CopyrightTestConfig.cmake0000644000004100000410000001212213060517015021576 0ustar www-datawww-data# Copyright (C) 2016 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # # Authored by: Michi Henning # # Test to check that files contain an acceptable copyright header. # # Example: # # find_package(CopyrightTest) # # add_copyright_test( # SOURCE_DIR ${CMAKE_SOURCE_DIR} # IGNORE_PATTERN "\\/\\.bzr\\/|\\.sci$|debian|HACKING|README|\\.txt$|\\.in$|\\.pm$" # IGNORE_DIR ${CMAKE_BINARY_DIR} # ) # # This adds a test called "copyright" that scans files in the source directory. Any files in the build # directory are ignored. In addition, complaints about missing copyright headers in files that # match IGNORE_PATTERN are ignored as well. # # Parameters: # # - SOURCE_DIR (mandatory) # The source directory to recursively scan for files to check. # # - INCLUDE_PATTERN # Changes the default set of common source files scanned by licensecheck to files matching the # specified pattern. (This parameter is passed to the -c option of licensecheck.) # # - IGNORE_PATTERN (optional) # Ignore complaints about files with names matching the pattern. (This parameter is passed to # the -i option of licensecheck.) # # - IGNORE_DIR (optional) # Ignore complaints about files in this subtree. This parameter is used to post-filter # the list of missing copyright messages from licensecheck: any reports about files without # a copyright header in this subtree are ignored. # # - TEST_NAME (optional) # Sets the name of the test to be added. The default is "copyright". # # Note that patterns match against the full path name of files. To make sure that you do not # accidentally match a path component in the middle of a path, anchor the pattern appropriately. # Any regex meta-characters that you want to match literally must be escaped with a double backslash. # # The generated test uses licensecheck to probe for copyright headers. The output from the command # is kept in a file .log. Complaints about files that were not ignored are stored in # _filtered.log. (The defaults are copyright.log and copyright_filtered.log.) # # The name of the test target is _test (copyright_test by default), so you can run # the test explicitly with # # $ make copyright_test # # To apply different suppressions for different sub-trees, you can add multiple tests with different names. # For example: # # find_package(CopyrightTest) # # add_copyright_test( # SOURCE_DIR some_dir # IGNORE_PATTERN "\\.in$" # IGNORE_DIR some_build_dir # TEST_NAME test_1 # ) # # add_copyright_test( # SOURCE_DIR other_dir # INCLUDE_PATTERN \\.cpp$|\\.h$ # IGNORE_DIR other_build_dir # TEST_NAME test_2 # ) # find_program(LICENSECHECK licensecheck) if(${LICENSECHECK} STREQUAL "LICENSECHECK-NOTFOUND") message(SEND_ERROR "Cannot find licensecheck program, which is needed by CopyrightTest." " Run \"sudo apt-get install licensecheck\" (zesty and later)" " or \"sudo apt-get install devscripts\" (yakkety and earlier) to install it.") set(CopyrightTest_FOUND false) endif() set(ADD_COPYRIGHT_TEST_TEST_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/check_copyright.sh") function(ADD_COPYRIGHT_TEST) set(one_value_args SOURCE_DIR INCLUDE_PATTERN IGNORE_PATTERN IGNORE_DIR TEST_NAME) cmake_parse_arguments(ADD_COPYRIGHT_TEST "" "${one_value_args}" "" ${ARGN}) if("${ADD_COPYRIGHT_TEST_TEST_NAME}" STREQUAL "") set(ADD_COPYRIGHT_TEST_TEST_NAME "copyright") endif() if(NOT ${ADD_COPYRIGHT_TEST_INCLUDE_PATTERN} STREQUAL "") set(opts ${opts} -c ${ADD_COPYRIGHT_TEST_INCLUDE_PATTERN}) endif() if(NOT ${ADD_COPYRIGHT_TEST_IGNORE_PATTERN} STREQUAL "") set(opts ${opts} -i ${ADD_COPYRIGHT_TEST_IGNORE_PATTERN}) endif() if(NOT ${ADD_COPYRIGHT_TEST_IGNORE_DIR} STREQUAL "") set(opts ${opts} -d ${ADD_COPYRIGHT_TEST_IGNORE_DIR}) endif() add_custom_command( OUTPUT run_always_${ADD_COPYRIGHT_TEST_TEST_NAME} ${ADD_COPYRIGHT_TEST_TEST_NAME}.log ${ADD_COPYRIGHT_TEST_TEST_NAME}_filtered.log COMMAND ${ADD_COPYRIGHT_TEST_TEST_SCRIPT} ${opts} ${ADD_COPYRIGHT_TEST_SOURCE_DIR} ${ADD_COPYRIGHT_TEST_TEST_NAME} VERBATIM ) set_source_files_properties(run_always_${ADD_COPYRIGHT_TEST_TEST_NAME} PROPERTIES SYMBOLIC true) add_custom_target(${ADD_COPYRIGHT_TEST_TEST_NAME}_test DEPENDS run_always_${ADD_COPYRIGHT_TEST_TEST_NAME}) add_test(${ADD_COPYRIGHT_TEST_TEST_NAME} ${CMAKE_MAKE_PROGRAM} ${ADD_COPYRIGHT_TEST_TEST_NAME}_test) endfunction() ./src/GDbus/0000755000004100000410000000000013060517024013034 5ustar www-datawww-data./src/GDbus/GDbusConfig.cmake0000644000004100000410000000504313060517024016172 0ustar www-datawww-data# Copyright (C) 2017 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . #.rst: # GDbus # ----- # # A `gdbus-codegen` module for CMake. # # Finds ths ``gdbus-codegen`` executable and adds the # :command:`add_gdbus_codegen` command. # # In order to find the ``gdbus-codegen`` executable, it uses the # :variable:`GDBUS_CODEGEN_EXECUTABLE` variable. ### Find the executable find_program(GDBUS_CODEGEN_EXECUTABLE gdbus-codegen) ### Handle standard args include(FindPackageHandleStandardArgs) find_package_handle_standard_args( GDbus REQUIRED_VARS GDBUS_CODEGEN_EXECUTABLE HANDLE_COMPONENTS ) #.rst: #.. command:: add_gdbus_codegen # # Generates C code and header file from XML service description, and # appends the sources to the SOURCES list provided. # # add_gdbus_codegen( [NAMESPACE]) # # For example: # # .. code-block:: cmake # # set(MY_SOURCES foo.c) # # add_gdbus_codegen(MY_SOURCES # dbus-proxy # org.freedesktop # org.freedesktop.DBus.xml # ) # function(ADD_GDBUS_CODEGEN _SOURCES _NAME _PREFIX SERVICE_XML) set(_options ALL) set(_oneValueArgs NAMESPACE) cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "" ${ARGN}) get_filename_component(_ABS_SERVICE_XML ${SERVICE_XML} ABSOLUTE) set(_NAMESPACE "") if(_ARG_NAMESPACE) set(_NAMESPACE "--c-namespace=${_ARG_NAMESPACE}") endif() set(_OUTPUT_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}") set(_OUTPUT_FILES "${_OUTPUT_PREFIX}.c" "${_OUTPUT_PREFIX}.h") # for backwards compatibility set("${_SOURCES}_SOURCES" "${_OUTPUT_FILES}" PARENT_SCOPE) list(APPEND ${_SOURCES} ${_OUTPUT_FILES}) set(${_SOURCES} ${${_SOURCES}} PARENT_SCOPE) add_custom_command( OUTPUT ${_OUTPUT_FILES} COMMAND "${GDBUS_CODEGEN_EXECUTABLE}" --interface-prefix ${_PREFIX} --generate-c-code="${_NAME}" ${_NAMESPACE} ${_ABS_SERVICE_XML} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${_ABS_SERVICE_XML} ) endfunction() ./src/FormatCode/0000755000004100000410000000000013060517015014053 5ustar www-datawww-data./src/FormatCode/formatcode_format.cmake.in0000644000004100000410000000205513060517015021157 0ustar www-datawww-data#============================================================================= # Copyright 2016 Canonical Ltd # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #============================================================================= set(CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@) set(CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@) set(FC_COMMAND @FC_COMMAND@) set(FC_SOURCES @FC_SOURCES@) include(@FC_CMAKE_MODULE_DIR@/formatcode_common.cmake) formatcode_format_files( "${FC_COMMAND}" "${FC_SOURCES}" ) ./src/FormatCode/FormatCodeConfig.cmake0000644000004100000410000001730313060517015020232 0ustar www-datawww-data# .rst: # FormatCode # ---------- # # Helpers to reformat source or test that it follows a style guide. # Supports astyle and clang-format. # # The ``ADD_FORMATCODE_TARGET'' function adds a rule # to reformat the specified sources into the desired style:: # # add_formatcode_target( # sources # [STYLE_NAME ] # [ASTYLE_CONFIG ] # [CFORMAT_CONFIG ] # ) # # If the ``STYLE_NAME`` argument is used, formatcode first looks for shared # style files installed in the FormatCode module's formatcode/ directory. # # Otherwise it looks in ${CMAKE_SOURCE_DIR} and ${CMAKE_SOURCE_DIR}/data/ # for the ``ASTYLE_CONFIG`` and ``CFORMAT_CONFIG`` files. # # The ``ADD_FORMATCODE_TEST'' function takes the same arguments as # ``ADD_FORMATCODE_TARGET'' and adds a test to see if the specified # sources follow the desired style:: # # add_formatcode_test( # sources # [STYLE_NAME ] # [ASTYLE_CONFIG ] # [CFORMAT_CONFIG ] # ) # # Example use: # # In CMakeLists.txt: # # file(GLOB_RECURSE MY_SOURCES src/*.cpp src/*.cxx src/*.cc src/*.h) # find_package(FormatCode) # add_formatcode_target(${MY_SOURCES} STYLE_NAME unity-api) # # In tests/CMakeLists.txt: # # add_formatcode_test(${MY_SOURCES} STYLE_NAME unity-api) # #============================================================================= # Copyright 2016 Canonical Ltd # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #============================================================================= include(CMakeParseArguments) set(FC_CMAKE_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR}) function(_fc_find_style_files FC_STYLE_NAME FC_ASTYLE_CONFIG FC_CFORMAT_CONFIG) message(STATUS "checking for astyle or clang-format") set(style_search_path ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/data ${FC_CMAKE_MODULE_DIR} ) if(FC_STYLE_NAME) set(filename ${FC_STYLE_NAME}.astyle) find_file(astyle_tmp ${filename} PATHS ${style_search_path}) set(filename ${FC_STYLE_NAME}.clang-format) find_file(cformat_tmp ${filename} PATHS ${style_search_path}) endif() if(FC_ASTYLE_CONFIG AND NOT astyle_tmp) if(EXISTS ${FC_ASTYLE_CONFIG}) set(astyle_tmp ${FC_ASTYLE_CONFIG}) else() find_file(astyle_tmp NAMES ${FC_ASTYLE_CONFIG} astyle-config PATHS ${style_search_path} ) endif() endif() if(FC_CFORMAT_CONFIG AND NOT cformat_tmp) if(EXISTS ${FC_CFORMAT_CONFIG}) set(cformat_tmp ${FC_CFORMAT_CONFIG}) else() find_file(cformat_tmp NAMES ${FC_CFORMAT_CONFIG} cformat-config PATHS ${style_search_path} ) endif() endif() # set retvals if(astyle_tmp) message(STATUS " found ${astyle_tmp}") set(FC_ASTYLE_CONFIG ${astyle_tmp} PARENT_SCOPE) else() unset(FC_ASTYLE_CONFIG PARENT_SCOPE) endif() if(cformat_tmp) message(STATUS " found ${cformat_tmp}") set(FC_CFORMAT_CONFIG ${cformat_tmp} PARENT_SCOPE) else() unset(FC_CFORMAT_CONFIG PARENT_SCOPE) endif() endfunction() function(_fc_find_apps FC_ASTYLE_CONFIG FC_CFORMAT_CONFIG) if(EXISTS ${FC_ASTYLE_CONFIG}) # find astyle... find_program(ASTYLE NAMES astyle) if(NOT ASTYLE) message(WARNING "found astyle config file, but not astyle") endif() endif() if(EXISTS ${FC_CFORMAT_CONFIG}) # find clang-format executable... find_program(CFORMAT NAMES clang-format clang-format-3.8 clang-format-3.7 clang-format-3.6 clang-format-3.5) if(NOT CFORMAT) message(WARNING "found clang-format style file, but not clang-format") endif() endif() # set retvals if(ASTYLE) message(STATUS " found ${ASTYLE}") set(FC_ASTYLE ${ASTYLE} PARENT_SCOPE) else() unset(FC_ASTYLE PARENT_SCOPE) endif() if(CFORMAT) message(STATUS " found ${CFORMAT}") set(FC_CFORMAT ${CFORMAT} PARENT_SCOPE) else() unset(FC_CFORMAT PARENT_SCOPE) endif() endfunction() # cmake doesn't have a mktemp func, so roll a simple one function(_fc_mktemp in out) set(_counter 1) while(EXISTS ${in}.${_counter}) math(EXPR _counter "${_counter} + 1") endwhile() set(${out} "${in}.${_counter}" PARENT_SCOPE) endfunction() # clang-format has a goofy wart, it doesn't let you pass in an arbitrary # style file. But, you CAN pass style options on the command line with # --style="{foo: bar, mum: baz}" ... so let's read the style file in # and bang it into a --style string function(_fc_get_cformat_style cformat_style_string filename) file(READ ${filename} contents) STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}") STRING(REGEX REPLACE "\n" ";" contents "${contents}") set(style) foreach(LINE IN LISTS contents) string(STRIP "${LINE}" LINE) if (LINE MATCHES ".*:.*") set(style "${style}${LINE}, ") endif() endforeach(LINE) STRING(LENGTH "${style}" len) if(${len} GREATER 2) # trim the trailing ", " MATH(EXPR len "${len}-2") STRING(SUBSTRING "${style}" 0 ${len} style) endif() # set retval set(${cformat_style_string} "{${style}}" PARENT_SCOPE) endfunction() # add_custom_target() and add_test() can take a cmake file argument but not a # function name argument, so we generate cmake files to call # formatcode_format_files() or formatcode_test_files() with the right FC_* args function(_fc_configure_new_cmake_file filename template_name) # parse the args set(options) set(oneValueArgs STYLE_NAME ASTYLE_CONFIG CFORMAT_CONFIG) set(multiValueArgs) cmake_parse_arguments(FC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(FC_SOURCES "${FC_UNPARSED_ARGUMENTS}") # use the args to find the right formatters and config files _fc_find_style_files("${FC_STYLE_NAME}" "${FC_ASTYLE_CONFIG}" "${FC_CFORMAT_CONFIG}") _fc_find_apps("${FC_ASTYLE_CONFIG}" "${FC_CFORMAT_CONFIG}") # build the filter set(FC_COMMAND ${CMAKE_BINARY_DIR}/formatcode) _fc_get_cformat_style(FC_CFORMAT_STYLE "${FC_CFORMAT_CONFIG}") configure_file(${FC_CMAKE_MODULE_DIR}/formatcode.in ${FC_COMMAND} @ONLY) # build the config file _fc_mktemp(${CMAKE_BINARY_DIR}/${template_name} TMPFILE) set(TMPFILE ${TMPFILE}.cmake) configure_file(${FC_CMAKE_MODULE_DIR}/${template_name}.cmake.in ${TMPFILE} @ONLY) # set the retval, the filename of the generated file set(${filename} ${TMPFILE} PARENT_SCOPE) endfunction() # add a 'make formatcode' target to reformat the source files function(add_formatcode_target) _fc_configure_new_cmake_file(cmake_file "formatcode_format" ${ARGN}) add_custom_target(formatcode COMMAND ${CMAKE_COMMAND} -P ${cmake_file} DEPENDS ${FC_SOURCES}) endfunction() # add a 'formatcode' test to confirm the source files follow the style guide function(add_formatcode_test) _fc_configure_new_cmake_file(cmake_file "formatcode_test" ${ARGN}) add_test(NAME formatcode COMMAND ${CMAKE_COMMAND} -P ${cmake_file}) endfunction() ./src/FormatCode/formatcode_common.cmake0000644000004100000410000000533513060517015020556 0ustar www-datawww-data#============================================================================= # Copyright 2016 Canonical Ltd # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #============================================================================= # formatting funcs function(formatcode_format_file fc_command filename) execute_process(COMMAND ${fc_command} ${filename}) endfunction() function(formatcode_format_files fc_command filenames) foreach(filename IN LISTS filenames) formatcode_format_file("${fc_command}" "${filename}") endforeach(filename) endfunction() # testing funcs set(FORMATCODE_TEST_DIR ${CMAKE_BINARY_DIR}/formatted) function(formatcode_test_file success fc_command filename) # copy the file into a relative path underneath $build/formatted/ # so that, if the test fails, we can leave the formatted copy behind # as a breadcrumb without clutting any other directories file(RELATIVE_PATH rel ${CMAKE_SOURCE_DIR} ${filename}) set(tmpfile ${FORMATCODE_TEST_DIR}/${rel}) get_filename_component(base ${tmpfile} NAME) file(MAKE_DIRECTORY base) file(REMOVE ${tmpfile}) file(READ ${filename} input) file(WRITE ${tmpfile} "${input}") # format the file formatcode_format_file("${fc_command}" ${tmpfile}) # if the format changed, then $filename didn't match the style guide string(MD5 md5in "${input}") file(MD5 ${tmpfile} md5out) if(md5in STREQUAL md5out) file(REMOVE ${tmpfile}) set(${success} TRUE PARENT_SCOPE) else() message(STATUS "leaving formatted copy in ${tmpfile}") set(${success} FALSE PARENT_SCOPE) endif() endfunction() function(formatcode_test_files fc_command filenames) set(error_count 0) foreach(filename IN LISTS filenames) formatcode_test_file(success "${fc_command}" "${filename}") if(NOT success) MATH(EXPR error_count "${error_count}+1") endif() endforeach(filename) if(error_count) message(FATAL_ERROR "formatcode test failed in ${error_count} files") else() # if nothing failed, clean up the test directory file(REMOVE_RECURSE ${FORMATCODE_TEST_DIR}) endif() endfunction() ./src/FormatCode/unity-api.astyle0000644000004100000410000000153413060517015017220 0ustar www-datawww-data# Options for formatting code with astyle. # # This helps to make code match the style guide. # # Use like this: # # astyle --options=astyle-config mfile.h myfile.cpp # # Occasionally, astyle does something silly (particularly with lambdas), so it's # still necessary to scan the changes for things that are wrong. # But, for most files, it does a good job. # # Please consider using this before checking code in for review. Code reviews shouldn't # have to deal with layout issues, they are just a distraction. It's better to be able # to focus on semantics in a code review, with style issues out of the way. --formatted --style=allman --min-conditional-indent=2 --indent-switches --max-instatement-indent=120 --pad-header --align-pointer=type --align-reference=type --add-brackets --convert-tabs --close-templates --max-code-length=120 --pad-oper ./src/FormatCode/formatcode_test.cmake.in0000644000004100000410000000205313060517015020644 0ustar www-datawww-data#============================================================================= # Copyright 2016 Canonical Ltd # # This file may be licensed under the terms of the # GNU Lesser General Public License Version 3 (the ``LGPL''), # or (at your option) any later version. # # Software distributed under the License is distributed # on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either # express or implied. See the LGPL for the specific language # governing rights and limitations. # # You should have received a copy of the LGPL along with this # program. If not, go to http://www.gnu.org/licenses/lgpl.html # or write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #============================================================================= set(CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@) set(CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@) set(FC_COMMAND @FC_COMMAND@) set(FC_SOURCES @FC_SOURCES@) include(@FC_CMAKE_MODULE_DIR@/formatcode_common.cmake) formatcode_test_files( "${FC_COMMAND}" "${FC_SOURCES}" ) ./src/FormatCode/formatcode.in0000755000004100000410000000326113060517015016533 0ustar www-datawww-data#!/bin/sh # Copyright (C) 2013-2016 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # # Authors: # Michi Henning # Charles Kerr # Simple script to format files with astyle, followed by clang-format (which # undoes some damage that's done by astyle, without wiping out astyle edits we want # to happen). # # usage: formatcode [FILE]... # # If no arguments are provided, we format stdin and write to stdout. astyle="@FC_ASTYLE@" astyle_config="@FC_ASTYLE_CONFIG@" cformat="@FC_CFORMAT@" cformat_style="@FC_CFORMAT_STYLE@" # if no arguments were provided, read stdin and write stdout. files="$@" [ $# -eq 0 ] && { tmpdir=`mktemp -d` tmp=`mktemp -p $tmpdir` cat >$tmp files="$tmp" } # maybe run astyle [ -n "$astyle" -a -n "$astyle_config" ] && { "$astyle" -q --options="$astyle_config" --lineend=linux -n "$files" } # maybe run clang-format [ -n "$cformat" -a -n "$cformat_style" ] && { "$cformat" -i -style="$cformat_style" "$files" } # if no arguments were provided, read stdin and write stdout. [ $# -eq 0 ] && { cat "$tmp" rm -rf $tmpdir } exit $? ./src/FormatCode/unity-api.clang-format0000644000004100000410000000264713060517015020277 0ustar www-datawww-data--- AccessModifierOffset: -4 AlignEscapedNewlinesLeft: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: true BinPackParameters: false BreakBeforeBinaryOperators: false BreakBeforeBraces: Allman BreakBeforeTernaryOperators: false BreakConstructorInitializersBeforeComma: true ColumnLimit: 120 ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DerivePointerBinding: true ExperimentalAutoDetectBinPacking: false IndentCaseLabels: true IndentFunctionDeclarationAfterType: true IndentWidth: 4 Language: Cpp MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCSpaceBeforeProtocolList: false PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 60 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerBindsToType: true SortIncludes: false SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInParentheses: false Standard: Cpp11 TabWidth: 8 UseTab: Never ... ./src/QmlPlugins/0000755000004100000410000000000013060517015014123 5ustar www-datawww-data./src/QmlPlugins/QmlPluginsConfig.cmake0000644000004100000410000001427513060517015020357 0ustar www-datawww-data# If you need to override the qmlplugindump binary, create the qmlplugin executable # target before loading this plugin. if(NOT TARGET qmlplugindump) find_program(qmlplugindump_exe qmlplugindump) if(NOT qmlplugindump_exe) msg(FATAL_ERROR "Could not locate qmlplugindump.") endif() add_executable(qmlplugindump IMPORTED) set_target_properties(qmlplugindump PROPERTIES IMPORTED_LOCATION ${qmlplugindump_exe}) endif() # # A custom target for building the qmltypes files manually. # if (NOT TARGET qmltypes) add_custom_target(qmltypes) endif() # Creates a target for copying resource files into build dir and optionally installing them. # # Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed # into ${DESTINATION}/${path}. # # Resource file names are matched against {*.{qml,js,jpg,png,sci,svg},qmldir}. # # export_qmlfiles(plugin path # [SEARCH_PATH path] # Path to search for resources in (defaults to ${CMAKE_CURRENT_SOURCE_DIR}) # [BINARY_DIR path] # [DESTINATION path] # Will install in ${CMAKE_INSTALL_LIBDIR}/qt5/qml unless overridden by this parameter # [NO_INSTALL] # Do not install this plugin during CMake install phase # [TARGET_PREFIX string] # Will be prefixed to the target name # ) # # Created target: # - ${TARGET_PREFIX}${plugin}-qmlfiles - Copies resources into the binary dir. function(export_qmlfiles PLUGIN PATH) set(single SEARCH_PATH BINARY_DIR DESTINATION TARGET_PREFIX) set(options NO_INSTALL) cmake_parse_arguments(QMLFILES "${options}" "${single}" "" ${ARGN}) if(NOT QMLFILES_DESTINATION) set(QMLFILES_DESTINATION "${CMAKE_INSTALL_LIBDIR}/qt5/qml") endif() if(NOT QMLFILES_SEARCH_PATH) set(QMLFILES_SEARCH_PATH ${CMAKE_CURRENT_SOURCE_DIR}) endif() if(QMLFILES_BINARY_DIR) set(qmlfiles_dir ${QMLFILES_BINARY_DIR}/${PATH}) else() set(qmlfiles_dir ${CMAKE_CURRENT_BINARY_DIR}) endif() file(GLOB QMLFILES ${QMLFILES_SEARCH_PATH}/*.qml ${QMLFILES_SEARCH_PATH}/*.js ${QMLFILES_SEARCH_PATH}/*.jpg ${QMLFILES_SEARCH_PATH}/*.png ${QMLFILES_SEARCH_PATH}/*.sci ${QMLFILES_SEARCH_PATH}/*.svg ${QMLFILES_SEARCH_PATH}/*.qmltypes ${QMLFILES_SEARCH_PATH}/qmldir ) execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${qmlfiles_dir}) # copy the files add_custom_target(${QMLFILES_TARGET_PREFIX}${PLUGIN}-qmlfiles ALL COMMAND cp ${QMLFILES} ${qmlfiles_dir} DEPENDS ${QMLFILES} SOURCES ${QMLFILES} ) if(NOT QMLFILES_NO_INSTALL) # install the qmlfiles file. install(FILES ${QMLFILES} DESTINATION ${QMLFILES_DESTINATION}/${PATH} ) endif() endfunction() # Creates a target for generating the typeinfo file for a QML plugin and/or installs the plugin # targets. # # Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed # into ${DESTINATION}/${path}. If you don't pass BINARY_DIR, it's assumed that current source # path ends with ${path}. # # The generated file will be named after the last segment of the plugin name, e.g. Foo.qmltypes. # # export_qmlplugin(plugin version path # [BINARY_DIR path] # [DESTINATION path] # Will install in ${CMAKE_INSTALL_LIBDIR}/qt5/qml unless overridden by this parameter # [NO_INSTALL] # Do not install this plugin during CMake install phase # [TARGET_PREFIX string] # Will be prefixed to the target name # [ENVIRONMENT string] # Will be added to qmlplugindump's env # [TARGETS target1 [target2 ...]] # Targets to depend on and install (e.g. the plugin shared object) # [NO_TYPES] # Do not create the qmltypes target # ) # # Created target: # - ${TARGET_PREFIX}${plugin}-qmltypes - Generates the qmltypes file in the source dir. # It will be made a dependency of the "qmltypes" target. function(export_qmlplugin PLUGIN VERSION PATH) set(options NO_TYPES NO_INSTALL) set(single BINARY_DIR DESTINATION TARGET_PREFIX ENVIRONMENT) set(multi TARGETS) cmake_parse_arguments(QMLPLUGIN "${options}" "${single}" "${multi}" ${ARGN}) if(NOT QMLPLUGIN_DESTINATION) set(QMLPLUGIN_DESTINATION "${CMAKE_INSTALL_LIBDIR}/qt5/qml") endif() if(QMLPLUGIN_BINARY_DIR) set(qmlplugin_dir ${QMLPLUGIN_BINARY_DIR}/${PATH}) else() # Find import path to point qmlplugindump at string(REGEX REPLACE "/${PATH}$" "" QMLPLUGIN_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") set(qmlplugin_dir ${CMAKE_CURRENT_BINARY_DIR}) endif() if(NOT QMLPLUGIN_NO_TYPES) # Relative path for the module string(REPLACE "${CMAKE_BINARY_DIR}/" "" QMLPLUGIN_MODULE_DIR "${QMLPLUGIN_BINARY_DIR}") # Find the last segment of the plugin name to use as qmltypes basename string(REGEX MATCH "[^.]+$" plugin_suffix ${PLUGIN}) set(target_prefix ${QMLPLUGIN_TARGET_PREFIX}${PLUGIN}) set(qmltypes_path ${CMAKE_CURRENT_SOURCE_DIR}/${plugin_suffix}.qmltypes) add_custom_target(${target_prefix}-qmltypes COMMAND env ${QMLPLUGIN_ENVIRONMENT} $ -notrelocatable ${PLUGIN} ${VERSION} ${QMLPLUGIN_MODULE_DIR} > ${qmltypes_path} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) if(TARGET ${target_prefix}-qmlfiles) add_dependencies(${target_prefix}-qmltypes ${target_prefix}-qmlfiles ${QMLPLUGIN_TARGETS}) endif() add_dependencies(qmltypes ${target_prefix}-qmltypes) endif() set_target_properties(${QMLPLUGIN_TARGETS} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${qmlplugin_dir} LIBRARY_OUTPUT_DIRECTORY ${qmlplugin_dir} RUNTIME_OUTPUT_DIRECTORY ${qmlplugin_dir} ) if(NOT QMLPLUGIN_NO_INSTALL) # Install additional targets install(TARGETS ${QMLPLUGIN_TARGETS} DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH} ) endif() endfunction() function(add_qmlplugin PLUGIN VERSION PATH) export_qmlfiles(${PLUGIN} ${PATH} ${ARGN}) export_qmlplugin(${PLUGIN} ${VERSION} ${PATH} ${ARGN}) endfunction() ./src/GMock/0000755000004100000410000000000013060517015013030 5ustar www-datawww-data./src/GMock/GMockConfig.cmake0000644000004100000410000000745013060517015016166 0ustar www-datawww-data# Copyright (C) 2014 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # Build with system gmock and embedded gtest # # Usage: # # find_package(GMock) # # ... # # target_link_libraries( # my-target # ${GTEST_BOTH_LIBRARIES} # ) # # NOTE: Due to the way this package finder is implemented, do not attempt # to find the GMock package more than once. find_package(Threads) if (EXISTS "/usr/src/googletest") # As of version 1.8.0 set(GMOCK_SOURCE_DIR "/usr/src/googletest/googlemock" CACHE PATH "gmock source directory") set(GMOCK_INCLUDE_DIRS "${GMOCK_SOURCE_DIR}/include" CACHE PATH "gmock source include directory") set(GTEST_INCLUDE_DIRS "/usr/src/googletest/googletest/include" CACHE PATH "gtest source include directory") else() set(GMOCK_SOURCE_DIR "/usr/src/gmock" CACHE PATH "gmock source directory") set(GMOCK_INCLUDE_DIRS "/usr/include" CACHE PATH "gmock source include directory") set(GTEST_INCLUDE_DIRS "/usr/include" CACHE PATH "gtest source include directory") endif() # We add -g so we get debug info for the gtest stack frames with gdb. # The warnings are suppressed so we get a noise-free build for gtest and gmock if the caller # has these warnings enabled. set(findgmock_cxx_flags "${CMAKE_CXX_FLAGS} -g -Wno-old-style-cast -Wno-missing-field-initializers -Wno-ctor-dtor-privacy -Wno-switch-default") set(findgmock_bin_dir "${CMAKE_CURRENT_BINARY_DIR}/gmock") set(findgmock_gtest_lib "${findgmock_bin_dir}/gtest/libgtest.a") set(findgmock_gtest_main_lib "${findgmock_bin_dir}/gtest/libgtest_main.a") set(findgmock_gmock_lib "${findgmock_bin_dir}/libgmock.a") set(findgmock_gmock_main_lib "${findgmock_bin_dir}/libgmock_main.a") include(ExternalProject) ExternalProject_Add(GMock SOURCE_DIR "${GMOCK_SOURCE_DIR}" BINARY_DIR "${findgmock_bin_dir}" BUILD_BYPRODUCTS "${findgmock_gtest_lib}" "${findgmock_gtest_main_lib}" "${findgmock_gmock_lib}" "${findgmock_gmock_main_lib}" INSTALL_COMMAND "" CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${findgmock_cxx_flags}") add_library(gtest INTERFACE) target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIRS}) target_link_libraries(gtest INTERFACE ${findgmock_gtest_lib} ${CMAKE_THREAD_LIBS_INIT}) add_dependencies(gtest GMock) add_library(gtest_main INTERFACE) target_include_directories(gtest_main INTERFACE ${GTEST_INCLUDE_DIRS}) target_link_libraries(gtest_main INTERFACE ${findgmock_gtest_main_lib} gtest) add_library(gmock INTERFACE) target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIRS}) target_link_libraries(gmock INTERFACE ${findgmock_gmock_lib} gtest) add_library(gmock_main INTERFACE) target_include_directories(gmock_main INTERFACE ${GMOCK_INCLUDE_DIRS}) target_link_libraries(gmock_main INTERFACE ${findgmock_gmock_main_lib} gmock) set(GTEST_LIBRARIES gtest) set(GTEST_MAIN_LIBRARIES gtest_main) set(GMOCK_LIBRARIES gmock gmock_main) set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES}) unset(findgmock_cxx_flags) unset(findgmock_bin_dir) unset(findgmock_gtest_lib) unset(findgmock_gtest_main_lib) unset(findgmock_gmock_lib) unset(findgmock_gmock_main_lib) ./src/Intltool/0000755000004100000410000000000013060517015013634 5ustar www-datawww-data./src/Intltool/IntltoolConfig.cmake0000644000004100000410000003050713060517015017575 0ustar www-datawww-data# Copyright (C) 2014 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # This package provides macros that wrap the intltool programs. # # An example of common usage is: # # For a .desktop file: # # intltool_merge_translations( # "foo.desktop.in" # "foo.destkop" # ALL # UTF8 # ) # # For a .gschema.xml file: # # intltool_merge_translations( # "foo.gschema.xml.in" # "foo.gschema.xml" # ALL # UTF8 # STYLE "xml" # NO_TRANSLATIONS # ) # # Inside po/CMakeLists.txt: # # intltool_update_potfile( # ALL # KEYWORDS "_" "_:1,2" "N_" "N_:1,2" # POTFILES_TEMPLATE "POTFILES.in.in" # GETTEXT_PACKAGE ${GETTEXT_PACKAGE} # ) # # NOTE: It is recommended to include N_ in the keywords list, as # xgettext uses this keyword when extracting translations from # ini files. # # or # # intltool_update_potfile( # ALL # UBUNTU_SDK_DEFAULTS # POTFILES_TEMPLATE "POTFILES.in.in" # GETTEXT_PACKAGE ${GETTEXT_PACKAGE} # ) # # then # # intltool_install_translations( # ALL # GETTEXT_PACKAGE ${GETTEXT_PACKAGE} # ) # # NOTE: Either you must include a po/POTFILES.in file or use the # POTFILES_TEMPLATE argument and pass a file such as: # [type: gettext/ini] data/foo.ini.in # @GENERATED_POTFILES@ # # NOTE: It is recommended to add both 'po/Makefile.in.in' and # 'po/POTFILES.in' to your source control system's exclusions # file. find_package(Gettext REQUIRED) find_program(INTLTOOL_UPDATE_EXECUTABLE intltool-update) if(INTLTOOL_UPDATE_EXECUTABLE) execute_process( COMMAND ${INTLTOOL_UPDATE_EXECUTABLE} --version OUTPUT_VARIABLE intltool_update_version ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if (intltool_update_version MATCHES "^intltool-update \\(.*\\) [0-9]") string( REGEX REPLACE "^intltool-update \\([^\\)]*\\) ([0-9\\.]+[^ \n]*).*" "\\1" INTLTOOL_UPDATE_VERSION_STRING "${intltool_update_version}" ) endif() unset(intltool_update_version) endif() find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge) if(INTLTOOL_MERGE_EXECUTABLE) execute_process( COMMAND ${INTLTOOL_MERGE_EXECUTABLE} --version OUTPUT_VARIABLE intltool_merge_version ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if (intltool_update_version MATCHES "^intltool-merge \\(.*\\) [0-9]") string( REGEX REPLACE "^intltool-merge \\([^\\)]*\\) ([0-9\\.]+[^ \n]*).*" "\\1" INTLTOOL_MERGE_VERSION_STRING "${intltool_merge_version}" ) endif() unset(intltool_merge_version) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args( Intltool REQUIRED_VARS INTLTOOL_UPDATE_EXECUTABLE INTLTOOL_MERGE_EXECUTABLE VERSION_VAR INTLTOOL_UPDATE_VERSION_STRING HANDLE_COMPONENTS ) function(_INTLTOOL_JOIN_LIST LISTNAME GLUE OUTPUT) set(_tmp "") set(_first true) foreach(VAL ${${LISTNAME}}) if(_first) set(_tmp "${VAL}") set(_first false) else() set(_tmp "${_tmp}${GLUE}${VAL}") endif() endforeach() set(${OUTPUT} "${_tmp}" PARENT_SCOPE) endfunction() macro(_WRITE_INTLTOOL_MAKEFILE_IN ARG_PO_DIRECTORY ARG_KEYWORDS ARG_COPYRIGHT_HOLDER) set(_KEYWORDS "XGETTEXT_KEYWORDS=--c++") if(NOT "${ARG_COPYRIGHT_HOLDER}" STREQUAL "") set(_KEYWORDS "${_KEYWORDS} --copyright-holder='${ARG_COPYRIGHT_HOLDER}'") endif() foreach(_KEYWORD ${${ARG_KEYWORDS}}) set(_KEYWORDS "${_KEYWORDS} --keyword=${_KEYWORD}") endforeach() file(WRITE "${ARG_PO_DIRECTORY}/Makefile.in.in" "${_KEYWORDS}\n") endmacro() function(_INTLTOOL_EXCLUDE_PATH LISTNAME FILTER OUTPUT) string(LENGTH ${FILTER} _FILTER_LENGTH) foreach(_PATH ${${LISTNAME}}) set(_ABS_PATH "${CMAKE_SOURCE_DIR}/${_PATH}") string(LENGTH "${_ABS_PATH}" _ABS_PATH_LENGTH) if(${_FILTER_LENGTH} GREATER ${_ABS_PATH_LENGTH}) # If the path is too short to match the filter list(APPEND _TMP ${_PATH}) else() # If the path is at least as long as the filter string(SUBSTRING ${_ABS_PATH} 0 ${_FILTER_LENGTH} _PATH_HEAD) if(NOT ${_PATH_HEAD} STREQUAL ${FILTER}) list(APPEND _TMP ${_PATH}) endif() endif() endforeach() set(${OUTPUT} "${_TMP}" PARENT_SCOPE) endfunction() function(_INTLTOOL_LIST_FILTER INPUT OUTPUT) set(_multiValueArgs EXPRESSIONS) cmake_parse_arguments(_ARG "" "" "${_multiValueArgs}" ${ARGN}) if(_ARG_EXPRESSIONS) set(_TMP "") foreach(_ITEM ${${INPUT}}) foreach(_REGEX ${_ARG_EXPRESSIONS}) if("${_ITEM}" MATCHES "${_REGEX}") else() list(APPEND _TMP "${_ITEM}") endif() endforeach() endforeach() set(${OUTPUT} "${_TMP}" PARENT_SCOPE) unset(_TMP) else() set(${OUTPUT} "${${INPUT}}" PARENT_SCOPE) endif() endfunction() function(INTLTOOL_UPDATE_POTFILE) set(_options ALL UBUNTU_SDK_DEFAULTS) set(_oneValueArgs COPYRIGHT_HOLDER GETTEXT_PACKAGE OUTPUT_FILE PO_DIRECTORY POTFILES_TEMPLATE) set(_multiValueArgs KEYWORDS FILE_GLOBS FILTER) cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) set(_POT_FILE "${PROJECT}.pot") set(_GETTEXT_PACKAGE "") if(_ARG_GETTEXT_PACKAGE) set(_POT_FILE "${_ARG_GETTEXT_PACKAGE}.pot") set(_GETTEXT_PACKAGE --gettext-package="${_ARG_GETTEXT_PACKAGE}") endif() set(_OUTPUT_FILE "") if(_ARG_OUTPUT_FILE) set(_POT_FILE "${_ARG_OUTPUT_FILE}") set(_OUTPUT_FILE --output-file="${_ARG_OUTPUT_FILE}") endif() set(_PO_DIRECTORY "${CMAKE_SOURCE_DIR}/po") if(_ARG_PO_DIRECTORY) set(_PO_DIRECTORY "${_ARG_PO_DIRECTORY}") endif() if(_ARG_KEYWORDS) _write_intltool_makefile_in(${_PO_DIRECTORY} _ARG_KEYWORDS "${_ARG_COPYRIGHT_HOLDER}") elseif(_ARG_UBUNTU_SDK_DEFAULTS) set(_UBUNTU_SDK_DEFAULT_KEYWORDS "tr" "tr:1,2" "dtr:2" "dtr:2,3" "N_") _write_intltool_makefile_in(${_PO_DIRECTORY} _UBUNTU_SDK_DEFAULT_KEYWORDS "${_ARG_COPYRIGHT_HOLDER}") endif() set(_FILE_GLOBS ${CMAKE_SOURCE_DIR}/*.cpp ${CMAKE_SOURCE_DIR}/*.cc ${CMAKE_SOURCE_DIR}/*.cxx ${CMAKE_SOURCE_DIR}/*.vala ${CMAKE_SOURCE_DIR}/*.c ${CMAKE_SOURCE_DIR}/*.h ) if(_ARG_UBUNTU_SDK_DEFAULTS) list(APPEND _FILE_GLOBS ${CMAKE_SOURCE_DIR}/*.qml) list(APPEND _FILE_GLOBS ${CMAKE_SOURCE_DIR}/*.js) endif() if(_ARG_FILE_GLOBS) list(APPEND _FILE_GLOBS ${_ARG_FILE_GLOBS}) endif() file( GLOB_RECURSE _SOURCE_FILES RELATIVE ${CMAKE_SOURCE_DIR} ${_FILE_GLOBS} ) # We don't want to include paths from the binary directory _intltool_exclude_path(_SOURCE_FILES ${CMAKE_BINARY_DIR} _FILTERED_SOURCE_FILES_TMP) # Remove any paths from the filter expressions _intltool_list_filter(_FILTERED_SOURCE_FILES_TMP _FILTERED_SOURCE_FILES EXPRESSIONS ${_ARG_FILTER}) # Build the text to substitute into the POTFILES.in _intltool_join_list(_FILTERED_SOURCE_FILES "\n" GENERATED_POTFILES) if(_ARG_POTFILES_TEMPLATE) configure_file( ${_ARG_POTFILES_TEMPLATE} "${_PO_DIRECTORY}/POTFILES.in" ) else() file(WRITE "${_PO_DIRECTORY}/POTFILES.in" "${GENERATED_POTFILES}\n" ) endif() # Read in the POTFILES file( STRINGS "${_PO_DIRECTORY}/POTFILES.in" _POTFILES_LINES ) # Parse the input files from it foreach(_LINE ${_POTFILES_LINES}) # Handle lines with types string(FIND ${_LINE} "]" _POS) if(_POS GREATER 0) math(EXPR _POS "2+${_POS}") string(SUBSTRING ${_LINE} ${_POS} -1 _LINE) endif() list(APPEND _CODE_SOURCES "${CMAKE_SOURCE_DIR}/${_LINE}") endforeach() add_custom_command( OUTPUT "${_PO_DIRECTORY}/${_POT_FILE}" COMMAND "${INTLTOOL_UPDATE_EXECUTABLE}" --pot "${_OUTPUT_FILE}" "${_GETTEXT_PACKAGE}" DEPENDS "${_PO_DIRECTORY}/POTFILES.in" "${_PO_DIRECTORY}/Makefile.in.in" ${_CODE_SOURCES} WORKING_DIRECTORY ${_PO_DIRECTORY} ) if(_ARG_ALL) add_custom_target( "${_POT_FILE}" ALL DEPENDS "${_PO_DIRECTORY}/${_POT_FILE}" ) else() add_custom_target( "${_POT_FILE}" DEPENDS "${_PO_DIRECTORY}/${_POT_FILE}" ) endif() endfunction() function(INTLTOOL_INSTALL_TRANSLATIONS) set(_options ALL) set(_oneValueArgs GETTEXT_PACKAGE) cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "" ${ARGN}) set(_GETTEXT_PACKAGE "${PROJECT}") if(_ARG_GETTEXT_PACKAGE) set(_GETTEXT_PACKAGE "${_ARG_GETTEXT_PACKAGE}") endif() file( GLOB _PO_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po ) foreach(_PO_FILE ${_PO_FILES}) string(REPLACE ".po" "" _LANG ${_PO_FILE}) if(_ARG_ALL) gettext_process_po_files( ${_LANG} ALL PO_FILES ${_PO_FILE} ) else() gettext_process_po_files( ${_LANG} PO_FILES ${_PO_FILE} ) endif() # Must define install ourselves as process_po_files doesn't know # the gettext package, so installs en as en/LC_MESSAGES/en.mo install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_LANG}.gmo DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${_LANG}/LC_MESSAGES/ RENAME ${_GETTEXT_PACKAGE}.mo ) endforeach() endfunction() function(INTLTOOL_MERGE_TRANSLATIONS FILENAME OUTPUT_FILE) # PASS_THROUGH option in intltool-merge is deprecated, so too is it here. # We must keep it around as an option though, to avoid breaking things. set(_options ALL UTF8 PASS_THROUGH NO_TRANSLATIONS) set(_oneValueArgs PO_DIRECTORY STYLE) cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "" ${ARGN}) set(_PO_DIRECTORY "${CMAKE_SOURCE_DIR}/po") if(_ARG_PO_DIRECTORY) set(_PO_DIRECTORY "${_ARG_PO_DIRECTORY}") endif() set(_UTF8 "") if(_ARG_UTF8) set(_UTF8 "--utf8") endif() # Deprecated if(_ARG_PASS_THROUGH) message(DEPRECATION "PASS_THROUGH option is deprecated. Do not use it.") endif() # When --no-translations is used with XML should not get used, # so we default to using it for the arg, to use otherwise. set(_NO_TRANSLATIONS "${_PO_DIRECTORY}") if(_ARG_NO_TRANSLATIONS) set(_NO_TRANSLATIONS "--no-translations") endif() set(_STYLE "--desktop-style") if(_ARG_STYLE) set(_STYLE "--${_ARG_STYLE}-style") endif() file( GLOB_RECURSE _PO_FILES ${_PO_DIRECTORY}/*.po ) get_filename_component(_INPUT_NAME ${FILENAME} NAME) get_filename_component(_OUTPUT_NAME ${OUTPUT_FILE} NAME) set(_ABS_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_NAME}) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_INPUT_NAME}) set(_INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_INPUT_NAME}) else() set(_INPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_INPUT_NAME}) endif() add_custom_command( OUTPUT ${_ABS_OUTPUT_FILE} COMMAND ${INTLTOOL_MERGE_EXECUTABLE} ${_STYLE} --quiet ${_UTF8} ${_NO_TRANSLATIONS} ${_INPUT_FILE} ${_OUTPUT_NAME} DEPENDS ${_INPUT_FILE} ${_PO_FILES} ) if(_ARG_ALL) add_custom_target( ${_OUTPUT_NAME} ALL DEPENDS ${_ABS_OUTPUT_FILE} ) else() add_custom_target( ${_OUTPUT_NAME} DEPENDS ${_ABS_OUTPUT_FILE} ) endif() endfunction() ./src/DoxygenBuilder/0000755000004100000410000000000013060517015014754 5ustar www-datawww-data./src/DoxygenBuilder/DoxygenBuilderConfig.cmake0000644000004100000410000001702613060517015022036 0ustar www-datawww-data# Copyright (C) 2015 Canonical Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License version 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # This package provides macros that wrap the doxygen program. # # Example usage: # # find_package(DoxygenBuilder) # # add_doxygen( # mydoc # INPUT # "${CMAKE_SOURCE_DIR}/src/some_part_of_source_tree" # "${CMAKE_CURRENT_SOURCE_DIR}/pages" # STRIP_FROM_PATH # "${CMAKE_SOURCE_DIR}/src/some_part_of_source_tree" # STRIP_FROM_INC_PATH # "${CMAKE_SOURCE_DIR}/src/some_part_of_source_tree" # EXCLUDE_PATTERNS # */internal/* # EXCLUDE_SYMBOLS # *::internal* # *::Priv # ALL # ) # find_package(Doxygen) if(DOXYGEN_FOUND) find_file(DOXYFILE_IN "Doxyfile.in" PATHS "${CMAKE_CURRENT_LIST_DIR}" NO_DEFAULT_PATH DOC "Path to the doxygen configuration template file") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DOXYFILE_IN DEFAULT_MSG "DOXYFILE_IN") endif() # Build a space-separated string function(_doxygen_to_space_string OUTPUT_NAME INPUT) set(_TMP "") foreach(ITEM ${INPUT}) set(_TMP "${_TMP} ${ITEM}") endforeach() set(${OUTPUT_NAME} "${_TMP}" PARENT_SCOPE) endfunction() # Build a space-separated, quoted string function(_doxygen_to_quoted_string OUTPUT_NAME INPUT) set(_TMP "") foreach(ITEM ${INPUT}) set(_TMP "${_TMP} \"${ITEM}\"") endforeach() set(${OUTPUT_NAME} "${_TMP}" PARENT_SCOPE) endfunction() function(add_doxygen TARGET_NAME) if(DOXYGEN_FOUND AND DOXYFILE_IN_FOUND) set(_options ALL LATEX XML) set(_oneValueArgs OUTPUT_DIRECTORY LATEX_OUTPUT HTML_OUTPUT XML_OUTPUT DOXYFILE_IN IMAGE_PATH EXAMPLE_PATH STRIP_FROM_PATH STRIP_FROM_INC_PATH PROJECT_NAME PROJECT_NUMBER INSTALL) set(_multiValueArgs INPUT FILE_PATTERNS EXCLUDE EXCLUDE_PATTERNS EXCLUDE_SYMBOLS) cmake_parse_arguments(_ARG "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) set(INPUT "\"${CMAKE_CURRENT_SOURCE_DIR}\"") if(_ARG_INPUT) set(INPUT "${_ARG_INPUT}") endif() _doxygen_to_quoted_string(DOXYFILE_INPUT "${INPUT}") set(DOXYFILE_FILE_PATTERNS "") if(_ARG_FILE_PATTERNS) _doxygen_to_space_string(DOXYFILE_FILE_PATTERNS "${_ARG_FILE_PATTERNS}") endif() set(DOXYFILE_EXCLUDE "") if(_ARG_EXCLUDE) _doxygen_to_quoted_string(DOXYFILE_EXCLUDE "${_ARG_EXCLUDE}") endif() set(DOXYFILE_EXCLUDE_PATTERNS "") if(_ARG_EXCLUDE_PATTERNS) _doxygen_to_space_string(DOXYFILE_EXCLUDE_PATTERNS "${_ARG_EXCLUDE_PATTERNS}") endif() set(DOXYFILE_EXCLUDE_SYMBOLS "") if(_ARG_EXCLUDE_SYMBOLS) _doxygen_to_space_string(DOXYFILE_EXCLUDE_SYMBOLS "${_ARG_EXCLUDE_SYMBOLS}") endif() set(DOXYFILE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") if(_ARG_OUTPUT_DIRECTORY) set(DOXYFILE_OUTPUT_DIRECTORY "${_ARG_OUTPUT_DIRECTORY}") endif() set(DOXYFILE_HTML_OUTPUT "html") if(_ARG_HTML_OUTPUT) set(DOXYFILE_HTML_OUTPUT "${_ARG_HTML_OUTPUT}") endif() set(DOXYFILE_LATEX_OUTPUT "latex") if(_ARG_LATEX_OUTPUT) set(DOXYFILE_LATEX_OUTPUT "${_ARG_LATEX_OUTPUT}") endif() set(DOXYFILE_XML_OUTPUT "xml") if(_ARG_XML_OUTPUT) set(DOXYFILE_XML_OUTPUT "${_ARG_XML_OUTPUT}") endif() set(DOXYFILE_EXAMPLE_PATH "") if(_ARG_EXAMPLE_PATH) set(DOXYFILE_EXAMPLE_PATH "${_ARG_EXAMPLE_PATH}") endif() set(DOXYFILE_IMAGE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") if(_ARG_IMAGE_PATH) set(DOXYFILE_IMAGE_PATH "${_ARG_IMAGE_PATH}") endif() set(_DOXYFILE_IN "${DOXYFILE_IN}") if(_ARG_DOXYFILE_IN) set(_DOXYFILE_IN "${_ARG_DOXYFILE_IN}") endif() set(DOXYFILE_STRIP_FROM_PATH "${CMAKE_CURRENT_SOURCE_DIR}") if(_ARG_STRIP_FROM_PATH) set(DOXYFILE_STRIP_FROM_PATH "${_ARG_STRIP_FROM_PATH}") endif() set(DOXYFILE_STRIP_FROM_INC_PATH "${CMAKE_CURRENT_SOURCE_DIR}") if(_ARG_STRIP_FROM_INC_PATH) set(DOXYFILE_STRIP_FROM_INC_PATH "${_ARG_STRIP_FROM_INC_PATH}") endif() set(DOXYFILE_PROJECT_NAME "${PROJECT_NAME}") if(_ARG_PROJECT_NAME) set(DOXYFILE_PROJECT_NAME "${_ARG_PROJECT_NAME}") endif() set(DOXYFILE_PROJECT_NUMBER "") if(_ARG_PROJECT_NUMBER) set(DOXYFILE_PROJECT_NUMBER "${_ARG_PROJECT_NUMBER}") endif() set(DOXYFILE_GENERATE_LATEX "OFF") if(_ARG_LATEX) set(DOXYFILE_GENERATE_LATEX "ON") if(_ARG_INSTALL) install( DIRECTORY "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_LATEX_OUTPUT}" DESTINATION "${_ARG_INSTALL}" ) endif() set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_LATEX_OUTPUT}" ) endif() set(DOXYFILE_GENERATE_XML "NO") if(_ARG_XML) set(DOXYFILE_GENERATE_XML "YES") if(_ARG_INSTALL) install( DIRECTORY "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_XML_OUTPUT}" DESTINATION "${_ARG_INSTALL}" ) endif() set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_XML_OUTPUT}" ) endif() if (_ARG_ALL) set(_ALL "ALL") endif() set(_DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_HTML_OUTPUT}" ) set(DOXYFILE_HAVE_DOT "NO") if(DOXYGEN_DOT_EXECUTABLE) set(DOXYFILE_HAVE_DOT "YES") endif() set(DOXYFILE_USE_PDFLATEX "NO") if(DOXYFILE_LATEX STREQUAL "ON") find_package(LATEX) find_program(DOXYFILE_MAKE make) mark_as_advanced(DOXYFILE_MAKE) if(LATEX_COMPILER AND MAKEINDEX_COMPILER AND DOXYFILE_MAKE) set(DOXYFILE_GENERATE_LATEX "YES") if(PDFLATEX_COMPILER) set(DOXYFILE_USE_PDFLATEX "YES") endif() add_custom_command( TARGET ${TARGET_NAME} POST_BUILD COMMAND "${DOXYFILE_MAKE}" COMMENT "Running LaTeX for Doxygen documentation in ${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_LATEX_OUTPUT}..." WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_OUTPUT}" ) else() set(DOXYFILE_GENERATE_LATEX "NO") endif() else() set(DOXYFILE_GENERATE_LATEX "NO") endif() configure_file("${_DOXYFILE_IN}" "${_DOXYFILE}" @ONLY) set(OUTPUT_FILE "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_HTML_OUTPUT}/index.html") set(DEPENDENCIES "") foreach(_DIRECTORY ${INPUT}) file( GLOB_RECURSE _TMP "${_DIRECTORY}/*" ) list(APPEND DEPENDENCIES ${_TMP}) endforeach() add_custom_command( OUTPUT "${OUTPUT_FILE}" COMMAND "${DOXYGEN_EXECUTABLE}" "${_DOXYFILE}" DEPENDS "${_DOXYFILE}" ${DEPENDENCIES} COMMENT "Writing documentation to ${DOXYFILE_OUTPUT_DIRECTORY}..." WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) add_custom_target( ${TARGET_NAME} ${_ALL} DEPENDS "${OUTPUT_FILE}" ) if(_ARG_INSTALL) install( DIRECTORY "${DOXYFILE_OUTPUT_DIRECTORY}/${DOXYFILE_HTML_OUTPUT}" DESTINATION "${_ARG_INSTALL}" ) endif() endif() endfunction() ./src/DoxygenBuilder/Doxyfile.in0000644000004100000410000031400413060517015017071 0ustar www-datawww-data# Doxyfile 1.8.9.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = "@DOXYFILE_PROJECT_NAME@" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = "@DOXYFILE_PROJECT_NUMBER@" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = "@DOXYFILE_OUTPUT_DIRECTORY@" # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = "@DOXYFILE_STRIP_FROM_PATH@" # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = "@DOXYFILE_STRIP_FROM_INC_PATH@" # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO, these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = YES # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. # Note: If this tag is empty the current directory is searched. INPUT = @DOXYFILE_INPUT@ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank the # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. FILE_PATTERNS = @DOXYFILE_FILE_PATTERNS@ # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = @DOXYFILE_EXCLUDE@ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = @DOXYFILE_EXCLUDE_PATTERNS@ # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = @DOXYFILE_EXCLUDE_SYMBOLS@ # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = "@DOXYFILE_EXAMPLE_PATH@" # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = "@DOXYFILE_IMAGE_PATH@" # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # compiled with the --with-libclang option. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = "@DOXYFILE_HTML_OUTPUT@" # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to NO can help when comparing the output of multiple runs. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /