CMakeLists.txt 36 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.2")
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 2)  # 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

Yue Liu's avatar
Yue Liu committed
153
find_package(ECM 1.7.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
include(ECMOptionalAddSubdirectory)
include(ECMInstallIcons)
Yue Liu's avatar
Yue Liu committed
157
include(ECMAddAppIcon)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
158 159 160 161 162 163 164 165
include(ECMSetupVersion)
include(ECMMarkNonGuiExecutable)
include(ECMGenerateHeaders)
include(GenerateExportHeader)
include(ECMMarkAsTest)

include(CMakePackageConfigHelpers)
include(WriteBasicConfigVersionFile)
Yue Liu's avatar
Yue Liu committed
166
include(CheckFunctionExists)
167 168 169 170 171 172

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

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

Boudewijn Rempt's avatar
Boudewijn Rempt committed
190
find_package(Qt5 5.2.0 REQUIRED COMPONENTS Core Gui Widgets Xml PrintSupport Script Svg Test Concurrent)
191
find_package(Qt5 5.2.0 COMPONENTS Sql WebKit WebKitWidgets DBus Declarative X11Extras)
192 193

set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND})
194
set(QT_QTWEBKIT_FOUND ${Qt5WebKit_FOUND})
195
set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND})
196

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

202 203 204



205
include (MacroLibrary)
206 207
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)
208
include (ECMInstallIcons)
209

Boudewijn Rempt's avatar
Boudewijn Rempt committed
210 211 212
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
213
    endif()
214

215 216
    find_package(Attica)
    find_package(NewStuff)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
217
    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.")
218

Boudewijn Rempt's avatar
Boudewijn Rempt committed
219 220
    if (NOT LIBATTICA_FOUND)
        set(GHNS FALSE)
221 222 223 224
    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 ()
225

226 227
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")

228 229 230 231 232 233 234 235 236 237 238 239
find_package(X11)
if(X11_FOUND)
    find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
                 X11Extras
    )
    set(HAVE_X11 TRUE)
    add_definitions(-DHAVE_X11)
else()
    set(HAVE_X11 FALSE)
endif()

# only with this definition will the FOO_TEST_EXPORT macro do something
240 241
if(KDE4_BUILD_TESTS)
    add_definitions(-DCOMPILING_TESTS)
242
endif()
243

244 245 246 247 248 249
# 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)
250
endif()
251

252 253 254 255 256 257 258
# 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
    )
259
endif()
260

261 262
# set custom calligra plugin installdir
set(CALLIGRA_PLUGIN_INSTALL_DIR ${LIB_INSTALL_DIR}/calligra)
263

264 265 266 267 268
# TEMPORARY: for initial Qt5/KF5 build porting phase deprecation warnings are only annoying noise
# remove once code porting phase starts, perhaps first locally in product subdirs
if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
    add_definitions(-Wno-deprecated -Wno-deprecated-declarations)
endif ()
269

270 271 272 273 274
 ###########################
############################
## Required dependencies  ##
############################
###########################
275

Laurent Montel's avatar
Laurent Montel committed
276 277
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
278
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
279 280 281
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})
282
endif()
Dmitry Kazakov's avatar
Dmitry Kazakov committed
283 284

add_definitions(-DBOOST_ALL_NO_LIB)
285
find_package(Boost REQUIRED COMPONENTS system) # for pigment and stage
286
if (NOT Boost_FOUND)
287 288
    message(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
endif ()
289

290 291
if (APPLE)
   find_package(Carbon REQUIRED)
292
endif ()
293

294 295 296 297 298 299
 ###########################
############################
## Optional dependencies  ##
############################
###########################

300

301
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
302
## Check for OpenEXR
303
##
304

305 306
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
307

308 309 310
##
## Look for OpenGL
##
311
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
312 313
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
314

Jigar Raisinghani's avatar
Jigar Raisinghani committed
315 316 317 318 319
    if(OPENGL_FOUND)
        message(STATUS "Found OpenGL: ${OPENGL_LIBRARIES}")
        if(QT_QTOPENGL_FOUND)
            message(STATUS "Found Qt OpenGL support")
            set(HAVE_OPENGL 1)
320
        else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
321
            message(STATUS "Did NOT find Qt OpenGL support. Check your Qt configuration")
322 323
        endif()
    else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
324
        message(STATUS "Did NOT find OpenGL libraries")
325
    endif()
326
    macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by Gemini, parts of Krita and optionally by flake")
327
endif()
328

329 330 331 332 333 334 335 336
##
## 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 )
337

338 339 340 341
##
## Test for Phonon4Qt5
##
find_package(Phonon4Qt5)
342
macro_log_feature(Phonon4Qt5_FOUND "Phonon4Qt5" "Abstraction lib for multimedia applications" "http://www.kde.org/" FALSE "" "Required by Stage event actions and Videoshape plugin")
343

344
##
345
## Test for KF5CalendarCore
346
##
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366
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")
367

368 369 370 371 372 373
##
## 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")

374 375 376 377 378 379
##
## 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")

380
##
Maximiliano Curia's avatar
Maximiliano Curia committed
381
## Test for eigen3
382
##
Maximiliano Curia's avatar
Maximiliano Curia committed
383 384
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")
385

386 387 388
##
## Test for QCA2
##
389 390
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)")
391

392 393 394
##
## Test for exiv2
##
395 396 397
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")
398

399 400 401
##
## Test for soprano
##
402 403 404 405
# 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")
406 407
if(NOT Soprano_FOUND)
    set(SOPRANO_INCLUDE_DIR "")
408
endif()
409 410


411 412 413
##
## Test for marble
##
414
set(MARBLE_MIN_VERSION "0.19.2")
415
macro_optional_find_package(CalligraMarble)
416 417 418
if(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE FALSE)
    set(MARBLE_INCLUDE_DIR "")
419
else()
420
    set(CAN_USE_MARBLE TRUE)
421 422 423 424 425 426 427 428 429 430 431
    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)
432
        endif()
433 434
    else()
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
435 436
    endif()
endif()
437
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")
438 439
##
## Test for lcms
440
##
441
macro_optional_find_package(LCMS2)
442
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")
443
if(LCMS2_FOUND)
444
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
445
        set(HAVE_LCMS24 TRUE)
446
    endif()
447
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
448
    set(HAVE_LCMS2 TRUE)
449
endif()
450

451 452 453 454 455 456
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
457
macro_optional_find_package(Vc 0.6.70)
458 459
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)
460 461
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

462 463 464 465 466
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

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

467
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Vc_CMAKE_MODULES_DIR}")
468 469
    include (VcMacros)

470 471 472 473
    #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")

474
        if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
475 476 477 478
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
479
        endif()
480 481 482 483

        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)
484
        else()
485
            set(${_objs} ${_src})
486
        endif()
487 488 489 490 491
        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)
492
        else()
493
            set(${_objs} ${_src})
494
        endif()
495 496 497 498 499
        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)
500
        else()
501
            set(${_objs} ${_src})
502
        endif()
503 504 505 506 507
        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)
508
        else()
509
            set(${_objs} ${_src})
510
        endif()
511 512
        endmacro()
    endif()
513

514 515 516
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
517 518
    endif ()
endif()
519 520
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

521 522 523
##
## Test for Xinput
##
524
if(NOT WIN32 AND NOT APPLE)
525
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
526
else()
527
  set(REQUIRED_Xinput_FOUND TRUE)
528
endif()
529

Thomas Zander's avatar
Thomas Zander committed
530 531
#Set the build of TextShape changetraker

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

534
if(WIN32)
535 536 537 538 539 540 541 542 543 544 545 546 547 548
    # 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} )


549
else()
550
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
551
endif()
552

Hanzes Matus's avatar
Hanzes Matus committed
553 554 555
##
## Test for Fontconfig
##
556
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
557
if(NOT WIN32 AND NOT APPLE)
558 559
    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")
560
endif()
Hanzes Matus's avatar
Hanzes Matus committed
561 562 563 564

##
## Test for Freetype
##
565
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
566
if(NOT WIN32 AND NOT APPLE)
567 568
    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")
569
endif()
Hanzes Matus's avatar
Hanzes Matus committed
570

571
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
572 573
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
574
else()
575
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
576
endif()
577

578 579 580 581 582 583 584 585
##
## Test for Qt WebKitWidgets
##
macro_log_feature(Qt5Sql_FOUND "Qt Sql"
                  "Qt SQL module."
                  "http://qt.io" FALSE ""
                  "Optional for Sheets database connection")

Cyrille Berger's avatar
Cyrille Berger committed
586 587 588
##
## Test for Qt Webkit
##
589
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")
590 591
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
592
endif()
Cyrille Berger's avatar
Cyrille Berger committed
593

594 595 596 597 598
##
## Test for Qt WebKitWidgets
##
macro_log_feature(Qt5WebKitWidgets_FOUND "Qt WebkitWidgets" "QWidgets module for Webkit, the HTML engine." "http://qt.io" FALSE "" "Required for Stage")

599 600 601
##
## Test endianess
##
David Faure's avatar
David Faure committed
602
include (TestBigEndian)
603
test_big_endian(CMAKE_WORDS_BIGENDIAN)
604

605 606 607 608 609 610
##
## 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.")

611 612 613
##
## Test for Okular
##
614 615
macro_optional_find_package(Okular 0.22.60)
macro_log_feature(OKULAR_FOUND "Okular" "A unified document viewer" "http://okular.kde.org/" FALSE "" "Required to build the plugins for Okular")
616

617 618 619 620 621 622 623 624 625 626
##
## 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"
)

627
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
628 629 630 631 632 633 634 635 636 637 638
## 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
639
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
640 641 642 643 644 645
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"
)
646 647

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
648
## Test for WordPerfect Graphics Library
649
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
650 651 652 653 654 655
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"
)
656 657 658 659

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
660 661 662 663 664 665
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"
)
666 667

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
668
## Test for Microsoft Visio Document Library
669 670
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
671 672
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
673
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
674 675 676 677 678 679 680 681 682
                  "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"
683
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
684 685
                  "Required by the Stage keynote import filter"
)
686 687 688 689 690

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
691
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")
692 693 694 695 696 697 698 699 700

## 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)
701
    endif()
702
    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")
703
endif()
704 705


706 707 708 709 710 711
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

712 713 714 715
##
## Generate a file for prefix information
##

716 717 718 719 720
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
721

Boudewijn Rempt's avatar
Boudewijn Rempt committed
722
include(MacroCalligraAddBenchmark)
723
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
724

725 726 727 728 729 730
 ####################
#####################
## Define includes ##
#####################
####################

731 732 733
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

737 738 739 740 741 742 743

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

include_directories(${KOVERSION_INCLUDES})

744 745 746
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

747 748
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

749
# koodf is at the bottom of the stack
750 751
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
752
                   ${KOVERSION_INCLUDES} 
753
                   )
Boudewijn Rempt's avatar
Boudewijn Rempt committed
754

755
# pigment depends on koplugin and lcms
756
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
757
                   ${KOVERSION_INCLUDES} 
758 759
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
760
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
761
                   ${Boost_INCLUDE_DIRS}
762 763
                   
                   )
764

765 766 767 768 769
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
770
                   ${KUNDO2_INCLUDES}
771
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
772 773
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
774
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
775
                   ${CMAKE_BINARY_DIR}/libs/flake)
776

777
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
778
set(VECTORIMAGE_INCLUDES
779 780 781 782
                   ${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
783

784 785 786 787 788 789
# 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
790
                   ${SOPRANO_INCLUDE_DIR}
791
                   ${FLAKE_INCLUDES}
792
                   ${KOODF_INCLUDES})
793

794 795 796 797
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

798 799 800 801 802
# 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
803
# BasicFlakes depends on flake, widgets
804
set(BASICFLAKES_INCLUDES ${FLAKE_INCLUDES}
C. Boemann's avatar
C. Boemann committed
805 806 807
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

808
set(KOWIDGETS_INCLUDES 
809 810 811 812
                    ${BASICFLAKES_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils)

813
# komain depends on kotext & flake
814
set(KOMAIN_INCLUDES 
815
                    ${KOWIDGETS_INCLUDES}
816
                    ${TEXTLAYOUT_INCLUDES}
817
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
818
                    ${CMAKE_BINARY_DIR}/libs/main
819
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
820

821 822 823
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
824
set(KORDF_LIBS kordf)
825

826
if(SHOULD_BUILD_FEATURE_SCRIPTING)
827
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
828
endif()
829

David Faure's avatar
David Faure committed
830
# kopageapp
831 832 833 834 835
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 )
836

837 838 839 840 841 842 843
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
844
    ${CMAKE_SOURCE_DIR}/filters/libodf2/chart
845 846
)

847 848 849 850 851
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

852 853 854 855 856
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
857

858 859 860 861 862 863
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
864

865 866 867
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
868

869 870 871
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
872

873 874 875 876
calligra_drop_product_on_bad_condition( PART_STAGE
    Qt5WebKitWidgets_FOUND "Qt5WebKitWidgets devel not found"
)

877 878 879
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
880

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

890 891
calligra_drop_product_on_bad_condition( APP_ACTIVE
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
892
    KF5DECLARATIVE_FOUND "KF5Declarative not found"
893
)
894

895 896 897
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
    OKULAR_FOUND "Okular devel not found"
)
898

899 900 901
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
    OKULAR_FOUND "Okular devel not found"
)
902

903 904
calligra_drop_product_on_bad_condition( PLUGIN_CHARTSHAPE
    KChart_FOUND "KChart devel not found"
905 906 907 908
)

calligra_drop_product_on_bad_condition( PLUGIN_VIDEOSHAPE
    Phonon4Qt5_FOUND "Phonon4Qt5 devel not found"
909 910
)

911 912 913 914 915
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"
)
916

917 918 919 920 921
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"
)
922

923 924 925 926 927 928
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"
)
929

930 931 932 933 934
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"
)
935

936 937 938 939
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
940

941 942 943 944 945
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"
)
946

947 948 949 950
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"
)
951

952 953 954
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
955
    KF5_KHtml_FOUND "KF5KHtml devel not found"
956
)
957

958 959 960 961
calligra_drop_product_on_bad_condition( FILTER_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
962

963 964 965 966
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
967

968 969 970
calligra_drop_product_on_bad_condition( FILTER_MPXJ_IMPORT
    SHARED_MIME_INFO_FOUND  "SharedMimeInfo not found (needed to install mimetypes)"
)
971

972 973 974
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
975

976 977
calligra_drop_product_on_bad_condition( APP_PLAN
    KGantt_FOUND "KGantt devel not found"
978
    KChart_FOUND "KChart devel not found"
979 980
)

981
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
982 983 984 985
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

986 987 988
calligra_drop_product_on_bad_condition( PART_QTQUICK
    USEOPENGL "USEOPENGL set to FALSE"
    QT_QTOPENGL_FOUND "Qt OpenGL not found"
989
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
990 991 992 993 994 995 996
)

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

997 998 999 1000 1001 1002
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
1003 1004 1005 1006 1007 1008 1009 1010 1011
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)
1012

1013 1014 1015 1016 1017
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
1018 1019
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
1020
# calligra_disable_product(APP_KEXI "isn't buildable at the moment")
1021 1022 1023 1024 1025

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

1026
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
1027

1028

1029 1030 1031 1032
#############################################
####     Setup product-depending vars    ####
#############################################

1033
if(SHOULD_BUILD_FEATURE_RDF)
1034
   add_definitions( -DSHOULD_BUILD_RDF )
1035
endif()
1036

1037 1038 1039 1040 1041 1042
 ###################
####################
## Subdirectories ##
####################
###################

1043
add_subdirectory(words)
1044

1045
if (SHOULD_BUILD_APP_FLOW)
1046
    add_subdirectory(flow)
1047
endif ()
1048

1049
add_subdirectory(stage)
1050

1051
if(SHOULD_BUILD_APP_KEXI)
1052
    add_subdirectory(kexi)
1053
endif()
1054

1055
if(SHOULD_BUILD_APP_PLAN)
1056
    add_subdirectory(plan)
1057
endif()
1058

1059
add_subdirectory(sheets)
1060

1061
if(SHOULD_BUILD_APP_KRITA)
1062
  add_subdirectory(krita)
1063
endif()
1064

1065
if(SHOULD_BUILD_APP_KARBON)
1066
  add_subdirectory(karbon)