mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-21 11:31:51 -05:00
Several improvements related to packaging on Linux.
Added a manpages sub-project to generate man pages for wsjtx from AsciiDoc source. Add items required by Debian packaging and Free Desktop Standards. Add better command line processing to wsjtx including version and help options. Add a new command line option 'test-mode' that invokes the Qt test mode where all writable file locations are moved to a common directory. This is to allow application testing from a repeatable start point rather than have the test application sharing files with normal operations. See QStandardPaths::setTestModeEnabled() for details of the test location. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4046 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
d9532543b0
commit
c99e564f1e
@ -2,10 +2,10 @@
|
|||||||
# To pass variables to cpack from cmake, they must be configured
|
# To pass variables to cpack from cmake, they must be configured
|
||||||
# in this file.
|
# in this file.
|
||||||
|
|
||||||
set (CPACK_PACKAGE_VENDOR "Joe Taylor, K1JT")
|
set (CPACK_PACKAGE_VENDOR "@PROJECT_VENDOR@")
|
||||||
set (CPACK_PACKAGE_CONTACT "k1jt@arrl.net")
|
set (CPACK_PACKAGE_CONTACT "@PROJECT_CONTACT@")
|
||||||
set (CPACK_PACKAGE_DESCRIPTION_FILE "@PROJECT_SOURCE_DIR@/Copyright.txt")
|
set (CPACK_PACKAGE_DESCRIPTION_FILE "@PROJECT_SOURCE_DIR@/Copyright.txt")
|
||||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "WSJT-X - JT9 and JT65 Modes for LF, MF and HF Amateur Radio")
|
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "@PROJECT_SUMMARY_DESCRIPTION@")
|
||||||
set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/license.txt")
|
set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/license.txt")
|
||||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
|
||||||
set (CPACK_PACKAGE_EXECUTABLES wsjtx "WSJT-X")
|
set (CPACK_PACKAGE_EXECUTABLES wsjtx "WSJT-X")
|
||||||
@ -15,6 +15,7 @@ set (CPACK_STRIP_FILES TRUE)
|
|||||||
#
|
#
|
||||||
# components
|
# components
|
||||||
#
|
#
|
||||||
|
set (CPACK_COMPONENTS_ALL Runtime)
|
||||||
#set (CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "WSJT-X Application")
|
#set (CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "WSJT-X Application")
|
||||||
#set (CPACK_COMPONENT_APPLICATIONS_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@")
|
#set (CPACK_COMPONENT_APPLICATIONS_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@")
|
||||||
|
|
||||||
@ -74,8 +75,11 @@ if ("${CPACK_GENERATOR}" STREQUAL "WIX")
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if ("${CPACK_GENERATOR}" STREQUAL "DEB")
|
if ("${CPACK_GENERATOR}" STREQUAL "DEB")
|
||||||
|
set (CPACK_DEBIAN_PACKAGE_DESCRIPTION "@PROJECT_DESCRIPTION@")
|
||||||
set (CPACK_PACKAGE_FILE_NAME "@DEBIAN_PACKAGE_FILE_NAME@")
|
set (CPACK_PACKAGE_FILE_NAME "@DEBIAN_PACKAGE_FILE_NAME@")
|
||||||
set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "@PROJECT_HOMEPAGE@")
|
set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "@PROJECT_HOMEPAGE@")
|
||||||
|
set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran3 (>=4.8.2), libqt5multimedia5-plugins (>=5), libqt5widgets5 (>=5), libc6 (>=2.19)")
|
||||||
|
set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Debian)
|
||||||
endif ("${CPACK_GENERATOR}" STREQUAL "DEB")
|
endif ("${CPACK_GENERATOR}" STREQUAL "DEB")
|
||||||
|
|
||||||
message (STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
message (STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
||||||
|
@ -2,7 +2,38 @@ cmake_minimum_required (VERSION 2.8.9 FATAL_ERROR)
|
|||||||
|
|
||||||
project (wsjtx C CXX Fortran)
|
project (wsjtx C CXX Fortran)
|
||||||
|
|
||||||
set (WSJTX_COPYRIGHT "Copyright (C) 2001-2014 by Joe Taylor, K1JT")
|
#
|
||||||
|
# project information
|
||||||
|
#
|
||||||
|
set (PROJECT_VENDOR "Joe Taylor, K1JT")
|
||||||
|
set (PROJECT_CONTACT "Joe Taylor <k1jt@arrl.net>")
|
||||||
|
set (PROJECT_COPYRIGHT "Copyright (C) 2001-2014 by Joe Taylor, K1JT")
|
||||||
|
set (PROJECT_HOMEPAGE "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html")
|
||||||
|
set (PROJECT_MANUAL "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html")
|
||||||
|
set (PROJECT_SUMMARY_DESCRIPTION "WSJT-X - JT9 and JT65 Modes for LF, MF and HF Amateur Radio.")
|
||||||
|
set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION}
|
||||||
|
WSJT-X implements JT9, a new mode designed especially for the LF, MF,
|
||||||
|
and HF bands, as well as the popular mode JT65. Both modes were
|
||||||
|
designed for making reliable, confirmed QSOs under extreme weak-signal
|
||||||
|
conditions. They use nearly identical message structure and source
|
||||||
|
encoding. JT65 was designed for EME (“moonbounce”) on the VHF/UHF
|
||||||
|
bands and has also proved very effective for worldwide QRP
|
||||||
|
communication at HF; in contrast, JT9 is optimized for HF and lower
|
||||||
|
frequencies. JT9 is about 2 dB more sensitive than JT65A while using
|
||||||
|
less than 10% of the bandwidth. World-wide QSOs are possible with
|
||||||
|
power levels of a few watts and compromise antennas. A 2 kHz slice of
|
||||||
|
spectrum is essentially full when occupied by ten JT65 signals. As
|
||||||
|
many as 100 JT9 signals can fit into the same space, without overlap.
|
||||||
|
.
|
||||||
|
WSJT-X offers a “bi-lingual“ operating mode in which you can transmit
|
||||||
|
and receive JT65 and JT9 signals, switching between modes
|
||||||
|
automatically as needed. Displayed bandwidth can be as large as 5
|
||||||
|
kHz. If your receiver has as upper-sideband filter at least 4 kHz
|
||||||
|
wide, you can have all the typical JT65 and JT9 activity on screen at
|
||||||
|
once, available for making QSOs with a click of the mouse. Even with
|
||||||
|
standard SSB-width IF filters, switching between JT65 and JT9 modes is
|
||||||
|
quick and convenient. Be sure to read the online WSJT-X User's
|
||||||
|
Guide.")
|
||||||
|
|
||||||
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake/Modules)
|
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake/Modules)
|
||||||
|
|
||||||
@ -34,18 +65,12 @@ option (WSJT_SOFT_KEYING "Apply a ramp to CW keying envelope to reduce transient
|
|||||||
set (WSJT_BIN_DESTINATION bin)
|
set (WSJT_BIN_DESTINATION bin)
|
||||||
set (WSJT_LIB_DESTINATION lib)
|
set (WSJT_LIB_DESTINATION lib)
|
||||||
set (WSJT_SHARE_DESTINATION share/wsjtx)
|
set (WSJT_SHARE_DESTINATION share/wsjtx)
|
||||||
set (WSJT_DOC_DESTINATION share/wsjtx/doc)
|
set (WSJT_DOC_DESTINATION share/doc/wsjtx)
|
||||||
|
set (WSJT_MANPAGE_DESTINATION share)
|
||||||
set (WSJT_PLUGIN_DESTINATION lib/plugins)
|
set (WSJT_PLUGIN_DESTINATION lib/plugins)
|
||||||
set (WSJT_QT_CONF_DESTINATION bin)
|
set (WSJT_QT_CONF_DESTINATION bin)
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# project information
|
|
||||||
#
|
|
||||||
set (PROJECT_HOMEPAGE "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html")
|
|
||||||
set (PROJECT_MANUAL "http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html")
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Project sources
|
# Project sources
|
||||||
#
|
#
|
||||||
@ -349,14 +374,10 @@ if (APPLE)
|
|||||||
set (WSJT_PLUGIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/PlugIns)
|
set (WSJT_PLUGIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/PlugIns)
|
||||||
set (WSJT_QT_CONF_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
|
set (WSJT_QT_CONF_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
|
||||||
set (WSJT_SHARE_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
|
set (WSJT_SHARE_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
|
||||||
|
set (WSJT_DOC_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
|
||||||
set (WSJT_BIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/MacOS)
|
set (WSJT_BIN_DESTINATION ${CMAKE_PROJECT_NAME}.app/Contents/MacOS)
|
||||||
endif (APPLE)
|
endif (APPLE)
|
||||||
|
|
||||||
#set (QT_NEED_RPATH FALSE)
|
|
||||||
#if (NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib64" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib64")
|
|
||||||
# set (QT_NEED_RPATH TRUE)
|
|
||||||
#endif ()
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# C & C++ setup
|
# C & C++ setup
|
||||||
@ -430,7 +451,7 @@ set (CMAKE_SKIP_BUILD_RPATH FALSE)
|
|||||||
# later on in the install phase
|
# later on in the install phase
|
||||||
set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
||||||
|
|
||||||
set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}")
|
# set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}")
|
||||||
|
|
||||||
# add the automaticaly determined parts of the RPATH which point to
|
# add the automaticaly determined parts of the RPATH which point to
|
||||||
# directories outside of the build tree to the install RPATH
|
# directories outside of the build tree to the install RPATH
|
||||||
@ -438,10 +459,15 @@ set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
|||||||
|
|
||||||
# the RPATH to be used when installing, but only if it's not a system
|
# the RPATH to be used when installing, but only if it's not a system
|
||||||
# directory
|
# directory
|
||||||
list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}" isSystemDir)
|
# list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}" isSystemDir)
|
||||||
if ("${isSystemDir}" STREQUAL "-1")
|
# if ("${isSystemDir}" STREQUAL "-1")
|
||||||
set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}")
|
# set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${WSJT_LIB_DESTINATION}")
|
||||||
endif ("${isSystemDir}" STREQUAL "-1")
|
# endif ("${isSystemDir}" STREQUAL "-1")
|
||||||
|
|
||||||
|
set (QT_NEED_RPATH FALSE)
|
||||||
|
if (NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib64" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib64")
|
||||||
|
set (QT_NEED_RPATH TRUE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -450,6 +476,7 @@ endif ("${isSystemDir}" STREQUAL "-1")
|
|||||||
find_package (FFTW3 COMPONENTS single REQUIRED)
|
find_package (FFTW3 COMPONENTS single REQUIRED)
|
||||||
include_directories (${FFTW3_INCLUDE_DIRS})
|
include_directories (${FFTW3_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# libhamlib setup
|
# libhamlib setup
|
||||||
#
|
#
|
||||||
@ -584,9 +611,22 @@ qt5_use_modules (jt9 Core)
|
|||||||
#qt5_use_modules (ConfigTest Widgets OpenGL Network Multimedia)
|
#qt5_use_modules (ConfigTest Widgets OpenGL Network Multimedia)
|
||||||
|
|
||||||
# build the main application
|
# build the main application
|
||||||
add_executable (wsjtx WIN32 MACOSX_BUNDLE ${wsjtx_CXXSRCS} ${wsjtx_GENUISRCS} wsjtx.rc ${WSJTX_ICON_FILE} ${wsjtx_RESOURCES_RCC} contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX})
|
add_executable (wsjtx WIN32 MACOSX_BUNDLE
|
||||||
|
${wsjtx_CXXSRCS}
|
||||||
|
${wsjtx_GENUISRCS}
|
||||||
|
wsjtx.rc
|
||||||
|
${WSJTX_ICON_FILE}
|
||||||
|
${wsjtx_RESOURCES_RCC}
|
||||||
|
contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}
|
||||||
|
)
|
||||||
qt5_use_modules (wsjtx Widgets OpenGL Network Multimedia)
|
qt5_use_modules (wsjtx Widgets OpenGL Network Multimedia)
|
||||||
|
|
||||||
|
if (UNIX)
|
||||||
|
add_subdirectory (manpages)
|
||||||
|
add_subdirectory (debian)
|
||||||
|
add_dependencies (wsjtx manpages debian)
|
||||||
|
endif (UNIX)
|
||||||
|
|
||||||
set_target_properties (wsjtx PROPERTIES
|
set_target_properties (wsjtx PROPERTIES
|
||||||
MACOSX_BUNDLE_INFO_STRING "${WSJTX_DESCRIPTION_SUMMARY}"
|
MACOSX_BUNDLE_INFO_STRING "${WSJTX_DESCRIPTION_SUMMARY}"
|
||||||
MACOSX_BUNDLE_ICON_FILE "${WSJTX_ICON_FILE}"
|
MACOSX_BUNDLE_ICON_FILE "${WSJTX_ICON_FILE}"
|
||||||
@ -594,7 +634,7 @@ set_target_properties (wsjtx PROPERTIES
|
|||||||
MACOSX_BUNDLE_SHORT_VERSION_STRING "v${wsjtx_VERSION}"
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "v${wsjtx_VERSION}"
|
||||||
MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${wsjtx_VERSION}"
|
MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${wsjtx_VERSION}"
|
||||||
MACOSX_BUNDLE_BUNDLE_NAME "WSJT-X"
|
MACOSX_BUNDLE_BUNDLE_NAME "WSJT-X"
|
||||||
MACOSX_BUNDLE_COPYRIGHT "${WSJTX_COPYRIGHT}"
|
MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
|
target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
|
||||||
@ -615,20 +655,20 @@ install (TARGETS wsjtx
|
|||||||
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
|
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
|
||||||
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
|
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
# COMPONENT Runtime
|
COMPONENT Runtime
|
||||||
)
|
)
|
||||||
|
|
||||||
install (TARGETS jt9
|
install (TARGETS jt9
|
||||||
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
|
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
|
||||||
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
|
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
|
||||||
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION}
|
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION}
|
||||||
# COMPONENT Runtime
|
COMPONENT Runtime
|
||||||
)
|
)
|
||||||
|
|
||||||
install (PROGRAMS
|
install (PROGRAMS
|
||||||
${CMAKE_BINARY_DIR}/contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}
|
${CMAKE_BINARY_DIR}/contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}
|
||||||
DESTINATION ${WSJT_BIN_DESTINATION}
|
DESTINATION ${WSJT_BIN_DESTINATION}
|
||||||
# COMPONENT Runtime
|
COMPONENT Runtime
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
0
artwork/make_graphics.sh
Normal file → Executable file
0
artwork/make_graphics.sh
Normal file → Executable file
38
debian/CMakeLists.txt
vendored
Normal file
38
debian/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
find_program (GZIP_EXECUTABLE NAMES gzip)
|
||||||
|
|
||||||
|
string (TIMESTAMP ts "%w, %d [%m] %Y %H:%M:%S +0000" UTC)
|
||||||
|
|
||||||
|
set (__days Sun Mon Tue Wed Thu Fri Sat)
|
||||||
|
string (SUBSTRING ${ts} 0 1 __index)
|
||||||
|
list (GET __days ${__index} __day)
|
||||||
|
string (REPLACE "${__index}," "${__day}," ts ${ts})
|
||||||
|
|
||||||
|
set (__months Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
|
||||||
|
string (SUBSTRING ${ts} 9 2 __month_index)
|
||||||
|
math (EXPR __index "${__month_index} - 1")
|
||||||
|
list (GET __months "${__index}" __month)
|
||||||
|
string (REPLACE "[${__month_index}]" "${__month}" ts ${ts})
|
||||||
|
|
||||||
|
configure_file (
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/changelog.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/changelog"
|
||||||
|
@ONLY)
|
||||||
|
|
||||||
|
add_custom_target (debian
|
||||||
|
COMMAND ${GZIP_EXECUTABLE} --keep --best --force changelog
|
||||||
|
DEPENDS changelog.in
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMMENT "Compressing Debian changelog"
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file (
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/copyright.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/copyright"
|
||||||
|
@ONLY)
|
||||||
|
|
||||||
|
install (FILES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/changelog.gz
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/copyright
|
||||||
|
DESTINATION ${WSJT_DOC_DESTINATION}
|
||||||
|
COMPONENT Debian
|
||||||
|
)
|
6
debian/changelog.in
vendored
Normal file
6
debian/changelog.in
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@CMAKE_PROJECT_NAME@ (@wsjtx_VERSION@) experimental; urgency=low
|
||||||
|
|
||||||
|
* wsjtx Debian maintainer and upstream author are identical.
|
||||||
|
Therefore see also normal changelog file for Debian changes.
|
||||||
|
|
||||||
|
-- @PROJECT_CONTACT@ @ts@
|
10
debian/copyright.in
vendored
Normal file
10
debian/copyright.in
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat
|
||||||
|
Upstream-Name: @CMAKE_PROJECT_NAME@
|
||||||
|
Upstream-Maintainer: @PROJECT_CONTACT@
|
||||||
|
Upstream-Source: @PROJECT_HOMEPAGE@
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: @PROJECT_COPYRIGHT@.
|
||||||
|
License: GPL v3
|
||||||
|
The full text of the GPL is distributed in
|
||||||
|
/usr/share/common-licenses/GPL-3 on Debian systems.
|
46
main.cpp
46
main.cpp
@ -18,6 +18,9 @@
|
|||||||
#include <QSysInfo>
|
#include <QSysInfo>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
#include <QCommandLineParser>
|
||||||
|
#include <QCommandLineOption>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
#include "revision_utils.hpp"
|
#include "revision_utils.hpp"
|
||||||
|
|
||||||
@ -35,29 +38,50 @@ int main(int argc, char *argv[])
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
||||||
// consistent format, do this after
|
// consistent format, do this after
|
||||||
// instantiating QApplication so
|
// instantiating QApplication so
|
||||||
// that GUI has correct l18n
|
// that GUI has correct l18n
|
||||||
|
|
||||||
// Override programs executable basename as application name.
|
// Override programs executable basename as application name.
|
||||||
a.setApplicationName ("WSJT-X");
|
a.setApplicationName ("WSJT-X");
|
||||||
|
a.setApplicationVersion (WSJTX_STRINGIZE (WSJTX_VERSION_MAJOR)
|
||||||
|
"." WSJTX_STRINGIZE (WSJTX_VERSION_MINOR)
|
||||||
|
"." WSJTX_STRINGIZE (WSJTX_VERSION_PATCH) " " + revision ());
|
||||||
|
|
||||||
|
QCommandLineParser parser;
|
||||||
|
parser.setApplicationDescription ("\nJT65A & JT9 Weak Signal Communications Program.");
|
||||||
|
parser.addHelpOption ();
|
||||||
|
parser.addVersionOption ();
|
||||||
|
|
||||||
|
#if WSJT_STANDARD_FILE_LOCATIONS
|
||||||
|
// support for multiple instances running from a single installation
|
||||||
|
QCommandLineOption rig_option (QStringList {} << "r" << "rig-name"
|
||||||
|
, a.translate ("main", "Where <rig-name> is for multi-instance support.")
|
||||||
|
, a.translate ("main", "rig-name"));
|
||||||
|
parser.addOption (rig_option);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QCommandLineOption test_option (QStringList {} << "test-mode"
|
||||||
|
, a.translate ("main", "Writable files in test location. Use with caution, for testing only."));
|
||||||
|
parser.addOption (test_option);
|
||||||
|
|
||||||
|
parser.process (a);
|
||||||
|
|
||||||
|
QStandardPaths::setTestModeEnabled (parser.isSet (test_option));
|
||||||
|
|
||||||
bool multiple {false};
|
bool multiple {false};
|
||||||
|
|
||||||
#if WSJT_STANDARD_FILE_LOCATIONS
|
#if WSJT_STANDARD_FILE_LOCATIONS
|
||||||
// support for multiple instances running from a single installation
|
// support for multiple instances running from a single installation
|
||||||
auto args = a.arguments ();
|
if (parser.isSet (rig_option))
|
||||||
auto rig_arg_index = args.lastIndexOf (QRegularExpression {R"((-r)|(--r(i?(g?))))"});
|
|
||||||
if (rig_arg_index > 0 // not interested if somehow the exe is called -r or --rig
|
|
||||||
&& rig_arg_index + 1 < args.size ())
|
|
||||||
{
|
{
|
||||||
auto temp_name = args.at (rig_arg_index + 1);
|
auto temp_name = parser.value (rig_option);
|
||||||
if ('-' != temp_name[0]
|
if (!temp_name.isEmpty ())
|
||||||
&& !temp_name.isEmpty ())
|
|
||||||
{
|
{
|
||||||
if (temp_name.contains (QRegularExpression {R"([\\/])"}))
|
if (temp_name.contains (QRegularExpression {R"([\\/])"}))
|
||||||
{
|
{
|
||||||
throw std::runtime_error (QObject::tr ("Invalid rig name - \\ & / not allowed").toLocal8Bit ().data ());
|
std::cerr << QObject::tr ("Invalid rig name - \\ & / not allowed").toLocal8Bit ().data () << std::endl;
|
||||||
|
parser.showHelp (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
a.setApplicationName (a.applicationName () + " - " + temp_name);
|
a.setApplicationName (a.applicationName () + " - " + temp_name);
|
||||||
|
59
manpages/CMakeLists.txt
Normal file
59
manpages/CMakeLists.txt
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
set (ASCIIDOC_MANS
|
||||||
|
man1/wsjtx.1.txt
|
||||||
|
)
|
||||||
|
|
||||||
|
find_program (A2X_EXECUTABLE NAMES a2x a2x.py)
|
||||||
|
if (NOT A2X_EXECUTABLE)
|
||||||
|
message (SEND_ERROR "Failed to find a2x.")
|
||||||
|
endif ()
|
||||||
|
find_program (GZIP_EXECUTABLE NAMES gzip)
|
||||||
|
if (NOT GZIP_EXECUTABLE)
|
||||||
|
message (SEND_ERROR "Failed to find gzip.")
|
||||||
|
endif ()
|
||||||
|
find_program (SED_EXECUTABLE NAMES sed)
|
||||||
|
if (NOT SED_EXECUTABLE)
|
||||||
|
message (SEND_ERROR "Failed to find sed.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
set (MANPAGES)
|
||||||
|
if (A2X_EXECUTABLE AND GZIP_EXECUTABLE)
|
||||||
|
file (MAKE_DIRECTORY man)
|
||||||
|
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_WE)
|
||||||
|
set (f "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
|
||||||
|
set (d "man/${d}")
|
||||||
|
set (o "${d}/${filename}.${section}")
|
||||||
|
add_custom_command (OUTPUT "${o}.gz"
|
||||||
|
COMMAND ${CMAKE_COMMAND} ARGS -E make_directory "${d}"
|
||||||
|
COMMAND ${A2X_EXECUTABLE} ARGS ${A2X_OPTS} -D "${d}" "${f}"
|
||||||
|
COMMAND ${GZIP_EXECUTABLE} ARGS -r --force --best "${o}"
|
||||||
|
COMMAND ${SED_EXECUTABLE} ARGS --in-place "s@.so @.so man${section}/@" "${d}/*.${section}"
|
||||||
|
COMMAND ${GZIP_EXECUTABLE} ARGS -r --force --best "${d}/*.${section}"
|
||||||
|
DEPENDS "${f}"
|
||||||
|
COMMENT "Generating ${o}.gz"
|
||||||
|
)
|
||||||
|
list (APPEND MANPAGES "${o}.gz")
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
install (
|
||||||
|
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man
|
||||||
|
DESTINATION ${WSJT_MANPAGE_DESTINATION}
|
||||||
|
)
|
||||||
|
endif (A2X_EXECUTABLE AND GZIP_EXECUTABLE)
|
||||||
|
|
||||||
|
add_custom_target (manpages DEPENDS ${MANPAGES})
|
120
manpages/man1/wsjtx.1.txt
Normal file
120
manpages/man1/wsjtx.1.txt
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
:doctype: manpage
|
||||||
|
:man source: AsciiDoc
|
||||||
|
:man version: {revnumber}
|
||||||
|
:man manual: WSJT-X Manual
|
||||||
|
= wsjtx(1)
|
||||||
|
|
||||||
|
== NAME
|
||||||
|
|
||||||
|
wsjtx, jt9 - Weak signal communications program.
|
||||||
|
|
||||||
|
== SYNOPSIS
|
||||||
|
|
||||||
|
*wsjtx* [OPTIONS]
|
||||||
|
|
||||||
|
== DESCRIPTION
|
||||||
|
|
||||||
|
*wsjtx* is a weak signal communications program supporting two operating
|
||||||
|
modes: JT65 and JT9 (*wsjtx* version 1 supported JT9 only).
|
||||||
|
|
||||||
|
WSJT-X home page:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html
|
||||||
|
|
||||||
|
WSJT-X User's Guide:: http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main-toc2.html
|
||||||
|
|
||||||
|
An alternative JT65 decoder executable *kvasd* for i386 Ubuntu is
|
||||||
|
available at http://www.physics.princeton.edu/pulsar/K1JT/kvasd .
|
||||||
|
This decoder is not open-source, is not included in the wsjtx package,
|
||||||
|
and is not required for JT65 decoding.
|
||||||
|
|
||||||
|
== OPTIONS
|
||||||
|
*-r, --rig-name*[=RIGNAME]::
|
||||||
|
|
||||||
|
Enable multiple instances of the wsjtx(1) application to run
|
||||||
|
concurrently. Each RIGNAME must be unique. One instance may use no
|
||||||
|
RIGNAME. If this option is not supplied then only one instance of
|
||||||
|
wsjtx(1) may be run at any time.
|
||||||
|
|
||||||
|
*-v, --version*:: Display the application version.
|
||||||
|
|
||||||
|
*-h,--help*:: Display usage information.
|
||||||
|
|
||||||
|
*--test-mode*::
|
||||||
|
|
||||||
|
When this option is provided all writable files will be placed in a
|
||||||
|
special test location (~/.qttest). This option is only for
|
||||||
|
application testing and is not designed for normal operations. **Use
|
||||||
|
with caution**.
|
||||||
|
|
||||||
|
== FILES
|
||||||
|
|
||||||
|
Most of the following files are in a directory path containing the
|
||||||
|
directory name *WSJT-X[ - RIGNAME]* which indicates the value of the
|
||||||
|
command line option *--rig=RIGNAME* to indicate multiple instances of
|
||||||
|
*wsjtx* running concurrently. All writable files listed below are
|
||||||
|
therefore unique to each concurrent instance of *wsjtx*. If the
|
||||||
|
*--rig* command line option is not supplied or the *RIGNAME* argument
|
||||||
|
is not supplied then the directory paths below will have the directory
|
||||||
|
*WSJT-X*.
|
||||||
|
|
||||||
|
~/.config/WSJT-X[ - RIGNAME].ini::
|
||||||
|
|
||||||
|
This file stores the application
|
||||||
|
configuration settings.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/ALL.txt::
|
||||||
|
|
||||||
|
*ALL.txt* contains a record of transmitted and received messages and
|
||||||
|
other activity such as frequency or band changes.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/save/::
|
||||||
|
|
||||||
|
Is the default location for saved .WAV files recorded by the
|
||||||
|
application. The .WAV file save location may be changed in the
|
||||||
|
applications settings dialog.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/save/samples/::
|
||||||
|
|
||||||
|
Sample .WAV files suppied with the application are found in this
|
||||||
|
directory, they may be played back in the application and are referred
|
||||||
|
to in the user guide tutorial sections.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ -RIGNAME]/timer.out::
|
||||||
|
|
||||||
|
This is a diagnostic file that records decode performance profiling
|
||||||
|
information.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/cty.dat::
|
||||||
|
|
||||||
|
This file is not required as a version of it is embedded in the
|
||||||
|
application, but if you wish an updated version can be placed here.
|
||||||
|
If present that version will be used in preference to the embedded
|
||||||
|
version.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/wsjtx.log::
|
||||||
|
|
||||||
|
This is a plain text CSV record of logged QSOs.
|
||||||
|
|
||||||
|
~/.local/share/WSJT-X[ - RIGNAME]/wsjtx_log.adi::
|
||||||
|
|
||||||
|
This is a record of QSOs logged in the ADIF format which is suitable
|
||||||
|
for import into many Ham Radio logging programs.
|
||||||
|
|
||||||
|
== AUTHOR
|
||||||
|
|
||||||
|
Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
== COPYING
|
||||||
|
|
||||||
|
*wsjtx* is Copyright (C) 2001 - 2014 by Joseph H. Taylor, Jr., K1JT,
|
||||||
|
with contributions from additional authors. WSJT-X is Open Source
|
||||||
|
software, licensed under the GNU General Public License (GPLv3).
|
||||||
|
|
||||||
|
*wsjtx* includes the ``**Hamlib - Ham Radio Control Libraries**''
|
||||||
|
software which is licensed under the GNU Lesser General Public License
|
||||||
|
(LGPL). Home page https://sourceforge.net/apps/mediawiki/hamlib,
|
||||||
|
sources from https://sourceforge.net/p/hamlib/code/ci/master/tree/.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
@ -3,9 +3,9 @@ Version=1.0
|
|||||||
Name=wsjtx
|
Name=wsjtx
|
||||||
Comment=Amateur Radio Weak Signal Operating
|
Comment=Amateur Radio Weak Signal Operating
|
||||||
Exec=wsjtx
|
Exec=wsjtx
|
||||||
Icon=wsjtx_icon.png
|
Icon=wsjtx_icon
|
||||||
Terminal=false
|
Terminal=false
|
||||||
X-MultipleArgs=false
|
X-MultipleArgs=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Amateur Radio;
|
Categories=AudioVideo;Audio;HamRadio;
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
|
Loading…
Reference in New Issue
Block a user