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

3 4
project( okteta )

5 6 7 8
#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
Stephen Kelly's avatar
Stephen Kelly committed
9 10 11 12 13
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})

include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
14

Alex Richardson's avatar
Alex Richardson committed
15
find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Widgets Script ScriptTools Xml Network Designer PrintSupport)
16 17 18
if (BUILD_TESTING)
  find_package(Qt5Test REQUIRED NO_MODULE)
endif()
19 20
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) #allow deprecated functions for now

Alex Richardson's avatar
Alex Richardson committed
21 22 23
find_package(KF5 CONFIG REQUIRED COMPONENTS NewStuff KCMUtils PrintUtils Codecs I18n ConfigWidgets
                                            KCMUtils Bookmarks Completion XmlGui KIO Parts
                                            WidgetsAddons Service Solid KDE4Support)
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
set( CMAKE_INCLUDE_CURRENT_DIR ON )
29 30 31
set( CMAKE_AUTOMOC TRUE )
include_directories( ${KDE4_INCLUDES} )

32 33 34 35 36 37
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")
38

39 40 41 42 43 44 45 46 47 48 49 50 51 52
# 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 )

53 54 55
# mobile needs
option(OKTETA_MOBILE_UI "Build UI for mobile devices instead of for desktops" FALSE)
if (OKTETA_MOBILE_UI)
56
  find_package(Qt5Quick REQUIRED)
57 58
  add_definitions( -DOKTETA_MOBILE_UI )
endif (OKTETA_MOBILE_UI)
59

60 61 62
add_definitions(
    -DQT_USE_FAST_CONCATENATION
    -DQT_USE_FAST_OPERATOR_PLUS
63 64 65 66 67 68 69 70
)
# 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(
71 72
    -DQT_NO_CAST_TO_ASCII
    -DQT_NO_CAST_FROM_ASCII
73
    -DQT_NO_CAST_FROM_BYTEARRAY
74
)
75
endif (KDE4_ASCII_CAST)
76

77
# helper libs
78
add_subdirectory( libs )
79
add_subdirectory( doc )
80

81
set( OKTETALIBS_MAJOR_VERSION 0 )
82
set( OKTETALIBS_MINOR_VERSION 8 )
83
set( OKTETALIBS_PATCHLEVEL_VERSION 1 )
84 85
set( OKTETALIBS_VERSION "${OKTETALIBS_MAJOR_VERSION}.${OKTETALIBS_MINOR_VERSION}.${OKTETALIBS_PATCHLEVEL_VERSION}" )
set( OKTETALIBS_ABI_VERSION 1 )
86
set( OKTETALIBS_INCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/okteta${OKTETALIBS_ABI_VERSION} )
87
set( OKTETALIBS_CCINCLUDE_INSTALL_DIR  ${INCLUDE_INSTALL_DIR}/KDE/Okteta${OKTETALIBS_ABI_VERSION} )
88

89 90 91 92
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 )
93

94 95
set( OKTETALIBS_LIB_SOVERSION ${OKTETALIBS_ABI_VERSION} )
set( OKTETALIBS_LIB_VERSION ${OKTETALIBS_VERSION} )
96

97
# Okteta libs
98 99
add_subdirectory( core )
add_subdirectory( gui )
100
add_subdirectory( designer )
101

102
# Okteta Kasten components
103
add_subdirectory( kasten )
104
# special mimetypes
105 106 107
#disable this for now, FindSharedMimeInfo is no longer installed by KF5
#TODO fix this
#add_subdirectory( mimetypes )
108

109
# programs and parts for desktop
110 111
add_subdirectory( parts )
add_subdirectory( program )
112 113

# program for mobile
114
if (Qt5Quick_FOUND AND OKTETA_MOBILE_UI)
115
    macro_optional_add_subdirectory(mobile)
116
endif ()
117

118
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)