CMakeLists.txt 22.1 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)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
293
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")
294 295
if(LCMS2_FOUND)
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
296
    set(HAVE_LCMS2 TRUE)
297 298 299
    set(HAVE_LCMS TRUE)
endif(LCMS2_FOUND)

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

Thomas Zander's avatar
Thomas Zander committed
312 313
#Set the build of TextShape changetraker

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

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


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

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

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

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

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

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

380 381 382 383
##
## Generate a file for prefix information
##

Cyrille Berger's avatar
Cyrille Berger committed
384 385 386 387 388 389
 #############################
##############################
## Add the benchmark target ##
##############################
#############################

Boudewijn Rempt's avatar
Boudewijn Rempt committed
390
include(MacroCalligraAddBenchmark)
Cyrille Berger's avatar
Cyrille Berger committed
391

392 393 394 395 396 397
 ####################
#####################
## Define includes ##
#####################
####################

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

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

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

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

412 413
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

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

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

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

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

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

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

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

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

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

482 483 484 485 486
 #############################################
##############################################
## Detect which applications can be compile ##
##############################################
#############################################
487

488 489 490 491 492 493
#
# 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
#

494

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

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

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


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

516 517 518 519
if (NOT QT_QTDECLARATIVE_FOUND)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif (NOT QT_QTDECLARATIVE_FOUND)

520 521 522 523
if(${KDE_VERSION} VERSION_LESS 4.8.0)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif(${KDE_VERSION} VERSION_LESS 4.8.0)

524 525 526
#if(NOT QIMAGEBLITZ_FOUND)
#    set (SHOULD_BUILD_KEXI FALSE)
#endif(NOT QIMAGEBLITZ_FOUND)
527

528 529 530 531
if (NOT QT3SUPPORT)
    set (SHOULD_BUILD_KEXI FALSE)
endif (NOT QT3SUPPORT)

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

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

542 543 544 545 546 547
 ###################
####################
## Subdirectories ##
####################
###################

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

552 553 554
if (SHOULD_BUILD_FLOW)
    macro_optional_add_subdirectory(flow)
endif (SHOULD_BUILD_FLOW)
555

556
if (SHOULD_BUILD_PLAN)
557
    macro_optional_add_subdirectory(kdgantt)
558
endif (SHOULD_BUILD_PLAN)
559

560
if(SHOULD_BUILD_STAGE)
561
  macro_optional_add_subdirectory(stage)
562
endif(SHOULD_BUILD_STAGE)
563 564 565 566 567

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

568 569 570
if(SHOULD_BUILD_PLAN)
    macro_optional_add_subdirectory(plan)
endif(SHOULD_BUILD_PLAN)
571

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

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)

584 585 586 587
if(SHOULD_BUILD_BRAINDUMP)
  macro_optional_add_subdirectory(braindump)
endif(SHOULD_BUILD_BRAINDUMP)

588
if(SHOULD_BUILD_ACTIVE)
589
  macro_optional_add_subdirectory(active)
590 591
endif(SHOULD_BUILD_ACTIVE)

592

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

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

609 610
macro_optional_add_subdirectory(doc)

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

622
macro_display_feature_log()
623

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

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

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

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

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)