CMakeLists.txt 4.6 KB
Newer Older
1
cmake_minimum_required(VERSION 2.8.11.1)
2

3 4
project( okteta )

5 6 7 8 9 10
#copy the way kde-workspace does it

find_package(ECM 0.0.8 REQUIRED NO_MODULE)
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})

11 12 13 14
find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Widgets Script ScriptTools Xml Network PrintSupport)
if (BUILD_TESTING)
  find_package(Qt5Test REQUIRED NO_MODULE)
endif()
15 16 17 18
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) #allow deprecated functions for now

# Load CMake, Compiler and InstallDirs settings from KF5 and the following are already somewhat "done" tier1/tier2 libs from kdelibs:
find_package(KF5 MODULE REQUIRED COMPONENTS CMake Compiler InstallDirs
19
                                            KWidgetsAddons KCoreAddons KConfig KI18n KGuiAddons KDBusAddons KService ItemViews KAuth KCodecs
20 21
                                            KConfigWidgets KWindowSystem KNotifications KIconThemes Sonnet KCompletion 
                                            KTextWidgets XmlGui KBookmarks KDBusAddons KCrash KArchive ItemModels KJobWidgets Solid KWallet KJS
Hrvoje Senjan's avatar
Hrvoje Senjan committed
22
                                            KIO KUnitConversion Kross KParts KCMUtils KPrintUtils
23
                                            )
Alex Richardson's avatar
Alex Richardson committed
24
if( UNIX )
Alex Richardson's avatar
Alex Richardson committed
25
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x -fno-rtti")
Alex Richardson's avatar
Alex Richardson committed
26 27
endif()

28 29
# needed for set_package_properties macro
find_package(KDE4Support REQUIRED NO_MODULE)
Hrvoje Senjan's avatar
Hrvoje Senjan committed
30
find_package(KDELibs4 REQUIRED NO_MODULE) #needed for KDE4Support
31 32

set(CMAKE_POSITION_INDEPENDENT_CODE ON) #this is needed since it is apparently not set by Qt5Config.cmake
33

34
set( CMAKE_INCLUDE_CURRENT_DIR ON )
35 36 37
set( CMAKE_AUTOMOC TRUE )
include_directories( ${KDE4_INCLUDES} )

38 39 40 41 42 43
include(FeatureSummary)

find_package(QCA2)
set_package_properties(QCA2 PROPERTIES DESCRIPTION "Qt Cryptographic Architecture"
                       URL "http://delta.affinix.com/qca" TYPE OPTIONAL
                       PURPOSE "Needed for most of the algorithms of the checksum tool")
44

45 46 47 48 49 50 51 52 53 54 55 56 57 58
# control build scope
# TODO: examples and templates not internal need headers and libs as installed
# so they can be only build after the installation was done
# How to handle this best, as in: they are per default always build after an install?
# set( KASTEN_BUILD_EXAMPLES  NOT OMIT_EXAMPLES )
# set( OKTETA_BUILD_EXAMPLES  NOT OMIT_EXAMPLES )
set( KASTEN_BUILD_INTERNAL_EXAMPLES  NOT OMIT_INTERNAL_EXAMPLES )
set( OKTETA_BUILD_INTERNAL_EXAMPLES  NOT OMIT_INTERNAL_EXAMPLES )

# set( KASTEN_BUILD_TEMPLATES NOT SKIPTEMPLATES )
# set( OKTETA_BUILD_TEMPLATES NOT SKIPTEMPLATES )
set( KASTEN_BUILD_INTERNAL_TEMPLATES NOT OMIT_INTERNAL_TEMPLATES )
set( OKTETA_BUILD_INTERNAL_TEMPLATES NOT OMIT_INTERNAL_TEMPLATES )

59 60 61
# mobile needs
option(OKTETA_MOBILE_UI "Build UI for mobile devices instead of for desktops" FALSE)
if (OKTETA_MOBILE_UI)
62
  find_package(Qt5Quick REQUIRED)
63 64
  add_definitions( -DOKTETA_MOBILE_UI )
endif (OKTETA_MOBILE_UI)
65

66 67 68
add_definitions(
    -DQT_USE_FAST_CONCATENATION
    -DQT_USE_FAST_OPERATOR_PLUS
69 70 71 72 73 74 75 76
)
# switch between no cast to/from ascii and a warning about it
if (KDE4_ASCII_CAST)
add_definitions(
    -DQT_ASCII_CAST_WARNINGS
)
else (KDE4_ASCII_CAST)
add_definitions(
77 78 79
    -DQT_NO_CAST_TO_ASCII
    -DQT_NO_CAST_FROM_ASCII
)
80
endif (KDE4_ASCII_CAST)
81

82
# helper libs
83
add_subdirectory( libs )
84
add_subdirectory( doc )
85

86
set( OKTETALIBS_MAJOR_VERSION 0 )
87
set( OKTETALIBS_MINOR_VERSION 8 )
88
set( OKTETALIBS_PATCHLEVEL_VERSION 1 )
89 90
set( OKTETALIBS_VERSION "${OKTETALIBS_MAJOR_VERSION}.${OKTETALIBS_MINOR_VERSION}.${OKTETALIBS_PATCHLEVEL_VERSION}" )
set( OKTETALIBS_ABI_VERSION 1 )
91
set( OKTETALIBS_INCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/okteta${OKTETALIBS_ABI_VERSION} )
92
set( OKTETALIBS_CCINCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/KDE/Okteta${OKTETALIBS_ABI_VERSION} )
93

94 95 96 97
set( oktetacore_LIB  oktetacore )
set( oktetagui_LIB   oktetagui )
set( oktetacore_LIB_NAME  okteta${OKTETALIBS_ABI_VERSION}core )
set( oktetagui_LIB_NAME   okteta${OKTETALIBS_ABI_VERSION}gui )
98

99 100
set( OKTETALIBS_LIB_SOVERSION ${OKTETALIBS_ABI_VERSION} )
set( OKTETALIBS_LIB_VERSION ${OKTETALIBS_VERSION} )
101

102
# Okteta libs
103 104
add_subdirectory( core )
add_subdirectory( gui )
105
add_subdirectory( designer )
106

107
# Okteta Kasten components
108
add_subdirectory( kasten )
109
# special mimetypes
110 111 112
#disable this for now, FindSharedMimeInfo is no longer installed by KF5
#TODO fix this
#add_subdirectory( mimetypes )
113

114
# programs and parts for desktop
115 116
add_subdirectory( parts )
add_subdirectory( program )
117 118

# program for mobile
119
if (Qt5Quick_FOUND AND OKTETA_MOBILE_UI)
120
    macro_optional_add_subdirectory(mobile)
121
endif ()
122

123
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)