summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/TDEMacros.cmake48
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
index fa1ad61..5f977ae 100644
--- a/modules/TDEMacros.cmake
+++ b/modules/TDEMacros.cmake
@@ -3241,6 +3241,54 @@ endmacro( )
#################################################
#####
+##### tde_add_project_apidocs
+
+function( tde_add_project_apidocs )
+
+ if( NOT APIDOX_HTML_DIR )
+ set( APIDOX_HTML_DIR "${HTML_INSTALL_DIR}/en/${PROJECT_NAME}/" CACHE PATH "Path for apidocs installation" )
+ endif()
+
+ set(APIDOX_PROJECT_NAME "${PROJECT_NAME}" CACHE STRING "Project name used for apidocs" )
+ set(APIDOX_OUTPUT_DIR "${CMAKE_BINARY_DIR}/apidocs/" CACHE INTERNAL "" )
+
+ add_custom_target( apidox
+ COMMAND ${CMAKE_COMMAND} -E echo Apidox build requested
+ )
+
+ file( GLOB_RECURSE _dox_cmake_files RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/*Doxyfile.cmake )
+ foreach( _dox_cmake_file IN LISTS _dox_cmake_files )
+ get_filename_component( _filename ${_dox_cmake_file} NAME )
+ get_filename_component( _dir ${_dox_cmake_file} PATH )
+ set(APIDOX_SOURCE_DIR ${PROJECT_SOURCE_DIR}/${_dir})
+ string( REGEX REPLACE "\.cmake$" "" _tgtname "${_filename}" )
+ configure_file( ${APIDOX_SOURCE_DIR}/${_filename} ${_tgtname} )
+ endforeach()
+
+ file( GLOB_RECURSE _doxy_files RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/*Doxyfile ${PROJECT_BINARY_DIR}/*Doxyfile )
+ foreach( _doxy_file IN LISTS _doxy_files )
+ get_filename_component( _filename ${_doxy_file} NAME )
+ add_custom_command( TARGET apidox PRE_BUILD
+ COMMAND doxygen ${_filename}
+ DEPENDS ${_doxy_file}
+ COMMENT "Doxyfile: ${_doxyfile}"
+ )
+ endforeach()
+
+ add_custom_target( install-apidox
+ COMMAND ${CMAKE_COMMAND} -E echo Apidox installed in ${APIDOX_HTML_DIR}
+ DEPENDS apidox
+ )
+
+ install(
+ DIRECTORY ${APIDOX_OUTPUT_DIR}
+ DESTINATION ${APIDOX_HTML_DIR}/
+ )
+
+endfunction( )
+
+#################################################
+#####
##### restore CMake policies
cmake_policy( POP )