summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMake/Documentation.cmake134
-rw-r--r--CMakeLists.txt1
-rw-r--r--README.cmake1
-rw-r--r--doc/CMakeLists.txt21
-rw-r--r--doc/examples/CMakeLists.txt4
5 files changed, 160 insertions, 1 deletions
diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake
new file mode 100644
index 000000000..98e07176b
--- /dev/null
+++ b/CMake/Documentation.cmake
@@ -0,0 +1,134 @@
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+function(add_docbook target sourcefiles installdest)
+ foreach(file ${sourcefiles})
+ get_filename_component(relfile ${file} NAME)
+ string(REPLACE ".dbk" "" manual ${relfile})
+ get_filename_component(absolute ${file} ABSOLUTE)
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html/
+ COMMAND xsltproc --nonet --novalid --xinclude
+ --stringparam base.dir ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html/
+ --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/
+ --path ${CMAKE_CURRENT_SOURCE_DIR}/
+ ${CMAKE_CURRENT_SOURCE_DIR}/docbook-html-style.xsl
+ ${absolute}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS ${file}
+ )
+ set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html)
+ if (NOT ${installdest} EQUAL "" )
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html
+ DESTINATION ${installdest})
+ endif()
+ endforeach(file ${sourcefiles})
+
+ add_custom_target(${target} ALL DEPENDS ${commands})
+endfunction()
+
+
+function(add_po4a type master po target deps)
+ add_custom_command(OUTPUT ${target}
+ COMMAND po4a-translate --keep 0 -f ${type} -m ${master}
+ -p ${po} -l ${target}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS ${deps} ${master} ${po})
+endfunction()
+
+
+# Macro for XML man pages.
+function(add_xml_manpages target manpages translations entities)
+ foreach(manpage ${manpages})
+ string(LENGTH ${manpage} manpage_length)
+ math(EXPR manpage_length ${manpage_length}-1)
+ string(SUBSTRING ${manpage} ${manpage_length} 1 section)
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manpage}
+ COMMAND xsltproc --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/
+ --path ${CMAKE_CURRENT_SOURCE_DIR}/
+ ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl
+ ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl
+ )
+
+
+ set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manpage})
+
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${manpage}
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/man${section})
+
+ # Add the translations for the manpage.
+ foreach(translation ${translations})
+ set(entities)
+ # transdir = shortcut to the output directory for translations.
+ set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation})
+
+ add_po4a(docbook ${manpage}.xml po/${translation}.po
+ ${transdir}/${manpage}.xml "${ent_cmds}")
+
+
+ add_custom_command(OUTPUT ${transdir}/${manpage}
+ COMMAND xsltproc --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/
+ --path ${CMAKE_CURRENT_SOURCE_DIR}/
+ --stringparam l10n.gentext.default.language ${translation}
+ ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl
+ ${transdir}/${manpage}.xml
+ WORKING_DIRECTORY ${transdir}
+ DEPENDS ${transdir}/${manpage}.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl)
+
+ set(nls-cmd ${nls-cmd} ${transdir}/${manpage})
+ install(FILES ${transdir}/${manpage}
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/${translation}/man${section})
+
+ endforeach(translation ${translations})
+ endforeach(manpage ${manpages})
+
+ add_custom_target(${target} ALL DEPENDS ${commands})
+ # Sort the list of the translations.
+ list(SORT nls-cmd)
+ add_custom_target(nls-${target} ALL DEPENDS ${nls-cmd})
+endfunction()
+
+
+function(add_manpages target manpages translations)
+ foreach(man ${manpages})
+ string(LENGTH ${man} manpage_length)
+ math(EXPR manpage_length ${manpage_length}-1)
+ string(SUBSTRING ${man} ${manpage_length} 1 section)
+ install(FILES ${man} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${section})
+
+ if (USE_NLS)
+ foreach(translation ${translations})
+ set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation})
+ add_po4a(man ${man} po/${translation}.po ${transdir}/${man} "")
+ install(FILES ${transdir}/${man}
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/${translation}/man${section})
+ set(files ${files} ${transdir}/${man})
+ endforeach(translation ${translations})
+ endif()
+ endforeach(man ${manpages})
+ add_custom_target(${target} ALL DEPENDS ${files})
+endfunction()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cba893227..defb4f111 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,6 +128,7 @@ add_subdirectory(apt-pkg)
add_subdirectory(apt-private)
add_subdirectory(apt-inst)
add_subdirectory(cmdline)
+add_subdirectory(doc)
add_subdirectory(dselect)
add_subdirectory(ftparchive)
add_subdirectory(methods)
diff --git a/README.cmake b/README.cmake
index d94a46f12..a993b2589 100644
--- a/README.cmake
+++ b/README.cmake
@@ -31,7 +31,6 @@ TODO
The following features have not been implemented yet:
- - documentation
- Translated docbook guides
- dselect translations
- unit tests
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 000000000..bbf5fb046
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,21 @@
+include(Documentation)
+
+file(GLOB_RECURSE debiandoc-apt guide*.dbk offline*.dbk)
+file(GLOB_RECURSE debiandoc-libapt cache*.dbk design*.dbk dpkg-tech*.dbk
+ files*.dbk method*.dbk)
+
+
+set(manpages apt.8 apt-cache.8 apt-get.8 apt-cdrom.8 apt.conf.5 sources.list.5
+ apt-config.8 apt_preferences.5 apt-sortpkgs.1 apt-ftparchive.1
+ apt-extracttemplates.1 apt-key.8 apt-secure.8 apt-mark.8)
+
+if (WITH_DOC)
+add_docbook(debiandoc-apt "${debiandoc-apt}" share/doc/apt-doc)
+add_docbook(debiandoc-libapt "${debiandoc-libapt}" share/doc/libapt-pkg-doc)
+endif()
+
+# Build the manpages, and add translations (ja only for now, others broken)
+add_xml_manpages(doc-man "${manpages}" "de;es;fr;it;ja;nl;pl;pt_BR;pt" "apt.ent;apt-verbatim.ent")
+
+
+add_subdirectory(examples)
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
new file mode 100644
index 000000000..1998867db
--- /dev/null
+++ b/doc/examples/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES apt.conf apt-https-method-example.conf configure-index preferences
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+install(FILES apt-ftparchive.conf ftp-archive.conf
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples)