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.
168 lines
5.1 KiB
CMake
168 lines
5.1 KiB
CMake
include (CMakeParseArguments)
|
|
|
|
set (_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
|
|
|
# generate_product_version() function
|
|
#
|
|
# This function uses VersionInfo.in template file and VersionResource.rc file
|
|
# to generate WIN32 resource with version information and general resource strings.
|
|
#
|
|
# Usage:
|
|
# generate_product_version(
|
|
# SomeOutputResourceVariable
|
|
# NAME MyVersinedTarget
|
|
# ICON ${PATH_TO_ICON}
|
|
# VERSION_MAJOR 2
|
|
# VERSION_MINOR 3
|
|
# VERSION_PATCH 1
|
|
# VERSION_REVISION sha1
|
|
# )
|
|
#
|
|
# You can use generated resource for your executable targets:
|
|
# add_executable(target-name ${target-files} ${SomeOutputResourceVariable})
|
|
# add_library (target-name SHARED ${target-files} ${SomeOutputResourceVariable})
|
|
#
|
|
# You can specify resource strings in arguments:
|
|
# NAME - name of executable (no defaults, ex: Microsoft Word)
|
|
# BUNDLE - bundle (${PROJECT_NAME} or ${NAME} is default, ex: Microsoft Office)
|
|
# ICON - path to application icon, default: ${CMAKE_SOURCE_DIR}/icons/windows-icons/${NAME}.ico
|
|
# VERSION_MAJOR - default: 1
|
|
# VERSION_MINOR - deafult: 0
|
|
# VERSION_PATCH - deafult: 0
|
|
# VERSION_REVISION - deafult: 0
|
|
# VENDOR_NAME - your vendor name, default: ${PROJECT_VENDOR}
|
|
# LEGAL_COPYRIGHT - default: ${PROJECT_COPYRIGHT}
|
|
# COMMENTS - default: ${PROJECT_DESCRIPTION}
|
|
# ORIGINAL_FILENAME - default: ${NAME}
|
|
# INTERNAL_NAME - default: ${NAME}
|
|
# FILE_DESCRIPTION - default: ${COMMENTS}
|
|
function(generate_version_info outfiles)
|
|
set (options)
|
|
set (oneValueArgs
|
|
NAME
|
|
BUNDLE
|
|
ICON
|
|
VERSION_MAJOR
|
|
VERSION_MINOR
|
|
VERSION_PATCH
|
|
VERSION_REVISION
|
|
VENDOR_NAME
|
|
LEGAL_COPYRIGHT
|
|
COMMENTS
|
|
ORIGINAL_FILENAME
|
|
INTERNAL_NAME
|
|
FILE_DESCRIPTION)
|
|
set (multiValueArgs)
|
|
cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if (NOT PRODUCT_BUNDLE)
|
|
if (PROJECT_NAME)
|
|
set (PRODUCT_BUNDLE "${PROJECT_NAME}")
|
|
else ()
|
|
set (PRODUCT_BUNDLE "${PRODUCT_NAME}")
|
|
endif ()
|
|
endif()
|
|
|
|
if (NOT PRODUCT_ICON)
|
|
set (PRODUCT_ICON "${CMAKE_SOURCE_DIR}/icons/windows-icons/${PRODUCT_NAME}.ico")
|
|
endif ()
|
|
|
|
if (NOT PRODUCT_VERSION_MAJOR)
|
|
if (PROJECT_VERSION_MAJOR)
|
|
set (PRODUCT_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
|
else ()
|
|
set (PRODUCT_VERSION_MAJOR 1)
|
|
endif ()
|
|
else ()
|
|
if (NOT ${PRODUCT_VERSION_MAJOR} MATCHES "^[0-9]+$")
|
|
message (FATAL_ERROR "Numeric major version number required")
|
|
endif ()
|
|
endif ()
|
|
|
|
if (NOT PRODUCT_VERSION_MINOR)
|
|
if (PROJECT_VERSION_MINOR)
|
|
set (PRODUCT_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
|
else ()
|
|
set (PRODUCT_VERSION_MINOR 0)
|
|
endif ()
|
|
else ()
|
|
if (NOT ${PRODUCT_VERSION_MINOR} MATCHES "^[0-9]+$")
|
|
message (FATAL_ERROR "Numeric minor version number required")
|
|
endif ()
|
|
endif()
|
|
|
|
if (NOT PRODUCT_VERSION_PATCH)
|
|
if (PROJECT_VERSION_PATCH)
|
|
set (PRODUCT_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
|
else ()
|
|
set (PRODUCT_VERSION_PATCH 0)
|
|
endif ()
|
|
else ()
|
|
if (NOT ${PRODUCT_VERSION_PATCH} MATCHES "^[0-9]+$")
|
|
message (FATAL_ERROR "Numeric patch version number required")
|
|
endif ()
|
|
endif()
|
|
|
|
if (NOT PRODUCT_VERSION_TWEAK)
|
|
if (PROJECT_VERSION_TWEAK)
|
|
set (PRODUCT_VERSION_TWEAK ${PROJECT_VERSION_TWEAK})
|
|
else ()
|
|
set (PRODUCT_VERSION_TWEAK 0)
|
|
endif ()
|
|
else()
|
|
if (NOT ${PRODUCT_VERSION_TWEAK} MATCHES "^[0-9]+$")
|
|
message (FATAL_ERROR "Numeric tweak version number required")
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT PROJECT_VERSION_REVISION AND BUILD_TYPE_REVISION)
|
|
set (PRODUCT_VERSION_REVISION ${BUILD_TYPE_REVISION})
|
|
endif ()
|
|
|
|
if (NOT PRODUCT_VENDOR_NAME AND PROJECT_VENDOR)
|
|
set (PRODUCT_VENDOR_NAME ${PROJECT_VENDOR})
|
|
endif ()
|
|
|
|
if (NOT PRODUCT_LEGAL_COPYRIGHT)
|
|
if (PROJECT_COPYRIGHT)
|
|
set (PRODUCT_LEGAL_COPYRIGHT ${PROJECT_COPYRIGHT})
|
|
else ()
|
|
string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y")
|
|
set(PRODUCT_LEGAL_COPYRIGHT "${PRODUCT_VENDOR_NAME} (C) Copyright ${PRODUCT_CURRENT_YEAR}")
|
|
endif ()
|
|
endif()
|
|
|
|
if (NOT PRODUCT_COMMENTS)
|
|
if (PROJECT_DESCRIPTION)
|
|
set(PRODUCT_COMMENTS ${PROJECT_DESCRIPTION})
|
|
else ()
|
|
set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_PATCH}")
|
|
endif ()
|
|
endif()
|
|
|
|
if (NOT PRODUCT_ORIGINAL_FILENAME)
|
|
set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}")
|
|
endif()
|
|
|
|
if (NOT PRODUCT_INTERNAL_NAME)
|
|
set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}")
|
|
endif()
|
|
|
|
if (NOT PRODUCT_FILE_DESCRIPTION)
|
|
set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_COMMENTS}")
|
|
endif()
|
|
|
|
set (_VersionInfoFile VersionInfo_${PRODUCT_NAME}.h)
|
|
set (_VersionResourceFile VersionResource_${PRODUCT_NAME}.rc)
|
|
configure_file(
|
|
${_THIS_MODULE_BASE_DIR}/VersionInfo.h.in
|
|
${_VersionInfoFile}
|
|
@ONLY)
|
|
configure_file(
|
|
${_THIS_MODULE_BASE_DIR}/VersionResource.rc.in
|
|
${_VersionResourceFile}
|
|
@ONLY)
|
|
list(APPEND ${outfiles} ${CMAKE_CURRENT_BINARY_DIR}/${_VersionInfoFile} ${CMAKE_CURRENT_BINARY_DIR}/${_VersionResourceFile})
|
|
set (${outfiles} ${${outfiles}} PARENT_SCOPE)
|
|
endfunction()
|