CMakeLists.txt 34.4 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 Skott's avatar
Cyrille Berger Skott 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 Skott's avatar
Cyrille Berger Skott committed
29
set(CALLIGRA_VERSION_RELEASE 1)  # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
Cyrille Berger Skott's avatar
Cyrille Berger Skott committed
30
#set(CALLIGRA_ALPHA 1) # uncomment only for Pre-Alpha and Alpha
Cyrille Berger Skott's avatar
Cyrille Berger Skott 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
                                     WidgetsAddons ThreadWeaver
175
                                     Completion IconThemes Sonnet
176
                                     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 X11Extras)
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
# override the kf5 plugin installdir
set(PLUGIN_INSTALL_DIR ${LIB_INSTALL_DIR}/calligra)

247

248 249 250 251 252
 ###########################
############################
## Required dependencies  ##
############################
###########################
253

Laurent Montel's avatar
Laurent Montel committed
254 255
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
256
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
257 258 259
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})
260
endif()
Dmitry Kazakov's avatar
Dmitry Kazakov committed
261 262

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

268 269
if (APPLE)
   find_package(Carbon REQUIRED)
270
endif ()
271

272 273 274 275 276 277
 ###########################
############################
## Optional dependencies  ##
############################
###########################

278

279
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
280
## Check for OpenEXR
281
##
282

283 284
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
285

286 287 288
##
## Look for OpenGL
##
289
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
290 291
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
292

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

307 308 309 310 311 312 313 314
##
## 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 )
315

316
##
317
## Test for KF5CalendarCore
318
##
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
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")
339

340 341 342 343 344 345
##
## 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")

346 347 348 349 350 351
##
## 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")

352
##
Maximiliano Curia's avatar
Maximiliano Curia committed
353
## Test for eigen3
354
##
Maximiliano Curia's avatar
Maximiliano Curia committed
355 356
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")
357

358 359 360
##
## Test for QCA2
##
361 362
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)")
363

364 365 366
##
## Test for exiv2
##
367 368 369
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")
370

371 372 373
##
## Test for soprano
##
374 375 376 377
# QT5TODO: find Qt5 version of Soprano
# macro_optional_find_package(Soprano)
set(Soprano_FOUND FALSE)
macro_log_feature(Soprano_FOUND "Soprano" "RDF handling library" "http://soprano.sourceforge.net/" FALSE "" "Required to handle RDF metadata in ODF")
378 379
if(NOT Soprano_FOUND)
    set(SOPRANO_INCLUDE_DIR "")
380
endif()
381 382


383 384 385
##
## Test for marble
##
386
set(MARBLE_MIN_VERSION "0.19.2")
387
macro_optional_find_package(CalligraMarble)
388 389 390
if(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE FALSE)
    set(MARBLE_INCLUDE_DIR "")
391
else()
392
    set(CAN_USE_MARBLE TRUE)
393 394 395 396 397 398 399 400 401 402 403
    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)
404
        endif()
405 406
    else()
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
407 408
    endif()
endif()
409
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")
410 411
##
## Test for lcms
412
##
413
macro_optional_find_package(LCMS2)
414
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")
415
if(LCMS2_FOUND)
416
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
417
        set(HAVE_LCMS24 TRUE)
418
    endif()
419
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
420
    set(HAVE_LCMS2 TRUE)
421
endif()
422

423 424 425 426 427 428
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
429
macro_optional_find_package(Vc 0.6.70)
430 431
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)
432 433
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

434 435 436 437 438
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

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

439
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Vc_CMAKE_MODULES_DIR}")
440 441
    include (VcMacros)

442 443 444 445
    #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")

446
        if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
447 448 449 450
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
451
        endif()
452 453 454 455

        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)
456
        else()
457
            set(${_objs} ${_src})
458
        endif()
459 460 461 462 463
        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)
464
        else()
465
            set(${_objs} ${_src})
466
        endif()
467 468 469 470 471
        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)
472
        else()
473
            set(${_objs} ${_src})
474
        endif()
475 476 477 478 479
        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)
480
        else()
481
            set(${_objs} ${_src})
482
        endif()
483 484
        endmacro()
    endif()
485

486 487 488
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
489 490
    endif ()
endif()
491 492
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

493 494 495
##
## Test for Xinput
##
496
if(NOT WIN32 AND NOT APPLE)
497
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
498
else()
499
  set(REQUIRED_Xinput_FOUND TRUE)
500
endif()
501

Thomas Zander's avatar
Thomas Zander committed
502 503
#Set the build of TextShape changetraker

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

506
if(WIN32)
507 508 509 510 511 512 513 514 515 516 517 518 519 520
    # 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} )


521
else()
522
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
523
endif()
524

Hanzes Matus's avatar
Hanzes Matus committed
525 526 527
##
## Test for Fontconfig
##
528
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
529
if(NOT WIN32 AND NOT APPLE)
530 531
    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")
532
endif()
Hanzes Matus's avatar
Hanzes Matus committed
533 534 535 536

##
## Test for Freetype
##
537
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
538
if(NOT WIN32 AND NOT APPLE)
539 540
    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")
541
endif()
Hanzes Matus's avatar
Hanzes Matus committed
542

543
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
544 545
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
546
else()
547
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
548
endif()
549

Cyrille Berger Skott's avatar
Cyrille Berger Skott committed
550 551 552
##
## Test for Qt Webkit
##
553
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")
554 555
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
556
endif()
Cyrille Berger Skott's avatar
Cyrille Berger Skott committed
557

558 559 560
##
## Test endianess
##
David Faure's avatar
David Faure committed
561
include (TestBigEndian)
562
test_big_endian(CMAKE_WORDS_BIGENDIAN)
563

564 565 566 567 568 569
##
## 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.")

570 571 572 573 574
##
## 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")
575

576 577 578 579 580 581 582 583 584 585
##
## 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"
)

586
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
587 588 589 590 591 592 593 594 595 596 597
## 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
598
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
599 600 601 602 603 604
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"
)
605 606

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
607
## Test for WordPerfect Graphics Library
608
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
609 610 611 612 613 614
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"
)
615 616 617 618

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
619 620 621 622 623 624
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"
)
625 626

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
627
## Test for Microsoft Visio Document Library
628 629
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
630 631
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
632
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
633 634 635 636 637 638 639 640 641
                  "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"
642
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
643 644
                  "Required by the Stage keynote import filter"
)
645 646 647 648 649

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
650
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")
651 652 653 654 655 656 657 658 659

## 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)
660
    endif()
661
    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")
662
endif()
663 664


665 666 667 668 669 670
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

671 672 673 674
##
## Generate a file for prefix information
##

675 676 677 678 679
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
680

Boudewijn Rempt's avatar
Boudewijn Rempt committed
681
include(MacroCalligraAddBenchmark)
682
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
683

684 685 686 687 688 689
 ####################
#####################
## Define includes ##
#####################
####################

690 691 692
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

696 697 698 699 700 701 702

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

include_directories(${KOVERSION_INCLUDES})

703 704 705
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

706 707
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

708
# koodf is at the bottom of the stack
709 710
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
711
                   ${KOVERSION_INCLUDES} 
712
                   )
Boudewijn Rempt's avatar
Boudewijn Rempt committed
713

714
# pigment depends on koplugin and lcms
715
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
716
                   ${KOVERSION_INCLUDES} 
717 718
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
719
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
720
                   ${Boost_INCLUDE_DIRS}
721 722
                   
                   )
723

724 725 726 727 728
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
729
                   ${KUNDO2_INCLUDES}
730
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
731 732
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
733
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
734
                   ${CMAKE_BINARY_DIR}/libs/flake)
735

736
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
737
set(VECTORIMAGE_INCLUDES
738 739 740 741
                   ${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
742

743 744 745 746 747 748
# 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
749
                   ${SOPRANO_INCLUDE_DIR}
750
                   ${FLAKE_INCLUDES}
751
                   ${KOODF_INCLUDES})
752

753 754 755 756
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

757 758 759 760 761
# 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
762
# BasicFlakes depends on flake, widgets
763
set(BASICFLAKES_INCLUDES ${FLAKE_INCLUDES}
C. Boemann's avatar
C. Boemann committed
764 765 766
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

767
set(KOWIDGETS_INCLUDES 
768 769 770 771
                    ${BASICFLAKES_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils)

772
# komain depends on kotext & flake
773
set(KOMAIN_INCLUDES 
774
                    ${KOWIDGETS_INCLUDES}
775
                    ${TEXTLAYOUT_INCLUDES}
776
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
777
                    ${CMAKE_BINARY_DIR}/libs/main
778
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
779

780 781 782
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
783
set(KORDF_LIBS kordf)
784

785
if(SHOULD_BUILD_FEATURE_SCRIPTING)
786
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
787
endif()
788

David Faure's avatar
David Faure committed
789
# kopageapp
790 791 792 793 794
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 )
795

796 797 798 799 800 801 802
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
803
    ${CMAKE_SOURCE_DIR}/filters/libodf2/chart
804 805
)

806 807 808 809 810
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

811 812 813 814 815
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
816

817 818 819 820 821 822
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
823

824 825 826
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
827

828 829 830
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
831

832 833 834
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
835

836 837 838 839 840 841 842 843
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 "
)
844

845 846
calligra_drop_product_on_bad_condition( APP_ACTIVE
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
847
    KF5DECLARATIVE_FOUND "KF5Declarative not found"
848
)
849

850 851 852
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
    OKULAR_FOUND "Okular devel not found"
)
853

854 855 856
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
    OKULAR_FOUND "Okular devel not found"
)
857

858 859 860 861
calligra_drop_product_on_bad_condition( PLUGIN_CHARTSHAPE
    KChart_FOUND "KChart devel not found"
)

862 863 864 865 866
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"
)
867

868 869 870 871 872
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"
)
873

874 875 876 877 878 879
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"
)
880

881 882 883 884 885
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"
)
886

887 888 889 890
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
891

892 893 894 895 896
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"
)
897

898 899 900 901
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"
)
902

903 904 905 906
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    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_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
912

913 914 915 916
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
917

918 919 920
calligra_drop_product_on_bad_condition( FILTER_MPXJ_IMPORT
    SHARED_MIME_INFO_FOUND  "SharedMimeInfo not found (needed to install mimetypes)"
)
921

922 923 924
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
925

926 927
calligra_drop_product_on_bad_condition( APP_PLAN
    KGantt_FOUND "KGantt devel not found"
928
    KChart_FOUND "KChart devel not found"
929 930
)

931
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
932 933 934 935
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

936 937 938 939 940 941 942 943 944 945
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"
)

946 947 948 949 950 951
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
952 953 954 955 956 957 958 959 960
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)
961

962 963 964 965 966
#############################################
####      Temporarily broken products    ####
#############################################

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

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

975
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
976

977

978 979 980 981
#############################################
####     Setup product-depending vars    ####
#############################################

982
if(SHOULD_BUILD_FEATURE_RDF)
983
   add_definitions( -DSHOULD_BUILD_RDF )
984
endif()
985

986 987 988 989 990 991
 ###################
####################
## Subdirectories ##
####################
###################

992
add_subdirectory(words)
993

994
if (SHOULD_BUILD_APP_FLOW)
995
    add_subdirectory(flow)
996
endif ()
997

998
add_subdirectory(stage)
999

1000
if(SHOULD_BUILD_APP_KEXI)
1001
    add_subdirectory(kexi)
1002
endif()
1003

1004
if(SHOULD_BUILD_APP_PLAN)
1005
    add_subdirectory(plan)
1006
endif()
1007

1008
add_subdirectory(sheets)
1009

1010
if(SHOULD_BUILD_APP_KRITA)
1011
  add_subdirectory(krita)
1012
endif()
1013

1014
if(SHOULD_BUILD_APP_KARBON)
1015
  add_subdirectory(karbon)
1016
endif()
1017

1018
if(SHOULD_BUILD_APP_BRAINDUMP)
1019
  add_subdirectory(braindump)
1020
endif()
1021

1022
if(SHOULD_BUILD_APP_ACTIVE)
1023
  add_subdirectory(active)
1024
endif()
1025

1026
if(SHOULD_BUILD_DOC)
1027
    add_subdirectory(doc)
1028
endif()
1029

1030 1031
if(SHOULD_BUILD_PART_QTQUICK)
    add_subdirectory(qtquick)
1032
endif()
1033 1034 1035

if(SHOULD_BUILD_GEMINI)
    add_subdirectory(gemini)
1036
endif()
1037

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