CMakeLists.txt 36.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
if(${CMAKE_VERSION} VERSION_GREATER 3.0.0)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
16
    cmake_policy(SET CMP0026 OLD) 
17
    cmake_policy(SET CMP0046 OLD)
18
endif()
19

20 21 22 23 24
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
25

Jigar Raisinghani's avatar
Jigar Raisinghani committed
26 27
# define common versions of Calligra applications, used to generate calligraversion.h
# update these version for every release:
28
set(CALLIGRA_VERSION_STRING "3.0 Pre-Alpha")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
29 30
set(CALLIGRA_VERSION_MAJOR 2)
set(CALLIGRA_STABLE_VERSION_MINOR 9)
31 32
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 Pre-Alpha and Alpha
Cyrille Berger's avatar
Cyrille Berger committed
33
#set(CALLIGRA_BETA 1) # uncomment only for Beta
Jigar Raisinghani's avatar
Jigar Raisinghani committed
34
#set(CALLIGRA_RC 1) # uncomment only for RC
Friedrich W. H. Kossebau's avatar
Friedrich W. H. Kossebau committed
35
set(CALLIGRA_YEAR 2015) # update every year
Jigar Raisinghani's avatar
Jigar Raisinghani committed
36 37 38 39 40 41 42

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
43 44
# 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
45 46
if(CALLIGRA_VERSION_MAJOR EQUAL 2)
    math(EXPR GENERIC_CALLIGRA_LIB_VERSION_MAJOR "${CALLIGRA_STABLE_VERSION_MINOR} + 5")
47 48 49 50
    if(NOT DEFINED CALLIGRA_STABLE)
        # bump some more because it is in fact unstable 3.0 so has to be larger than for any 2.9.x
        math(EXPR GENERIC_CALLIGRA_LIB_VERSION_MAJOR "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR} + 1")
    endif()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
51 52 53 54 55 56
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}")
57

58 59 60 61 62
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})
63

Jigar Raisinghani's avatar
Jigar Raisinghani committed
64 65 66
# fetch git revision for the current build

set(CALLIGRA_GIT_SHA1_STRING "")
67
set(CALLIGRA_GIT_BRANCH_STRING "")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
68 69 70

include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
71
get_git_branch(GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
72

73
if(GIT_SHA1 AND GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
74 75
    string(SUBSTRING ${GIT_SHA1} 0 7 GIT_SHA1)
    set(CALLIGRA_GIT_SHA1_STRING ${GIT_SHA1})
76 77
    set(CALLIGRA_GIT_BRANCH_STRING ${GIT_BRANCH})
endif()
78

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

Jigar Raisinghani's avatar
Jigar Raisinghani committed
92 93 94 95 96
 ############
#############
## Options ##
#############
############
97

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

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

108 109 110
# TODO: remove option and migration code below before 3.0 release
option(CREATIVEONLY "compile only Karbon and Krita" OFF)

111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
 #######################
########################
## 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)
129
include(MacroJPEG)
130 131 132 133

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

134
set(PRODUCTSET_DEFAULT "ALL")
135 136 137 138 139
# temporary migration support
if (CREATIVEONLY)
    set(WARN_ABOUT_CREATIVEONLY TRUE)
    set(PRODUCTSET_DEFAULT "CREATIVE")
endif ()
140 141

if(NOT PRODUCTSET)
142
    set(PRODUCTSET ${PRODUCTSET_DEFAULT} CACHE STRING "Set of products/features to build" FORCE)
143
endif()
144

145 146
if (RELEASE_BUILD)
    set(CALLIGRA_SHOULD_BUILD_STAGING FALSE)
147
else ()
148
    set(CALLIGRA_SHOULD_BUILD_STAGING TRUE)
149
endif ()
150

151
# finally choose products/features to build
152
calligra_set_productset(${PRODUCTSET})
153

154 155 156 157 158
 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
Cyrille Berger's avatar
Cyrille Berger committed
159

Yue Liu's avatar
Yue Liu committed
160
find_package(ECM 1.7.0 REQUIRED NOMODULE)
161
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
162 163
include(ECMOptionalAddSubdirectory)
include(ECMInstallIcons)
Yue Liu's avatar
Yue Liu committed
164
include(ECMAddAppIcon)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
165 166 167 168 169 170 171 172
include(ECMSetupVersion)
include(ECMMarkNonGuiExecutable)
include(ECMGenerateHeaders)
include(GenerateExportHeader)
include(ECMMarkAsTest)

include(CMakePackageConfigHelpers)
include(WriteBasicConfigVersionFile)
Yue Liu's avatar
Yue Liu committed
173
include(CheckFunctionExists)
174 175 176 177 178 179

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

180
find_package(KF5 5.7.0 REQUIRED COMPONENTS Archive Codecs Config CoreAddons
181
                                     GuiAddons I18n ItemModels ItemViews
182
                                     WidgetsAddons ThreadWeaver
183
                                     Completion IconThemes Sonnet
184
                                     Parts
185
                                     XmlGui Kross Wallet
186
                                     Emoticons ConfigWidgets KDELibs4Support
187
    OPTIONAL_COMPONENTS
188
        NotifyConfig
189
        Activities
190
        Declarative
191
        KHtml
192
)
193 194 195
if(KF5_Activities_FOUND)
    set(HAVE_KACTIVITIES TRUE)
endif()
196

197 198
find_package(Qt5 5.3.0 REQUIRED COMPONENTS Core Gui Widgets Xml PrintSupport Script Svg Test Concurrent)
find_package(Qt5 5.3.0 COMPONENTS Sql WebKit WebKitWidgets DBus Declarative X11Extras)
199 200

set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND})
201
set(QT_QTWEBKIT_FOUND ${Qt5WebKit_FOUND})
202
set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND})
203

204 205
set(QT_QTTEST_LIBRARY Qt5::Test)

Jigar Raisinghani's avatar
Jigar Raisinghani committed
206
if (USEOPENGL)
207
    find_package(Qt5 5.3.0 REQUIRED OpenGL)
208
    set(QT_QTOPENGL_FOUND ${Qt5OpenGL_FOUND})
209
endif ()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
210

211 212 213



214
include (MacroLibrary)
215 216
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)
217
include (ECMInstallIcons)
218

Boudewijn Rempt's avatar
Boudewijn Rempt committed
219 220 221
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
222
    endif()
223

224 225
    find_package(Attica)
    find_package(NewStuff)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
226
    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.")
227

Boudewijn Rempt's avatar
Boudewijn Rempt committed
228 229
    if (NOT LIBATTICA_FOUND)
        set(GHNS FALSE)
230 231 232 233
    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 ()
234

235 236
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")

237 238 239 240 241 242 243 244 245 246 247 248
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
249 250
if(KDE4_BUILD_TESTS)
    add_definitions(-DCOMPILING_TESTS)
251
endif()
252

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

261 262 263 264 265 266 267
# 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
    )
268
endif()
269

270 271
# set custom calligra plugin installdir
set(CALLIGRA_PLUGIN_INSTALL_DIR ${LIB_INSTALL_DIR}/calligra)
272

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

279 280 281 282 283
 ###########################
############################
## Required dependencies  ##
############################
###########################
284

Laurent Montel's avatar
Laurent Montel committed
285 286
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
287
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
288 289 290
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})
291
endif()
Dmitry Kazakov's avatar
Dmitry Kazakov committed
292 293

add_definitions(-DBOOST_ALL_NO_LIB)
294
find_package(Boost REQUIRED COMPONENTS system) # for pigment and stage
295
if (NOT Boost_FOUND)
296 297
    message(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
endif ()
298

299 300
if (APPLE)
   find_package(Carbon REQUIRED)
301
endif ()
302

303 304 305 306 307 308
 ###########################
############################
## Optional dependencies  ##
############################
###########################

309

310
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
311
## Check for OpenEXR
312
##
313

314 315
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
316

317 318 319
##
## Look for OpenGL
##
320
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
321 322
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
323

Jigar Raisinghani's avatar
Jigar Raisinghani committed
324 325 326 327 328
    if(OPENGL_FOUND)
        message(STATUS "Found OpenGL: ${OPENGL_LIBRARIES}")
        if(QT_QTOPENGL_FOUND)
            message(STATUS "Found Qt OpenGL support")
            set(HAVE_OPENGL 1)
329
        else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
330
            message(STATUS "Did NOT find Qt OpenGL support. Check your Qt configuration")
331 332
        endif()
    else()
Jigar Raisinghani's avatar
Jigar Raisinghani committed
333
        message(STATUS "Did NOT find OpenGL libraries")
334
    endif()
335
    macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by Gemini, parts of Krita and optionally by flake")
336
endif()
337

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

347 348 349 350
##
## Test for Phonon4Qt5
##
find_package(Phonon4Qt5)
351
macro_log_feature(Phonon4Qt5_FOUND "Phonon4Qt5" "Abstraction lib for multimedia applications" "http://www.kde.org/" FALSE "" "Required by Stage event actions and Videoshape plugin")
352

353
##
354
## Test for KF5CalendarCore
355
##
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
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")
376

377 378 379 380 381 382
##
## 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")

383 384 385 386 387 388
##
## 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")

389
##
Maximiliano Curia's avatar
Maximiliano Curia committed
390
## Test for eigen3
391
##
Maximiliano Curia's avatar
Maximiliano Curia committed
392 393
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")
394

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

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

408 409 410
##
## Test for soprano
##
411 412 413 414
# 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")
415 416
if(NOT Soprano_FOUND)
    set(SOPRANO_INCLUDE_DIR "")
417
endif()
418 419


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

460 461 462 463 464 465
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
466
macro_optional_find_package(Vc 0.6.70)
467 468
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)
469 470
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

471 472 473 474 475
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

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

476
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Vc_CMAKE_MODULES_DIR}")
477 478
    include (VcMacros)

479 480 481 482
    #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")

483
        if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
484 485 486 487
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
488
        endif()
489 490 491 492

        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)
493
        else()
494
            set(${_objs} ${_src})
495
        endif()
496 497 498 499 500
        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)
501
        else()
502
            set(${_objs} ${_src})
503
        endif()
504 505 506 507 508
        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)
509
        else()
510
            set(${_objs} ${_src})
511
        endif()
512 513 514 515 516
        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)
517
        else()
518
            set(${_objs} ${_src})
519
        endif()
520 521
        endmacro()
    endif()
522

523 524 525
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
526 527
    endif ()
endif()
528 529
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

530 531 532
##
## Test for Xinput
##
533
if(NOT WIN32 AND NOT APPLE)
534
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
535
else()
536
  set(REQUIRED_Xinput_FOUND TRUE)
537
endif()
538

Thomas Zander's avatar
Thomas Zander committed
539 540
#Set the build of TextShape changetraker

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

543
if(WIN32)
544 545 546 547 548 549 550 551 552 553 554 555 556 557
    # 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} )


558
else()
559
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
560
endif()
561

Hanzes Matus's avatar
Hanzes Matus committed
562 563 564
##
## Test for Fontconfig
##
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(Fontconfig)
    macro_log_feature(FONTCONFIG_FOUND "Fontconfig" "Library for configuring and customizing font access" "http://fontconfig.org" FALSE "" "Required to handle exact font size")
569
endif()
Hanzes Matus's avatar
Hanzes Matus committed
570 571 572 573

##
## Test for Freetype
##
574
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
575
if(NOT WIN32 AND NOT APPLE)
576 577
    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")
578
endif()
Hanzes Matus's avatar
Hanzes Matus committed
579

580
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
581 582
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
583
else()
584
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
585
endif()
586

587 588 589 590 591 592 593 594
##
## 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
595 596 597
##
## Test for Qt Webkit
##
598
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")
599 600
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
601
endif()
Cyrille Berger's avatar
Cyrille Berger committed
602

603 604 605 606 607
##
## 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")

608 609 610
##
## Test endianess
##
David Faure's avatar
David Faure committed
611
include (TestBigEndian)
612
test_big_endian(CMAKE_WORDS_BIGENDIAN)
613

614 615 616 617 618 619
##
## 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.")

620 621 622
##
## Test for Okular
##
623 624
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")
625

626 627 628 629 630 631 632 633 634 635
##
## 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"
)

636
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
637 638 639 640 641 642 643 644 645 646 647
## 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
648
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
649 650 651 652 653 654
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"
)
655 656

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
657
## Test for WordPerfect Graphics Library
658
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
659 660 661 662 663 664
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"
)
665 666 667 668

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
669 670 671 672 673 674
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"
)
675 676

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
677
## Test for Microsoft Visio Document Library
678 679
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
680 681
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
682
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
683 684 685 686 687 688 689 690 691
                  "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"
692
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
693 694
                  "Required by the Stage keynote import filter"
)
695 696 697 698 699

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
700
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")
701 702 703 704 705 706 707 708 709

## 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)
710
    endif()
711
    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")
712
endif()
713 714


715 716 717 718 719 720
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

721 722 723 724
##
## Generate a file for prefix information
##

725 726 727 728 729
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
730

Boudewijn Rempt's avatar
Boudewijn Rempt committed
731
include(MacroCalligraAddBenchmark)
732
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
733

734 735 736 737 738 739
 ####################
#####################
## Define includes ##
#####################
####################

740 741 742
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

746 747 748 749 750 751 752

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

include_directories(${KOVERSION_INCLUDES})

753 754 755
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

756 757
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

758
# koodf is at the bottom of the stack
759 760
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
761
                   ${KOVERSION_INCLUDES} 
762
                   )
Boudewijn Rempt's avatar
Boudewijn Rempt committed
763

764
# pigment depends on koplugin and lcms
765
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
766
                   ${KOVERSION_INCLUDES} 
767 768
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
769
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
770
                   ${Boost_INCLUDE_DIRS}
771 772
                   
                   )
773

774 775 776 777 778
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
779
                   ${KUNDO2_INCLUDES}
780
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
781 782
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
783
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
784
                   ${CMAKE_BINARY_DIR}/libs/flake)
785

786
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
787
set(VECTORIMAGE_INCLUDES
788 789 790 791
                   ${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
792

793 794 795 796 797 798
# 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
799
                   ${SOPRANO_INCLUDE_DIR}
800
                   ${FLAKE_INCLUDES}
801
                   ${KOODF_INCLUDES})
802

803 804 805 806
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

807 808 809
# Widgets depends on flake
set(KOWIDGETS_INCLUDES ${FLAKE_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
810 811 812
                   ${CMAKE_BINARY_DIR}/libs/widgetutils
                   ${CMAKE_SOURCE_DIR}/libs/widgets
                   ${CMAKE_BINARY_DIR}/libs/widgets)
813

C. Boemann's avatar
C. Boemann committed
814
# BasicFlakes depends on flake, widgets
815
set(BASICFLAKES_INCLUDES ${FLAKE_INCLUDES}
C. Boemann's avatar
C. Boemann committed
816 817 818
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

819
set(KOWIDGETS_INCLUDES 
820 821 822 823
                    ${BASICFLAKES_INCLUDES}
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils)

824
# komain depends on kotext & flake
825
set(KOMAIN_INCLUDES 
826
                    ${KOWIDGETS_INCLUDES}
827
                    ${TEXTLAYOUT_INCLUDES}
828
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
829
                    ${CMAKE_BINARY_DIR}/libs/main
830
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
831

832 833 834
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
835
set(KORDF_LIBS kordf)
836

837
if(SHOULD_BUILD_FEATURE_SCRIPTING)
838
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
839
endif()
840

David Faure's avatar
David Faure committed
841
# kopageapp
842 843 844 845 846
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 )
847

848 849 850 851 852 853 854
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
855
    ${CMAKE_SOURCE_DIR}/filters/libodf2/chart
856 857
)

858 859 860 861 862
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

863 864 865 866 867
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
868

869 870 871 872 873 874
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
875

876 877 878
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
879

880 881 882
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
883

884 885 886 887
calligra_drop_product_on_bad_condition( PART_STAGE
    Qt5WebKitWidgets_FOUND "Qt5WebKitWidgets devel not found"
)

888 889 890
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
891

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

901 902
calligra_drop_product_on_bad_condition( APP_ACTIVE
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
903
    KF5DECLARATIVE_FOUND "KF5Declarative not found"
904
)
905

906 907 908
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
    OKULAR_FOUND "Okular devel not found"
)
909

910 911 912
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
    OKULAR_FOUND "Okular devel not found"
)
913

914 915
calligra_drop_product_on_bad_condition( PLUGIN_CHARTSHAPE
    KChart_FOUND "KChart devel not found"
916 917 918 919
)

calligra_drop_product_on_bad_condition( PLUGIN_VIDEOSHAPE
    Phonon4Qt5_FOUND "Phonon4Qt5 devel not found"
920 921
)

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

928 929 930 931 932
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"
)
933

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

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

947 948 949 950
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
951

952 953 954 955 956
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"
)
957

958 959 960 961
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"
)
962

963 964 965
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
966
    KF5_KHtml_FOUND "KF5KHtml devel not found"
967
)
968

969 970 971 972
calligra_drop_product_on_bad_condition( FILTER_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
973

974 975 976 977
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
978

979 980 981
calligra_drop_product_on_bad_condition( FILTER_MPXJ_IMPORT
    SHARED_MIME_INFO_FOUND  "SharedMimeInfo not found (needed to install mimetypes)"
)
982

983 984 985
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
986

987 988
calligra_drop_product_on_bad_condition( APP_PLAN
    KGantt_FOUND "KGantt devel not found"
989
    KChart_FOUND "KChart devel not found"
990 991
)

992
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
993 994 995 996
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

997 998 999
calligra_drop_product_on_bad_condition( PART_QTQUICK
    USEOPENGL "USEOPENGL set to FALSE"
    QT_QTOPENGL_FOUND "Qt OpenGL not found"
1000
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
1001 1002 1003 1004 1005 1006 1007
)

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

1008 1009 1010 1011 1012 1013
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
1014 1015 1016 1017 1018 1019 1020 1021 1022
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)
1023

1024 1025 1026 1027 1028
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
1029 1030
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
1031
# calligra_disable_product(APP_KEXI "isn't buildable at the moment")
1032 1033 1034 1035 1036

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

1037
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
1038

1039

1040 1041 1042 1043
#############################################
####     Setup product-depending vars    ####
#############################################

1044
if(SHOULD_BUILD_FEATURE_RDF)
1045
   add_definitions( -DSHOULD_BUILD_RDF )
1046
endif()
1047

1048 1049 1050 1051 1052 1053
 ###################
####################
## Subdirectories ##
####################
###################

1054
add_subdirectory(words)
1055

1056
if (SHOULD_BUILD_APP_FLOW)
1057
    add_subdirectory(flow)
1058
endif ()
1059

1060
add_subdirectory(stage)
1061

1062
if(SHOULD_BUILD_APP_KEXI)
1063
    add_subdirectory(kexi)
1064
endif()
1065

1066
if(SHOULD_BUILD_APP_PLAN)
1067
    add_subdirectory(plan)