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)