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
    set(SHOULD_BUILD_KDGANTT FALSE)
65
    set(SHOULD_BUILD_SCRIPTING FALSE)
66 67 68 69 70
    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 111
include (KDE4Defaults)
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
 ###########################
############################
## Optional dependencies  ##
############################
###########################

170 171 172 173 174 175
##
## Test for sqlite
##
set(SQLITE_MIN_VERSION 3.6.16)
set(SQLITE_RECOMMENDED_VERSION 3.7.12)
set(SQLITE_LOAD_EXTENSION_REQUIRED ON)
176 177
macro_optional_find_package(CalligraSqlite 3.6.16)
macro_bool_to_01(SQLITE_FOUND HAVE_SQLITE)
178 179
macro_log_feature(SQLITE_FOUND "SQLite" "Embedded SQL database engine with enabled extensions loading"
                    "http://www.sqlite.org" FALSE "${SQLITE_MIN_VERSION}"
180 181
		    "Required by Calligra's default database handler for Kexi and Words.")

182 183 184
##
## Test for ICU
##
185 186
macro_optional_find_package(ICU)
macro_bool_to_01(ICU_FOUND HAVE_ICU)
187 188
macro_log_feature(ICU_FOUND "ICU" "International Components for Unicode (ICU) Library"
                    "http://icu-project.org" FALSE ""
189
		    "Required by Calligra's default database handler for Kexi and Words.")
190

191 192 193
##
## Check for OpenEXR 
##
194

195 196
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
197

198 199 200
##
## Look for OpenGL
##
201
set(HAVE_OPENGL 0)
202 203
if (NOT WIN32)
macro_optional_find_package(OpenGL)
204 205 206 207 208 209 210 211 212 213 214 215 216 217

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")
218
endif (NOT WIN32)
219

220 221 222
##
## Test for kdepimlibs
##
223
macro_optional_find_package(KdepimLibs)
224
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)")
225

226

227 228 229 230
##
## Test for eigen2
##
macro_optional_find_package(Eigen2)
231
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")
232

233 234 235
##
## Test for QCA2
##
236
macro_optional_find_package(QCA2)
237
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)")
238

239 240 241
##
## Test for exiv2
##
242 243 244
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")
245

246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
##
## 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 )


262 263 264 265
##
## Test for marble
##
macro_optional_find_package(Marble)
266
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")
267 268 269 270 271
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
272
endif(NOT MARBLE_FOUND)
273
if( MARBLE_FOUND )
274 275 276 277 278 279 280
    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 )
281 282
    file(READ ${MARBLECONTROLBOX_H} MARBLECONTROLBOX_H_CONTENT)
    string(REGEX MATCH "setMarbleWidget" SETMARBLEWIDGET ${MARBLECONTROLBOX_H_CONTENT})
283 284 285 286
        if( SETMARBLEWIDGET )
            add_definitions(-DHAVE_SETMARBLEWIDGET)
        endif( SETMARBLEWIDGET)
    endif( MARBLECONTROLBOX_H )
287 288
endif( MARBLE_FOUND )

289 290
##
## Test for lcms
291
##
292
macro_optional_find_package(LCMS2)
293
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")
294
if(LCMS2_FOUND)
295 296 297
    if(${LCMS2_VERSION} VERSION_GREATER 2.04 )
        set(HAVE_LCMS24 TRUE)
    endif(${LCMS2_VERSION} VERSION_GREATER 2.04 )
298
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
299
    set(HAVE_LCMS2 TRUE)
300 301
endif(LCMS2_FOUND)

302 303 304 305 306
##
## Test for Nepomuk
##
if(NEPOMUK)
    macro_optional_find_package(Nepomuk)
307 308 309
    if(NOT NEPOMUK_FOUND)
        set(NEPOMUK FALSE)
    endif(NOT NEPOMUK_FOUND)
310
    add_definitions(-DDISABLE_NEPOMUK_LEGACY)
Srikanth Tiyyagura's avatar
Srikanth Tiyyagura committed
311
    macro_log_feature(NEPOMUK_FOUND "Nepomuk" "Handles metadata of resources" FALSE  "Required to handle metadata of resources")
312 313
endif(NEPOMUK)

Thomas Zander's avatar
Thomas Zander committed
314 315
#Set the build of TextShape changetraker

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

318
if(WIN32)
319 320 321 322 323 324 325 326 327 328 329 330 331 332
    # 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} )


333 334 335 336
else(WIN32)
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
endif(WIN32)

Hanzes Matus's avatar
Hanzes Matus committed
337 338 339
##
## Test for Fontconfig
##
340 341 342 343 344
## 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
345 346 347 348

##
## Test for Freetype
##
349 350 351 352 353
## 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
354 355 356 357 358

if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND) 
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
else(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
359
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
Hanzes Matus's avatar
Hanzes Matus committed
360 361
endif(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
  
Cyrille Berger's avatar
Cyrille Berger committed
362 363 364
##
## Test for Qt Webkit
##
365 366 367 368
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
369

370 371 372
##
## QImageBlitz (for Kexi)
##
373 374
#macro_optional_find_package(QImageBlitz)
#macro_log_feature(QIMAGEBLITZ_FOUND "QImageBlitz" "Fast, smooth scaling of QImages" "sourceforge.net/projects/qimageblitz/" FALSE "" "Required for Kexi")
375

376 377 378
##
## Test endianess
##
David Faure's avatar
David Faure committed
379
include (TestBigEndian)
380 381
TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)

382 383 384 385
##
## Generate a file for prefix information
##

Cyrille Berger's avatar
Cyrille Berger committed
386 387 388 389 390 391
 #############################
##############################
## Add the benchmark target ##
##############################
#############################

Boudewijn Rempt's avatar
Boudewijn Rempt committed
392
include(MacroCalligraAddBenchmark)
Cyrille Berger's avatar
Cyrille Berger committed
393

394 395 396 397 398 399
 ####################
#####################
## Define includes ##
#####################
####################

400 401 402
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

406 407 408
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

409
# koodf is at the bottom of the stack
410 411
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
412
                   ${KDE4_INCLUDES})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
413

414 415
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

416
# pigment depends on koplugin and lcms
417
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
418 419
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
420
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
421
                   ${QT_INCLUDES}
422
                   ${KDE4_INCLUDES})
423

424 425 426 427 428
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
429
                   ${KUNDO2_INCLUDES}
430 431
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
432
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
433
                   ${CMAKE_BINARY_DIR}/libs/flake)
434 435 436 437 438 439 440

# 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
441
                   ${SOPRANO_INCLUDE_DIR}
442
                   ${FLAKE_INCLUDES}
443 444
                   ${KOODF_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/main)
445

446 447 448 449
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

450
# komain depends on kotext & flake
451
set(KOMAIN_INCLUDES ${KDE4_INCLUDES}
452
                    ${TEXTLAYOUT_INCLUDES}
453
                    ${MARBLE_INCLUDE_DIR}
454 455
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/main
456
                    ${CMAKE_SOURCE_DIR}/libs/main/rdf
457
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
458

459 460 461
if(SHOULD_BUILD_SCRIPTING)
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
endif(SHOULD_BUILD_SCRIPTING)
462

David Faure's avatar
David Faure committed
463
# kopageapp
464 465 466 467 468
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 )
469

470 471 472
# 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
473 474
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
475 476 477 478 479
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)

480 481 482 483
# calligradb
SET(CALLIGRADB_LIBS calligradb)                    # TODO remove when Predicate lib arrives
set(CALLIGRADB_INCLUDES ${CMAKE_SOURCE_DIR}/libs)  # TODO remove when Predicate lib arrives

484 485 486 487 488
 #############################################
##############################################
## Detect which applications can be compile ##
##############################################
#############################################
489

490 491 492 493 494 495
#
# 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
#

496

497
### Calligra Sheets: eigen2, boost
498
if(NOT EIGEN2_FOUND)
499
    set(SHOULD_BUILD_SHEETS FALSE)
500
endif(NOT EIGEN2_FOUND)
501

Boudewijn Rempt's avatar
Boudewijn Rempt committed
502
### Krita: pigment, eigen2, exiv2
503
if(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
504
   set(SHOULD_BUILD_KRITA FALSE)
505
endif(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
506

507 508
### 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
509
    set(SHOULD_BUILD_ACTIVE FALSE)
510
endif (NOT SHOULD_BUILD_SHEETS OR NOT SHOULD_BUILD_STAGE OR NOT SHOULD_BUILD_WORDS)
511 512


513
### Active: only build with Qt 4.7.0 or better 
514
if (NOT ${QTVERSION} VERSION_GREATER 4.7.0)
515
    set(SHOULD_BUILD_ACTIVE FALSE)
516 517
endif (NOT ${QTVERSION} VERSION_GREATER 4.7.0)

518 519 520 521
if (NOT QT_QTDECLARATIVE_FOUND)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif (NOT QT_QTDECLARATIVE_FOUND)

522 523 524 525
if(${KDE_VERSION} VERSION_LESS 4.8.0)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif(${KDE_VERSION} VERSION_LESS 4.8.0)

526 527 528
#if(NOT QIMAGEBLITZ_FOUND)
#    set (SHOULD_BUILD_KEXI FALSE)
#endif(NOT QIMAGEBLITZ_FOUND)
529

530 531 532 533
if (NOT QT3SUPPORT)
    set (SHOULD_BUILD_KEXI FALSE)
endif (NOT QT3SUPPORT)

534 535 536
### 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)
537
option(BUILD_koreport "Build directory libs/koreport" ON)
538 539
### HACK ###

Jarosław Staniek's avatar
Jarosław Staniek committed
540
if(BUILD_kexi AND SHOULD_BUILD_KEXI)
541
###
Jarosław Staniek's avatar
Jarosław Staniek committed
542 543
endif(BUILD_kexi AND SHOULD_BUILD_KEXI)

544 545 546 547 548 549
 ###################
####################
## Subdirectories ##
####################
###################

C. Boemann's avatar
C. Boemann committed
550
if(SHOULD_BUILD_WORDS)
551
   macro_optional_add_subdirectory(words)
C. Boemann's avatar
C. Boemann committed
552
endif(SHOULD_BUILD_WORDS)
553

554 555 556
if (SHOULD_BUILD_FLOW)
    macro_optional_add_subdirectory(flow)
endif (SHOULD_BUILD_FLOW)
557

558
if (SHOULD_BUILD_PLAN)
559
    macro_optional_add_subdirectory(kdgantt)
560
endif (SHOULD_BUILD_PLAN)
561

562
if(SHOULD_BUILD_STAGE)
563
  macro_optional_add_subdirectory(stage)
564
endif(SHOULD_BUILD_STAGE)
565 566 567 568 569

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

570 571 572
if(SHOULD_BUILD_PLAN)
    macro_optional_add_subdirectory(plan)
endif(SHOULD_BUILD_PLAN)
573

574 575 576
if(SHOULD_BUILD_SHEETS)
    macro_optional_add_subdirectory(sheets)
endif(SHOULD_BUILD_SHEETS)
577 578 579 580 581 582 583 584 585

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)

586 587 588 589
if(SHOULD_BUILD_BRAINDUMP)
  macro_optional_add_subdirectory(braindump)
endif(SHOULD_BUILD_BRAINDUMP)

590
if(SHOULD_BUILD_ACTIVE)
591
  macro_optional_add_subdirectory(active)
592 593
endif(SHOULD_BUILD_ACTIVE)

594

595
if(   NOT SHOULD_BUILD_SHEETS OR NOT BUILD_sheets
596 597 598
   OR NOT SHOULD_BUILD_WORDS OR NOT BUILD_words
   OR NOT SHOULD_BUILD_STAGE OR NOT BUILD_stage
  )
599
    set(SHOULD_BUILD_KOABSTRACTION FALSE)
600
endif(   NOT SHOULD_BUILD_SHEETS OR NOT BUILD_sheets
601 602 603
      OR NOT SHOULD_BUILD_WORDS OR NOT BUILD_words
      OR NOT SHOULD_BUILD_STAGE OR NOT BUILD_stage
     )
604

605
if(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
606
    # build cstester
607
else(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
608
    set(SHOULD_BUILD_CSTESTER FALSE)
609
endif(SHOULD_BUILD_SHEETS AND SHOULD_BUILD_WORDS)
610

611 612
macro_optional_add_subdirectory(doc)

613 614 615 616
# 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
617
add_subdirectory(pics)
618
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
619 620
add_subdirectory(servicetypes)
add_subdirectory(templates)
621 622
add_subdirectory(tools)
add_subdirectory(filters)
Laurent Montel's avatar
Laurent Montel committed
623

624
macro_display_feature_log()
625

626 627 628 629 630 631
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
632
message(STATUS "---------------- The following applications will be built ----------------" )
633

C. Boemann's avatar
C. Boemann committed
634
macro_display_application_enabled(words ${SHOULD_BUILD_WORDS})
635
macro_display_application_enabled(sheets ${SHOULD_BUILD_SHEETS})
636
macro_display_application_enabled(stage ${SHOULD_BUILD_STAGE})
637
macro_display_application_enabled(flow ${SHOULD_BUILD_FLOW})
638
macro_display_application_enabled(kexi ${SHOULD_BUILD_KEXI})
639
macro_display_application_enabled(plan ${SHOULD_BUILD_PLAN})
640 641
macro_display_application_enabled(krita ${SHOULD_BUILD_KRITA})
macro_display_application_enabled(karbon ${SHOULD_BUILD_KARBON})
642
macro_display_application_enabled(braindump ${SHOULD_BUILD_BRAINDUMP})
643
macro_display_application_enabled(calligra ${SHOULD_BUILD_CALLIGRA})
644
macro_display_application_enabled(cstester ${SHOULD_BUILD_CSTESTER})
645
macro_display_application_enabled(active ${SHOULD_BUILD_ACTIVE})
646 647 648

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

649
add_custom_target(apidox doc/api/gendocs.pl WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
650 651 652

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)