mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-24 19:02:53 +00:00
146 lines
4.6 KiB
CMake
146 lines
4.6 KiB
CMake
# Main CMake file for building Kuassel IRC
|
|
#
|
|
# See INSTALL for possible CMake options (or read the code, Luke)
|
|
#####################################################################
|
|
|
|
# General setup
|
|
#####################################################################
|
|
|
|
project(KuasselIRC)
|
|
|
|
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
|
find_package(KDE4 4.19.0 REQUIRED)
|
|
include(KDE4Defaults)
|
|
include_directories(${KDE4_INCLUDES})
|
|
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
|
|
endif()
|
|
|
|
# Version
|
|
set(QUASSEL_VERSION_STRING "0.12")
|
|
|
|
# General conveniences
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
# Tell CMake about or own modules
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
# Include various CMake modules...
|
|
include(CMakePushCheckState)
|
|
include(CheckFunctionExists)
|
|
include(CheckIncludeFile)
|
|
include(CheckCXXSourceCompiles)
|
|
include(CMakeDependentOption)
|
|
include(FeatureSummary)
|
|
|
|
# ... and our own stuff
|
|
include(QuasselCompileSettings)
|
|
|
|
# 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
|
|
#####################################################################
|
|
|
|
# Find package dependencies
|
|
#
|
|
# Note that you can forcefully disable optional packages
|
|
# using -DCMAKE_DISABLE_FIND_PACKAGE_<PkgName>=TRUE
|
|
#####################################################################
|
|
|
|
macro_optional_find_package(DBusMenuQt)
|
|
set_package_properties(DBusMenuQt PROPERTIES
|
|
DESCRIPTION "Library that provides a Qt implementation of the DBusMenu spec"
|
|
URL "https://github.com/fluxer/libdbusmenu-qt"
|
|
PURPOSE "Required for having a context menu for the D-Bus-based tray icon"
|
|
)
|
|
|
|
macro_optional_find_package(IndicateQt)
|
|
set_package_properties(IndicateQt PROPERTIES
|
|
DESCRIPTION "a library to raise flags on DBus for other components of the desktop to pick up and visualize"
|
|
URL "https://launchpad.net/libindicate-qt/"
|
|
PURPOSE "Provides integration into the Ayatana notification system used by e.g. Ubuntu"
|
|
)
|
|
|
|
macro_optional_find_package(QCA2)
|
|
set_package_properties(QCA2 PROPERTIES
|
|
DESCRIPTION "Qt Cryptographic Architecture"
|
|
URL "https://github.com/fluxer/qca"
|
|
PURPOSE "Required for encryption support"
|
|
)
|
|
|
|
find_package(ZLIB)
|
|
set_package_properties(ZLIB PROPERTIES
|
|
DESCRIPTION "General purpose data compression library"
|
|
URL "http://www.zlib.net"
|
|
PURPOSE "Required for protocol compression"
|
|
TYPE REQUIRED
|
|
)
|
|
|
|
macro_optional_find_package(ExecInfo QUIET)
|
|
set_package_properties(ExecInfo PROPERTIES
|
|
DESCRIPTION "a library for inspecting backtraces"
|
|
PURPOSE "Used for generating backtraces in case of a crash"
|
|
)
|
|
|
|
|
|
# Various checks
|
|
#####################################################################
|
|
|
|
# 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_reset_check_state()
|
|
set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES})
|
|
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_reset_check_state()
|
|
|
|
if (HAVE_SSL)
|
|
add_definitions(-DHAVE_SSL)
|
|
endif()
|
|
add_feature_info("SSL support in Qt" HAVE_SSL "Use secure network connections")
|
|
|
|
# Various settings
|
|
##################
|
|
|
|
# RPATH needs to be set correctly
|
|
# Do this down here, since otherwise KDE wants to handle it itself, and fails
|
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
|
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
|
|
|
|
if(INDICATEQT_FOUND)
|
|
add_definitions(-DXDG_APPS_INSTALL_DIR=${KDE4_XDG_APPS_INSTALL_DIR})
|
|
endif()
|
|
|
|
check_function_exists(umask HAVE_UMASK)
|
|
if(HAVE_UMASK)
|
|
add_definitions(-DHAVE_UMASK)
|
|
endif(HAVE_UMASK)
|
|
|
|
configure_file(version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY)
|
|
|
|
# These variables will be added to the main targets (CORE, QTCLIENT, MONO)
|
|
set(COMMON_DEPS ${RC_WIN32})
|
|
set(CORE_DEPS )
|
|
set(CLIENT_DEPS )
|
|
|
|
# Add needed subdirs - the order is important, since src needs some vars set by other dirs
|
|
add_subdirectory(data)
|
|
add_subdirectory(pics)
|
|
|
|
# Finally, compile the sources
|
|
# We want this after displaying the feature summary to avoid ugly
|
|
# CMake backtraces in case a required Qt5 modules misses
|
|
#####################################################################
|
|
|
|
add_subdirectory(src)
|