CMakeLists.txt 3.72 KB
Newer Older
1 2
project( okteta )

3 4
cmake_minimum_required(VERSION 2.8.11.1)
set(QT_MIN_VERSION "5.2.0")
5 6

find_package(ECM 0.0.8 REQUIRED NO_MODULE)
7

8
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
Stephen Kelly's avatar
Stephen Kelly committed
9 10
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})

11
include(ECMInstallIcons)
12
include(FeatureSummary)
13
include(GenerateExportHeader)
14

Stephen Kelly's avatar
Stephen Kelly committed
15 16 17
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
18

19 20 21 22 23 24 25 26 27 28 29
find_package(Qt5 REQUIRED NO_MODULE
    COMPONENTS
    Core
    Network
    Designer
    PrintSupport
    Script
    ScriptTools
    Widgets
    Xml
)
Alex Richardson's avatar
Alex Richardson committed
30
find_package(Qt5Test QUIET)
31 32 33 34
if (NOT Qt5Test_FOUND)
  message(STATUS "Qt5Test not found, unit tests will not be built.")
endif()

35 36 37 38 39 40 41 42

find_package(KF5 CONFIG REQUIRED
    COMPONENTS
    Bookmarks
    Codecs
    Completion
    ConfigWidgets
    DBusAddons
43
    DocTools
44 45 46 47 48 49 50 51 52 53
    I18n
    KCMUtils
    KIO
    NewStuff
    Parts
    Service
    Solid
    WidgetsAddons
    XmlGui
)
54

Alex Richardson's avatar
Alex Richardson committed
55
if( UNIX )
Alex Richardson's avatar
Alex Richardson committed
56
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x -fno-rtti")
Alex Richardson's avatar
Alex Richardson committed
57 58
endif()

59 60 61 62
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")
63

64 65 66 67 68 69 70 71 72 73 74 75 76 77
# 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 )

78 79 80
# mobile needs
option(OKTETA_MOBILE_UI "Build UI for mobile devices instead of for desktops" FALSE)
if (OKTETA_MOBILE_UI)
81
  find_package(Qt5Quick REQUIRED)
82 83
  add_definitions( -DOKTETA_MOBILE_UI )
endif (OKTETA_MOBILE_UI)
84

85
add_definitions(
86
    -DQT_USE_QSTRINGBUILDER
87 88
    -DQT_NO_CAST_TO_ASCII
    -DQT_NO_CAST_FROM_ASCII
89
    -DQT_NO_CAST_FROM_BYTEARRAY
90 91
)

92
# helper libs
93
add_subdirectory( libs )
94
add_subdirectory( doc )
95

96
set( OKTETALIBS_MAJOR_VERSION 0 )
97 98
set( OKTETALIBS_MINOR_VERSION 9 )
set( OKTETALIBS_PATCHLEVEL_VERSION 0 )
99
set( OKTETALIBS_VERSION "${OKTETALIBS_MAJOR_VERSION}.${OKTETALIBS_MINOR_VERSION}.${OKTETALIBS_PATCHLEVEL_VERSION}" )
100 101 102
set( OKTETALIBS_ABI_VERSION 2 )
set( OKTETALIBS_INCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/okteta ) #${OKTETALIBS_ABI_VERSION} )
set( OKTETALIBS_CCINCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/Okteta ) #${OKTETALIBS_ABI_VERSION} )
103

104 105 106 107
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 )
108

109 110
set( OKTETALIBS_LIB_SOVERSION ${OKTETALIBS_ABI_VERSION} )
set( OKTETALIBS_LIB_VERSION ${OKTETALIBS_VERSION} )
111

112
# Okteta libs
113 114
add_subdirectory( core )
add_subdirectory( gui )
115
add_subdirectory( designer )
116

117
# Okteta Kasten components
118
add_subdirectory( kasten )
119
# special mimetypes
120 121 122
#disable this for now, FindSharedMimeInfo is no longer installed by KF5
#TODO fix this
#add_subdirectory( mimetypes )
123

124
# programs and parts for desktop
125 126
add_subdirectory( parts )
add_subdirectory( program )
127 128

# program for mobile
129
if (Qt5Quick_FOUND AND OKTETA_MOBILE_UI)
130
    macro_optional_add_subdirectory(mobile)
131
endif ()
132

133
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)