813d030 Add module to get information about a git repo b2070d7 Fix installing docs optionally, even on old cmake versions e8cbbf5 Hide the module variable if we find it manually c1ad55e Fix opencv finder for old libraries 9ca6a00 Make the opencv module handle finding the config file, if it exists. beabdbd Merge commit 'aca0ca0aea326a4b8c10f6638024a6e8c0279d02' e36bb5b Merge branch 'master' of git@github.com:rpavlik/wiimote-head-tracker-gui.git b75b7df Improve wiiuse locator 92f1870 Remove all old build systems ee0ce40 Add Windows HID library finder b8878cb Update wiiuse finder to locate DLL from cmake-based install 5b7d5d9 Add a Bluez find module ee17e2a Update cmake modules 30e28b2 Update cmake files dc48ba7 Fix windows build 1958481 Fix RPATH handling on Linux 3fe03cd Initial commit git-subtree-dir: cmake git-subtree-split: 813d0301a4ed5b53d8187608c2986904ce99ab4e
312 lines
7.5 KiB
CMake
312 lines
7.5 KiB
CMake
# - Run doxygen on source files as a custom target
|
|
#
|
|
# include(DoxygenTargets)
|
|
# add_doxygen(<doxyfile> [OUTPUT_DIRECTORY <outputdir>]
|
|
# [INSTALL_DESTINATION <installdir>
|
|
# [INSTALL_COMPONENT <installcomponent>]
|
|
# [INSTALL_PDF_NAME <installpdfname>] ]
|
|
# [DOC_TARGET <targetname>]
|
|
# [PROJECT_NUMBER <versionnumber>]
|
|
# [NO_WARNINGS]
|
|
# [NO_PDF])
|
|
#
|
|
# Requires these CMake modules:
|
|
# FindDoxygen
|
|
#
|
|
# Requires CMake 2.6 or newer (uses the 'function' command)
|
|
#
|
|
# Original Author:
|
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
# http://academic.cleardefinition.com
|
|
# Iowa State University HCI Graduate Program/VRAC
|
|
#
|
|
# Copyright Iowa State University 2009-2010
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
if(__add_doxygen)
|
|
return()
|
|
endif()
|
|
set(__add_doxygen YES)
|
|
|
|
# We must run the following at "include" time, not at function call time,
|
|
# to find the path to this module rather than the path to a calling list file
|
|
get_filename_component(_doxygenmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
|
|
|
|
if(APPLE)
|
|
list(APPEND CMAKE_PREFIX_PATH "/usr/texbin")
|
|
endif()
|
|
|
|
if(NOT DOXYGEN_FOUND)
|
|
find_package(Doxygen QUIET)
|
|
endif()
|
|
|
|
set(DOXYGEN_LATEX "NO")
|
|
set(DOXYGEN_PDFLATEX "NO")
|
|
set(DOXYGEN_DOT "NO")
|
|
|
|
if(DOXYGEN_DOT_EXECUTABLE)
|
|
set(DOXYGEN_DOT "YES")
|
|
endif()
|
|
|
|
find_package(LATEX QUIET)
|
|
if(LATEX_COMPILER AND MAKEINDEX_COMPILER)
|
|
set(DOXYGEN_LATEX "YES")
|
|
endif()
|
|
|
|
if(PDFLATEX_COMPILER)
|
|
set(DOXYGEN_PDFLATEX "YES")
|
|
endif()
|
|
|
|
# An optional single-file install that supports cmake older than 2.8.0
|
|
# For internal use
|
|
function(_dt_install_file target filename dest rename)
|
|
if(CMAKE_VER VERSION_LESS 2.8.0)
|
|
set(INSTALL_CODE "
|
|
if(EXISTS \"${filename}\")
|
|
message(STATUS \"Found: ${filename}\")
|
|
file(INSTALL
|
|
DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\"
|
|
TYPE FILE
|
|
RENAME \"${rename}\"
|
|
FILES \"${filename}\")
|
|
else()
|
|
message(STATUS \"Skipping (build '${target}' to create): ${filename}\")
|
|
endif()
|
|
")
|
|
if(NOT ARGN STREQUAL "")
|
|
set(INSTALL_COMPONENT "${ARGN}")
|
|
set(INSTALL_CODE "
|
|
if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\")
|
|
${INSTALL_CODE}
|
|
endif()
|
|
")
|
|
endif()
|
|
install(CODE "${INSTALL_CODE}")
|
|
else()
|
|
set(COMPONENT_ARGS)
|
|
if(NOT ARGN STREQUAL "")
|
|
set(COMPONENT_ARGS COMPONENT "${ARGN}")
|
|
endif()
|
|
install(FILES
|
|
"${filename}"
|
|
DESTINATION
|
|
"${dest}"
|
|
RENAME "${rename}"
|
|
${COMPONENT_ARGS}
|
|
OPTIONAL)
|
|
endif()
|
|
|
|
endfunction()
|
|
|
|
# An optional single-directory install that supports cmake older than 2.8.0
|
|
# For internal use
|
|
function(_dt_install_dir target dir dest)
|
|
if(CMAKE_VER VERSION_LESS 2.8.0)
|
|
set(INSTALL_CODE "
|
|
if(EXISTS \"${dir}\")
|
|
message(STATUS \"Found: ${dir}\")
|
|
file(INSTALL
|
|
DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\"
|
|
TYPE DIRECTORY
|
|
FILES \"${dir}\")
|
|
else()
|
|
message(STATUS \"Skipping (build '${target}' to create): ${dir}\")
|
|
endif()
|
|
")
|
|
if(NOT ARGN STREQUAL "")
|
|
set(INSTALL_COMPONENT "${ARGN}")
|
|
set(INSTALL_CODE "
|
|
|
|
if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\")
|
|
${INSTALL_CODE}
|
|
endif()
|
|
")
|
|
endif()
|
|
install(CODE "${INSTALL_CODE}")
|
|
else()
|
|
set(COMPONENT_ARGS)
|
|
if(NOT ARGN STREQUAL "")
|
|
set(COMPONENT_ARGS COMPONENT "${ARGN}")
|
|
endif()
|
|
install(DIRECTORY
|
|
"${dir}"
|
|
DESTINATION
|
|
"${dest}"
|
|
${COMPONENT_ARGS}
|
|
OPTIONAL)
|
|
endif()
|
|
|
|
endfunction()
|
|
|
|
function(add_doxygen _doxyfile)
|
|
# parse arguments
|
|
set(WARNINGS YES)
|
|
set(_nowhere)
|
|
set(_curdest _nowhere)
|
|
set(_val_args
|
|
OUTPUT_DIRECTORY
|
|
DOC_TARGET
|
|
INSTALL_DESTINATION
|
|
INSTALL_COMPONENT
|
|
INSTALL_PDF_NAME
|
|
PROJECT_NUMBER)
|
|
set(_bool_args
|
|
NO_WARNINGS
|
|
NO_PDF)
|
|
foreach(_arg ${_val_args} ${_bool_args})
|
|
set(${_arg})
|
|
endforeach()
|
|
foreach(_element ${ARGN})
|
|
list(FIND _val_args "${_element}" _val_arg_find)
|
|
list(FIND _bool_args "${_element}" _bool_arg_find)
|
|
if("${_val_arg_find}" GREATER "-1")
|
|
set(_curdest "${_element}")
|
|
elseif("${_bool_arg_find}" GREATER "-1")
|
|
set("${_element}" ON)
|
|
set(_curdest _nowhere)
|
|
else()
|
|
list(APPEND ${_curdest} "${_element}")
|
|
endif()
|
|
endforeach()
|
|
|
|
if(_nowhere)
|
|
message(FATAL_ERROR "Syntax error in use of add_doxygen!")
|
|
endif()
|
|
|
|
if(NO_WARNINGS)
|
|
set(WARNINGS NO)
|
|
endif()
|
|
|
|
if(NOT DOC_TARGET)
|
|
set(DOC_TARGET doc)
|
|
endif()
|
|
|
|
if(NOT OUTPUT_DIRECTORY)
|
|
set(OUTPUT_DIRECTORY "docs-generated")
|
|
endif()
|
|
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}")
|
|
|
|
if(NOT INSTALL_PDF_NAME)
|
|
set(INSTALL_PDF_NAME "docs-generated.pdf")
|
|
endif()
|
|
|
|
if(NOT PROJECT_NUMBER)
|
|
set(PROJECT_NUMBER "${CPACK_PACKAGE_VERSION}")
|
|
endif()
|
|
|
|
if(DOXYGEN_FOUND)
|
|
if(NOT TARGET ${DOC_TARGET})
|
|
|
|
if(NOT IN_DASHBOARD_SCRIPT)
|
|
add_custom_target(${DOC_TARGET})
|
|
set_target_properties(${DOC_TARGET}
|
|
PROPERTIES
|
|
EXCLUDE_FROM_ALL
|
|
TRUE)
|
|
set_target_properties(${DOC_TARGET}
|
|
PROPERTIES
|
|
EXCLUDE_FROM_DEFAULT_BUILD
|
|
TRUE)
|
|
else()
|
|
add_custom_target(${DOC_TARGET} ALL)
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT IS_ABSOLUTE "${OUTPUT_DIRECTORY}")
|
|
get_filename_component(OUTPUT_DIRECTORY
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}"
|
|
ABSOLUTE)
|
|
endif()
|
|
|
|
set_property(DIRECTORY
|
|
APPEND
|
|
PROPERTY
|
|
ADDITIONAL_MAKE_CLEAN_FILES
|
|
"${OUTPUT_DIRECTORY}/html"
|
|
"${OUTPUT_DIRECTORY}/latex")
|
|
|
|
get_filename_component(_doxyfileabs "${_doxyfile}" ABSOLUTE)
|
|
get_filename_component(INCLUDE_FILE "${_doxyfileabs}" NAME)
|
|
get_filename_component(INCLUDE_PATH "${_doxyfileabs}" PATH)
|
|
|
|
# Doesn't currently work on Windows, so don't bother
|
|
if(DOXYGEN_LATEX AND NOT NO_PDF AND NOT WIN32)
|
|
set(MAKE_PDF YES)
|
|
set(GENERATE_LATEX YES)
|
|
else()
|
|
set(MAKE_PDF NO)
|
|
set(GENERATE_LATEX NO)
|
|
endif()
|
|
|
|
if(DOXYGEN_PDFLATEX AND MAKE_PDF)
|
|
set(USE_PDFLATEX YES)
|
|
else()
|
|
set(USE_PDFLATEX NO)
|
|
endif()
|
|
|
|
if(DOXYGEN_DOT)
|
|
set(HAVE_DOT YES)
|
|
set(DOT_PATH ${DOXYGEN_DOT_PATH})
|
|
else()
|
|
set(HAVE_DOT NO)
|
|
set(DOT_PATH)
|
|
endif()
|
|
|
|
# See http://www.cmake.org/pipermail/cmake/2006-August/010786.html
|
|
# for info on this variable
|
|
if("${CMAKE_BUILD_TOOL}" MATCHES "(msdev|devenv)")
|
|
set(WARN_FORMAT "\"$file($line) : $text \"")
|
|
else()
|
|
set(WARN_FORMAT "\"$file:$line: $text \"")
|
|
endif()
|
|
|
|
configure_file("${_doxygenmoddir}/DoxygenTargets.doxyfile.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional"
|
|
@ONLY)
|
|
|
|
add_custom_command(TARGET
|
|
${DOC_TARGET}
|
|
COMMAND
|
|
${DOXYGEN_EXECUTABLE}
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional"
|
|
WORKING_DIRECTORY
|
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
|
#MAIN_DEPENDENCY ${DOC_TARGET}
|
|
COMMENT
|
|
"Running Doxygen with configuration ${_doxyfile}..."
|
|
VERBATIM)
|
|
|
|
if(MAKE_PDF)
|
|
add_custom_command(TARGET
|
|
${DOC_TARGET}
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_MAKE_PROGRAM}
|
|
WORKING_DIRECTORY
|
|
"${OUTPUT_DIRECTORY}/latex"
|
|
COMMENT
|
|
"Generating PDF using PDFLaTeX..."
|
|
VERBATIM)
|
|
endif()
|
|
|
|
if(INSTALL_DESTINATION)
|
|
if(INSTALL_COMPONENT)
|
|
_dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}" "${INSTALL_COMPONENT}")
|
|
if(MAKE_PDF)
|
|
_dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}" "${INSTALL_COMPONENT}")
|
|
endif()
|
|
|
|
else()
|
|
_dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}")
|
|
if(MAKE_PDF)
|
|
_dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
endif()
|
|
endfunction()
|