CMakeLists.txt 34.3 KB
Newer Older
1
project(calligra)
Laurent Montel's avatar
Laurent Montel committed
2

3
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
4

5
cmake_policy(SET CMP0002 OLD)
6 7 8 9
#cmake_policy CMP0017 was introduced in version 2.8.4
if(${CMAKE_VERSION} VERSION_GREATER 2.8.3)
    cmake_policy(SET CMP0017 NEW)
endif()
Laurent Montel's avatar
Laurent Montel committed
10

11 12 13
if(${CMAKE_VERSION} VERSION_GREATER 2.8.12)
    cmake_policy(SET CMP0022 OLD)
endif()
14

15 16 17
# reduce cmake warnings from KDE4Macros.cmake
cmake_policy(SET CMP0026 OLD)

18 19 20 21 22
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
23

Jigar Raisinghani's avatar
Jigar Raisinghani committed
24 25
# define common versions of Calligra applications, used to generate calligraversion.h
# update these version for every release:
Cyrille Berger's avatar
Cyrille Berger committed
26
set(CALLIGRA_VERSION_STRING "2.9.1")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
27 28
set(CALLIGRA_VERSION_MAJOR 2)
set(CALLIGRA_STABLE_VERSION_MINOR 9)
Cyrille Berger's avatar
Cyrille Berger committed
29
set(CALLIGRA_VERSION_RELEASE 1)  # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
Cyrille Berger's avatar
Cyrille Berger committed
30
#set(CALLIGRA_ALPHA 1) # uncomment only for Pre-Alpha and Alpha
Cyrille Berger's avatar
Cyrille Berger committed
31
#set(CALLIGRA_BETA 1) # uncomment only for Beta
Jigar Raisinghani's avatar
Jigar Raisinghani committed
32
#set(CALLIGRA_RC 1) # uncomment only for RC
Friedrich W. H. Kossebau's avatar
Friedrich W. H. Kossebau committed
33
set(CALLIGRA_YEAR 2015) # update every year
Jigar Raisinghani's avatar
Jigar Raisinghani committed
34 35 36 37 38 39 40

if(NOT DEFINED CALLIGRA_ALPHA AND NOT DEFINED CALLIGRA_BETA AND NOT DEFINED CALLIGRA_RC)
    set(CALLIGRA_STABLE 1) # do not edit
endif()

message(STATUS "Calligra version: ${CALLIGRA_VERSION_STRING}")

Boudewijn Rempt's avatar
Boudewijn Rempt committed
41 42
# define the generic version of the Calligra libraries here
# this makes it easy to advance it when the next Calligra release comes
Jigar Raisinghani's avatar
Jigar Raisinghani committed
43 44 45 46 47 48 49 50
if(CALLIGRA_VERSION_MAJOR EQUAL 2)
    math(EXPR GENERIC_CALLIGRA_LIB_VERSION_MAJOR "${CALLIGRA_STABLE_VERSION_MINOR} + 5")
else()
    # let's make sure we won't forget to update the "5"
    message(FATAL_ERROR "Reminder: please update offset == 5 used to compute GENERIC_CALLIGRA_LIB_VERSION_MAJOR to something bigger")
endif()
set(GENERIC_CALLIGRA_LIB_VERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}")
51

52 53 54 55 56
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
                      "${CMAKE_SOURCE_DIR}/cmake/modules")
LIST (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/transitional")

message("Module path:" ${CMAKE_MODULE_PATH})
57

Jigar Raisinghani's avatar
Jigar Raisinghani committed
58 59 60
# fetch git revision for the current build

set(CALLIGRA_GIT_SHA1_STRING "")
61
set(CALLIGRA_GIT_BRANCH_STRING "")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
62 63 64

include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
65
get_git_branch(GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
66

67
if(GIT_SHA1 AND GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
68 69
    string(SUBSTRING ${GIT_SHA1} 0 7 GIT_SHA1)
    set(CALLIGRA_GIT_SHA1_STRING ${GIT_SHA1})
70 71
    set(CALLIGRA_GIT_BRANCH_STRING ${GIT_BRANCH})
endif()
72

73 74
if(NOT DEFINED RELEASE_BUILD)
    # estimate mode by CMAKE_BUILD_TYPE content if not set on cmdline
75
    string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
76
    set(RELEASE_BUILD_TYPES "release" "relwithdebinfo" "minsizerel")
77
    list(FIND RELEASE_BUILD_TYPES "${CMAKE_BUILD_TYPE_TOLOWER}" INDEX)
78 79
    if (INDEX EQUAL -1)
        set(RELEASE_BUILD FALSE)
80
    else()
81
        set(RELEASE_BUILD TRUE)
82 83
    endif()
endif()
84 85
message(STATUS "Release build: ${RELEASE_BUILD}")

Jigar Raisinghani's avatar
Jigar Raisinghani committed
86 87 88 89 90
 ############
#############
## Options ##
#############
############
91

Jigar Raisinghani's avatar
Jigar Raisinghani committed
92
option(USEOPENGL "Allow the use of OpenGL for Krita" ON)
93 94
if (WIN32)
    option(USE_BREAKPAD "Build the crash handler for Krita (only on windows)" OFF)
95
endif ()
Boudewijn Rempt's avatar
Boudewijn Rempt committed
96
option(GHNS "support Get Hot New Stuff" OFF)
97 98
# TODO: orthogonal setting, results in minimal features, yet needs to be defined
# option(TINY "compile a tiny Calligra" OFF)
99

100
option(PACKAGERS_BUILD "Build support of multiple CPU architectures in one binary. Should be used by packagers only." ON)
101

102 103 104
# TODO: remove option and migration code below before 3.0 release
option(CREATIVEONLY "compile only Karbon and Krita" OFF)

105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
 #######################
########################
## Productset setting ##
########################
#######################

# For predefined productsets see the definitions in CalligraProducts.cmake and
# in the files in the folder cmake/productsets.

# Finding out the products & features to build is done in 5 steps:
# 1. have the user define the products/features wanted, by giving a productset
# 2. estimate all additional required products/features
# 3. estimate which of the products/features can be build by external deps
# 4. find which products/features have been temporarily disabled due to problems
# 5. estimate which of the products/features can be build by internal deps

# get the special macros
include(CalligraProductSetMacros)

# get the definitions of products, features and product sets
include(CalligraProducts.cmake)

127
set(PRODUCTSET_DEFAULT "ALL")
128 129 130 131 132
# temporary migration support
if (CREATIVEONLY)
    set(WARN_ABOUT_CREATIVEONLY TRUE)
    set(PRODUCTSET_DEFAULT "CREATIVE")
endif ()
133 134

if(NOT PRODUCTSET)
135
    set(PRODUCTSET ${PRODUCTSET_DEFAULT} CACHE STRING "Set of products/features to build" FORCE)
136
endif()
137

138 139
if (RELEASE_BUILD)
    set(CALLIGRA_SHOULD_BUILD_STAGING FALSE)
140
else ()
141
    set(CALLIGRA_SHOULD_BUILD_STAGING TRUE)
142
endif ()
143

144
# finally choose products/features to build
145
calligra_set_productset(${PRODUCTSET})
146

147 148 149 150 151
 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
Cyrille Berger's avatar
Cyrille Berger committed
152

Boudewijn Rempt's avatar
Boudewijn Rempt committed
153
find_package(ECM 1.1.0 REQUIRED NOMODULE)
154
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
155 156 157 158 159 160 161 162 163 164 165
include(ECMOptionalAddSubdirectory)
include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMMarkNonGuiExecutable)
include(ECMGenerateHeaders)
include(GenerateExportHeader)
include(ECMMarkAsTest)

include(CMakePackageConfigHelpers)
include(WriteBasicConfigVersionFile)
include (CheckFunctionExists)
166 167 168 169 170 171

include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
include(FeatureSummary)

172
find_package(KF5 5.7.0 REQUIRED COMPONENTS Archive Codecs Config CoreAddons
173
                                     GuiAddons I18n ItemModels ItemViews
174 175 176
                                     WidgetsAddons ThreadWeaver
                                     Completion IconThemes 
                                     Parts
177
                                     XmlGui Kross Wallet
178
                                     Emoticons ConfigWidgets KDELibs4Support
179 180
    OPTIONAL_COMPONENTS
        Activities
181
        Declarative
182
)
183 184 185
if(KF5_Activities_FOUND)
    set(HAVE_KACTIVITIES TRUE)
endif()
186

Boudewijn Rempt's avatar
Boudewijn Rempt committed
187
find_package(Qt5 5.2.0 REQUIRED COMPONENTS Core Gui Widgets Xml PrintSupport Script Svg Test Concurrent)
188
find_package(Qt5 5.2.0 COMPONENTS WebKit DBus Declarative)
189 190

set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND})
191
set(QT_QTWEBKIT_FOUND ${Qt5WebKit_FOUND})
192
set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND})
193

Jigar Raisinghani's avatar
Jigar Raisinghani committed
194
if (USEOPENGL)
195
    find_package(Qt5 5.2.0 REQUIRED OpenGL)
196
    set(QT_QTOPENGL_FOUND ${Qt5OpenGL_FOUND})
197
endif ()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
198

199
include (MacroLibrary)
200 201
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)
202
include (ECMInstallIcons)
203

Boudewijn Rempt's avatar
Boudewijn Rempt committed
204 205 206
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
207
    endif()
208

209 210
    find_package(Attica)
    find_package(NewStuff)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
211
    macro_log_feature(LIBATTICA_FOUND "LibAttica" "Attica is used for Get Hot New Stuff." "https://projects.kde.org/projects/kdesupport/attica" FALSE "" "You need at least version 3.0 for uploading of resources to work.")
212

Boudewijn Rempt's avatar
Boudewijn Rempt committed
213 214
    if (NOT LIBATTICA_FOUND)
        set(GHNS FALSE)
215 216 217 218
    else ()
        message(STATUS "WARNING: You are compiling with Get Hot New Stuff enabled. Do not do that when building distribution packages. GHNS is unusable these days until someone starts maintaining it again.")
    endif ()
endif ()
219

220 221
macro_ensure_out_of_source_build("Compiling Calligra inside the source directory is not possible. Please refer to the build instruction http://community.kde.org/Calligra/Building/Building_Calligra")

222 223 224
if(KDE4_BUILD_TESTS)
    # only with this definition will the FOO_TEST_EXPORT macro do something
    add_definitions(-DCOMPILING_TESTS)
225
endif()
226

227 228 229 230 231 232
# overcome some platform incompatibilities
if(WIN32)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/winquirks)
    add_definitions(-D_USE_MATH_DEFINES)
    add_definitions(-DNOMINMAX)
    set(WIN32_PLATFORM_NET_LIBS ws2_32.lib netapi32.lib)
233
endif()
234

235 236 237 238 239 240 241
# would need more code changes before 4.8.0, e.g. with qPrintable()
if(NOT ${QTVERSION} VERSION_LESS 4.8.0)
    # enable QStringBuilder enhancement
    add_definitions(
        -DQT_USE_FAST_CONCATENATION
        -DQT_USE_FAST_OPERATOR_PLUS
    )
242
endif()
243 244


245 246 247 248 249
 ###########################
############################
## Required dependencies  ##
############################
###########################
250

Laurent Montel's avatar
Laurent Montel committed
251 252
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
253
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
254 255 256
if (APPLE)
    # this is not added correctly on OSX -- see http://forum.kde.org/viewtopic.php?f=139&t=101867&p=221242#p221242
    include_directories(${PNG_INCLUDE_DIR})
257
endif()
Dmitry Kazakov's avatar
Dmitry Kazakov committed
258 259

add_definitions(-DBOOST_ALL_NO_LIB)
260
find_package(Boost REQUIRED COMPONENTS system) # for pigment and stage
261
if (NOT Boost_FOUND)
262 263
    message(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
endif ()
264

265 266
if (APPLE)
   find_package(Carbon REQUIRED)
267
endif ()
268

269 270 271 272 273 274
 ###########################
############################
## Optional dependencies  ##
############################
###########################

275

276
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
277
## Check for OpenEXR
278
##
279

280 281
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
282

283 284 285
##
## Look for OpenGL
##
286
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
287 288
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
289

Jigar Raisinghani's avatar
Jigar Raisinghani committed
290 291 292 293 294
    if(OPENGL_FOUND)
        message(STATUS "Found OpenGL: ${OPENGL_LIBRARIES}")
        if(QT_QTOPENGL_FOUND)
            message(STATUS "Found Qt OpenGL support")
            set(HAVE_OPENGL 1)
295
        else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
296
            message(STATUS "Did NOT find Qt OpenGL support. Check your Qt configuration")
297 298
        endif()
    else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
299
        message(STATUS "Did NOT find OpenGL libraries")
300
    endif()
301
    macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by Gemini, parts of Krita and optionally by flake")
302
endif()
303

304 305 306 307 308 309 310 311
##
## Test for GNU Scientific Library
##
macro_optional_find_package(GSL)
macro_log_feature(GSL_FOUND "GSL" "GNU Scientific Library" "http://www.gnu.org/software/gsl"
                  FALSE "1.7" "Required by Krita's Transform tool and Sheets' solver plugin")
macro_bool_to_01(GSL_FOUND HAVE_GSL)
configure_file(config-gsl.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-gsl.h )
312

313
##
314
## Test for KF5CalendarCore
315
##
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
find_package(KF5CalendarCore CONFIG)
macro_log_feature(KF5CalendarCore_FOUND "KF5CalendarCore" "KDE Calendar Library" "http://www.kde.org/" FALSE "" "Required by Plan Ical export and optionally used by semantic item Event")

##
## Test for KF5Contacts
##
find_package(KF5Contacts CONFIG)
macro_log_feature(KF5Contacts_FOUND "KF5Contacts" "KDE Address book Library" "http://www.kde.org/" FALSE "" "Optionally used by semantic item Contact")

##
## Test for KF5AkonadiContact
##
find_package(KF5AkonadiContact CONFIG)
macro_log_feature(KF5AkonadiContact_FOUND "KF5AkonadiContact" "Library for Accessing Contacts stored in Akonadi" "http://www.kde.org/" FALSE "" "Optionally used by Plan")

##
## Test for KF5AkonadiCore
##
find_package(KF5Akonadi CONFIG)
macro_log_feature(KF5Akonadi_FOUND "KF5Akonadi" "Library for general Access to Akonadi" "http://www.kde.org/" FALSE "" "Optionally used by semantic items Event and Contact")
336

337 338 339 340 341 342
##
## Test for KGantt
##
macro_optional_find_package(KGantt 2.6.0)
macro_log_feature(KGantt_FOUND "KGantt" "Library for creating Gantt diagrams (part of KDiagram)" "http://www.kde.org/" FALSE "" "Required by Plan")

343 344 345 346 347 348
##
## Test for KChart
##
macro_optional_find_package(KChart 2.6.0)
macro_log_feature(KChart_FOUND "KChart" "Library for creating business charts (part of KDiagram)" "http://www.kde.org/" FALSE "" "Required by Chart shape and Plan")

349
##
Maximiliano Curia's avatar
Maximiliano Curia committed
350
## Test for eigen3
351
##
Maximiliano Curia's avatar
Maximiliano Curia committed
352 353
macro_optional_find_package(Eigen3)
macro_log_feature(EIGEN3_FOUND "Eigen" "C++ template library for linear algebra" "http://eigen.tuxfamily.org" FALSE "3.0" "Required by Calligra Sheets and Krita")
354

355 356 357
##
## Test for QCA2
##
358 359
macro_optional_find_package(Qca-qt5 2.1.0)
macro_log_feature(Qca-qt5_FOUND "QCA" "Qt Cryptographic Architecture" "http:/download.kde.org/stable/qca-qt5" FALSE "2.0" "Required for encrypted OpenDocument files and encrypted xls files support (available as a module in kdesupport)")
360

361 362 363
##
## Test for exiv2
##
364 365 366
set(EXIV2_MIN_VERSION "0.16")
macro_optional_find_package(Exiv2)
macro_log_feature(EXIV2_FOUND "Exiv2" "Image metadata library and tools" "http://www.exiv2.org" FALSE "0.16" "Required by Krita")
367

368 369 370 371 372 373 374
##
## Test for soprano
##
macro_optional_find_package(Soprano)
macro_log_feature(Soprano_FOUND "Soprano" "KDE4 RDF handling library" "http://soprano.sourceforge.net/" FALSE "" "Required to handle RDF metadata in ODF")
if(NOT Soprano_FOUND)
    set(SOPRANO_INCLUDE_DIR "")
375
endif()
376 377


378 379 380
##
## Test for marble
##
381
set(MARBLE_MIN_VERSION "0.19.2")
382
macro_optional_find_package(CalligraMarble)
383 384 385
if(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE FALSE)
    set(MARBLE_INCLUDE_DIR "")
386
else()
387
    set(CAN_USE_MARBLE TRUE)
388 389 390 391 392 393 394 395 396 397 398
    add_definitions( -DCAN_USE_MARBLE )
    ##
    ## Marble changed addMarbleWidget to setMarbleWidget in MarbleControlBox.h
    ## with commit ea177ca. This is for compatibility with older versions.
    ##
    find_file(MARBLECONTROLBOX_H MarbleControlBox.h ${MARBLE_INCLUDE_DIR} PATH_SUFFIXES marble)
    if( MARBLECONTROLBOX_H )
    file(READ ${MARBLECONTROLBOX_H} MARBLECONTROLBOX_H_CONTENT)
    string(REGEX MATCH "setMarbleWidget" SETMARBLEWIDGET ${MARBLECONTROLBOX_H_CONTENT})
        if( SETMARBLEWIDGET )
            add_definitions(-DHAVE_SETMARBLEWIDGET)
399
        endif()
400 401
    else()
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
402 403
    endif()
endif()
404
macro_log_feature(MARBLE_FOUND "Marble" "KDE4 World Globe Widget library" "http://techbase.kde.org/Projects/Marble/" FALSE "${MARBLE_MIN_VERSION}" "Required by RDF, Kexi Forms and Reports to show locations on a map")
405 406
##
## Test for lcms
407
##
408
macro_optional_find_package(LCMS2)
409
macro_log_feature(LCMS2_FOUND "LittleCMS" "Color management engine" "http://www.littlecms.com" FALSE "2.4" "Will be used for color management and is necesary for Krita")
410
if(LCMS2_FOUND)
411
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
412
        set(HAVE_LCMS24 TRUE)
413
    endif()
414
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
415
    set(HAVE_LCMS2 TRUE)
416
endif()
417

418 419 420 421 422 423
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
424
macro_optional_find_package(Vc 0.6.70)
425 426
macro_log_feature(Vc_FOUND "Vc" "Portable, zero-overhead SIMD library for C++" "http://code.compeng.uni-frankfurt.de/projects/vc" FALSE "" "Required by the Krita for vectorization")
macro_bool_to_01(Vc_FOUND HAVE_VC)
427 428
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

429 430 431 432 433
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

if(HAVE_VC)
    message(STATUS "Vc found!")

434
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Vc_CMAKE_MODULES_DIR}")
435 436
    include (VcMacros)

437 438 439 440
    #Handle Vc master
    if(Vc_VERSION_MAJOR GREATER 0 OR Vc_VERSION_MINOR GREATER 7)
        message(STATUS "Vc version is greater than 0.7, enabling AVX2 support")

441
        if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
442 443 444 445
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
446
        endif()
447 448 449 450

        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX AVX2)
451
        else()
452
            set(${_objs} ${_src})
453
        endif()
454 455 456 457 458
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX AVX2)
459
        else()
460
            set(${_objs} ${_src})
461
        endif()
462 463 464 465 466
        endmacro()
    else()
        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX)
467
        else()
468
            set(${_objs} ${_src})
469
        endif()
470 471 472 473 474
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX)
475
        else()
476
            set(${_objs} ${_src})
477
        endif()
478 479
        endmacro()
    endif()
480

481 482 483
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
484 485
    endif ()
endif()
486 487
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

488 489 490
##
## Test for Xinput
##
491
if(NOT WIN32 AND NOT APPLE)
492
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
493
else()
494
  set(REQUIRED_Xinput_FOUND TRUE)
495
endif()
496

Thomas Zander's avatar
Thomas Zander committed
497 498
#Set the build of TextShape changetraker

David Faure's avatar
David Faure committed
499
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS} ${QT_QTDBUS_DEFINITIONS})
Laurent Montel's avatar
Laurent Montel committed
500

501
if(WIN32)
502 503 504 505 506 507 508 509 510 511 512 513 514 515
    # detect oxygen icon dir at configure time based on KDEDIRS - there may be different package installation locations
    execute_process(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path icon OUTPUT_VARIABLE _dir ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
    file(TO_CMAKE_PATH "${_dir}" __dir)
    find_path(KDE4_ICON_DIR oxygen PATHS
        ${__dir}
    )
    message(STATUS "using oxygen application icons from ${KDE4_ICON_DIR}")

    set(LIB_INSTALL_DIR ${LIB_INSTALL_DIR}
                        RUNTIME DESTINATION ${BIN_INSTALL_DIR}
                        LIBRARY ${INSTALL_TARGETS_DEFAULT_ARGS}
                        ARCHIVE ${INSTALL_TARGETS_DEFAULT_ARGS} )


516
else()
517
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
518
endif()
519

Hanzes Matus's avatar
Hanzes Matus committed
520 521 522
##
## Test for Fontconfig
##
523
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
524
if(NOT WIN32 AND NOT APPLE)
525 526
    macro_optional_find_package(Fontconfig)
    macro_log_feature(FONTCONFIG_FOUND "Fontconfig" "Library for configuring and customizing font access" "http://fontconfig.org" FALSE "" "Required to handle exact font size")
527
endif()
Hanzes Matus's avatar
Hanzes Matus committed
528 529 530 531

##
## Test for Freetype
##
532
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
533
if(NOT WIN32 AND NOT APPLE)
534 535
    macro_optional_find_package(Freetype)
    macro_log_feature(FREETYPE_FOUND "Freetype" "A Free, High-Quality, and Portable Font Engine" "http://www.freetype.org/" FALSE "" "Required to handle exact font size")
536
endif()
Hanzes Matus's avatar
Hanzes Matus committed
537

538
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
539 540
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
541
else()
542
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
543
endif()
544

Cyrille Berger's avatar
Cyrille Berger committed
545 546 547
##
## Test for Qt Webkit
##
548
macro_log_feature(QT_QTWEBKIT_FOUND "Qt Webkit" "Qt binding for Webkit, the HTML engine." "http://qt.io" FALSE "" "Required for the web shape, web Kexi widget and web report element")
549 550
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
551
endif()
Cyrille Berger's avatar
Cyrille Berger committed
552

553 554 555
##
## Test endianess
##
David Faure's avatar
David Faure committed
556
include (TestBigEndian)
557
test_big_endian(CMAKE_WORDS_BIGENDIAN)
558

559 560 561 562 563 564
##
## Test SharedMimeInfo
##
macro_optional_find_package(SharedMimeInfo)
macro_log_feature(SHARED_MIME_INFO_FOUND "SharedMimeInfo" "Shared Mime Info" "http://freedesktop.org/wiki/Software/shared-mime-info" FALSE "" "Required to determine file types OpenRaster (Krita default format), SVM or all of MSOOXML.")

565 566 567 568 569
##
## Test for Okular
##
macro_optional_find_package(Okular)
macro_log_feature(OKULAR_FOUND "Okular" "Okular ODP Plugin" "http://okular.kde.org/" FALSE "" "Required to build the Okular OpenDocument Presenter plugin")
570

571 572 573 574 575 576 577 578 579 580
##
## Test for librevenge
##
macro_optional_find_package(LibRevenge)
macro_log_feature(LIBREVENGE_FOUND "LibRevenge"
                  "A base library for writing document import filters"
                  "http://sf.net/p/libwpd/librevenge/" FALSE ""
                  "Required by various import filters"
)

581
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
582 583 584 585 586 587 588 589 590 591 592
## Test for libodfgen
##
macro_optional_find_package(LibOdfGen)
macro_log_feature(LIBODFGEN_FOUND "LibOdfGen"
                  "Open Document Format Generation Library"
                  "http://sf.net/p/libwpd/libodfgen/" FALSE ""
                  "Required by various import filters"
)

##
## Test for WordPerfect Document Library
593
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
594 595 596 597 598 599
macro_optional_find_package(LibWpd)
macro_log_feature(LIBWPD_FOUND "LibWpd"
                  "WordPerfect Document Library"
                  "http://libwpd.sourceforge.net/" FALSE ""
                  "Required by the Words WPD import filter"
)
600 601

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
602
## Test for WordPerfect Graphics Library
603
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
604 605 606 607 608 609
macro_optional_find_package(LibWpg)
macro_log_feature(LIBWPG_FOUND "LibWpg"
                  "WordPerfect Graphics Library"
                  "http://libwpg.sourceforge.net/" FALSE ""
                  "Required by the Karbon WPG import filter"
)
610 611 612 613

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
614 615 616 617 618 619
macro_optional_find_package(LibWps)
macro_log_feature(LIBWPS_FOUND "LibWps"
                  "Microsoft Works Document Library"
                  "http://libwps.sourceforge.net/" FALSE ""
                  "Required by the Words WPS import filter"
)
620 621

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
622
## Test for Microsoft Visio Document Library
623 624
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
625 626
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
627
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
628 629 630 631 632 633 634 635 636
                  "Required by the Flow visio import filter"
)

##
## Test for Apple Keynote Document Library
##
macro_optional_find_package(LibEtonyek)
macro_log_feature(LIBETONYEK_FOUND "LibEtonyek"
                  "Apple Keynote Document Library"
637
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
638 639
                  "Required by the Stage keynote import filter"
)
640 641 642 643 644

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
645
macro_log_feature( POPPLER_FOUND "Poppler-Qt5" "A PDF rendering library" "http://poppler.freedesktop.org" FALSE "" "Required by the Krita PDF filter, Karbon PDF import filter and CSTester PDF feature")
646 647 648 649 650 651 652 653 654

## The Karbon pdf-importer needs the not-officially-supported XPDF Headers
## Installing these is off by default in poppler sources, so lets make
## sure they're really there before trying to build the pdf import
if(POPPLER_FOUND)
    find_path(POPPLER_XPDF_HEADERS poppler-config.h
    HINTS ${POPPLER_INCLUDE_DIR} )
    if(POPPLER_XPDF_HEADERS)
        set(POPPLER_XPDF_HEADERS_FOUND TRUE)
655
    endif()
656
    macro_log_feature( POPPLER_XPDF_HEADERS_FOUND "poppler-qt5-xpdf-headers" "XPDF headers in the Poppler Qt5 interface library" "http://poppler.freedesktop.org" FALSE "" "Required by the Karbon PDF import filter")
657
endif()
658 659


660 661 662 663 664 665
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

666 667 668 669
##
## Generate a file for prefix information
##

670 671 672 673 674
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
675

Boudewijn Rempt's avatar
Boudewijn Rempt committed
676
include(MacroCalligraAddBenchmark)
677
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
678

679 680 681 682 683 684
 ####################
#####################
## Define includes ##
#####################
####################

685 686 687
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

688
# for config.h and <toplevel/foo.h> includes (if any?)
689
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/interfaces )
690

691 692 693 694 695 696 697

set(KOVERSION_INCLUDES ${CMAKE_SOURCE_DIR}/libs/version 
                       ${CMAKE_BINARY_DIR}/libs/version 
)

include_directories(${KOVERSION_INCLUDES})

698 699 700
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

701 702
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

703
# koodf is at the bottom of the stack
704 705
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
706
                   ${KOVERSION_INCLUDES} 
707
                   )
Boudewijn Rempt's avatar
Boudewijn Rempt committed
708

709
# pigment depends on koplugin and lcms
710
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
711
                   ${KOVERSION_INCLUDES} 
712 713
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
714
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
715
                   ${Boost_INCLUDE_DIRS}
716 717
                   
                   )
718

719 720 721 722 723
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
724
                   ${KUNDO2_INCLUDES}
725
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
726 727
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
728
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
729
                   ${CMAKE_BINARY_DIR}/libs/flake)
730

731
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
732
set(VECTORIMAGE_INCLUDES
733 734 735 736
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libemf
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libsvm
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libwmf)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
737

738 739 740 741 742 743
# KoText depends on koplugin, odf
set(KOTEXT_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kotext
                   ${CMAKE_BINARY_DIR}/libs/kotext
                   ${CMAKE_SOURCE_DIR}/libs/kotext/changetracker
                   ${CMAKE_SOURCE_DIR}/libs/kotext/styles
                   ${CMAKE_SOURCE_DIR}/libs/kotext/opendocument
744
                   ${SOPRANO_INCLUDE_DIR}
745
                   ${FLAKE_INCLUDES}
746
                   ${KOODF_INCLUDES})
747

748 749 750 751
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

752 753 754 755 756
# Widgets depends on flake
set(KOWIDGETS_INCLUDES ${FLAKE_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
                   ${CMAKE_SOURCE_DIR}/libs/widgets)

C. Boemann's avatar
C. Boemann committed
757
# BasicFlakes depends on flake, widgets
758
set(BASICFLAKES_INCLUDES ${FLAKE_INCLUDES}
C. Boemann's avatar
C. Boemann committed
759 760 761
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

762
set(KOWIDGETS_INCLUDES 
763 764 765 766
                    ${BASICFLAKES_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils)

767
# komain depends on kotext & flake
768
set(KOMAIN_INCLUDES 
769
                    ${KOWIDGETS_INCLUDES}
770
                    ${TEXTLAYOUT_INCLUDES}
771
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
772
                    ${CMAKE_BINARY_DIR}/libs/main
773
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
774

775 776 777
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
778
set(KORDF_LIBS kordf)
779

780
if(SHOULD_BUILD_FEATURE_SCRIPTING)
781
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
782
endif()
783

David Faure's avatar
David Faure committed
784
# kopageapp
785 786 787 788 789
set(KOPAGEAPP_INCLUDES ${TEXTLAYOUT_INCLUDES}
                    ${PIGMENT_INCLUDES}
                    ${KOMAIN_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/kopageapp ${CMAKE_SOURCE_DIR}/libs/kopageapp/commands ${CMAKE_BINARY_DIR}/libs/kopageapp )
790

791 792 793 794 795 796 797
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
798
    ${CMAKE_SOURCE_DIR}/filters/libodf2/chart
799 800
)

801 802 803 804 805
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

806 807 808 809 810
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
811

812 813 814 815 816 817
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
818

819 820 821
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
822

823 824 825
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
826

827 828 829
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
830

831 832 833 834 835 836 837 838
calligra_drop_product_on_bad_condition( APP_KRITA
    EIGEN3_FOUND "Eigen devel not found"
    EXIV2_FOUND "libexiv2 devel not found"
    HAVE_REQUIRED_LCMS_VERSION "lcms devel not found"
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found"
    Boost_SYSTEM_FOUND "boost-system devel not found"
    REQUIRED_Xinput_FOUND "Xinput devel not found "
)
839

840 841
calligra_drop_product_on_bad_condition( APP_ACTIVE
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
842
    KF5DECLARATIVE_FOUND "KF5Declarative not found"
843
)
844

845 846 847
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
    OKULAR_FOUND "Okular devel not found"
)
848

849 850 851
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
    OKULAR_FOUND "Okular devel not found"
)
852

853 854 855 856
calligra_drop_product_on_bad_condition( PLUGIN_CHARTSHAPE
    KChart_FOUND "KChart devel not found"
)

857 858 859 860 861
calligra_drop_product_on_bad_condition( FILTER_KEY_TO_ODP
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBETONYEK_FOUND "libetonyek devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
862

863 864 865 866 867
calligra_drop_product_on_bad_condition( FILTER_VISIO_TO_ODG
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBVISIO_FOUND "libvisio devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
868

869 870 871 872 873 874
calligra_drop_product_on_bad_condition( FILTER_WORDPERFECT_TO_ODT
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPD_FOUND "libwpd devel not found"
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
875

876 877 878 879 880
calligra_drop_product_on_bad_condition( FILTER_WORKS_TO_ODT
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPS_FOUND "libwps devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
881

882 883 884 885
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
886

887 888 889 890 891
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_ODG
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
892

893 894 895 896
calligra_drop_product_on_bad_condition( FILTER_PDF_TO_SVG
    NOT_WIN "not supported on Windows"
    POPPLER_XPDF_HEADERS_FOUND "poppler xpdf headers not found"
)
897

898 899 900 901
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
902

903 904 905 906
calligra_drop_product_on_bad_condition( FILTER_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
907

908 909 910 911
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
912

913 914 915
calligra_drop_product_on_bad_condition( FILTER_MPXJ_IMPORT
    SHARED_MIME_INFO_FOUND  "SharedMimeInfo not found (needed to install mimetypes)"
)
916

917 918 919
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
920

921 922
calligra_drop_product_on_bad_condition( APP_PLAN
    KGantt_FOUND "KGantt devel not found"
923
    KChart_FOUND "KChart devel not found"
924 925
)

926
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
927 928 929 930
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

931 932 933 934 935 936 937 938 939 940
calligra_drop_product_on_bad_condition( PART_QTQUICK
    USEOPENGL "USEOPENGL set to FALSE"
    QT_QTOPENGL_FOUND "Qt OpenGL not found"
)

calligra_drop_product_on_bad_condition( APP_GEMINI
    USEOPENGL "USEOPENGL set to FALSE"
    QT_QTOPENGL_FOUND "Qt OpenGL not found"
)

941 942 943 944 945 946
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
947 948 949 950 951 952 953 954 955
calligra_drop_products_on_old_flag(braindump APP_BRAINDUMP)
calligra_drop_products_on_old_flag(flow APP_FLOW)
calligra_drop_products_on_old_flag(karbon APP_KARBON)
calligra_drop_products_on_old_flag(kexi APP_KEXI)
calligra_drop_products_on_old_flag(krita APP_KRITA)
calligra_drop_products_on_old_flag(plan  APP_PLAN)
calligra_drop_products_on_old_flag(sheets PART_SHEETS APP_SHEETS)
calligra_drop_products_on_old_flag(stage  PART_STAGE APP_STAGE)
calligra_drop_products_on_old_flag(words  PART_WORDS APP_WORDS)
956

957 958 959 960 961
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
962 963
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
964
# calligra_disable_product(APP_KEXI "isn't buildable at the moment")
965 966 967 968 969

#############################################
####     Calculate buildable products    ####
#############################################

970
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
971

972

973 974 975 976
#############################################
####     Setup product-depending vars    ####
#############################################

977
if(SHOULD_BUILD_FEATURE_RDF)
978
   add_definitions( -DSHOULD_BUILD_RDF )
979
endif()
980 981


982 983 984 985 986 987
 ###################
####################
## Subdirectories ##
####################
###################

988
add_subdirectory(words)
989

990
if (SHOULD_BUILD_APP_FLOW)
991
    add_subdirectory(flow)
992
endif ()
993

994
add_subdirectory(stage)
995

996
if(SHOULD_BUILD_APP_KEXI)
997
    add_subdirectory(kexi)
998
endif()
999

1000
if(SHOULD_BUILD_APP_PLAN)
1001
    add_subdirectory(plan)
1002
endif()
1003

1004
add_subdirectory(sheets)
1005

1006
if(SHOULD_BUILD_APP_KRITA)
1007
  add_subdirectory(krita)
1008
endif()
1009

1010
if(SHOULD_BUILD_APP_KARBON)
1011
  add_subdirectory(karbon)
1012
endif()
1013

1014
if(SHOULD_BUILD_APP_BRAINDUMP)
1015
  add_subdirectory(braindump)
1016
endif()
1017

1018
if(SHOULD_BUILD_APP_ACTIVE)
1019
  add_subdirectory(active)
1020
endif()
1021

1022
if(SHOULD_BUILD_DOC)
1023
    add_subdirectory(doc)
1024
endif()
1025

1026 1027
if(SHOULD_BUILD_PART_QTQUICK)
    add_subdirectory(qtquick)
1028
endif()
1029 1030 1031

if(SHOULD_BUILD_GEMINI)
    add_subdirectory(gemini)
1032
endif()
1033

1034 1035
# non-app directories are moved here because they can depend on SHOULD_BUILD_{appname} variables set above
add_subdirectory(libs)
1036
add_subdirectory(3rdparty)
1037 1038
add_subdirectory(interfaces)
add_subdirectory(cmake)
Laurent Montel's avatar
Laurent Montel committed
1039
add_subdirectory(pics)
1040
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
1041
add_subdirectory(servicetypes)
1042 1043
add_subdirectory(devtools)
add_subdirectory(extras)
1044
add_subdirectory(filters)
1045
add_subdirectory(data)
Laurent Montel's avatar
Laurent Montel committed
1046

1047
macro_display_feature_log()
1048

1049
calligra_product_deps_report("product_deps")