FreeRDP/cmake/GenerateManpages.cmake
Armin Novak c3a5387187
[manpages] switch generation to pure CMake
* Ditch docbook/xmlto, use plain manpage files
* Add CMake functions to concatenate manpate sections
* Modify generate_argument_manpage helper tool to generate manpage
2024-10-09 21:41:14 +02:00

49 lines
1.6 KiB
CMake

get_filename_component(GENERATE_MANPAGES_SCRIPT_DIR "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE)
list(APPEND CMAKE_MODULE_PATH ${GENERATE_MANPAGES_SCRIPT_DIR})
include(CleaningConfigureFile)
set(SRC "${CURRENT_SOURCE_DIR}/${target}.${section}.in")
cleaning_configure_file(${SRC} ${manpage}.tmp @ONLY IMMEDIATE)
# write header (aka name of the manpage), truncate existing
file(READ ${CURRENT_BINARY_DIR}/${manpage}.tmp CONTENTS)
file(WRITE ${CURRENT_BINARY_DIR}/${manpage} "${CONTENTS}")
string(REPLACE " " ";" DEPS ${dependencies})
foreach(DEP IN LISTS DEPS)
get_filename_component(DNAME "${DEP}" NAME)
set(SRC_IN ${CURRENT_SOURCE_DIR}/${DEP}.in)
set(DST_IN ${CURRENT_BINARY_DIR}/${DEP}.in)
set(SRC ${CURRENT_SOURCE_DIR}/${DEP})
set(BIN ${CURRENT_BINARY_DIR}/${DEP})
set(DST ${CURRENT_BINARY_DIR}/${DNAME})
if (EXISTS ${SRC_IN})
message("using generated ${DST} from ${SRC_IN}")
cleaning_configure_file(${SRC_IN} ${DST} @ONLY IMMEDIATE)
elseif (EXISTS ${DST_IN})
message("using generated ${DST} from ${DST_IN}")
cleaning_configure_file(${DST_IN} ${DST} @ONLY IMMEDIATE)
elseif (EXISTS ${SRC})
set(DST ${SRC})
message("using ${DST}")
elseif (EXISTS ${BIN})
set(DST ${BIN})
message("using ${DST}")
elseif (EXISTS ${DST})
message("using ${DST}")
else()
message(WARNING "Missing manpage section, considered:")
message(WARNING " ${SRC_IN}")
message(WARNING " ${DST_IN}")
message(WARNING " ${SRC}")
message(WARNING " ${BIN}")
message(WARNING " ${DST}")
message(FATAL_ERROR "Can not continue, terminating")
endif()
file(READ ${DST} CONTENTS)
file(APPEND ${CURRENT_BINARY_DIR}/${manpage} "${CONTENTS}")
endforeach()