1
0
mirror of https://github.com/libssh2/libssh2.git synced 2025-10-24 14:53:03 +03:00
Files
libssh2/docs/CMakeLists.txt
Viktor Szakats b889b39945 docs: convert man page sources to "curldown" format
To render in Git webviews as-is, to make it easier to edit, verify,
and to sync up with curl.

- add options to not build the `.3` man pages:
  - autotools: `--disable-docs`
  - cmake: `LIBSSH2_BUILD_DOCS=OFF`
- building `.3` man pages requires Perl after this patch.
- drop `mansyntax` and the shell / `grep` / GNU `man` tool requirements with it.
- scripts and most logic were copied from curl.
- add `cd2nroff` from curl, with edits to relax curl-specific checks.
- used `nroff2cd` (from curl) to convert from `.3` to `.md`. Then
  manually fixed copyrights, inline function references and a couple
  of other things.

Credits-to: Daniel Stenberg

Ref: eefcc1bda4
Ref: https://github.com/curl/curl/pull/12730
Ref: https://github.com/libssh2/www/issues/25#issuecomment-3289431671

Closes #1660
2025-10-09 04:05:38 +02:00

53 lines
1.8 KiB
CMake

# Copyright (C) Viktor Szakats
# SPDX-License-Identifier: BSD-3-Clause
# Get man_MANS variable
libssh2_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
# Generate man pages
function(libssh2_add_manual_pages _listname)
# Maximum number of files per command to stay within shell/OS limits
if(CMAKE_HOST_UNIX)
set(_files_per_batch 10000)
else() # e.g. Windows with cmd.exe and other obsolete/unidentified shells
set(_files_per_batch 200)
endif()
set(_file_count 0)
set(_rofffiles "")
set(_mdfiles "")
set(_eol "_EOL_")
foreach(_file IN LISTS ${_listname} _eol)
math(EXPR _file_count "${_file_count} + 1")
if(_file_count GREATER_EQUAL _files_per_batch OR _file STREQUAL "_EOL_")
add_custom_command(OUTPUT ${_rofffiles}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/cd2nroff" -k -d "${CMAKE_CURRENT_BINARY_DIR}" ${_mdfiles}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/cd2nroff" ${_mdfiles}
VERBATIM
)
set(_file_count 0)
set(_rofffiles "")
set(_mdfiles "")
endif()
list(APPEND _rofffiles "${CMAKE_CURRENT_BINARY_DIR}/${_file}")
string(REPLACE ".3" ".md" _mdfile "${_file}")
list(APPEND _mdfiles "${_mdfile}")
endforeach()
unset(_rofffiles)
unset(_mdfiles)
endfunction()
libssh2_add_manual_pages(man_MANS)
add_custom_target(libssh2-man ALL DEPENDS ${man_MANS})
if(NOT LIBSSH2_DISABLE_INSTALL)
set(_src "")
foreach(_file IN LISTS man_MANS)
list(APPEND _src "${CMAKE_CURRENT_BINARY_DIR}/${_file}")
endforeach()
include(GNUInstallDirs)
install(FILES ${_src} DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
unset(_src)
endif()