# General setup
#####################################################################
-cmake_minimum_required(VERSION 2.8.9) # You'll need at least 2.8.12 for KDE Frameworks integration
project(QuasselIRC)
# Versions
set(QUASSEL_MAJOR 0)
set(QUASSEL_MINOR 12)
-set(QUASSEL_PATCH 0)
-set(QUASSEL_VERSION_STRING "0.12-pre")
+set(QUASSEL_PATCH 2)
+set(QUASSEL_VERSION_STRING "0.12.2")
+
+# We want to know CMake's version for debug reasons
+message(STATUS "Using CMake ${CMAKE_VERSION}")
# Tell CMake about or own modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
include(QuasselCompileSettings)
include(QuasselMacros)
-# Setting COMPILE_DEFINITIONS_<CONFIG> is deprecated since CMake 3.0 in favor of generator expressions.
-# These have existed since CMake 2.8.10; until we depend on that, we have to explicitly enable the old policy.
-if (CMAKE_MAJOR_VERSION GREATER 2)
- cmake_policy(SET CMP0043 OLD)
-endif()
# Options and variables that can be set on the command line
#####################################################################
endif()
+# Setup CMake
+#####################################################################
+
+if (USE_QT5 AND WITH_KDE)
+ cmake_minimum_required(VERSION 2.8.12)
+else()
+ cmake_minimum_required(VERSION 2.8.9)
+endif()
+
+# Setting COMPILE_DEFINITIONS_<CONFIG> is deprecated since CMake 3.0 in favor of generator expressions.
+# These have existed since CMake 2.8.10; until we depend on that, we have to explicitly enable the old policy.
+if (CMAKE_MAJOR_VERSION GREATER 2)
+ cmake_policy(SET CMP0043 OLD)
+endif()
+
+
# Simplify later checks
#####################################################################
add_definitions(-DHAVE_QT5)
else()
message(STATUS "Building for Qt4...")
- if (BUILD_GUI)
- set(QT_MIN_VERSION "4.6.0")
- else()
- set(QT_MIN_VERSION "4.4.0")
- endif()
+ set(QT_MIN_VERSION "4.8.0")
# Select a Qt installation here, if you don't want to use system Qt
if(QT_PATH)
PURPOSE "Required for audio notifications"
)
- find_package(LibsnoreQt5 QUIET)
+ find_package(LibsnoreQt5 0.7.0 QUIET)
set_package_properties(LibsnoreQt5 PROPERTIES TYPE OPTIONAL
- URL "https://github.com/TheOneRing/Snorenotify"
+ URL "https://projects.kde.org/projects/playground/libs/snorenotify"
DESCRIPTION "a cross-platform notification framework"
PURPOSE "Enable support for the snorenotify framework"
)
+ if(LibsnoreQt5_FOUND)
+ find_package(LibsnoreSettingsQt5)
+ set_package_properties(LibsnoreSettingsQt5 PROPERTIES TYPE REQUIRED
+ URL "https://projects.kde.org/projects/playground/libs/snorenotify"
+ DESCRIPTION "a cross-platform notification framework"
+ PURPOSE "Enable support for the snorenotify framework"
+ )
+ endif()
+
if (WITH_WEBKIT)
find_package(Qt5WebKit QUIET)
)
endif()
endif()
- add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" Qt5WebKitWidgets_FOUND "Support showing previews for URLs in chat")
+
+ if (WITH_WEBKIT AND Qt5WebKitWidgets_FOUND)
+ set(HAVE_WEBKIT true)
+ endif()
+ add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" HAVE_WEBKIT "Support showing previews for URLs in chat")
# KDE Frameworks
################
endif()
if (WITH_KDE)
- find_package(KF5TextWidgets QUIET)
- set_package_properties(KF5TextWidgets PROPERTIES TYPE REQUIRED
- URL "http://inqlude.org/libraries/ktextwidgets.html"
- DESCRIPTION "framework providing an assortment of widgets for displaying and editing text"
- PURPOSE "Allows to use extra features provided by KDE Frameworks in input widgets"
+ find_package(KF5 COMPONENTS ConfigWidgets CoreAddons Notifications NotifyConfig TextWidgets WidgetsAddons XmlGui QUIET)
+ set_package_properties(KF5 PROPERTIES TYPE REQUIRED
+ URL "http://www.kde.org"
+ DESCRIPTION "KDE Frameworks"
+ PURPOSE "Required for integration into the Plasma desktop"
)
endif()
endif(BUILD_GUI)
+
if (BUILD_CORE)
find_package(Qt5Script QUIET)
set_package_properties(Qt5Script PROPERTIES TYPE REQUIRED
DESCRIPTION "the database support module for Qt5"
)
- # While QCA2 seems to support Qt5, it is not actually co-installable or distinguishable from the Qt4 version...
- # In order to avoid linking against the Qt4 version (which is probably the one installed), disable this for now
- #find_package(QCA2 QUIET)
- #set_package_properties(QCA2 PROPERTIES TYPE RECOMMENDED
- # URL "https://projects.kde.org/projects/kdesupport/qca"
- # DESCRIPTION "Qt Cryptographic Architecture"
- # PURPOSE "Required for encryption support"
- #)
+ find_package(QCA2-QT5)
+ set_package_properties(QCA2-QT5 PROPERTIES TYPE RECOMMENDED
+ URL "https://projects.kde.org/projects/kdesupport/qca"
+ DESCRIPTION "Qt Cryptographic Architecture"
+ PURPOSE "Required for encryption support"
+ )
endif(BUILD_CORE)
DESCRIPTION "contains tools for handling translation files"
PURPOSE "Required for having translations"
)
+
# Some Qt5 versions do not define a target for lconvert, so we need to find it ourselves
if (Qt5LinguistTools_FOUND)
if (NOT TARGET Qt5::lconvert AND TARGET Qt5::lrelease)
DESCRIPTION "a multimedia abstraction library"
PURPOSE "Required for audio notifications"
)
-
- find_package(Libsnore QUIET)
- set_package_properties(Libsnore PROPERTIES TYPE OPTIONAL
- URL "https://github.com/TheOneRing/Snorenotify"
- DESCRIPTION "a cross-platform notification framework"
- PURPOSE "Enable support for the snorenotify framework"
- )
endif(WITH_KDE)
find_package(IndicateQt QUIET)
)
endif()
+# Check for SSL support in Qt
+# As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile
+# a small test program checking the defines. This works for both Qt4 and Qt5.
+cmake_push_check_state(RESET)
+set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS})
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
+check_cxx_source_compiles("
+ #include \"qglobal.h\"
+ #if defined QT_NO_SSL
+ # error \"No SSL support\"
+ #endif
+ int main() {}"
+ HAVE_SSL)
+cmake_pop_check_state()
# Additional compile settings
#####################################################################
add_definitions(-U__STRICT_ANSI__)
endif()
+# Sanitize compiler flags - old versions of KDE set -ansi, which breaks -std=c++11
+if (CMAKE_COMPILER_IS_GNUCXX)
+ string(REPLACE "-ansi" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+endif()
+
# Setup KDE / KDE Frameworks
#####################################################################
endif()
endif()
-# Check for SSL support in Qt
-# As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile
-# a small test program checking the defines. This works for both Qt4 and Qt5.
-cmake_push_check_state(RESET)
-set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS})
-check_cxx_source_compiles("
- #include \"qglobal.h\"
- #if defined QT_NO_OPENSSL || defined QT_NO_SSL
- # error \"No SSL support\"
- #endif
- int main() {}"
- HAVE_SSL)
-cmake_pop_check_state()
-
if (HAVE_SSL)
add_definitions(-DHAVE_SSL)
endif()
# If not in a Git repo try to read GIT_HEAD and GIT_DESCRIBE from
# enviroment
if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
- if (ENV_GIT_HEAD)
- set(GIT_HEAD ${ENV_GIT_HEAD})
+ if (DEFINED ENV{GIT_HEAD})
+ set(GIT_HEAD $ENV{GIT_HEAD})
endif ()
- if (ENV_GIT_DESCRIBE)
- set(GIT_DESCRIBE ${ENV_GIT_DESCRIBE})
+ if (DEFINED ENV{GIT_DESCRIBE})
+ set(GIT_DESCRIBE $ENV{GIT_DESCRIBE})
endif()
endif()