Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

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

3
cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
Laurent Montel's avatar
Laurent Montel committed
4

5 6 7 8 9 10
 ############
#############
## Options ##
#############
############

11 12 13 14 15
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
16

Boudewijn Rempt's avatar
Boudewijn Rempt committed
17 18
# define the generic version of the Calligra libraries here
# this makes it easy to advance it when the next Calligra release comes
19 20
set(GENERIC_CALLIGRA_LIB_VERSION "11.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "11")
21

22
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
23

24 25 26 27 28
#
# WARNING: don't change the SHOULD_BUILD_app if an application
# doesn't build, but rather add the following line:
# option(BUILD_app "Build directory app" OFF)
#
29 30
#eg:
#option(BUILD_kexi "Build directory kexi" OFF) # kexi isn't buildable at the moment
31

32
option(GHNS "support Get Hot New Stuff" ON)
33
option(NEPOMUK "support NEPOMUK Tagging" ON)
34 35
option(TINY "compile a tiny Calligra" OFF)
option(CREATIVEONLY "compile only Karbon and Krita" OFF)
36
option(QT3SUPPORT "Build the parts of Calligra that still depend on Qt3" ON)
37 38

IF (TINY)
C. Boemann's avatar
C. Boemann committed
39
    set(SHOULD_BUILD_WORDS TRUE)
40
    set(SHOULD_BUILD_STAGE TRUE)
41
    set(SHOULD_BUILD_SHEETS TRUE)
42 43 44
    set(SHOULD_BUILD_KARBON FALSE)
    set(SHOULD_BUILD_KRITA FALSE)
    set(SHOULD_BUILD_KEXI FALSE)
45
    set(SHOULD_BUILD_FLOW FALSE)
46
    set(SHOULD_BUILD_PLAN FALSE)
47
    set(SHOULD_BUILD_KDGANTT FALSE)
48
    set(SHOULD_BUILD_SCRIPTING FALSE)
49
    set(SHOULD_BUILD_KOREPORT FALSE)
50
    set(SHOULD_BUILD_BRAINDUMP FALSE)
51
    set(SHOULD_BUILD_CALLIGRA FALSE)
52
    set(SHOULD_BUILD_CSTESTER FALSE)
53
    set(SHOULD_BUILD_KOABSTRACTION TRUE)
54
    set(SHOULD_BUILD_ACTIVE TRUE)
55 56
ELSEIF (CREATIVEONLY)
    set(SHOULD_BUILD_WORDS FALSE)
57
    set(SHOULD_BUILD_STAGE FALSE)
58
    set(SHOULD_BUILD_SHEETS FALSE)
59 60 61 62
    set(SHOULD_BUILD_KARBON TRUE)
    set(SHOULD_BUILD_KRITA TRUE)
    set(SHOULD_BUILD_KEXI FALSE)
    set(SHOULD_BUILD_FLOW FALSE)
63
    set(SHOULD_BUILD_PLAN FALSE)
64 65 66 67 68 69 70
    set(SHOULD_BUILD_KDGANTT FALSE)
    set(SHOULD_BUILD_SCRIPTING TRUE)
    set(SHOULD_BUILD_KOREPORT FALSE)
    set(SHOULD_BUILD_BRAINDUMP FALSE)
    set(SHOULD_BUILD_CALLIGRA FALSE)
    set(SHOULD_BUILD_CSTESTER FALSE)
    set(SHOULD_BUILD_KOABSTRACTION FALSE)
71
    set(SHOULD_BUILD_ACTIVE FALSE)
72
ELSE()
Dimitrios T. Tanis's avatar
Dimitrios T. Tanis committed
73 74
    set(SHOULD_BUILD_WORDS TRUE)
    set(SHOULD_BUILD_STAGE TRUE)
75
    set(SHOULD_BUILD_SHEETS TRUE)
Dimitrios T. Tanis's avatar
Dimitrios T. Tanis committed
76 77
    set(SHOULD_BUILD_KARBON TRUE)
    set(SHOULD_BUILD_KRITA TRUE)
78
    set(SHOULD_BUILD_KEXI TRUE)
Dimitrios T. Tanis's avatar
Dimitrios T. Tanis committed
79 80 81 82
    set(SHOULD_BUILD_FLOW TRUE)
    set(SHOULD_BUILD_PLAN TRUE)
    set(SHOULD_BUILD_KDGANTT TRUE)
    set(SHOULD_BUILD_SCRIPTING TRUE)
83
    set(SHOULD_BUILD_KOREPORT TRUE)
Dimitrios T. Tanis's avatar
Dimitrios T. Tanis committed
84
    set(SHOULD_BUILD_BRAINDUMP TRUE)
85
    set(SHOULD_BUILD_CALLIGRA TRUE)
Dimitrios T. Tanis's avatar
Dimitrios T. Tanis committed
86 87 88
    set(SHOULD_BUILD_CSTESTER TRUE)
    set(SHOULD_BUILD_KOABSTRACTION TRUE)
    set(SHOULD_BUILD_ACTIVE TRUE)
89
ENDIF()
90

91 92 93 94 95 96 97 98 99 100
if(KDE4_BUILD_TESTS)
    # only with this definition will the FOO_TEST_EXPORT macro do something
    add_definitions(-DCOMPILING_TESTS)
endif(KDE4_BUILD_TESTS)

 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
Cyrille Berger's avatar
Cyrille Berger committed
101
set(KDE_MIN_VERSION "4.3.0")
102
find_package(KDE4 4.3.0 REQUIRED)
Cyrille Berger's avatar
Cyrille Berger committed
103

104 105 106 107 108
if (QT3SUPPORT)
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus QtOpenGL Qt3Support)
else (QT3SUPPORT)
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus QtOpenGL)
endif (QT3SUPPORT)
109

110
include(KDE4Defaults)
111
include(MacroLibrary)
112 113 114
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)

115 116 117 118 119 120 121 122 123 124
set(SHOULD_BUILD_TEXTSHAPE TRUE)
if ((${QTVERSION} VERSION_EQUAL 4.8.0) OR (${QTVERSION} VERSION_EQUAL 4.8.1))
    if (NOT IHAVEPATCHEDQT)
        set(SHOULD_BUILD_WORDS FALSE)
        set(SHOULD_BUILD_STAGE FALSE)
        set(SHOULD_BUILD_TEXTSHAPE FALSE)
        MESSAGE(STATUS "WARNING: You are using a version of Qt that causes crashes. As a result Words and Stage will not be built. Please upgrade to 4.8.2. You can also patch Qt and when building Calligra set IHAVEPATCHEDQT. Patch against Qt can be found in qt48setx.patch")
    endif (NOT IHAVEPATCHEDQT)
endif ((${QTVERSION} VERSION_EQUAL 4.8.0) OR (${QTVERSION} VERSION_EQUAL 4.8.1))

125
if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
126
    set(GHNS FALSE)
127
endif(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
128

129 130 131 132
macro_optional_find_package(LibAttica)
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.")

if (NOT LIBATTICA_FOUND)
133
    set(GHNS FALSE)
134
endif (NOT LIBATTICA_FOUND)
135

136 137 138
if(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
  set(NEPOMUK FALSE)
endif(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
139

140 141
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")

142 143 144 145 146
 ###########################
############################
## Required dependencies  ##
############################
###########################
147

Laurent Montel's avatar
Laurent Montel committed
148 149
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
150
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
151 152 153 154
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})
endif(APPLE)
155 156
find_package(Boost REQUIRED) # for pigment and stage
if (NOT Boost_FOUND)
157
    MESSAGE(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
158
endif (NOT Boost_FOUND)
159

160 161 162
if (APPLE)
   find_package(Carbon REQUIRED)
endif (APPLE)
163

164 165 166 167 168 169 170 171 172 173
##
## Test for sqlite
##
set(SQLITE_MIN_VERSION 3.6.16)
set(SQLITE_RECOMMENDED_VERSION 3.7.12)
set(SQLITE_LOAD_EXTENSION_REQUIRED ON)
find_package(CalligraSqlite 3.6.16 REQUIRED)
macro_log_feature(SQLITE_FOUND "SQLite" "Embedded SQL database engine with enabled extensions loading"
                    "http://www.sqlite.org" FALSE "${SQLITE_MIN_VERSION}"
                    "Required by Calligra's default database handler.")
174
if (NOT CREATIVEONLY)
175 176 177 178 179 180 181 182
##
## Test for ICU
##
find_package(ICU REQUIRED)
macro_log_feature(ICU_FOUND "ICU" "International Components for Unicode (ICU) Library"
                    "http://icu-project.org" FALSE ""
                    "Required by Calligra's default database handler.")

183
endif (NOT CREATIVEONLY)
184 185
 ################################
#################################
186
## Check for OpenEXR           ##
187 188
#################################
################################
189

190

191 192
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
193

194

195 196 197 198 199 200 201 202 203
 ###########################
############################
## Optional dependencies  ##
############################
###########################

##
## Look for OpenGL
##
204
set(HAVE_OPENGL 0)
205 206
if (NOT WIN32)
macro_optional_find_package(OpenGL)
207 208 209 210 211 212 213 214 215 216 217 218 219 220

if(OPENGL_FOUND)
    message(STATUS "Found OpenGL: ${OPENGL_LIBRARIES}")
    if(QT_QTOPENGL_FOUND)
        message(STATUS "Found Qt OpenGL support")
        set(HAVE_OPENGL 1)
    else(QT_QTOPENGL_FOUND)
        message(STATUS "Did NOT find Qt OpenGL support. Check your Qt configuration")
    endif(QT_QTOPENGL_FOUND)
else(OPENGL_FOUND)
    message(STATUS "Did NOT find OpenGL libraries")
endif(OPENGL_FOUND)

macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by parts of Krita and optionally by flake")
221
endif (NOT WIN32)
222

223 224 225
##
## Test for kdepimlibs
##
226
macro_optional_find_package(KdepimLibs)
227
macro_log_feature(KDEPIMLIBS_FOUND "KDE PIMLibs" "KDE Personal Information Management Libraries" "http://www.kde.org/" FALSE "" "Required by Plan and the KDE address book integration (available as a module in KDE)")
228

229

230 231 232 233
##
## Test for eigen2
##
macro_optional_find_package(Eigen2)
234
macro_log_feature(EIGEN2_FOUND "Eigen" "C++ template library for linear algebra" "http://eigen.tuxfamily.org" FALSE "2.0" "Required by Calligra Sheets and Krita")
235

236 237 238
##
## Test for QCA2
##
239
macro_optional_find_package(QCA2)
240
macro_log_feature(QCA2_FOUND "QCA" "Qt Cryptographic Architecture" "http://delta.affinix.com/qca" FALSE "2.0" "Required for encrypted OpenDocument files and encrypted xls files support (available as a module in kdesupport)")
241

242 243 244
##
## Test for exiv2
##
245 246 247
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")
248

249
if (NOT CREATIVEONLY)
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
##
## Test for soprano
##
macro_optional_find_package(Soprano)
macro_log_feature(Soprano_FOUND "Soprano" "KDE4 RDF handling library" "http://soprano.sourceforge.net/" FALSE "" "Required to handle RDF metadata in ODF")
if(NOT Soprano_FOUND)
    set(SHOULD_BUILD_RDF FALSE)
    set(SOPRANO_INCLUDE_DIR "")
else(NOT Soprano_FOUND)
    set(SHOULD_BUILD_RDF TRUE)
endif(NOT Soprano_FOUND)
if( Soprano_FOUND )
   add_definitions( -DSHOULD_BUILD_RDF )
endif( Soprano_FOUND )


266 267 268 269
##
## Test for marble
##
macro_optional_find_package(Marble)
270
macro_log_feature(MARBLE_FOUND "Marble" "KDE4 World Globe Widget library" "http://techbase.kde.org/Projects/Marble/" FALSE "" "Required by RDF, Kexi Forms and Reports to show locations on a map")
271 272 273 274 275
if(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE FALSE)
    set(MARBLE_INCLUDE_DIR "")
else(NOT MARBLE_FOUND)
    set(CAN_USE_MARBLE TRUE)
Christoph Feck's avatar
Christoph Feck committed
276
endif(NOT MARBLE_FOUND)
277
if( MARBLE_FOUND )
278 279 280 281 282 283 284
    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})
    if( MARBLECONTROLBOX_H )
285 286
    file(READ ${MARBLECONTROLBOX_H} MARBLECONTROLBOX_H_CONTENT)
    string(REGEX MATCH "setMarbleWidget" SETMARBLEWIDGET ${MARBLECONTROLBOX_H_CONTENT})
287 288 289 290
        if( SETMARBLEWIDGET )
            add_definitions(-DHAVE_SETMARBLEWIDGET)
        endif( SETMARBLEWIDGET)
    endif( MARBLECONTROLBOX_H )
291 292
endif( MARBLE_FOUND )

293 294
endif (NOT CREATIVEONLY)

295 296


297 298
##
## Test for lcms
299
##
300
macro_optional_find_package(LCMS2)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
301
macro_log_feature(LCMS2_FOUND "LittleCMS" "Color management engine" "http://www.littlecms.com" FALSE "2.0" "Will be used for color management and is necesary for Krita")
302 303
if(LCMS2_FOUND)
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
304
    set(HAVE_LCMS2 TRUE)
305 306 307
    set(HAVE_LCMS TRUE)
endif(LCMS2_FOUND)

308 309 310 311 312
##
## Test for Nepomuk
##
if(NEPOMUK)
    macro_optional_find_package(Nepomuk)
313 314 315
    if(NOT NEPOMUK_FOUND)
        set(NEPOMUK FALSE)
    endif(NOT NEPOMUK_FOUND)
316
    add_definitions(-DDISABLE_NEPOMUK_LEGACY)
Srikanth Tiyyagura's avatar
Srikanth Tiyyagura committed
317
    macro_log_feature(NEPOMUK_FOUND "Nepomuk" "Handles metadata of resources" FALSE  "Required to handle metadata of resources")
318 319
endif(NEPOMUK)

Thomas Zander's avatar
Thomas Zander committed
320 321
#Set the build of TextShape changetraker

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

324
if(WIN32)
325 326 327 328 329 330 331 332 333 334 335 336 337 338
    # 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} )


339 340 341 342
else(WIN32)
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
endif(WIN32)

Hanzes Matus's avatar
Hanzes Matus committed
343 344 345
##
## Test for Fontconfig
##
346 347 348 349 350
## Only test if on non-Windows system
if(!WIN32)
    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")
endif(!WIN32)
Hanzes Matus's avatar
Hanzes Matus committed
351 352 353 354

##
## Test for Freetype
##
355 356 357 358 359
## Only test if on non-Windows system
if(!WIN32)
    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")
endif(!WIN32)
Hanzes Matus's avatar
Hanzes Matus committed
360 361 362 363 364

if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND) 
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
else(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
365
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
Hanzes Matus's avatar
Hanzes Matus committed
366 367
endif(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
  
Cyrille Berger's avatar
Cyrille Berger committed
368 369 370
##
## Test for Qt Webkit
##
371 372 373 374
macro_log_feature(QT_QTWEBKIT_FOUND "Qt Webkit" "Qt binding for Webkit, the HTML engine." "http://qt.nokia.com" FALSE "" "Required for the web shape, web Kexi widget and web report element")
if(QT_QTWEBKIT_FOUND)
    add_definitions( -DCAN_USE_QTWEBKIT )
endif(QT_QTWEBKIT_FOUND)
Cyrille Berger's avatar
Cyrille Berger committed
375

376 377 378
##
## QImageBlitz (for Kexi)
##
379 380
#macro_optional_find_package(QImageBlitz)
#macro_log_feature(QIMAGEBLITZ_FOUND "QImageBlitz" "Fast, smooth scaling of QImages" "sourceforge.net/projects/qimageblitz/" FALSE "" "Required for Kexi")
381

382 383 384
##
## Test endianess
##
David Faure's avatar
David Faure committed
385
include (TestBigEndian)
386 387
TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)

388 389 390 391
##
## Generate a file for prefix information
##

Cyrille Berger's avatar
Cyrille Berger committed
392 393 394 395 396 397
 #############################
##############################
## Add the benchmark target ##
##############################
#############################

Boudewijn Rempt's avatar
Boudewijn Rempt committed
398
include(MacroCalligraAddBenchmark)
Cyrille Berger's avatar
Cyrille Berger committed
399

400 401 402 403 404 405
 ####################
#####################
## Define includes ##
#####################
####################

406 407 408
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

409
# for config.h and <toplevel/foo.h> includes (if any?)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
410
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/interfaces )
411

412 413 414
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

415
# koodf is at the bottom of the stack
416 417
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
418
                   ${KDE4_INCLUDES})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
419

420 421
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

422
# pigment depends on koplugin and lcms
423
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
424 425
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
426
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
427
                   ${QT_INCLUDES}
428
                   ${KDE4_INCLUDES})
429

430 431 432 433 434
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
435
                   ${KUNDO2_INCLUDES}
436 437
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
438
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
439
                   ${CMAKE_BINARY_DIR}/libs/flake)
440 441 442 443 444 445 446

# 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
447
                   ${SOPRANO_INCLUDE_DIR}
448
                   ${FLAKE_INCLUDES}
449 450
                   ${KOODF_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/main)
451

452 453 454 455
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

456
# komain depends on kotext & flake
457
set(KOMAIN_INCLUDES ${KDE4_INCLUDES}
458
                    ${TEXTLAYOUT_INCLUDES}
459
                    ${MARBLE_INCLUDE_DIR}
460 461
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/main
462
                    ${CMAKE_SOURCE_DIR}/libs/main/rdf
463
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
464

465 466 467
if(SHOULD_BUILD_SCRIPTING)
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
endif(SHOULD_BUILD_SCRIPTING)
468

David Faure's avatar
David Faure committed
469
# kopageapp
470 471 472 473 474
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 )
475

476 477 478
# koproperty
SET(KOPROPERTY_TARGETNAME koproperty)                           # TODO remove when we move to independent place
SET(KOPROPERTY_LIBS ${KOPROPERTY_TARGETNAME})                   # TODO remove when we move to independent place
Boudewijn Rempt's avatar
Boudewijn Rempt committed
479 480
SET(KOPROPERTY_LIB_VERSION ${GENERIC_CALLIGRA_LIB_VERSION})      # TODO remove when we move to independent place
SET(KOPROPERTY_LIB_SOVERSION ${GENERIC_CALLIGRA_LIB_SOVERSION})  # TODO remove when we move to independent place
481 482 483 484 485
SET(KOPROPERTY_USE_KOLIBS TRUE)                                 # TODO remove when we move to independent place
set(KOPROPERTY_INCLUDES ${KOODF_INCLUDES}
                        ${CMAKE_SOURCE_DIR}/libs
                        ${CMAKE_SOURCE_DIR}/libs/widgets)

486 487 488 489
# calligradb
SET(CALLIGRADB_LIBS calligradb)                    # TODO remove when Predicate lib arrives
set(CALLIGRADB_INCLUDES ${CMAKE_SOURCE_DIR}/libs)  # TODO remove when Predicate lib arrives

490 491 492 493 494
 #############################################
##############################################
## Detect which applications can be compile ##
##############################################
#############################################
495

496 497 498 499 500 501
#
# WARNING: when adding a dependency if there is allready a line
# containing SHOULD_BUILD_app, don't add a new one, just add
# the test to the if construct
#

502

503
### Calligra Sheets: eigen2, boost
504
if(NOT EIGEN2_FOUND)
505
    set(SHOULD_BUILD_SHEETS FALSE)
506
endif(NOT EIGEN2_FOUND)
507

Boudewijn Rempt's avatar
Boudewijn Rempt committed
508
### Krita: pigment, eigen2, exiv2
509
if(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
510
   set(SHOULD_BUILD_KRITA FALSE)
511
endif(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
512

513 514
### Active needs sheets, stage and words
if (NOT SHOULD_BUILD_SHEETS OR NOT SHOULD_BUILD_STAGE OR NOT SHOULD_BUILD_WORDS)
David Faure's avatar
David Faure committed
515
    set(SHOULD_BUILD_ACTIVE FALSE)
516
endif (NOT SHOULD_BUILD_SHEETS OR NOT SHOULD_BUILD_STAGE OR NOT SHOULD_BUILD_WORDS)
517 518


519
### Active: only build with Qt 4.7.0 or better 
520
if (NOT ${QTVERSION} VERSION_GREATER 4.7.0)
521
    set(SHOULD_BUILD_ACTIVE FALSE)
522 523
endif (NOT ${QTVERSION} VERSION_GREATER 4.7.0)

524 525 526 527
if (NOT QT_QTDECLARATIVE_FOUND)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif (NOT QT_QTDECLARATIVE_FOUND)

528 529 530 531
if(${KDE_VERSION} VERSION_LESS 4.8.0)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif(${KDE_VERSION} VERSION_LESS 4.8.0)

532 533 534
#if(NOT QIMAGEBLITZ_FOUND)
#    set (SHOULD_BUILD_KEXI FALSE)
#endif(NOT QIMAGEBLITZ_FOUND)
535

536 537 538 539
if (NOT QT3SUPPORT)
    set (SHOULD_BUILD_KEXI FALSE)
endif (NOT QT3SUPPORT)

540 541 542
### HACK ###
# Those BUILD_ are illegally used below before they are defined, which cause problem on a first build
option(BUILD_kexi   "Build directory kexi" ON)
543
option(BUILD_koreport "Build directory libs/koreport" ON)
544 545
### HACK ###

Jarosław Staniek's avatar
Jarosław Staniek committed
546
if(BUILD_kexi AND SHOULD_BUILD_KEXI)
547
###
Jarosław Staniek's avatar
Jarosław Staniek committed
548 549
endif(BUILD_kexi AND SHOULD_BUILD_KEXI)

550 551 552 553 554 555
 ###################
####################
## Subdirectories ##
####################
###################

C. Boemann's avatar
C. Boemann committed
556
if(SHOULD_BUILD_WORDS)
557
   macro_optional_add_subdirectory(words)
C. Boemann's avatar
C. Boemann committed
558
endif(SHOULD_BUILD_WORDS)
559

560 561 562
if (SHOULD_BUILD_FLOW)
    macro_optional_add_subdirectory(flow)
endif (SHOULD_BUILD_FLOW)
563

564
if (SHOULD_BUILD_PLAN)
565
    macro_optional_add_subdirectory(kdgantt)
566
endif (SHOULD_BUILD_PLAN)
567

568
if(SHOULD_BUILD_STAGE)
569
  macro_optional_add_subdirectory(stage)
570
endif(SHOULD_BUILD_STAGE)
571 572 573 574 575

if(SHOULD_BUILD_KEXI)
    macro_optional_add_subdirectory(kexi)
endif(SHOULD_BUILD_KEXI)

576 577 578
if(SHOULD_BUILD_PLAN)
    macro_optional_add_subdirectory(plan)
endif(SHOULD_BUILD_PLAN)
579

580 581 582
if(SHOULD_BUILD_SHEETS)
    macro_optional_add_subdirectory(sheets)
endif(SHOULD_BUILD_SHEETS)
583 584 585 586 587 588 589 590 591

if(SHOULD_BUILD_KRITA)
  macro_optional_add_subdirectory(krita)
endif(SHOULD_BUILD_KRITA)

if(SHOULD_BUILD_KARBON)
  macro_optional_add_subdirectory(karbon)
endif(SHOULD_BUILD_KARBON)

592 593 594 595
if(SHOULD_BUILD_BRAINDUMP)
  macro_optional_add_subdirectory(braindump)
endif(SHOULD_BUILD_BRAINDUMP)

596
if(SHOULD_BUILD_ACTIVE)
597
  macro_optional_add_subdirectory(active)
598 599
endif(SHOULD_BUILD_ACTIVE)

600

601
if(   NOT SHOULD_BUILD_SHEETS OR NOT BUILD_sheets
602 603 604
   OR NOT SHOULD_BUILD_WORDS OR NOT BUILD_words
   OR NOT SHOULD_BUILD_STAGE OR NOT BUILD_stage
  )
605
    set(SHOULD_BUILD_KOABSTRACTION FALSE)
606
endif(   NOT SHOULD_BUILD_SHEETS OR NOT BUILD_sheets
607 608 609
      OR NOT SHOULD_BUILD_WORDS OR NOT BUILD_words
      OR NOT SHOULD_BUILD_STAGE OR NOT BUILD_stage
     )
610

611
if(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
612
    # build cstester
613
else(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
614
    set(SHOULD_BUILD_CSTESTER FALSE)
615
endif(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
616

617 618
macro_optional_add_subdirectory(doc)

619 620 621 622
# non-app directories are moved here because they can depend on SHOULD_BUILD_{appname} variables set above
add_subdirectory(libs)
add_subdirectory(interfaces)
add_subdirectory(cmake)
Laurent Montel's avatar
Laurent Montel committed
623
add_subdirectory(pics)
624
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
625 626
add_subdirectory(servicetypes)
add_subdirectory(templates)
627 628
add_subdirectory(tools)
add_subdirectory(filters)
Laurent Montel's avatar
Laurent Montel committed
629

630
macro_display_feature_log()
631

632 633 634 635 636 637
macro(macro_display_application_enabled _appName _shouldBuild)
if( BUILD_${_appName} AND ${_shouldBuild} MATCHES "[Tt][Rr][Uu][Ee]" )
  message(STATUS ${_appName} )
endif( BUILD_${_appName} AND ${_shouldBuild} MATCHES "[Tt][Rr][Uu][Ee]" )
endmacro(macro_display_application_enabled)

David Faure's avatar
David Faure committed
638
message(STATUS "---------------- The following applications will be built ----------------" )
639

C. Boemann's avatar
C. Boemann committed
640
macro_display_application_enabled(words ${SHOULD_BUILD_WORDS})
641
macro_display_application_enabled(sheets ${SHOULD_BUILD_SHEETS})
642
macro_display_application_enabled(stage ${SHOULD_BUILD_STAGE})
643
macro_display_application_enabled(flow ${SHOULD_BUILD_FLOW})
644
macro_display_application_enabled(kexi ${SHOULD_BUILD_KEXI})
645
macro_display_application_enabled(plan ${SHOULD_BUILD_PLAN})
646 647
macro_display_application_enabled(krita ${SHOULD_BUILD_KRITA})
macro_display_application_enabled(karbon ${SHOULD_BUILD_KARBON})
648
macro_display_application_enabled(braindump ${SHOULD_BUILD_BRAINDUMP})
649
macro_display_application_enabled(calligra ${SHOULD_BUILD_CALLIGRA})
650
macro_display_application_enabled(cstester ${SHOULD_BUILD_CSTESTER})
651
macro_display_application_enabled(active ${SHOULD_BUILD_ACTIVE})
652 653 654

message(STATUS "--------------------------------------------------------------------------" )

655
add_custom_target(apidox doc/api/gendocs.pl WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
656 657 658

configure_file(KoConfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/KoConfig.h )
install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/KoConfig.h DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel)