mirror of
https://github.com/bolucat/Archive.git
synced 2025-12-24 13:28:37 +08:00
103 lines
2.8 KiB
CMake
103 lines
2.8 KiB
CMake
# -*- coding: utf-8 -*-
|
|
# ----------------------------------------------------------------------
|
|
# Copyright © 2011-2013, RedJack, LLC.
|
|
# All rights reserved.
|
|
#
|
|
# Please see the LICENSE.txt file in this distribution for license
|
|
# details.
|
|
# ----------------------------------------------------------------------
|
|
|
|
# Fill in this with the text that you want to include in the header and footer
|
|
# of each man page.
|
|
|
|
set(MAN_HEADER "ipset documentation")
|
|
set(MAN_FOOTER "ipset")
|
|
|
|
# Fill this in with any man pages that should be built from a pandoc source
|
|
# file. For a man page called foo.5, there should be a pandoc source file
|
|
# called foo.5.pandoc.
|
|
|
|
set(MAN_PAGES
|
|
)
|
|
|
|
#-----------------------------------------------------------------------
|
|
# Everything below is boilerplate!
|
|
|
|
find_program(
|
|
PANDOC_EXECUTABLE
|
|
NAMES pandoc
|
|
HINTS ENV PANDOC_DIR
|
|
PATH_SUFFIXES bin
|
|
DOC "Pandoc man page generator"
|
|
)
|
|
|
|
set(GENERATE_DOC TRUE CACHE BOOL
|
|
"Whether to rebuild documentation")
|
|
|
|
if (NOT PANDOC_EXECUTABLE)
|
|
message(WARNING "Unable to find pandoc documentation generator")
|
|
set(GENERATE_DOC FALSE)
|
|
endif (NOT PANDOC_EXECUTABLE)
|
|
|
|
|
|
# Link man pages go in docs/links
|
|
|
|
macro(install_links section)
|
|
file(GLOB links "links/*.${section}")
|
|
if (links)
|
|
install(
|
|
FILES ${links}
|
|
DESTINATION "share/man/man${section}"
|
|
)
|
|
endif (links)
|
|
endmacro(install_links section)
|
|
|
|
install_links(1) # commands
|
|
install_links(3) # library API
|
|
install_links(4) # special files and drivers
|
|
install_links(5) # file formats and conventions
|
|
install_links(7) # miscellaneous
|
|
install_links(8) # system commands
|
|
|
|
|
|
# Man pages with actual content go in docs
|
|
|
|
set(ALL_MANS)
|
|
|
|
macro(pandocify name)
|
|
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}.pandoc")
|
|
set(dest "${CMAKE_CURRENT_SOURCE_DIR}/${name}")
|
|
get_filename_component(section "${name}" EXT)
|
|
string(REPLACE "." "" section "${section}")
|
|
|
|
# Only compile the markdown source into groff man pages if requested.
|
|
if (GENERATE_DOC)
|
|
add_custom_command(
|
|
OUTPUT ${dest}
|
|
COMMAND ${PANDOC_EXECUTABLE}
|
|
-f markdown -t man -s --smart
|
|
-V header="${MAN_HEADER}"
|
|
-V footer="${MAN_FOOTER}"
|
|
-V date=${RELEASE_DATE}
|
|
-o ${dest} ${src}
|
|
MAIN_DEPENDENCY ${src}
|
|
COMMENT "Building ${name}"
|
|
)
|
|
list(APPEND ALL_MANS ${dest})
|
|
endif (GENERATE_DOC)
|
|
|
|
# We should always have an already-compiled copy of each man page in the
|
|
# source tree, which we can install even if we didn't build fresh new
|
|
# copies.
|
|
install(
|
|
FILES ${dest}
|
|
DESTINATION "share/man/man${section}"
|
|
)
|
|
endmacro(pandocify)
|
|
|
|
foreach(MAN_PAGE ${MAN_PAGES})
|
|
pandocify(${MAN_PAGE})
|
|
endforeach(MAN_PAGE)
|
|
|
|
add_custom_target(doc ALL DEPENDS ${ALL_MANS})
|