aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAvatar Saleem Abdulrasool <compnerd@compnerd.org> 2016-07-19 22:50:04 -0700
committerAvatar Saleem Abdulrasool <compnerd@compnerd.org> 2016-11-30 08:25:19 -0800
commita8c9e5d64d9a5a0382fccaa98220d22cbaf9b55f (patch)
treecfded8a49cfc5b7e52ab2615d24a74c5fa7b479e /doc
parent9cb3984eb0e0829d4f05b6116f6ae572bc44d21b (diff)
downloadpaludis-a8c9e5d64d9a5a0382fccaa98220d22cbaf9b55f.tar.gz
paludis-a8c9e5d64d9a5a0382fccaa98220d22cbaf9b55f.tar.xz
build: introduce cmake based build system
Diffstat (limited to 'doc')
-rw-r--r--doc/CMakeLists.txt151
-rw-r--r--doc/api/CMakeLists.txt21
-rw-r--r--doc/api/cplusplus/CMakeLists.txt38
-rw-r--r--doc/api/cplusplus/examples/CMakeLists.txt46
-rw-r--r--doc/api/python/CMakeLists.txt38
-rw-r--r--doc/api/ruby/CMakeLists.txt36
-rw-r--r--doc/clients/CMakeLists.txt133
-rw-r--r--doc/configuration/CMakeLists.txt130
-rw-r--r--doc/configuration/repositories/CMakeLists.txt47
-rw-r--r--doc/faq/CMakeLists.txt44
-rw-r--r--doc/overview/CMakeLists.txt32
11 files changed, 716 insertions, 0 deletions
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 000000000..1d794d325
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,151 @@
+
+include(CMakeParseArguments)
+
+function(paludis_cat destination)
+ set(options)
+ set(single_value_args)
+ set(multiple_value_args DEPENDS)
+
+ cmake_parse_arguments(PC "${options}" "${single_value_args}" "${multiple_value_args}" ${ARGN})
+
+ add_custom_command(OUTPUT
+ "${destination}"
+ COMMAND
+ "${CAT_EXECUTABLE}" ${PC_UNPARSED_ARGUMENTS} > ${destination}
+ DEPENDS
+ ${PC_UNPARSED_ARGUMENTS}
+ ${PC_DEPENDS})
+endfunction()
+
+function(paludis_sed)
+ set(options)
+ set(single_value_args INPUT OUTPUT)
+ set(multiple_value_args DEPENDS EXPRESSIONS)
+
+ cmake_parse_arguments(PS "${options}" "${single_value_args}" "${multiple_value_args}" ${ARGN})
+
+ set(sed_command ${SED_EXECUTABLE})
+ foreach(expression ${PS_EXPRESSIONS})
+ list(APPEND sed_command -e;"${expression}")
+ endforeach()
+
+ add_custom_command(OUTPUT
+ "${PS_OUTPUT}"
+ COMMAND
+ ${sed_command} < "${PS_INPUT}" > "${PS_OUTPUT}"
+ DEPENDS
+ ${PS_INPUT}
+ ${PS_DEPENDS})
+endfunction()
+
+function(paludis_generate_toplinks relative)
+ paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/${relative}/toplinks.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/toplinks.html.part"
+ EXPRESSIONS
+ "s,###TOPURI###,${relative}/,g")
+endfunction()
+function(paludis_generate_header relative)
+ paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/${relative}/header.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/header.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/toplinks.html.part"
+ EXPRESSIONS
+ "s,###TOPURI###,${relative}/,g"
+ "/###TOPLINKS###/r ${CMAKE_CURRENT_SOURCE_DIR}/toplinks.html.part"
+ "s,###TOPLINKS###,,g")
+endfunction()
+function(paludis_generate_footer relative)
+ paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/${relative}/footer.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/footer.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/toplinks.html.part"
+ EXPRESSIONS
+ "s,###TOPURI###,${relative}/,g")
+endfunction()
+function(paludis_generate_page page location)
+ paludis_cat("${CMAKE_CURRENT_BINARY_DIR}/${page}.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/header.html.part"
+ "${location}/${page}.html.part"
+ "${CMAKE_CURRENT_BINARY_DIR}/footer.html.part")
+endfunction()
+
+paludis_generate_toplinks(".")
+paludis_generate_header(".")
+paludis_generate_footer(".")
+
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/index.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html.part"
+ EXPRESSIONS
+ "s,###PALUDIS_VERSION###,${PROJECT_VERSION},g")
+paludis_generate_page(index "${CMAKE_CURRENT_BINARY_DIR}")
+paludis_sed(INPUT
+ "${PROJECT_SOURCE_DIR}/NEWS"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/news.subst"
+ EXPRESSIONS
+ "s,&,\&amp\\\\\\;,g"
+ "s,<,\&lt\\\\\\;,g"
+ "s,>,\&gt\\\\\\;,g")
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/news.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/news.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/news.subst"
+ EXPRESSIONS
+ "/###NEWS###/r ${CMAKE_CURRENT_BINARY_DIR}/news.subst"
+ "s,###NEWS###,,")
+paludis_generate_page(news "${CMAKE_CURRENT_BINARY_DIR}")
+execute_process(COMMAND
+ "${GIT_EXECUTABLE}" --git-dir="${PROJECT_SOURCE_DIR}/.git" log
+ COMMAND
+ "${SED_EXECUTABLE}" -e "'s,&,\&amp;,g'"
+ -e "'s,<,\&lt;,g'"
+ -e "'s,>,\&gt;,g'"
+ -e "'s,\\([[:blank:][:punct:]]\\)\\?\\([0-9a-f]\\{40\\}\\)\\([[:blank:][:punct:]]\)\\?,\\1<a href=\"http://git.exherbo.org/paludis/paludis.git/commit/?id=\\2\">\\2</a>,g'"
+ -e "'s,ticket:\\([0-9]\\+\\),<a href=\"http://paludis.exherbo.org/trac/ticket/\\1\">ticket:\\1</a>,g'"
+ OUTPUT_FILE
+ "${CMAKE_CURRENT_BINARY_DIR}/changelog.subst"
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/changelog.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/changelog.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/changelog.subst"
+ EXPRESSIONS
+ "/###CHANGELOG###/r ${CMAKE_CURRENT_BINARY_DIR}/changelog.subst"
+ "s,###CHANGELOG###,,")
+paludis_generate_page(changelog "${CMAKE_CURRENT_BINARY_DIR}")
+
+add_custom_target(html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/news.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/changelog.html")
+
+add_subdirectory(api)
+add_subdirectory(clients)
+add_subdirectory(configuration)
+add_subdirectory(faq)
+add_subdirectory(overview)
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/news.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/changelog.html"
+ "${CMAKE_CURRENT_SOURCE_DIR}/paludis.css"
+ "${CMAKE_CURRENT_SOURCE_DIR}/paludis_270.png"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}")
+
diff --git a/doc/api/CMakeLists.txt b/doc/api/CMakeLists.txt
new file mode 100644
index 000000000..56486ca21
--- /dev/null
+++ b/doc/api/CMakeLists.txt
@@ -0,0 +1,21 @@
+
+add_subdirectory(cplusplus)
+add_subdirectory(python)
+add_subdirectory(ruby)
+
+paludis_generate_toplinks("..")
+paludis_generate_header("..")
+paludis_generate_footer("..")
+
+paludis_generate_page(index "${CMAKE_CURRENT_SOURCE_DIR}")
+
+add_custom_target(api-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/api")
+
diff --git a/doc/api/cplusplus/CMakeLists.txt b/doc/api/cplusplus/CMakeLists.txt
new file mode 100644
index 000000000..c3df73e28
--- /dev/null
+++ b/doc/api/cplusplus/CMakeLists.txt
@@ -0,0 +1,38 @@
+
+add_subdirectory(examples)
+
+set(DOXYGEN_TAG_FILE)
+if(ENABLE_DOXYGEN_TAGS)
+ set(DOXYGEN_TAG_FILE "${CMAKE_CURRENT_BINARY_DIR}/libstdc++.tag")
+ file(DOWNLOAD
+ "http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/libstdc++.tag"
+ "${DOXYGEN_TAG_FILE}")
+endif()
+
+if(ENABLE_DOXYGEN)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doxygen.conf.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf"
+ @ONLY)
+
+ add_custom_command(COMMAND
+ "${DOXYGEN_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf"
+ "${CMAKE_CURRENT_SOURCE_DIR}/groups.doxygen"
+ "${CMAKE_CURRENT_SOURCE_DIR}/main_page.doxygen"
+ "${CMAKE_CURRENT_SOURCE_DIR}/namespaces.doxygen"
+ "${CMAKE_CURRENT_SOURCE_DIR}/references.doxygen"
+ "${DOXYGEN_TAG_FILE}"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/cplusplus")
+ add_custom_target(c++-api-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/cplusplus")
+
+ install(DIRECTORY
+ "${CMAKE_CURRENT_BINARY_DIR}/cplusplus"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/api")
+endif()
+
diff --git a/doc/api/cplusplus/examples/CMakeLists.txt b/doc/api/cplusplus/examples/CMakeLists.txt
new file mode 100644
index 000000000..11bbb349e
--- /dev/null
+++ b/doc/api/cplusplus/examples/CMakeLists.txt
@@ -0,0 +1,46 @@
+
+# TODO(compnerd) populate PROJECT_VERSION_TWEAK and PALUDIS_GIT_HEAD
+add_definitions(-DPALUDIS_PACKAGE="${PROJECT_NAME}"
+ -DPALUDIS_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
+ -DPALUDIS_VERSION_MINOR=${PROJECT_VERSION_MINOR}
+ -DPALUDIS_VERSION_MICRO=${PROJECT_VERSION_PATCH}
+ -DPALUDIS_VERSION_SUFFIX=""
+ -DPALUDIS_GIT_HEAD="")
+
+paludis_add_library(libpaludisexamples
+ STATIC_LIBRARY
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_command_line.cc")
+target_link_libraries(libpaludisexamples
+ INTERFACE
+ libpaludisargs)
+
+function(add_example example)
+ add_executable(example_${example}
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_${example}.cc")
+ target_link_libraries(example_${example}
+ PRIVATE
+ libpaludisexamples
+ libpaludis
+ libpaludisutil)
+endfunction()
+
+foreach(example
+ about
+ action
+ contents
+ dep_label
+ dep_spec
+ dep_spec_flattener
+ environment
+ package_id
+ mask
+ metadata_key
+ repository
+ match_package
+ selection
+ version_operator
+ version_spec
+ name)
+ add_example(${example})
+endforeach()
+
diff --git a/doc/api/python/CMakeLists.txt b/doc/api/python/CMakeLists.txt
new file mode 100644
index 000000000..ea127ff4b
--- /dev/null
+++ b/doc/api/python/CMakeLists.txt
@@ -0,0 +1,38 @@
+
+if(ENABLE_PYTHON_DOCS)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/conf.py"
+ @ONLY)
+
+ set(PYTHON_EXAMPLES
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_about.py"
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_command_line.py"
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_version_spec.py")
+
+ set(RST_DOCS
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_about.rst"
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_command_line.rst"
+ "${CMAKE_CURRENT_SOURCE_DIR}/example_version_spec.rst"
+ "${CMAKE_CURRENT_SOURCE_DIR}/index.rst"
+ "${CMAKE_CURRENT_SOURCE_DIR}/paludis.rst")
+
+ add_custom_command(COMMAND
+ env PYTHONPATH="${CMAKE_BINARY_DIR}/python" "${SPHINX_EXECUTABLE}" -c "${CMAKE_CURRENT_BINARY_DIR}" -b html -d "${CMAKE_CURRENT_BINARY_DIR}/doctrees" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/python"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/python"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/conf.py"
+ paludis
+ ${PYTHON_EXAMPLES}
+ ${RST_DOCS})
+ add_custom_target(python-api-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/python")
+
+ install(DIRECTORY
+ "${CMAKE_CURRENT_BINARY_DIR}/python"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/api")
+endif()
+
diff --git a/doc/api/ruby/CMakeLists.txt b/doc/api/ruby/CMakeLists.txt
new file mode 100644
index 000000000..0d06a7a70
--- /dev/null
+++ b/doc/api/ruby/CMakeLists.txt
@@ -0,0 +1,36 @@
+
+if(ENABLE_RUBY_DOCS)
+ set(RUBY_EXAMPLES
+ example_about.rb
+ example_action.rb
+ example_command_line.rb
+ example_contents.rb
+ example_dep_tree.rb
+ example_environment.rb
+ example_package_id.rb
+ example_mask.rb
+ example_match_package.rb
+ example_repository.rb
+ example_selection.rb
+ example_version_operator.rb
+ example_version_spec.rb)
+
+ add_custom_command(COMMAND
+ env TOP_SRCDIR="${CMAKE_SOURCE_DIR}" "${RUBY_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/create_ruby_doc.rb" -t "Paludis Ruby API" -m Paludis --op "${CMAKE_CURRENT_BINARY_DIR}/ruby" "${CMAKE_SOURCE_DIR}/ruby/*.cc"
+ COMMAND
+ "${RUBY_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/create_ruby_examples.rb" "${CMAKE_CURRENT_SOURCE_DIR}" ${RUBY_EXAMPLES}
+ COMMAND
+ "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/ruby_syntax.css" "${CMAKE_CURRENT_BINARY_DIR}/ruby"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/ruby")
+ add_custom_target(ruby-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/ruby")
+
+ install(DIRECTORY
+ "${CMAKE_CURRENT_BINARY_DIR}/ruby"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/api")
+endif()
+
diff --git a/doc/clients/CMakeLists.txt b/doc/clients/CMakeLists.txt
new file mode 100644
index 000000000..29cf93874
--- /dev/null
+++ b/doc/clients/CMakeLists.txt
@@ -0,0 +1,133 @@
+
+paludis_generate_toplinks("..")
+paludis_generate_header("..")
+paludis_generate_footer("..")
+
+if(cave IN_LIST PALUDIS_CLIENTS)
+ set(ENABLE_CAVE_CLIENT FALSE)
+else()
+ set(ENABLE_CAVE_CLIENT TRUE)
+endif()
+
+function(paludis_generate_cave_command_html_doc subcommand)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cave-${subcommand}.html.part"
+ "<h1>${subcommand}</h1>\n")
+ if(NOT ENABLE_CAVE_CLIENT)
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cave-${subcommand}.html.part"
+ "<p>Sorry, documentation was generated without support for the cave client.</p>\n")
+ endif()
+ paludis_cat("${CMAKE_CURRENT_BINARY_DIR}/cave-${subcommand}.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/header.html.part"
+ "${CMAKE_CURRENT_BINARY_DIR}/cave-${subcommand}.html.part"
+ "${CMAKE_BINARY_DIR}/src/clients/cave/cave-${subcommand}.html-man-fragment"
+ "${CMAKE_CURRENT_BINARY_DIR}/footer.html.part")
+endfunction()
+
+paludis_generate_page(index "${CMAKE_CURRENT_SOURCE_DIR}")
+
+set(CAVE_SUBCOMMANDS
+ config
+ contents
+ digest
+ display-resolution
+ dump-cave-formats-conf
+ executables
+ execute-resolution
+ find-candidates
+ fix-cache
+ fix-linkage
+ generate-metadata
+ graph-jobs
+ has-version
+ help
+ import
+ info
+ manage-search-index
+ match
+ mirror
+ owner
+ perform
+ print-best-version
+ print-categories
+ print-checksum
+ print-checksum-algorithms
+ print-commands
+ print-dependent-ids
+ print-environment-metadata
+ print-id-actions
+ print-id-contents
+ print-id-environment-variable
+ print-id-executables
+ print-id-masks
+ print-id-metadata
+ print-id-size
+ print-ids
+ print-owners
+ print-packages
+ print-repositories
+ print-repository-formats
+ print-repository-metadata
+ print-resolution-required-confirmations
+ print-set
+ print-sets
+ print-spec
+ print-sync-protocols
+ print-unmanaged-files
+ print-unused-distfiles
+ purge
+ report
+ resolve
+ resume
+ search
+ show
+ size
+ sync
+ sync-protocol-options
+ uninstall
+ update-world
+ verify)
+
+set(cave_documentation)
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cave.html.head" "<h1>cave</h1>\n")
+if(NOT ENABLE_CAVE_CLIENT)
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cave.html.head"
+ "<p>Sorry, documentation was generated without support for the cave client.</p>\n")
+endif()
+paludis_cat("${CMAKE_CURRENT_BINARY_DIR}/cave.html.part.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cave.html.head"
+ "${CMAKE_BINARY_DIR}/src/clients/cave/cave.html-man-fragment"
+ DEPENDS
+ cave-html-man-fragments)
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/cave.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/cave.html.part"
+ EXPRESSIONS
+ "/<h2>SEE ALSO<.h2>/,/<.div>/s#<span class=\"strong\"><strong>\\(.*\\)</strong></span>(1)#<a href=\"\\1.html\">\\1</a>#"
+ "/<h2>CORE COMMANDS<.h2>/,/<h2>ENVIRONMENT<.h2>/s,^\\([a-z-]\\+\\)$$,<a href=\"cave-\\1.html\">\\1</a>,")
+paludis_cat("${CMAKE_CURRENT_BINARY_DIR}/cave.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/header.html.part"
+ "${CMAKE_CURRENT_BINARY_DIR}/cave.html.part"
+ "${CMAKE_CURRENT_BINARY_DIR}/footer.html.part")
+list(APPEND cave_documentation "${CMAKE_CURRENT_BINARY_DIR}/cave.html")
+foreach(subcommand ${CAVE_SUBCOMMANDS})
+ paludis_generate_cave_command_html_doc(${subcommand})
+ list(APPEND cave_documentation "${CMAKE_CURRENT_BINARY_DIR}/cave-${subcommand}.html")
+endforeach()
+
+add_custom_target(client-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ ${cave_documentation})
+if(ENABLE_CAVE_CLIENT)
+ add_dependencies(client-html-docs cave-html-man-fragments)
+endif()
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ ${cave_documentation}
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/clients")
+
diff --git a/doc/configuration/CMakeLists.txt b/doc/configuration/CMakeLists.txt
new file mode 100644
index 000000000..b6d140fe5
--- /dev/null
+++ b/doc/configuration/CMakeLists.txt
@@ -0,0 +1,130 @@
+
+add_subdirectory(repositories)
+
+file(GLOB syncers
+ LIST_DIRECTORIES FALSE
+ "${CMAKE_SOURCE_DIR}/paludis/syncers/do*"
+ "${CMAKE_BINARY_DIR}/paludis/syncers/do*")
+list(SORT syncers)
+foreach(syncer ${syncers})
+ get_filename_component(syncer ${syncer} NAME)
+ if(NOT ${syncer} MATCHES ".in")
+ string(REPLACE "do" "" syncer ${syncer})
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/synclist" "<strong>${syncer}</strong>\n")
+ endif()
+endforeach()
+
+file(GLOB fetchers
+ LIST_DIRECTORIES FALSE
+ "${CMAKE_SOURCE_DIR}/paludis/fetchers/do*"
+ "${CMAKE_BINARY_DIR}/paludis/fetchers/do*")
+list(SORT fetchers)
+foreach(fetcher ${fetchers})
+ get_filename_component(fetcher ${fetcher} NAME)
+ if(NOT ${fetcher} MATCHES ".in")
+ string(REPLACE "do" "" fetcher ${fetcher})
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/fetchlist" "<li>${fetcher}</li>\n")
+ endif()
+endforeach()
+
+paludis_generate_toplinks("..")
+paludis_generate_header("..")
+paludis_generate_footer("..")
+
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/fetchers.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/fetchers.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/fetchlist"
+ EXPRESSIONS
+ "/###FETCHERS###/r ${CMAKE_CURRENT_BINARY_DIR}/fetchlist")
+paludis_generate_page(fetchers "${CMAKE_CURRENT_BINARY_DIR}")
+
+paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/syncers.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/syncers.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/synclist"
+ EXPRESSIONS
+ "/###SYNCERS###/r ${CMAKE_CURRENT_BINARY_DIR}/synclist")
+paludis_generate_page(syncers "${CMAKE_CURRENT_BINARY_DIR}")
+
+foreach(page
+ bashrc
+ general
+ keywords
+ licenses
+ mirrors
+ output
+ packagemask
+ sets
+ specpath
+ suggestions
+ use)
+ paludis_sed(INPUT
+ "${CMAKE_CURRENT_SOURCE_DIR}/${page}.html.part.in"
+ OUTPUT
+ "${CMAKE_CURRENT_BINARY_DIR}/${page}.html.part"
+ DEPENDS
+ "${CMAKE_CURRENT_SOURCE_DIR}/paludisenvironmentonly.html.part"
+ EXPRESSIONS
+ "/###PALUDISENVIRONMENTONLY###/r ${CMAKE_CURRENT_SOURCE_DIR}/paludisenvironmentonly.html.part"
+ "s,###PALUDISENVIRONMENTONLY####,,g")
+ paludis_generate_page(${page} "${CMAKE_CURRENT_BINARY_DIR}")
+endforeach()
+
+foreach(page
+ configfiles
+ envvars
+ hooks
+ index
+ specs)
+ paludis_generate_page(${page} "${CMAKE_CURRENT_SOURCE_DIR}")
+endforeach()
+
+add_custom_target(configuration-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/bashrc.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/configfiles.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/envvars.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/fetchers.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/general.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/hooks.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/keywords.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/licenses.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/mirrors.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/output.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/packagemask.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/sets.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/specpath.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/specs.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/suggestions.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/syncers.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/use.html")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/bashrc.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/configfiles.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/envvars.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/fetchers.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/general.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/hooks.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/keywords.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/licenses.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/mirrors.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/output.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/packagemask.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/sets.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/specpath.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/specs.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/suggestions.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/syncers.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/use.html"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/configuration")
+
diff --git a/doc/configuration/repositories/CMakeLists.txt b/doc/configuration/repositories/CMakeLists.txt
new file mode 100644
index 000000000..eb513a45f
--- /dev/null
+++ b/doc/configuration/repositories/CMakeLists.txt
@@ -0,0 +1,47 @@
+
+paludis_generate_toplinks("../..")
+paludis_generate_header("../..")
+paludis_generate_footer("../..")
+
+foreach(page
+ accounts
+ e
+ exndbam
+ index
+ installed_accounts
+ installed_unpackaged
+ repository
+ unavailable
+ unwritten
+ vdb)
+ paludis_generate_page(${page} "${CMAKE_CURRENT_SOURCE_DIR}")
+endforeach()
+
+add_custom_target(configuration-repositories-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/accounts.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/e.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/exndbam.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/installed_accounts.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/installed_unpackaged.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/repository.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/unavailable.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/unwritten.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/vdb.html")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/accounts.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/e.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/exndbam.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/installed_accounts.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/installed_unpackaged.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/repository.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/unavailable.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/unwritten.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/vdb.html"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/configuration/repositories")
+
diff --git a/doc/faq/CMakeLists.txt b/doc/faq/CMakeLists.txt
new file mode 100644
index 000000000..846bebd05
--- /dev/null
+++ b/doc/faq/CMakeLists.txt
@@ -0,0 +1,44 @@
+
+paludis_generate_toplinks("..")
+paludis_generate_header("..")
+paludis_generate_footer("..")
+
+foreach(page
+ different
+ general
+ index
+ howdoi
+ misfunctionality
+ operation
+ repositories
+ stricter
+ upgrades)
+ paludis_generate_page(${page} "${CMAKE_CURRENT_SOURCE_DIR}")
+endforeach()
+
+add_custom_target(faq-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/different.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/general.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/howdoi.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/misfunctionality.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/operation.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/repositories.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/stricter.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/upgrades.html")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/different.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/general.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/howdoi.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/misfunctionality.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/operation.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/repositories.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/stricter.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/upgrades.html"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/faq")
+
diff --git a/doc/overview/CMakeLists.txt b/doc/overview/CMakeLists.txt
new file mode 100644
index 000000000..41f4cf30f
--- /dev/null
+++ b/doc/overview/CMakeLists.txt
@@ -0,0 +1,32 @@
+
+paludis_generate_toplinks("..")
+paludis_generate_header("..")
+paludis_generate_footer("..")
+
+foreach(page
+ contact
+ features
+ gettingstarted
+ index
+ pbins)
+ paludis_generate_page(${page} "${CMAKE_CURRENT_SOURCE_DIR}")
+endforeach()
+
+add_custom_target(overview-html-docs
+ ALL
+ DEPENDS
+ "${CMAKE_CURRENT_BINARY_DIR}/contact.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/features.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/gettingstarted.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/pbins.html")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/contact.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/features.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/gettingstarted.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/index.html"
+ "${CMAKE_CURRENT_BINARY_DIR}/pbins.html"
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_HTMLDIR}/overview")
+