2014-02-08 12:30:02 +01:00
cmake_minimum_required ( VERSION 2.8.12 )
2013-01-30 14:53:19 +01:00
2013-10-22 00:40:17 +02:00
project ( Plasma )
2013-02-07 20:09:05 +01:00
2013-01-30 14:53:19 +01:00
# Make CPack available to easy generate binary packages
include ( CPack )
2013-02-07 20:09:05 +01:00
include ( FeatureSummary )
2014-01-07 20:36:06 +01:00
include ( GenerateExportHeader )
2013-02-07 20:09:05 +01:00
2013-01-30 14:53:19 +01:00
################# set KDE specific information #################
2014-02-08 12:30:02 +01:00
find_package ( ECM 0.0.10 REQUIRED NO_MODULE )
2013-10-31 09:30:24 +01:00
set ( CMAKE_MODULE_PATH ${ ECM_MODULE_PATH } ${ ECM_KDE_MODULE_DIR } )
include ( KDEInstallDirs )
include ( KDECMakeSettings )
include ( KDECompilerSettings )
2013-01-30 14:53:19 +01:00
if ( KDE_PLATFORM_FEATURE_DISABLE_DEPRECATED )
set ( KDE_NO_DEPRECATED TRUE )
set ( CMAKE_AUTOMOC_MOC_OPTIONS "-DKDE_NO_DEPRECATED" )
2013-02-08 00:56:43 +01:00
endif ( )
2013-01-30 14:53:19 +01:00
############### Load the CTest options ###############
# CTestCustom.cmake has to be in the CTEST_BINARY_DIR.
# in the KDE build system, this is the same as CMAKE_BINARY_DIR.
configure_file ( ${ CMAKE_SOURCE_DIR } /CTestCustom.cmake ${ CMAKE_BINARY_DIR } /CTestCustom.cmake COPYONLY )
2013-09-11 11:15:29 +02:00
################# Enable C++0x (still too early for -std=c++11) features for clang and gcc #################
2013-06-23 10:22:37 +02:00
if ( UNIX )
2013-08-26 21:22:06 +02:00
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x")
add_definitions ( "-Wall -std=c++0x" )
2013-06-23 10:22:37 +02:00
endif ( )
2013-01-30 14:53:19 +01:00
################# now find all used packages #################
2013-06-21 01:38:28 +02:00
set ( QT_MIN_VERSION "5.2.0" )
2014-02-08 18:48:40 +01:00
set ( KF5_VERSION "4.96.0" )
2013-01-30 14:53:19 +01:00
2014-02-12 14:00:54 +01:00
find_package ( Qt5 REQUIRED NO_MODULE COMPONENTS Quick Sql UiTools Qml Widgets Svg Declarative Script Test PrintSupport )
2013-10-22 00:40:17 +02:00
2014-02-12 15:03:29 +01:00
find_package ( KF5Activities ${ KF5_VERSION } REQUIRED )
find_package ( KF5Archive ${ KF5_VERSION } REQUIRED )
find_package ( KF5Auth ${ KF5_VERSION } REQUIRED )
find_package ( KF5Bookmarks ${ KF5_VERSION } REQUIRED )
find_package ( KF5Codecs ${ KF5_VERSION } REQUIRED )
find_package ( KF5Completion ${ KF5_VERSION } REQUIRED )
find_package ( KF5Config ${ KF5_VERSION } REQUIRED )
find_package ( KF5ConfigWidgets ${ KF5_VERSION } REQUIRED )
find_package ( KF5CoreAddons ${ KF5_VERSION } REQUIRED )
find_package ( KF5Crash ${ KF5_VERSION } REQUIRED )
find_package ( KF5DBusAddons ${ KF5_VERSION } REQUIRED )
find_package ( KF5DNSSD ${ KF5_VERSION } REQUIRED )
find_package ( KF5Declarative ${ KF5_VERSION } REQUIRED )
find_package ( KF5GlobalAccel ${ KF5_VERSION } REQUIRED )
find_package ( KF5GuiAddons ${ KF5_VERSION } REQUIRED )
find_package ( KF5I18n ${ KF5_VERSION } REQUIRED )
find_package ( KF5IconThemes ${ KF5_VERSION } REQUIRED )
find_package ( KF5IdleTime ${ KF5_VERSION } REQUIRED )
find_package ( KF5ItemModels ${ KF5_VERSION } REQUIRED )
find_package ( KF5ItemViews ${ KF5_VERSION } REQUIRED )
find_package ( KF5JS ${ KF5_VERSION } REQUIRED )
find_package ( KF5JobWidgets ${ KF5_VERSION } REQUIRED )
find_package ( KF5KIO ${ KF5_VERSION } REQUIRED )
find_package ( KF5Kross ${ KF5_VERSION } REQUIRED )
find_package ( KF5Notifications ${ KF5_VERSION } REQUIRED )
find_package ( KF5Parts ${ KF5_VERSION } REQUIRED )
find_package ( KF5Service ${ KF5_VERSION } REQUIRED )
find_package ( KF5Solid ${ KF5_VERSION } REQUIRED )
find_package ( KF5Sonnet ${ KF5_VERSION } REQUIRED )
find_package ( KF5TextWidgets ${ KF5_VERSION } REQUIRED )
find_package ( KF5ThreadWeaver ${ KF5_VERSION } REQUIRED )
find_package ( KF5UnitConversion ${ KF5_VERSION } REQUIRED )
find_package ( KF5Wallet ${ KF5_VERSION } REQUIRED )
find_package ( KF5WidgetsAddons ${ KF5_VERSION } REQUIRED )
find_package ( KF5WindowSystem ${ KF5_VERSION } REQUIRED )
find_package ( KF5XmlGui ${ KF5_VERSION } REQUIRED )
2013-10-23 15:45:25 +02:00
2013-01-30 14:53:19 +01:00
#optional features
2013-02-08 01:03:29 +01:00
find_package ( X11 MODULE )
2014-02-12 14:00:54 +01:00
set_package_properties ( X11 PROPERTIES DESCRIPTION "X11 libraries"
U R L " h t t p : / / w w w . x . o r g "
T Y P E O P T I O N A L
)
2014-01-20 10:11:58 +01:00
find_package ( XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE )
2013-09-04 07:14:24 +02:00
set_package_properties ( XCB PROPERTIES DESCRIPTION "X protocol C-language Binding"
U R L " h t t p : / / x c b . f r e e d e s k t o p . o r g "
2014-02-12 14:00:54 +01:00
T Y P E O P T I O N A L
2013-09-04 07:14:24 +02:00
)
if ( X11_FOUND AND XCB_XCB_FOUND )
set ( HAVE_X11 1 )
2014-02-12 14:00:54 +01:00
find_package ( Qt5 REQUIRED NO_MODULE COMPONENTS X11Extras )
2013-01-30 14:53:19 +01:00
#X11_Xrender discovery is done by FindX11
add_feature_info ( "X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED" )
2013-02-07 20:09:05 +01:00
add_feature_info ( "X Screensaver Extension (libXss)" X11_Xscreensaver_FOUND "Support for KIdleTime (fallback mode)" )
add_feature_info ( "X Sync Extension (libXext)" X11_XSync_FOUND "Efficient operation of KIdleTime. STRONGLY RECOMMENDED" )
2013-01-30 14:53:19 +01:00
2013-02-07 20:09:05 +01:00
if ( NOT X11_XSync_FOUND AND NOT X11_Xscreensaver_FOUND )
2013-01-30 14:53:19 +01:00
message ( FATAL_ERROR "\nNeither the XSync (libXext) nor XScreensaver (libXss) development package was found.\nPlease install one of them (XSync is recommended)\n" )
2013-02-07 20:09:05 +01:00
endif ( )
2013-01-30 14:53:19 +01:00
#X11 Session Management (SM) is required
#X11_SM_FOUND is set in FindX11, which is required by KDE4Internal
if ( UNIX AND NOT X11_SM_FOUND )
message ( FATAL_ERROR "\nThe X11 Session Management (SM) development package could not be found.\nPlease install libSM.\n" )
2013-02-08 00:56:43 +01:00
endif ( )
endif ( )
2013-01-30 14:53:19 +01:00
2013-02-08 01:03:29 +01:00
find_package ( OpenSSL MODULE )
2013-02-05 22:17:07 +01:00
set_package_properties ( OpenSSL PROPERTIES DESCRIPTION "Support for secure network communications (SSL and TLS)"
U R L " h t t p : / / o p e n s s l . o r g "
T Y P E R E C O M M E N D E D
P U R P O S E " K D E u s e s O p e n S S L f o r t h e b u l k o f s e c u r e c o m m u n i c a t i o n s , i n c l u d i n g s e c u r e w e b b r o w s i n g v i a H T T P S "
)
2013-02-05 16:33:51 +01:00
#FIXME: when we have a qca for qt5, reenable
2013-11-11 18:40:19 +01:00
# find_package(QCA2 2.0.0 MODULE)
2013-02-05 22:17:07 +01:00
set_package_properties ( QCA2 PROPERTIES DESCRIPTION "Support for remote plasma widgets"
U R L " h t t p : / / d e l t a . a f f i n i x . c o m / q c a "
T Y P E O P T I O N A L
)
2013-01-30 14:53:19 +01:00
2013-07-26 18:01:10 +02:00
#find_package(DBusMenuQt MODULE)
#set_package_properties(DBusMenuQt PROPERTIES DESCRIPTION "Support for notification area menus via the DBusMenu protocol"
#URL "https://launchpad.net/libdbusmenu-qt"
#TYPE REQUIRED
#)
2013-01-30 14:53:19 +01:00
2014-01-17 19:16:00 +01:00
2013-07-14 18:17:30 +02:00
2013-08-18 10:01:44 +02:00
find_package ( OpenGL )
set_package_properties ( OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries"
U R L " h t t p : / / w w w . o p e n g l . o r g "
T Y P E O P T I O N A L
)
if ( OPENGL_FOUND )
2013-10-22 00:40:17 +02:00
set ( HAVE_GLX ${ HAVE_X11 } )
2013-08-18 10:01:44 +02:00
else ( )
set ( HAVE_GLX 0 )
endif ( )
2013-01-30 14:53:19 +01:00
#########################################################################
2014-02-08 12:30:02 +01:00
add_definitions ( -DQT_DISABLE_DEPRECATED_BEFORE=0 )
#add_definitions(-Wno-deprecated)
2013-01-30 14:53:19 +01:00
add_definitions ( -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS )
add_definitions ( -DQT_NO_URL_CAST_FROM_STRING )
2013-02-08 00:50:29 +01:00
remove_definitions ( -DQT_NO_CAST_FROM_ASCII -DQT_STRICT_ITERATORS -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_KEYWORDS )
2013-12-11 13:53:09 +01:00
include ( KF5PlasmaMacros.cmake )
2013-01-30 14:53:19 +01:00
################# configure checks and create the configured files #################
# now create config headers
configure_file ( config-prefix.h.cmake ${ CMAKE_CURRENT_BINARY_DIR } /config-prefix.h )
configure_file ( config-compiler.h.cmake ${ CMAKE_CURRENT_BINARY_DIR } /config-compiler.h )
2013-05-03 01:14:19 +02:00
################ create PlasmaConfig.cmake and install it ###########################
# create a Config.cmake and a ConfigVersion.cmake file and install them
include ( CMakePackageConfigHelpers )
include ( ECMSetupVersion )
2014-02-08 12:30:02 +01:00
ecm_setup_version ( ${ KF5_VERSION }
V A R I A B L E _ P R E F I X P L A S M A
V E R S I O N _ H E A D E R " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / p l a s m a _ v e r s i o n . h "
P A C K A G E _ V E R S I O N _ F I L E " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / K F 5 P l a s m a C o n f i g V e r s i o n . c m a k e "
)
set ( CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5Plasma" )
2013-05-03 01:14:19 +02:00
configure_package_config_file (
2013-12-11 13:53:09 +01:00
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / K F 5 P l a s m a C o n f i g . c m a k e . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / K F 5 P l a s m a C o n f i g . c m a k e "
2013-05-03 01:14:19 +02:00
I N S T A L L _ D E S T I N A T I O N $ { C M A K E C O N F I G _ I N S T A L L _ D I R }
P A T H _ V A R S I N C L U D E _ I N S T A L L _ D I R C M A K E _ I N S T A L L _ P R E F I X
)
install ( FILES
2013-12-11 13:53:09 +01:00
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / K F 5 P l a s m a C o n f i g . c m a k e "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / K F 5 P l a s m a C o n f i g V e r s i o n . c m a k e "
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / K F 5 P l a s m a M a c r o s . c m a k e "
2013-05-03 01:14:19 +02:00
D E S T I N A T I O N " $ { C M A K E C O N F I G _ I N S T A L L _ D I R } "
C O M P O N E N T D e v e l
)
2013-06-13 01:43:35 +02:00
2014-02-08 12:30:02 +01:00
install ( EXPORT KF5PlasmaTargets
D E S T I N A T I O N " $ { C M A K E C O N F I G _ I N S T A L L _ D I R } "
F I L E K F 5 P l a s m a T a r g e t s . c m a k e
N A M E S P A C E K F 5 : :
C O M P O N E N T D e v e l )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /plasma_version.h
D E S T I N A T I O N $ { I N C L U D E _ I N S T A L L _ D I R } C O M P O N E N T D e v e l )
2014-02-11 21:19:47 +01:00
# make plasma_version.h available
include_directories ( ${ CMAKE_CURRENT_BINARY_DIR } )
2013-01-30 14:53:19 +01:00
################# list the subdirectories #################
2013-05-03 03:16:07 +02:00
add_subdirectory ( src )
2013-09-04 11:34:00 +02:00
add_subdirectory ( desktoptheme )
add_subdirectory ( examples )
2014-02-10 15:17:07 +01:00
add_subdirectory ( autotests )
add_subdirectory ( tests )
2013-01-30 14:53:19 +01:00
feature_summary ( WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES )