Salome HOME
Install documentation from SALOME modules
[tools/documentation.git] / cmake / DocumentationMacros.cmake
diff --git a/cmake/DocumentationMacros.cmake b/cmake/DocumentationMacros.cmake
new file mode 100644 (file)
index 0000000..6c8cfb3
--- /dev/null
@@ -0,0 +1,73 @@
+# ==============================================================================
+# SALOME_CREATE_SYMLINK macro creates symbolic link during installation step
+#
+# USAGE: SALOME_CREATE_SYMLINK(src_path link_path)
+#
+# ARGUMENTS:
+#
+# src_path     Source path to the file or directory.
+# link_path    Target symbolic link path.
+#
+# WARNING:     Link is created only on those platforms which support this.
+#
+# ==============================================================================
+
+MACRO(SALOME_CREATE_SYMLINK src_path link_path)
+  INSTALL(CODE "
+          IF(EXISTS \"${src_path}\")
+            MESSAGE(STATUS \"Creating symbolic link \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${link_path}\")
+            GET_FILENAME_COMPONENT(_path \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${link_path}\" DIRECTORY)
+            EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory
+                    \"\${_path}\")
+            EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
+                    \"${src_path}\" \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${link_path}\")
+          ENDIF()
+          ")
+ENDMACRO()
+
+# ==============================================================================
+# SALOME_INSTALL_MODULE_DOC macro creates symbolic link during installation step
+#
+# USAGE: SALOME_INSTALL_MODULE_DOC(src ... DESTINATION dest_dir [INDEX index_dir ...])
+#
+# ARGUMENTS:
+#
+# src          Directory of file to install.
+# dest_dir     Target directory.
+# index_dir    Sub-directory(-ies) to put stub index file.
+#
+# ==============================================================================
+
+MACRO(SALOME_INSTALL_MODULE_DOC)
+  CMAKE_PARSE_ARGUMENTS(_SALOME_INSTALL_MODULE_DOC "" "DESTINATION" "INDEX" ${ARGN})
+  SET(_args ${_SALOME_INSTALL_MODULE_DOC_UNPARSED_ARGUMENTS})
+  IF(SALOME_INSTALL_MODULES_DOC)
+    FOREACH(_arg ${_args})
+      GET_FILENAME_COMPONENT(_arg_name ${_arg} NAME)
+      IF(EXISTS "${_arg}")
+        IF(NOT WIN32 AND SALOME_CREATE_SYMLINKS)
+          SALOME_CREATE_SYMLINK("${_arg}" "${_SALOME_INSTALL_MODULE_DOC_DESTINATION}/${_arg_name}")
+        ELSE()
+          IF(IS_DIRECTORY "${_arg}")
+            INSTALL(DIRECTORY "${_arg}"
+                    DESTINATION "${_SALOME_INSTALL_MODULE_DOC_DESTINATION}")
+          ELSE()
+            INSTALL(FILES "${_arg}"
+                    DESTINATION "${_SALOME_INSTALL_MODULE_DOC_DESTINATION}")
+          ENDIF()
+        ENDIF()
+      ELSE()
+        IF(_SALOME_INSTALL_MODULE_DOC_INDEX)
+          FOREACH(_index ${_SALOME_INSTALL_MODULE_DOC_INDEX})
+            SET(_install_dir "${_SALOME_INSTALL_MODULE_DOC_DESTINATION}/${_arg_name}/${_index}")
+            INSTALL(FILES ${CMAKE_SOURCE_DIR}/cmake/dummy_index.html DESTINATION "${_install_dir}" RENAME index.html)
+          ENDFOREACH()
+        ELSE()
+          SET(_install_dir "${_SALOME_INSTALL_MODULE_DOC_DESTINATION}/${_arg_name}")
+          INSTALL(FILES ${CMAKE_SOURCE_DIR}/cmake/dummy_index.html DESTINATION "${_install_dir}" RENAME index.html)
+        ENDIF()
+      ENDIF()
+    ENDFOREACH()
+  ENDIF()
+  UNSET(_args)
+ENDMACRO()