1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 01:22:10 +01:00
falkonOfficial/CMakeLists.txt
David Faure d69e5458f9 First steps towards a cmake buildsystem, currently only builds src/lib.
USE_DATADIR no longer exists, QStandardPaths::standardLocations is used
unless NO_SYSTEM_DATAPATH is set.
2017-09-09 20:27:44 +02:00

118 lines
3.9 KiB
CMake

# CMake version required. This must be the very first line, because it sets default policies affecting everything else
cmake_minimum_required(VERSION 3.1)
# Project name and version
project(Falkon VERSION 2.1.99)
# Find ECM, with nice error handling in case of failure
include(FeatureSummary)
find_package(ECM 5.27.0 CONFIG)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/frameworks/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# Many includes from ECM, to get all the nice cmake functions and settings
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMAddAppIcon)
include(ECMQtDeclareLoggingCategory)
# Output dirs (like ECM 5.38 does)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
# Version (TODO: move to a generated header once qmake support is dropped, to avoid full recompilations when changing this
add_definitions(-DFALKON_VERSION=\"${PROJECT_VERSION}\")
# Defines that are always set
add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_USE_QSTRINGBUILDER)
# Configurable options (TODO: move all defines to a generated header)
option(NO_SYSTEM_DATAPATH "TODO" OFF)
if (NO_SYSTEM_DATAPATH)
add_definitions(-DNO_SYSTEM_DATAPATH)
endif()
option(KDE_INTEGRATION "TODO" OFF)
if (KDE_INTEGRATION)
add_definitions(-DKDE_INTEGRATION)
endif()
option(GNOME_INTEGRATION "TODO" OFF)
if (GNOME_INTEGRATION)
add_definitions(-DGNOME_INTEGRATION)
endif()
option(NO_X11 "TODO" OFF)
if (NO_X11)
add_definitions(-DNO_X11)
endif()
option(PORTABLE_BUILD "TODO" OFF)
if (PORTABLE_BUILD)
add_definitions(-DPORTABLE_BUILD)
endif()
option(NONBLOCK_JS_DIALOGS "TODO" OFF)
if (NONBLOCK_JS_DIALOGS)
add_definitions(-DNONBLOCK_JS_DIALOGS)
endif()
option(USE_LIBPATH "TODO" "") # REMOVE?
if (USE_LIBPATH)
add_definitions(-DUSE_LIBPATH=\"${USE_LIBPATH}\")
endif()
option(DISABLE_DBUS "TODO" OFF)
if (DISABLE_DBUS)
add_definitions(-DDISABLE_DBUS)
endif()
option(DISABLE_UPDATES_CHECK "TODO" OFF)
if (DISABLE_UPDATES_CHECK)
add_definitions(-DDISABLE_UPDATES_CHECK)
endif()
# Note: the old qmake option DEBUG_BUILD is now -DCMAKE_BUILD_TYPE=Debug, and FALKON_PREFIX is now -DCMAKE_INSTALL_PREFIX
# SHARE_FOLDER is now auto-detected, so is USE_LIBPATH.
# Mandatory: Qt5
set(QT_MIN_VERSION "5.8.0")
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Widgets Network Sql QuickWidgets PrintSupport WebEngineWidgets WebChannel)
if (NOT DISABLE_DBUS)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS DBus)
endif()
# Optional: KF5
set(KF5_MIN_VERSION "5.27.0")
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Wallet)
if (UNIX AND NOT APPLE AND NOT NO_X11)
find_package(X11)
if (X11_FOUND)
add_definitions(-DQZ_WS_X11)
endif()
find_package(XCB COMPONENTS XCB)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS X11Extras)
endif()
if (WIN32)
add_definitions(-DW7API)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS WinExtras)
# TODO set var for LIBS += User32.lib Ole32.lib Shell32.lib ShlWapi.lib Gdi32.lib ComCtl32.lib ?
endif()
# Git revision
if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
find_package(Git QUIET)
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_REVISION
)
string(REGEX REPLACE "\n" "" GIT_REVISION "${GIT_REVISION}")
add_definitions(-DGIT_REVISION=\"${GIT_REVISION}\")
else()
message(STATUS "Git revision could not be determined")
endif()
endif()
# Finally, go into the src subdir
add_subdirectory(src)