summaryrefslogtreecommitdiff
path: root/qt4/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'qt4/CMakeLists.txt')
-rw-r--r--qt4/CMakeLists.txt229
1 files changed, 229 insertions, 0 deletions
diff --git a/qt4/CMakeLists.txt b/qt4/CMakeLists.txt
new file mode 100644
index 000000000..2b0787f8c
--- /dev/null
+++ b/qt4/CMakeLists.txt
@@ -0,0 +1,229 @@
+project(TelepathyQt4)
+
+cmake_minimum_required(VERSION 2.6)
+
+# CMake policies are used for backwards compatibilty. Setting a policy to a behavior lets newer
+# CMake versions where some behaviors changed behave in a way or another. In our specific case,
+# From CMake's documentation:
+#
+# In CMake 2.6.2 and below, CMake Policy settings in scripts loaded by
+# the include() and find_package() commands would affect the includer.
+# Explicit invocations of cmake_policy(PUSH) and cmake_policy(POP) were
+# required to isolate policy changes and protect the includer. While
+# some scripts intend to affect the policies of their includer, most do
+# not. In CMake 2.6.3 and above, include() and find_package() by
+# default PUSH and POP an entry on the policy stack around an included
+# script, but provide a NO_POLICY_SCOPE option to disable it. This
+# policy determines whether or not to imply NO_POLICY_SCOPE for
+# compatibility. The OLD behavior for this policy is to imply
+# NO_POLICY_SCOPE for include() and find_package() commands. The NEW
+# behavior for this policy is to allow the commands to do their default
+# cmake_policy PUSH and POP.
+#
+# This policy was introduced in CMake version 2.6.3. CMake version
+# 2.8.2 warns when the policy is not set and uses OLD behavior. Use the
+# cmake_policy command to set it to OLD or NEW explicitly.
+#
+# Whenever our cmake_minimum_required version bumps up to 2.7 or 2.6.3, this policy setting can
+# hence be removed.
+if(POLICY CMP0011)
+ cmake_policy(SET CMP0011 NEW)
+endif(POLICY CMP0011)
+
+# Making releases:
+# set the new version number:
+# odd minor -> development series
+# even minor -> stable series
+# increment micro for each release within a series
+# set nano_version to 0
+# make the release, tag it
+# set nano_version to 1
+set(TP_QT4_MAJOR_VERSION 0)
+set(TP_QT4_MINOR_VERSION 8)
+set(TP_QT4_MICRO_VERSION 9999)
+set(TP_QT4_NANO_VERSION 1)
+
+# This value contains the library's SOVERSION. This value is to be increased everytime an API/ABI break
+# occurs, and will be used for the SOVERSION of the generated shared libraries.
+set(TP_QT4_ABI_VERSION 1)
+# This variable is used for the library's long version. It is generated dynamically, so don't change its
+# value! Change TP_QT4_ABI_VERSION and TP_QT4_*_VERSION instead.
+if (${TP_QT4_NANO_VERSION} EQUAL 0)
+ set(TP_QT4_LIBRARY_VERSION ${TP_QT4_ABI_VERSION}.${TP_QT4_MAJOR_VERSION}.${TP_QT4_MINOR_VERSION}.${TP_QT4_MICRO_VERSION})
+else (${TP_QT4_NANO_VERSION} EQUAL 0)
+ set(TP_QT4_LIBRARY_VERSION ${TP_QT4_ABI_VERSION}.${TP_QT4_MAJOR_VERSION}.${TP_QT4_MINOR_VERSION}.${TP_QT4_MICRO_VERSION}.${TP_QT4_NANO_VERSION})
+endif (${TP_QT4_NANO_VERSION} EQUAL 0)
+
+set(PACKAGE_NAME telepathy-qt4)
+
+if (${TP_QT4_NANO_VERSION} EQUAL 0)
+ set(PACKAGE_VERSION ${TP_QT4_MAJOR_VERSION}.${TP_QT4_MINOR_VERSION}.${TP_QT4_MICRO_VERSION})
+else (${TP_QT4_NANO_VERSION} EQUAL 0)
+ set(PACKAGE_VERSION ${TP_QT4_MAJOR_VERSION}.${TP_QT4_MINOR_VERSION}.${TP_QT4_MICRO_VERSION}.${TP_QT4_NANO_VERSION})
+endif (${TP_QT4_NANO_VERSION} EQUAL 0)
+
+# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is
+# checked
+set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
+
+# Default build type is RelWithDebInfo for release versions and Debug for developement
+# versions
+if(NOT CMAKE_BUILD_TYPE)
+ if(TP_QT4_NANO_VERSION EQUAL 0)
+ set(CMAKE_BUILD_TYPE RelWithDebInfo)
+ else(TP_QT4_NANO_VERSION EQUAL 0)
+ set(CMAKE_BUILD_TYPE Debug)
+ endif(TP_QT4_NANO_VERSION EQUAL 0)
+endif(NOT CMAKE_BUILD_TYPE)
+
+# This file contains all the needed initialization macros
+include(TelepathyDefaults)
+
+# This file contains all the tpqt4 macros used in the buildsystem
+include(TpQt4Macros)
+
+include(MacroLogFeature)
+
+# external dependencies
+
+# Required dependencies
+# Find qt4 version >= 4.5
+set (QT_MIN_VERSION "4.6.0")
+find_package(Qt4 REQUIRED)
+
+# The doxygen macro requires Qt to have been looked up to enable crosslinking
+include(Doxygen)
+
+include_directories(${CMAKE_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${QT_INCLUDES})
+
+add_definitions(-DQT_NO_CAST_FROM_ASCII)
+
+set(ENABLE_DEBUG_OUTPUT ON CACHE BOOL "If activated, compiles support for printing debug output to stderr")
+if (ENABLE_DEBUG_OUTPUT)
+ add_definitions(-DENABLE_DEBUG)
+endif (ENABLE_DEBUG_OUTPUT)
+
+# Check for Qt4 Glib support
+include(CheckCXXSourceCompiles)
+set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES})
+set(CMAKE_REQUIRED_DEFINITIONS "")
+set(CMAKE_REQUIRED_FLAGS "")
+
+CHECK_CXX_SOURCE_COMPILES("
+#include <QtCore/QtGlobal>
+int main()
+{
+#if defined(QT_NO_GLIB)
+#error \"Qt was compiled with Glib disabled\"
+#endif
+return 0;
+}"
+QT4_GLIB_SUPPORT)
+macro_log_feature(QT4_GLIB_SUPPORT "Qt4 Glib Support"
+ "QtCore library using Glib's main event loop"
+ "http://qt.nokia.com/" FALSE ""
+ "Needed, together with Telepathy-Glib, to build most of the unit tests")
+
+# Find python version >= 2.5
+find_package(PythonLibrary REQUIRED)
+set(REQUIRED_PY 2.5)
+if(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
+ message(STATUS "Python ${PYTHON_SHORT_VERSION} found")
+else(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
+ message(SEND_ERROR "Python >= ${REQUIRED_PY} is required")
+endif(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
+
+# Check for dbus-python
+execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import dbus.mainloop.glib"
+ RESULT_VARIABLE PYTHON_DBUS_RESULT)
+if(PYTHON_DBUS_RESULT EQUAL 0)
+ set(HAVE_TEST_PYTHON 1)
+else(PYTHON_DBUS_RESULT EQUAL 0)
+ set(HAVE_TEST_PYTHON 0)
+endif(PYTHON_DBUS_RESULT EQUAL 0)
+macro_log_feature(HAVE_TEST_PYTHON "dbus-python"
+ "GLib-based Python DBus support"
+ "http://www.python.org/" FALSE ""
+ "Needed to build some additional unit tests")
+
+# Find GLib2, GObject, DBus and LibXml2
+# Those are needed for the insane include dir dependency hell
+find_package(GLIB2)
+find_package(GObject)
+find_package(GIO)
+find_package(GIOUnix)
+find_package(DBus)
+find_package(DBusGLib)
+find_package(LibXml2)
+
+# Find tp-farsight
+set(TELEPATHY_FARSIGHT_MIN_VERSION "0.0.4")
+find_package(TelepathyFarsight)
+macro_log_feature(TELEPATHYFARSIGHT_FOUND "Telepathy-Farsight"
+ "A Framework for dealing with audio/video conferencing protocols"
+ "http://farsight.freedesktop.org/wiki/" FALSE "0.0.4"
+ "Needed, together with GStreamer, to build telepathy-qt4-farsight and some additional examples")
+
+# Find GStreamer
+find_package(GStreamer)
+macro_log_feature(GSTREAMER_FOUND "GStreamer"
+ "An open source multimedia framework"
+ "Needed, together with Tp-Farsight, to build telepathy-qt4-farsight and some additional examples"
+ "http://www.gstreamer.net/" FALSE)
+
+# Build TelepathyQt4-Farsight only if GStreamer, TelepathyFarsight and all of their dependencies were found
+if (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND)
+ set (FARSIGHT_COMPONENTS_FOUND 1)
+else (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND)
+ set (FARSIGHT_COMPONENTS_FOUND 0)
+endif (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND)
+
+# Find telepathy-glib
+set(TELEPATHY_GLIB_MIN_VERSION 0.15.1)
+find_package(TelepathyGlib)
+macro_log_feature(TELEPATHYGLIB_FOUND "Telepathy-glib"
+ "Glib bindings for Telepathy"
+ "http://telepathy.freedesktop.org/" FALSE "0.15.1"
+ "Needed, together with Qt Glib integration, to build most of the unit tests")
+
+find_program(GLIB_GENMARSHAL glib-genmarshal)
+
+# Enable glib-based tests only if Qt4 has GLib support and Telepathy-glib was found
+if(QT4_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
+ set(ENABLE_TP_GLIB_TESTS 1)
+ if(GIO_FOUND AND GIOUNIX_FOUND)
+ set(ENABLE_TP_GLIB_GIO_TESTS 1)
+ else(GIO_FOUND AND GIOUNIX_FOUND)
+ set(ENABLE_TP_GLIB_GIO_TESTS 0)
+ endif(GIO_FOUND AND GIOUNIX_FOUND)
+else(QT4_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
+ set(ENABLE_TP_GLIB_TESTS 0)
+ set(ENABLE_TP_GLIB_GIO_TESTS 0)
+endif(QT4_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
+
+# Add the source subdirectories
+add_subdirectory(TelepathyQt4)
+add_subdirectory(examples)
+add_subdirectory(tests)
+add_subdirectory(tools)
+
+# Generate config.h and config-version.h
+configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h)
+configure_file(${CMAKE_SOURCE_DIR}/config-version.h.in ${CMAKE_BINARY_DIR}/config-version.h)
+
+# Create the uninstall target
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY)
+
+add_custom_target(uninstall
+ "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+
+# Display the feature log
+macro_display_feature_log()
+
+# Always keep it last: CPack definitions file
+include(TelepathyDist)