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

3 4
message(STATUS "Using CMake version: ${CMAKE_VERSION}")

5
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
6

7
cmake_policy(SET CMP0002 OLD)
8 9 10 11
#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
12

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

17
if(${CMAKE_VERSION} VERSION_GREATER 3.0.0)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
18
    cmake_policy(SET CMP0026 OLD) 
19
    cmake_policy(SET CMP0046 OLD)
20
endif()
21

22 23 24 25 26 27 28 29 30 31 32 33 34 35
# QT5TODO: remove KDE4_BUILD_TESTS once all kde4_add_unit_test have been converted
# transitional forward compatibility:
# BUILD_TESTING is cmake standard, KDE4_BUILD_TESTS not used by ECM/KF5, but only
# macros in cmake/transitional. Just, Macros from cmake/transitional,
# incl. kde4_add_unit_test, are only picked up if no macros from kdelibs4 are installed,
# because that transitional path is appended. Prepending instead might possibly unwantedly
# mask ECM/KF5 macros. Not tested.
# So have BUILD_TESTING define KDE4_BUILD_TESTS.
if (BUILD_TESTING)
    set(KDE4_BUILD_TESTS TRUE)
else()
    set(KDE4_BUILD_TESTS FALSE)
endif()

36 37 38 39 40
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
41

Jigar Raisinghani's avatar
Jigar Raisinghani committed
42 43
# define common versions of Calligra applications, used to generate calligraversion.h
# update these version for every release:
44 45 46 47 48
set(CALLIGRA_VERSION_STRING "3.0 Alpha")
set(CALLIGRA_STABLE_VERSION_MAJOR 3) # 3 for 3.x, 4 for 4.x, etc.
set(CALLIGRA_STABLE_VERSION_MINOR 0) # 0 for 3.0, 1 for 3.1, etc.
set(CALLIGRA_VERSION_RELEASE 89)     # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
set(CALLIGRA_ALPHA 1) # uncomment only for Alpha
Cyrille Berger's avatar
Cyrille Berger committed
49
#set(CALLIGRA_BETA 1) # uncomment only for Beta
Jigar Raisinghani's avatar
Jigar Raisinghani committed
50
#set(CALLIGRA_RC 1) # uncomment only for RC
Friedrich W. H. Kossebau's avatar
Friedrich W. H. Kossebau committed
51
set(CALLIGRA_YEAR 2015) # update every year
Jigar Raisinghani's avatar
Jigar Raisinghani committed
52 53 54 55 56 57 58

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}")

59 60 61 62 63 64
# Define the generic version of the Calligra libraries here
# This makes it easy to advance it when the next Calligra release comes.
# 14 was the last GENERIC_CALLIGRA_LIB_VERSION_MAJOR of the previous Calligra series
# (2.x) so we're starting with 15 in 3.x series.
if(CALLIGRA_STABLE_VERSION_MAJOR EQUAL 3)
    math(EXPR GENERIC_CALLIGRA_LIB_VERSION_MAJOR "${CALLIGRA_STABLE_VERSION_MINOR} + 15")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
65
else()
66 67
    # let's make sure we won't forget to update the "15"
    message(FATAL_ERROR "Reminder: please update offset == 15 used to compute GENERIC_CALLIGRA_LIB_VERSION_MAJOR to something bigger")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
68 69 70
endif()
set(GENERIC_CALLIGRA_LIB_VERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}")
71

72 73 74 75 76
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})
77

Jigar Raisinghani's avatar
Jigar Raisinghani committed
78 79 80
# fetch git revision for the current build

set(CALLIGRA_GIT_SHA1_STRING "")
81
set(CALLIGRA_GIT_BRANCH_STRING "")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
82 83 84

include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
85
get_git_branch(GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
86

87
if(GIT_SHA1 AND GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
88 89
    string(SUBSTRING ${GIT_SHA1} 0 7 GIT_SHA1)
    set(CALLIGRA_GIT_SHA1_STRING ${GIT_SHA1})
90 91
    set(CALLIGRA_GIT_BRANCH_STRING ${GIT_BRANCH})
endif()
92

93 94
if(NOT DEFINED RELEASE_BUILD)
    # estimate mode by CMAKE_BUILD_TYPE content if not set on cmdline
95
    string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
96
    set(RELEASE_BUILD_TYPES "release" "relwithdebinfo" "minsizerel")
97
    list(FIND RELEASE_BUILD_TYPES "${CMAKE_BUILD_TYPE_TOLOWER}" INDEX)
98 99
    if (INDEX EQUAL -1)
        set(RELEASE_BUILD FALSE)
100
    else()
101
        set(RELEASE_BUILD TRUE)
102 103
    endif()
endif()
104 105
message(STATUS "Release build: ${RELEASE_BUILD}")

Jigar Raisinghani's avatar
Jigar Raisinghani committed
106 107 108 109 110
 ############
#############
## Options ##
#############
############
111

Jigar Raisinghani's avatar
Jigar Raisinghani committed
112
option(USEOPENGL "Allow the use of OpenGL for Krita" ON)
113 114
if (WIN32)
    option(USE_BREAKPAD "Build the crash handler for Krita (only on windows)" OFF)
115
endif ()
Boudewijn Rempt's avatar
Boudewijn Rempt committed
116
option(GHNS "support Get Hot New Stuff" OFF)
117 118
# TODO: orthogonal setting, results in minimal features, yet needs to be defined
# option(TINY "compile a tiny Calligra" OFF)
119

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

122 123 124
# TODO: remove option and migration code below before 3.0 release
option(CREATIVEONLY "compile only Karbon and Krita" OFF)

125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
 #######################
########################
## 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)
143
include(MacroJPEG)
144 145 146 147

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

148
set(PRODUCTSET_DEFAULT "ALL")
149 150 151 152 153
# temporary migration support
if (CREATIVEONLY)
    set(WARN_ABOUT_CREATIVEONLY TRUE)
    set(PRODUCTSET_DEFAULT "CREATIVE")
endif ()
154 155

if(NOT PRODUCTSET)
156
    set(PRODUCTSET ${PRODUCTSET_DEFAULT} CACHE STRING "Set of products/features to build" FORCE)
157
endif()
158

159 160
if (RELEASE_BUILD)
    set(CALLIGRA_SHOULD_BUILD_STAGING FALSE)
161
else ()
162
    set(CALLIGRA_SHOULD_BUILD_STAGING TRUE)
163
endif ()
164

165
# finally choose products/features to build
166
calligra_set_productset(${PRODUCTSET})
167

168 169 170 171 172
 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
Cyrille Berger's avatar
Cyrille Berger committed
173

Yue Liu's avatar
Yue Liu committed
174
find_package(ECM 1.7.0 REQUIRED NOMODULE)
175
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
176 177
include(ECMOptionalAddSubdirectory)
include(ECMInstallIcons)
Yue Liu's avatar
Yue Liu committed
178
include(ECMAddAppIcon)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
179 180 181 182 183 184 185 186
include(ECMSetupVersion)
include(ECMMarkNonGuiExecutable)
include(ECMGenerateHeaders)
include(GenerateExportHeader)
include(ECMMarkAsTest)

include(CMakePackageConfigHelpers)
include(WriteBasicConfigVersionFile)
Yue Liu's avatar
Yue Liu committed
187
include(CheckFunctionExists)
188 189 190 191 192 193

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

194
find_package(KF5 5.7.0 REQUIRED COMPONENTS Archive Codecs Config CoreAddons
195
                                     GuiAddons I18n ItemModels ItemViews
196
                                     WidgetsAddons ThreadWeaver
197
                                     Completion IconThemes Sonnet
198
                                     Parts KIO
199
                                     XmlGui Kross Wallet GlobalAccel
200
                                     Emoticons ConfigWidgets KDELibs4Support
201
                                     TextWidgets TextEditor KIO
202
    OPTIONAL_COMPONENTS
203
        NotifyConfig
204
        Activities
205
        KHtml
206
)
207 208 209
if(KF5_Activities_FOUND)
    set(HAVE_KACTIVITIES TRUE)
endif()
210

211
find_package(Qt5 5.3.0 REQUIRED COMPONENTS Core Gui Widgets Xml Network PrintSupport
212
                                           Script Svg Test Concurrent)
213
find_package(Qt5 5.3.0 COMPONENTS UiTools Sql WebKit WebKitWidgets DBus Declarative X11Extras)
214 215

set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND})
216
set(QT_QTWEBKIT_FOUND ${Qt5WebKit_FOUND})
217
set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND})
218

219 220
set(QT_QTTEST_LIBRARY Qt5::Test)

Jigar Raisinghani's avatar
Jigar Raisinghani committed
221
if (USEOPENGL)
222
    find_package(Qt5 5.3.0 REQUIRED OpenGL)
223
    set(QT_QTOPENGL_FOUND ${Qt5OpenGL_FOUND})
224
endif ()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
225

226 227 228



229
include (MacroLibrary)
230 231
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)
232
include (ECMInstallIcons)
233

Boudewijn Rempt's avatar
Boudewijn Rempt committed
234 235 236
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
237
    endif()
238

239 240
    find_package(Attica)
    find_package(NewStuff)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
241
    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.")
242

Boudewijn Rempt's avatar
Boudewijn Rempt committed
243 244
    if (NOT LIBATTICA_FOUND)
        set(GHNS FALSE)
245 246 247 248
    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 ()
249

250 251
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")

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

263 264 265 266 267
# only with this definition will all the FOO_TEST_EXPORT macro do something
# TODO: check if this can be moved to only those places which make use of it,
# to reduce global compiler definitions that would trigger a recompile of
# everything on a change (like adding/removing tests to/from the build)
if(BUILD_TESTING)
268
    add_definitions(-DCOMPILING_TESTS)
269
endif()
270

271 272 273 274 275 276
# 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)
277
endif()
278

279 280 281 282 283 284 285
# 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
    )
286
endif()
287

288 289
# set custom calligra plugin installdir
set(CALLIGRA_PLUGIN_INSTALL_DIR ${LIB_INSTALL_DIR}/calligra)
290

291 292 293 294 295
# 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 ()
296

297 298 299 300 301
 ###########################
############################
## Required dependencies  ##
############################
###########################
302

Laurent Montel's avatar
Laurent Montel committed
303 304
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
305
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
306 307 308
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})
309
endif()
Dmitry Kazakov's avatar
Dmitry Kazakov committed
310 311

add_definitions(-DBOOST_ALL_NO_LIB)
312
find_package(Boost REQUIRED COMPONENTS system) # for pigment and stage
313
if (NOT Boost_FOUND)
314 315
    message(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
endif ()
316

317 318
if (APPLE)
   find_package(Carbon REQUIRED)
319
endif ()
320

321 322 323 324 325 326
 ###########################
############################
## Optional dependencies  ##
############################
###########################

327

328
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
329
## Check for OpenEXR
330
##
331

332 333
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
334

335 336 337
##
## Look for OpenGL
##
338
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
339 340
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
341

Jigar Raisinghani's avatar
Jigar Raisinghani committed
342 343 344 345 346
    if(OPENGL_FOUND)
        message(STATUS "Found OpenGL: ${OPENGL_LIBRARIES}")
        if(QT_QTOPENGL_FOUND)
            message(STATUS "Found Qt OpenGL support")
            set(HAVE_OPENGL 1)
347
        else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
348
            message(STATUS "Did NOT find Qt OpenGL support. Check your Qt configuration")
349 350
        endif()
    else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
351
        message(STATUS "Did NOT find OpenGL libraries")
352
    endif()
353
    macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by Gemini, parts of Krita and optionally by flake")
354
endif()
355

356 357 358 359 360 361 362 363
##
## 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 )
364

365 366 367 368
##
## Test for Phonon4Qt5
##
find_package(Phonon4Qt5)
369
macro_log_feature(Phonon4Qt5_FOUND "Phonon4Qt5" "Abstraction lib for multimedia applications" "http://www.kde.org/" FALSE "" "Required by Stage event actions and Videoshape plugin")
370

371
##
372
## Test for KF5CalendarCore
373
##
374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
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")
394

395 396 397 398 399 400
##
## 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")

401 402 403 404 405 406
##
## 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")

407 408 409 410 411 412 413 414 415 416
##
## Test for KDb
##
macro_optional_find_package(KDb 1.0.0)
macro_log_feature(KDb_FOUND "KDb" "A database connectivity and creation framework"
                            "http://community.kde.org/KDb" FALSE "" "Required by Kexi and its plugins")

##
## Test for KReport
##
417
macro_optional_find_package(KReport 2.96.1)
418 419 420 421 422
if (KReport_FOUND AND KREPORT_SCRIPTING)
    set(KReport_WITH_SCRIPTING_FOUND TRUE)
endif()
macro_log_feature(KReport_WITH_SCRIPTING_FOUND "KReport" "A framework for the creation and generation of reports in multiple formats (scripting support required)"
                                               "http://community.kde.org/KReport" FALSE "" "Required by Kexi and Plan")
423 424 425 426 427 428 429 430

##
## Test for KProperty
##
macro_optional_find_package(KProperty 2.96.0)
macro_log_feature(KProperty_FOUND "KProperty" "A property editing framework with editor widget"
                                  "http://community.kde.org/KProperty" FALSE "" "Required by Kexi")

431
##
Maximiliano Curia's avatar
Maximiliano Curia committed
432
## Test for eigen3
433
##
Maximiliano Curia's avatar
Maximiliano Curia committed
434 435
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")
436

437 438 439
##
## Test for QCA2
##
440 441
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)")
442

443 444 445
##
## Test for exiv2
##
446 447 448
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")
449

450 451 452
##
## Test for soprano
##
453
# QT5TODO: push for released (and maintained) Qt5 version of Soprano, T462, T461
454 455 456
# 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")
457 458
if(NOT Soprano_FOUND)
    set(SOPRANO_INCLUDE_DIR "")
459
endif()
460 461


462 463 464
##
## Test for marble
##
465
set(MARBLE_MIN_VERSION "0.19.2")
466
macro_optional_find_package(CalligraMarble)
467 468 469
if(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE FALSE)
    set(MARBLE_INCLUDE_DIR "")
470
else()
471
    set(CAN_USE_MARBLE TRUE)
472 473 474 475 476 477 478 479 480 481 482
    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)
483
        endif()
484 485
    else()
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
486 487
    endif()
endif()
488
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")
489 490
##
## Test for lcms
491
##
492
macro_optional_find_package(LCMS2)
493
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")
494
if(LCMS2_FOUND)
495
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
496
        set(HAVE_LCMS24 TRUE)
497
    endif()
498
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
499
    set(HAVE_LCMS2 TRUE)
500
endif()
501

502 503 504 505 506 507
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
508
macro_optional_find_package(Vc 0.6.70)
509 510
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)
511 512
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

513 514 515 516
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

if(HAVE_VC)
    message(STATUS "Vc found!")
517 518
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
                        "${CMAKE_SOURCE_DIR}/cmake/vc")
519

520 521 522
    include (VcMacros)

    set(ADDITIONAL_VC_FLAGS "-Wabi -fabi-version=0 -ffp-contract=fast")
523

524 525 526 527
    #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")

528
        if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
529 530 531 532
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
533
        endif()
534 535 536

        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
537
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX AVX2)
538
        else()
539
            set(${_objs} ${_src})
540
        endif()
541 542 543 544
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
545
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX AVX2)
546
        else()
547
            set(${_objs} ${_src})
548
        endif()
549 550 551 552
        endmacro()
    else()
        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
553
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX)
554
        else()
555
            set(${_objs} ${_src})
556
        endif()
557 558 559 560
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
561
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX)
562
        else()
563
            set(${_objs} ${_src})
564
        endif()
565 566
        endmacro()
    endif()
567

568 569 570
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
571 572
    endif ()
endif()
573 574
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

575 576 577
##
## Test for Xinput
##
578
if(NOT WIN32 AND NOT APPLE)
579
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
580
else()
581
  set(REQUIRED_Xinput_FOUND TRUE)
582
endif()
583

Thomas Zander's avatar
Thomas Zander committed
584 585
#Set the build of TextShape changetraker

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

588
if(WIN32)
589 590 591 592 593 594 595 596 597 598 599 600 601 602
    # 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} )


603
else()
604
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
605
endif()
606

Hanzes Matus's avatar
Hanzes Matus committed
607 608 609
##
## Test for Fontconfig
##
610
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
611
if(NOT WIN32 AND NOT APPLE)
612 613
    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")
614
endif()
Hanzes Matus's avatar
Hanzes Matus committed
615 616 617 618

##
## Test for Freetype
##
619
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
620
if(NOT WIN32 AND NOT APPLE)
621 622
    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")
623
endif()
Hanzes Matus's avatar
Hanzes Matus committed
624

625
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
626 627
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
628
else()
629
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
630
endif()
631

632 633 634 635 636 637 638 639
##
## 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
640 641 642
##
## Test for Qt Webkit
##
643
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")
644 645
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
646
endif()
Cyrille Berger's avatar
Cyrille Berger committed
647

648 649 650 651 652
##
## 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")

653 654 655
##
## Test endianess
##
David Faure's avatar
David Faure committed
656
include (TestBigEndian)
657
test_big_endian(CMAKE_WORDS_BIGENDIAN)
658

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

665 666 667
##
## Test for Okular
##
668 669
macro_optional_find_package(Okular5 1.0.0)
macro_log_feature(Okular5_FOUND "Okular" "A unified document viewer" "http://okular.kde.org/" FALSE "" "Required to build the plugins for Okular")
670

671 672 673 674 675 676 677 678 679 680
##
## 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"
)

681
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
682 683 684 685 686 687 688 689 690 691 692
## 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
693
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
694 695 696 697 698 699
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"
)
700 701

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
702
## Test for WordPerfect Graphics Library
703
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
704 705 706 707 708 709
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"
)
710 711 712 713

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
714 715 716 717 718 719
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"
)
720 721

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
722
## Test for Microsoft Visio Document Library
723 724
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
725 726
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
727
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
728 729 730 731 732 733 734 735 736
                  "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"
737
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
738 739
                  "Required by the Stage keynote import filter"
)
740 741 742 743 744

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
745
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")
746 747 748 749 750 751 752 753 754

## 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)
755
    endif()
756
    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")
757
endif()
758 759


760 761 762 763 764 765
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

766 767 768 769
##
## Generate a file for prefix information
##

770 771 772 773 774
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
775

Boudewijn Rempt's avatar
Boudewijn Rempt committed
776
include(MacroCalligraAddBenchmark)
777
include(MacroCalligraAddTest)
Cyrille Berger's avatar
Cyrille Berger committed
778

779 780 781 782 783 784
 ####################
#####################
## Define includes ##
#####################
####################

785 786 787
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

791 792 793 794 795 796 797

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

include_directories(${KOVERSION_INCLUDES})

798 799 800
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

801 802
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

803
# koodf is at the bottom of the stack
804 805
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
806
                   ${KOVERSION_INCLUDES} 
807
                   )
Boudewijn Rempt's avatar
Boudewijn Rempt committed
808

809
# pigment depends on koplugin and lcms
810
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
811
                   ${KOVERSION_INCLUDES} 
812
                   ${CMAKE_SOURCE_DIR}/libs/pigment
813
                   ${CMAKE_BINARY_DIR}/libs/pigment
814
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
815
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
816
                   ${Boost_INCLUDE_DIRS}
817 818
                   
                   )
819

820 821 822 823
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${PIGMENT_INCLUDES}
824
                   ${KUNDO2_INCLUDES}
825
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
826 827
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
828
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
829
                   ${CMAKE_BINARY_DIR}/libs/flake)
830

831
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
832
set(VECTORIMAGE_INCLUDES
833 834 835 836
                   ${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
837

838 839 840 841 842 843
# 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
844
                   ${SOPRANO_INCLUDE_DIR}
845
                   ${FLAKE_INCLUDES}
846
                   ${KOODF_INCLUDES})
847

848 849 850 851
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

852 853
# Widgets depends on kotext and flake
set(KOWIDGETS_INCLUDES ${KOTEXT_INCLUDES}
854
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
855 856 857
                   ${CMAKE_BINARY_DIR}/libs/widgetutils
                   ${CMAKE_SOURCE_DIR}/libs/widgets
                   ${CMAKE_BINARY_DIR}/libs/widgets)
858

C. Boemann's avatar
C. Boemann committed
859
# BasicFlakes depends on flake, widgets
860
set(BASICFLAKES_INCLUDES ${KOWIDGETS_INCLUDES}
C. Boemann's avatar
C. Boemann committed
861 862 863
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

864

865
# komain depends on kotext & flake
866
set(KOMAIN_INCLUDES 
867
                    ${KOWIDGETS_INCLUDES}
868
                    ${TEXTLAYOUT_INCLUDES}
869
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
870
                    ${CMAKE_BINARY_DIR}/libs/main
871
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
872

873 874 875
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
876
set(KORDF_LIBS kordf)
877

878
if(SHOULD_BUILD_FEATURE_SCRIPTING)
879
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
880
endif()
881

David Faure's avatar
David Faure committed
882
# kopageapp
883 884 885 886
set(KOPAGEAPP_INCLUDES ${TEXTLAYOUT_INCLUDES}
                    ${PIGMENT_INCLUDES}
                    ${KOMAIN_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
887 888 889
                    ${CMAKE_SOURCE_DIR}/libs/kopageapp
                    ${CMAKE_SOURCE_DIR}/libs/kopageapp/commands
                    ${CMAKE_BINARY_DIR}/libs/kopageapp )
890

891 892 893 894 895 896 897
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
898
    ${CMAKE_SOURCE_DIR}/filters/libodf2/chart
899 900
)

901 902 903 904 905
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

906 907 908 909 910
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
911

912 913 914 915 916 917
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
918

919 920 921
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
922

923 924 925
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
926

927 928 929 930
calligra_drop_product_on_bad_condition( PART_STAGE
    Qt5WebKitWidgets_FOUND "Qt5WebKitWidgets devel not found"
)

931 932 933
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
934

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

944 945
calligra_drop_product_on_bad_condition( APP_KEXI
    KDb_FOUND "KDb not found"
946
    KReport_WITH_SCRIPTING_FOUND "KReport with scripting support not found"
947
    KProperty_FOUND "KProperty not found"
948
    Qt5UiTools_FOUND "Qt5UiTools not found"
949 950
)

951
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
952
    Okular5_FOUND "Okular devel not found"
953
)
954

955
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
956
    Okular5_FOUND "Okular devel not found"
957
)
958

959 960
calligra_drop_product_on_bad_condition( PLUGIN_CHARTSHAPE
    KChart_FOUND "KChart devel not found"
961 962 963 964
)

calligra_drop_product_on_bad_condition( PLUGIN_VIDEOSHAPE
    Phonon4Qt5_FOUND "Phonon4Qt5 devel not found"
965 966
)

967 968 969 970 971
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"
)
972

973 974 975 976 977
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"
)
978

979 980 981 982 983 984
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"
)
985

986 987 988 989 990
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"
)
991

992 993 994 995
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
996

997 998 999 1000 1001
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"
)
1002

1003 1004 1005 1006
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"
)
1007

1008 1009 1010
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
1011
    KF5_KHtml_FOUND "KF5KHtml devel not found"
1012
)
1013

1014 1015 1016 1017
calligra_drop_product_on_bad_condition( FILTER_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
1018

1019 1020 1021 1022
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
1023

1024 1025 1026
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
1027

1028 1029
calligra_drop_product_on_bad_condition( APP_PLAN
    KGantt_FOUND "KGantt devel not found"
1030
    KChart_FOUND "KChart devel not found"
1031 1032
    KReport_FOUND "KReport not found"
    KProperty_FOUND "KProperty not found"
1033 1034
)

1035
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
1036 1037 1038 1039
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

1040 1041 1042
calligra_drop_product_on_bad_condition( PART_QTQUICK
    USEOPENGL "USEOPENGL set to FALSE"
    QT_QTOPENGL_FOUND "Qt OpenGL not found"
1043
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
1044 1045 1046 1047 1048 1049 1050
)

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

1051 1052 1053 1054 1055 1056
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
1057 1058 1059 1060 1061 1062 1063 1064 1065
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)
1066

1067 1068 1069 1070 1071
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
1072 1073
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
1074
# calligra_disable_product(APP_KEXI "isn't buildable at the moment")
1075 1076 1077 1078 1079