172 lines
5.2 KiB
CMake
172 lines
5.2 KiB
CMake
cmake_minimum_required(VERSION 3.9.0)
|
|
|
|
project(rssguard VERSION 4.1.2 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
option(USE_WEBENGINE "Use QtWebEngine for embedded web browser" ON)
|
|
option(UPDATE_TRANSLATIONS "Call lupdate to update translation files from source" OFF)
|
|
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GCC/Clang only)" OFF)
|
|
option(REVISION_FROM_GIT "Get revision using `git rev-parse`" OFF)
|
|
|
|
set(FEEDLY_CLIENT_ID "" CACHE STRING "Feedly client ID")
|
|
set(FEEDLY_CLIENT_SECRET "" CACHE STRING "Feedly client secret")
|
|
|
|
set(GMAIL_CLIENT_ID "" CACHE STRING "GMail client ID")
|
|
set(GMAIL_CLIENT_SECRET "" CACHE STRING "GMail client secret")
|
|
|
|
set(INOREADER_CLIENT_ID "" CACHE STRING "Inoreader client ID")
|
|
set(INOREADER_CLIENT_SECRET "" CACHE STRING "Inoreader client secret")
|
|
|
|
find_package(QT NAMES Qt6 Qt5 REQUIRED)
|
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS
|
|
Core
|
|
Gui
|
|
LinguistTools
|
|
Network
|
|
Qml
|
|
Sql
|
|
Widgets
|
|
Xml
|
|
)
|
|
|
|
if(QT_VERSION_MAJOR EQUAL 6)
|
|
find_package(Qt6 COMPONENTS Core5Compat REQUIRED)
|
|
endif()
|
|
|
|
if(USE_WEBENGINE)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WebEngineWidgets REQUIRED)
|
|
add_compile_definitions(USE_WEBENGINE)
|
|
endif()
|
|
|
|
if(NOT OS2)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Multimedia REQUIRED)
|
|
macro(qt_add_resources)
|
|
qt_add_big_resources(${ARGN})
|
|
endmacro()
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS DBus REQUIRED)
|
|
endif()
|
|
|
|
if(NOT FEEDLY_CLIENT_ID STREQUAL "" AND NOT FEEDLY_CLIENT_SECRET STREQUAL "")
|
|
add_compile_definitions(
|
|
FEEDLY_OFFICIAL_SUPPORT
|
|
FEEDLY_CLIENT_ID="${FEEDLY_CLIENT_ID}"
|
|
FEEDLY_CLIENT_SECRET="${FEEDLY_CLIENT_SECRET}"
|
|
)
|
|
else()
|
|
message(STATUS "Feedly client ID/secret variables are not set. Disabling official support")
|
|
endif()
|
|
|
|
if(NOT GMAIL_CLIENT_ID STREQUAL "" AND NOT GMAIL_CLIENT_SECRET STREQUAL "")
|
|
add_compile_definitions(
|
|
GMAIL_OFFICIAL_SUPPORT
|
|
GMAIL_CLIENT_ID="${GMAIL_CLIENT_ID}"
|
|
GMAIL_CLIENT_SECRET="${GMAIL_CLIENT_SECRET}"
|
|
)
|
|
else()
|
|
message(STATUS "GMail client ID/secret variables are not set. Disabling official support")
|
|
endif()
|
|
|
|
if(NOT INOREADER_CLIENT_ID STREQUAL "" AND NOT INOREADER_CLIENT_SECRET STREQUAL "")
|
|
add_compile_definitions(
|
|
INOREADER_OFFICIAL_SUPPORT
|
|
INOREADER_CLIENT_ID="${INOREADER_CLIENT_ID}"
|
|
INOREADER_CLIENT_SECRET="${INOREADER_CLIENT_SECRET}"
|
|
)
|
|
else()
|
|
message(STATUS "Inoreader client ID/secret variables are not set. Disabling official support")
|
|
endif()
|
|
|
|
set(APP_NAME "RSS Guard")
|
|
set(APP_AUTHOR "Martin Rotter")
|
|
set(APP_COPYRIGHT "(C) 2011-2022 ${APP_AUTHOR}")
|
|
set(APP_REVERSE_NAME "com.github.rssguard")
|
|
set(TYPEINFO "????")
|
|
|
|
if(REVISION_FROM_GIT AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
|
execute_process(COMMAND "git rev-parse --short HEAD"
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE APP_REVISION
|
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
else()
|
|
set(APP_REVISION "")
|
|
endif()
|
|
|
|
if(NOT USE_WEBENGINE)
|
|
set(APP_REVISION "${APP_REVISION}-nowebengine")
|
|
endif()
|
|
|
|
add_compile_definitions(
|
|
APP_AUTHOR="Martin Rotter"
|
|
APP_DONATE_URL="https://martinrotter.github.io/donate"
|
|
APP_EMAIL="rotter.martinos@gmail.com"
|
|
APP_LONG_NAME="${APP_NAME} ${CMAKE_PROJECT_VERSION}"
|
|
APP_LOW_H_NAME=".${CMAKE_PROJECT_NAME}"
|
|
APP_LOW_NAME="${CMAKE_PROJECT_NAME}"
|
|
APP_NAME="${APP_NAME}"
|
|
APP_REVISION="${APP_REVISON}"
|
|
APP_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}"
|
|
APP_SYSTEM_VERSION="${CMAKE_SYSTEM_PROCESSOR}"
|
|
APP_URL="https://github.com/martinrotter/rssguard"
|
|
APP_URL_DOCUMENTATION="https://github.com/martinrotter/rssguard/blob/master/resources/docs/Documentation.md"
|
|
APP_URL_ISSUES="https://github.com/martinrotter/rssguard/issues"
|
|
APP_URL_ISSUES_NEW="https://github.com/martinrotter/rssguard/issues/new"
|
|
APP_USERAGENT="${APP_NAME}/${CMAKE_PROJECT_VERSION}"
|
|
APP_VERSION="${CMAKE_PROJECT_VERSION}"
|
|
|
|
QT_USE_QSTRINGBUILDER
|
|
QT_USE_FAST_CONCATENATION
|
|
QT_USE_FAST_OPERATOR_PLUS
|
|
UNICODE _UNICODE
|
|
)
|
|
|
|
if(UNIX)
|
|
add_compile_options(-fPIC)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
add_compile_options(-stdlib=libc++)
|
|
add_link_options(-stdlib=libc++)
|
|
endif()
|
|
|
|
if(${FORCE_COLORED_OUTPUT})
|
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
add_compile_options(-fdiagnostics-color=always)
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
add_compile_options(-fcolor-diagnostics)
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
configure_file(
|
|
resources/rssguard.rc.in
|
|
${CMAKE_BINARY_DIR}/rssguard.rc
|
|
NEWLINE_STYLE WIN32
|
|
)
|
|
configure_file(
|
|
resources/nsis/NSIS.definitions.nsh.in
|
|
${CMAKE_BINARY_DIR}/NSIS.definitions.nsh
|
|
)
|
|
file(COPY resources/nsis/NSIS.template.in DESTINATION ${CMAKE_BINARY_DIR})
|
|
file(COPY resources/graphics/${CMAKE_PROJECT_NAME}.ico DESTINATION ${CMAKE_BINARY_DIR})
|
|
elseif(APPLE)
|
|
configure_file(
|
|
resources/macosx/Info.plist.in
|
|
${CMAKE_BINARY_DIR}/Info.plist
|
|
)
|
|
endif()
|
|
|
|
add_subdirectory(localization)
|
|
add_subdirectory(src/librssguard)
|
|
add_subdirectory(src/rssguard)
|