mirror of
https://github.com/libssh2/libssh2.git
synced 2025-10-24 14:53:03 +03:00
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
53 lines
1.8 KiB
CMake
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()
|