mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 20:28:42 -05:00
5f2ba00bb8
Version information and more in the Windows resources for main applications, installer and un-installer. Update CMake policies for new project() command, and DEB dependency changes Support older libgfortran packages, and other Linux package dependencies. Use new project description file in Debian packaging. Linux packaging dependency adjustments for Debian style packages, including a machine readable Debian copyright format, project description in separate file for CPack compatibility, and use for DEB packaging. Configure check for need to link libm Standard C Math Library. CMake compatibility for <3.17.
91 lines
3.0 KiB
CMake
91 lines
3.0 KiB
CMake
set (ASCIIDOC_MANS
|
|
man1/fcal.1.txt
|
|
man1/fmeasure.1.txt
|
|
man1/fmtave.1.txt
|
|
man1/fst4sim.1.txt
|
|
man1/wsjtx.1.txt
|
|
man1/wsprd.1.txt
|
|
man1/jt65code.1.txt
|
|
man1/rigctl-wsjtx.1.txt
|
|
man1/rigctld-wsjtx.1.txt
|
|
man1/rigctlcom-wsjtx.1.txt
|
|
man1/message_aggregator.1.txt
|
|
man1/udp_daemon.1.txt
|
|
)
|
|
|
|
find_program (A2X_EXECUTABLE NAMES a2x a2x.py)
|
|
if (NOT A2X_EXECUTABLE)
|
|
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
message (SEND_ERROR "Failed to find a2x which is an optional requirement for non-debug
|
|
builds on *nix platforms.
|
|
|
|
You can choose to skip manpage generation and this error by setting
|
|
the CMake option WSJT_SKIP_MANPAGES to ON. This option is designed for
|
|
those that are building for their own use, package builders should not
|
|
opt to skip manpage generation since package building requires the
|
|
manpages.")
|
|
|
|
else (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
message (WARNING "Failed to find a2x skipping manpage generation.")
|
|
endif (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
endif ()
|
|
find_program (GZIP_EXECUTABLE NAMES gzip)
|
|
find_program (SED_EXECUTABLE NAMES sed)
|
|
|
|
set (XSLTPROC_OPTS
|
|
"-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0"
|
|
)
|
|
set (A2X_OPTS
|
|
--format=manpage
|
|
--xsltproc-opts=${XSLTPROC_OPTS}
|
|
--doctype=manpage
|
|
--no-xmllint
|
|
-a VERSION=${wsjtx_VERSION}
|
|
)
|
|
|
|
set (MANPAGES)
|
|
if (A2X_EXECUTABLE AND GZIP_EXECUTABLE AND SED_EXECUTABLE)
|
|
foreach (f IN LISTS ASCIIDOC_MANS)
|
|
get_filename_component (d "${f}" PATH)
|
|
string (SUBSTRING "${d}" 3 -1 section)
|
|
if (NOT section MATCHES "[1-9]")
|
|
message (SEND_ERROR "Invalid man section ${section} in ${f}")
|
|
endif (NOT section MATCHES "[1-9]")
|
|
get_filename_component (filename "${f}" NAME)
|
|
get_filename_component (filename_we "${f}" NAME_WE)
|
|
set (f "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
|
|
set (d "man/${d}")
|
|
set (o "${d}/${filename_we}.${section}.gz")
|
|
add_custom_command (OUTPUT "${o}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS -E make_directory "${d}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS -E copy "${f}" "${d}"
|
|
COMMAND ${A2X_EXECUTABLE} ARGS ${A2X_OPTS} "${d}/${filename}"
|
|
COMMAND ${CMAKE_COMMAND} ARGS -E remove "${d}/${filename}"
|
|
#
|
|
# the following edit command is used to make the alias manpages
|
|
# compatible with Debian packaging rules when a2x generates alias
|
|
# pages baseed in the section directory instead of the man parent
|
|
# directory
|
|
#
|
|
COMMAND ${SED_EXECUTABLE} ARGS -e '/^.so [^\\/]*$$/s@.so @&man${section}\\/@' -i.orig "${d}/*.${section}"
|
|
COMMAND ${GZIP_EXECUTABLE} ARGS -f9 "${d}/*.${section}"
|
|
DEPENDS "${f}" "${previous_output}"
|
|
COMMENT "Generating ${o}"
|
|
)
|
|
list (APPEND MANPAGES "${o}")
|
|
|
|
# use this as a dependency in the next iteration to serialize so
|
|
# that gzips don't overlap in parallel builds
|
|
set (previous_output "${o}")
|
|
endforeach ()
|
|
|
|
install (
|
|
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man/
|
|
DESTINATION ${CMAKE_INSTALL_MANDIR}
|
|
PATTERN "*.orig" EXCLUDE
|
|
#COMPONENT Runtime
|
|
)
|
|
endif (A2X_EXECUTABLE AND GZIP_EXECUTABLE AND SED_EXECUTABLE)
|
|
|
|
add_custom_target (manpages DEPENDS ${MANPAGES})
|