Import cmaked
[apps/madmutt.git] / cmake / Modules / UseDDoc.cmake
diff --git a/cmake/Modules/UseDDoc.cmake b/cmake/Modules/UseDDoc.cmake
new file mode 100644 (file)
index 0000000..f941660
--- /dev/null
@@ -0,0 +1,61 @@
+# check if the user wants to build ddocs
+#
+#  Copyright (c) 2007 Tim Burrell <tim.burrell@gmail.com>
+#
+# All rights reserved.
+#
+# See Copyright.txt for details.
+#
+
+# Do not build documentation by default
+if (NOT CMAKE_D_BUILD_DOCS)
+       set(CMAKE_D_BUILD_DOCS False CACHE BOOLEAN TRUE FORCE)
+else (NOT CMAKE_D_BUILD_DOCS)
+       # check for specified ddoc files
+       # default to the candydoc usual
+       set(CMAKE_D_BUILD_DOCS True CACHE BOOLEAN FALSE FORCE)  
+       if (NOT CMAKE_D_DDOC_FILES)
+               set(CMAKE_D_DDOC_FILES "documentation/candydoc/candy.ddoc;documentation/candydoc/modules.ddoc" CACHE STRING FALSE FORCE)
+       else (NOT CMAKE_D_DDOC_FILES)
+               set(CMAKE_D_DDOC_FILES "${CMAKE_D_DDOC_FILES}" CACHE STRING FALSE FORCE)
+       endif (NOT CMAKE_D_DDOC_FILES)
+
+       # copy the candydoc files
+       file(GLOB_RECURSE CANDY_DOC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/candydoc/*")
+       foreach(item ${CANDY_DOC_FILES})
+               string(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" item ${item})
+               configure_file(${item} ${CMAKE_CURRENT_BINARY_DIR}/documentation/${item} COPYONLY)
+       endforeach(item)
+       
+       # create modules.ddoc
+       file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/*.d")
+       set(first True)
+       foreach(item ${sources})
+               # first make sure we're not config.d
+               string(REGEX MATCH "config\\.d" ignore ${item})
+               if (NOT ${ignore} MATCHES "")
+                       # fix up the output
+                       string(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" item ${item})
+                       string(REGEX REPLACE "\\.d" ".html" htmlFile ${item})
+                       string(REGEX REPLACE "^.*/" "" htmlFile ${htmlFile})
+                       string(REGEX REPLACE "\\.d" "" item ${item})
+                       string(REGEX REPLACE "/" "." item ${item})
+                       if (first)
+                               set(modules "${item}")
+                               set(first False)
+                               set(CMAKE_D_DDOC_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/documentation/${htmlFile}" CACHE STRING FALSE FORCE)
+                       else (first)
+                               set(modules "${modules};${item}")
+                               set(CMAKE_D_DDOC_CLEAN_FILES "${CMAKE_D_DDOC_CLEAN_FILES}" "${CMAKE_CURRENT_BINARY_DIR}/documentation/${htmlFile}" CACHE STRING FALSE FORCE)
+                       endif (first)
+               endif (NOT ${ignore} MATCHES "")
+       endforeach(item)
+       
+       # create formatted modules string
+       set(modString "MODULES = \n")
+       foreach(item ${modules})
+               set(modString "${modString}\t$(MODULE ${item})\n")
+       endforeach(item)
+       file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/documentation/candydoc/modules.ddoc" ${modString})
+endif (NOT CMAKE_D_BUILD_DOCS)
+