CMakeLists.txt 21.3 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 19 20
# define the generic version of the Calligra libraries here
# this makes it easy to advance it when the next Calligra release comes
set(GENERIC_CALLIGRA_LIB_VERSION "8.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "8")
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
Casper Boemann's avatar
Casper Boemann committed
31 32
option(BUILD_koabstraction "Build directory koabstraction" ON) # koabstraction isn't buildable at the moment
option(BUILD_mobile "Build directory mobile" ON) # mobile depends on koabstraction it builds but does not run
33

34
option(GHNS "support Get Hot New Stuff" ON)
35
option(NEPOMUK "support NEPOMUK Tagging" ON)
36 37
option(TINY "compile a tiny Calligra" OFF)
option(CREATIVEONLY "compile only Karbon and Krita" OFF)
38 39

IF (TINY)
C. Boemann's avatar
C. Boemann committed
40
    set(SHOULD_BUILD_WORDS TRUE)
41
    set(SHOULD_BUILD_STAGE TRUE)
42
    set(SHOULD_BUILD_TABLES TRUE)
43 44 45
    set(SHOULD_BUILD_KARBON FALSE)
    set(SHOULD_BUILD_KRITA FALSE)
    set(SHOULD_BUILD_KEXI FALSE)
46
    set(SHOULD_BUILD_FLOW FALSE)
47
    set(SHOULD_BUILD_PLAN FALSE)
48 49
    set(SHOULD_BUILD_KDGANTT FALSE)
    set(SHOULD_BUILD_KOUNAVAIL FALSE)
50
    set(SHOULD_BUILD_SCRIPTING FALSE)
51
    set(SHOULD_BUILD_MOBILE TRUE)
52
    set(SHOULD_BUILD_KOREPORT FALSE)
53
    set(SHOULD_BUILD_BRAINDUMP FALSE)
54
    set(SHOULD_BUILD_CALLIGRA FALSE)
55
    set(SHOULD_BUILD_CSTESTER FALSE)
56
    set(SHOULD_BUILD_KOABSTRACTION TRUE)
57
    set(SHOULD_BUILD_ACTIVE TRUE)
58 59
ELSEIF (CREATIVEONLY)
    set(SHOULD_BUILD_WORDS FALSE)
60
    set(SHOULD_BUILD_STAGE FALSE)
61 62 63 64 65
    set(SHOULD_BUILD_TABLES FALSE)
    set(SHOULD_BUILD_KARBON TRUE)
    set(SHOULD_BUILD_KRITA TRUE)
    set(SHOULD_BUILD_KEXI FALSE)
    set(SHOULD_BUILD_FLOW FALSE)
66
    set(SHOULD_BUILD_PLAN FALSE)
67 68 69
    set(SHOULD_BUILD_KDGANTT FALSE)
    set(SHOULD_BUILD_KOUNAVAIL FALSE)
    set(SHOULD_BUILD_SCRIPTING TRUE)
70
    set(SHOULD_BUILD_MOBILE FALSE)
71 72 73 74 75
    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)
76
    set(SHOULD_BUILD_ACTIVE FALSE)
77
ELSE()
C. Boemann's avatar
C. Boemann committed
78
    set(SHOULD_BUILD_WORDS TRUE)
79
    set(SHOULD_BUILD_STAGE TRUE)
80
    set(SHOULD_BUILD_TABLES TRUE)
81
    set(SHOULD_BUILD_KARBON TRUE)
82 83
    set(SHOULD_BUILD_KRITA TRUE)
    set(SHOULD_BUILD_KEXI TRUE)
84
    set(SHOULD_BUILD_FLOW TRUE)
85
    set(SHOULD_BUILD_PLAN TRUE)
86 87
    set(SHOULD_BUILD_KDGANTT TRUE)
    set(SHOULD_BUILD_KOUNAVAIL TRUE)
88
    set(SHOULD_BUILD_SCRIPTING TRUE)
89
    set(SHOULD_BUILD_MOBILE TRUE)
90
    set(SHOULD_BUILD_KOREPORT TRUE)
91
    set(SHOULD_BUILD_BRAINDUMP TRUE)
92
    set(SHOULD_BUILD_CALLIGRA TRUE)
93
    set(SHOULD_BUILD_CSTESTER TRUE)
94
    set(SHOULD_BUILD_KOABSTRACTION TRUE)
95
    set(SHOULD_BUILD_ACTIVE TRUE)
96
ENDIF()
97

98 99 100 101 102 103 104 105 106 107
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
108
set(KDE_MIN_VERSION "4.3.0")
109
find_package(KDE4 4.3.0 REQUIRED)
Cyrille Berger's avatar
Cyrille Berger committed
110

111
find_package(Qt4 4.6.0 REQUIRED)
112

113
include(KDE4Defaults)
114
include(MacroLibrary)
115 116 117
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)

118
option(GHNS "support Get Hot New Stuff" ON)
119
if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
120
    set(GHNS FALSE)
121
endif(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
122

123 124 125
if(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
  set(NEPOMUK FALSE)
endif(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
126

127 128
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")

129 130 131 132 133
 ###########################
############################
## Required dependencies  ##
############################
###########################
134

Laurent Montel's avatar
Laurent Montel committed
135 136
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
137
find_package(PNG REQUIRED)
138 139 140 141
find_package(Boost REQUIRED) # for pigment and stage
if (NOT Boost_FOUND)
    MESSAGE(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, tables and krita.")
endif (NOT Boost_FOUND)
142

143 144 145
if (APPLE)
   find_package(Carbon REQUIRED)
endif (APPLE)
146

147 148
 ################################
#################################
149
## Check for OpenEXR           ##
150 151
#################################
################################
152

153

154 155
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
156

157

158 159 160 161 162 163 164 165 166 167
 ###########################
############################
## Optional dependencies  ##
############################
###########################

##
## Look for OpenGL
##

168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
macro_optional_find_package(OpenGL)
set(HAVE_OPENGL 0)

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

185 186 187
##
## Test for create ressources
##
188
macro_optional_find_package(CreateResources)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
189
macro_log_feature(CREATERESOURCES_FOUND "Create Resources" "Create Resources (brushes, palettes etc.)" "http://create.freedesktop.org" FALSE "" "Recommended at runtime for Calligra for optional extra resources.")
Laurent Montel's avatar
Laurent Montel committed
190

191 192 193
##
## Test for kdepimlibs
##
194
macro_optional_find_package(KdepimLibs)
195
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)")
196

197

198 199 200 201
##
## Test for eigen2
##
macro_optional_find_package(Eigen2)
202
macro_log_feature(EIGEN2_FOUND "Eigen" "C++ template library for linear algebra" "http://eigen.tuxfamily.org" FALSE "2.0" "Required by Tables and Krita")
203

204 205 206
##
## Test for QCA2
##
207
macro_optional_find_package(QCA2)
208
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)")
209

210 211 212
##
## Test for exiv2
##
213 214 215
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")
216

217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
##
## 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 )


233 234 235 236
##
## Test for marble
##
macro_optional_find_package(Marble)
237
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")
238 239 240 241 242
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
243
endif(NOT MARBLE_FOUND)
244 245 246 247 248 249
if( MARBLE_FOUND )
   add_definitions( -DCAN_USE_MARBLE )
endif( MARBLE_FOUND )



250 251
##
## Test for lcms
252
##
253 254 255 256 257 258
macro_optional_find_package(LCMS)
set(REQUIRED_LCMS_VERSION 118)
if(LCMS_FOUND AND NOT LCMS_VERSION LESS ${REQUIRED_LCMS_VERSION})
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
    set(HAVE_LCMS TRUE)
else(LCMS_FOUND AND NOT LCMS_VERSION LESS ${REQUIRED_LCMS_VERSION})
259
    set(HAVE_REQUIRED_LCMS_VERSION FALSE)
260 261 262
    set(HAVE_LCMS FALSE)
endif(LCMS_FOUND AND NOT LCMS_VERSION LESS ${REQUIRED_LCMS_VERSION})

263
macro_optional_find_package(LCMS2)
264
macro_log_feature(LCMS2_FOUND "LittleCMS" "Color management engine" "http://www.littlecms.com" FALSE "2.0" "Optional replacement for LittleCMS 1.18. Can be used for color management and Krita")
265 266 267 268 269
if(LCMS2_FOUND)
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
    set(HAVE_LCMS TRUE)
endif(LCMS2_FOUND)

270 271 272 273 274
##
## Test for Nepomuk
##
if(NEPOMUK)
    macro_optional_find_package(Nepomuk)
275 276 277
    if(NOT NEPOMUK_FOUND)
        set(NEPOMUK FALSE)
    endif(NOT NEPOMUK_FOUND)
278
    add_definitions(-DDISABLE_NEPOMUK_LEGACY)
Srikanth Tiyyagura's avatar
Srikanth Tiyyagura committed
279
    macro_log_feature(NEPOMUK_FOUND "Nepomuk" "Handles metadata of resources" FALSE  "Required to handle metadata of resources")
280 281
endif(NEPOMUK)

282

283
macro_log_feature(HAVE_REQUIRED_LCMS_VERSION "LittleCMS" "Color management engine" "http://www.littlecms.com" FALSE "1.18" "Required for color management and Krita")
284

Thomas Zander's avatar
Thomas Zander committed
285 286
#Set the build of TextShape changetraker

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

289
if(WIN32)
290 291 292 293 294 295 296 297 298 299 300 301 302 303
    # 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} )


304 305 306 307
else(WIN32)
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
endif(WIN32)

Hanzes Matus's avatar
Hanzes Matus committed
308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326
##
## Test for Fontconfig
##
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")

##
## Test for Freetype
##
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")

if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND) 
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
else(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
	add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
endif(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
  
Cyrille Berger's avatar
Cyrille Berger committed
327 328 329
##
## Test for Qt Webkit
##
330 331 332 333
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
334

335 336 337
##
## QImageBlitz (for Kexi)
##
338 339
#macro_optional_find_package(QImageBlitz)
#macro_log_feature(QIMAGEBLITZ_FOUND "QImageBlitz" "Fast, smooth scaling of QImages" "sourceforge.net/projects/qimageblitz/" FALSE "" "Required for Kexi")
340

341 342 343
##
## Test endianess
##
David Faure's avatar
David Faure committed
344
include (TestBigEndian)
345 346
TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)

347 348 349 350
##
## Generate a file for prefix information
##

Cyrille Berger's avatar
Cyrille Berger committed
351 352 353 354 355 356
 #############################
##############################
## Add the benchmark target ##
##############################
#############################

Boudewijn Rempt's avatar
Boudewijn Rempt committed
357
include(MacroCalligraAddBenchmark)
Cyrille Berger's avatar
Cyrille Berger committed
358

359 360 361 362 363 364
 ####################
#####################
## Define includes ##
#####################
####################

365 366 367
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

371 372 373
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

374
# koodf is at the bottom of the stack
375 376
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
377
                   ${KDE4_INCLUDES})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
378

379 380
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

381
# pigment depends on koplugin and lcms
382
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
383 384
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
385
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
386
                   ${QT_INCLUDES}
387
                   ${KDE4_INCLUDES})
388

389 390 391 392 393
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
394
                   ${KUNDO2_INCLUDES}
395 396
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
397
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
398
                   ${CMAKE_BINARY_DIR}/libs/flake)
399 400 401 402 403 404 405

# 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
406
                   ${SOPRANO_INCLUDE_DIR}
407
                   ${FLAKE_INCLUDES}
408 409
                   ${KOODF_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/main)
410

411 412 413 414
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

415
# komain depends on kotext & flake
416
set(KOMAIN_INCLUDES ${KDE4_INCLUDES}
417
                    ${TEXTLAYOUT_INCLUDES}
418
                    ${MARBLE_INCLUDE_DIR}
419 420
                    ${CMAKE_SOURCE_DIR}/libs/widgets
                    ${CMAKE_SOURCE_DIR}/libs/main
421
                    ${CMAKE_SOURCE_DIR}/libs/main/rdf
422
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
423

424 425 426
if(SHOULD_BUILD_SCRIPTING)
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
endif(SHOULD_BUILD_SCRIPTING)
427

David Faure's avatar
David Faure committed
428
# kopageapp
429 430 431 432 433
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 )
434

435 436 437
# 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
438 439
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
440 441 442 443 444
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)

445 446 447 448 449
 #############################################
##############################################
## Detect which applications can be compile ##
##############################################
#############################################
450

451 452 453 454 455 456
#
# 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
#

457

458
### Tables: eigen2, boost
459
if(NOT EIGEN2_FOUND)
460
    set(SHOULD_BUILD_TABLES FALSE)
461
endif(NOT EIGEN2_FOUND)
462

Boudewijn Rempt's avatar
Boudewijn Rempt committed
463
### Krita: pigment, eigen2, exiv2
464
if(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
465
   set(SHOULD_BUILD_KRITA FALSE)
466
endif(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION)
467

468
### Plan: kdepimlibs
469
if(NOT KdepimLibs_FOUND)
470
    set(SHOULD_BUILD_PLAN FALSE)
471 472
endif(NOT KdepimLibs_FOUND)

473 474
### Active needs tables, stage and words
if (NOT SHOULD_BUILD_TABLES OR NOT SHOULD_BUILD_STAGE OR NOT SHOULD_BUILD_WORDS)
David Faure's avatar
David Faure committed
475
    set(SHOULD_BUILD_ACTIVE FALSE)
476 477 478
endif (NOT SHOULD_BUILD_TABLES OR NOT SHOULD_BUILD_STAGE OR NOT SHOULD_BUILD_WORDS)


479
### Active: only build with Qt 4.7.0 or better 
480
if (NOT ${QTVERSION} VERSION_GREATER 4.7.0)
481
    set(SHOULD_BUILD_ACTIVE FALSE)
482 483
endif (NOT ${QTVERSION} VERSION_GREATER 4.7.0)

484 485 486 487
if (NOT QT_QTDECLARATIVE_FOUND)
    set(SHOULD_BUILD_ACTIVE FALSE)
endif (NOT QT_QTDECLARATIVE_FOUND)

488 489 490
#if(NOT QIMAGEBLITZ_FOUND)
#    set (SHOULD_BUILD_KEXI FALSE)
#endif(NOT QIMAGEBLITZ_FOUND)
491

492 493 494
### 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)
495
option(BUILD_koreport "Build directory libs/koreport" ON)
496 497
### HACK ###

Jarosław Staniek's avatar
Jarosław Staniek committed
498 499 500 501
if(BUILD_kexi AND SHOULD_BUILD_KEXI)
    ##
    ## Test for sqlite
    ##
502
    set(SQLITE_RECOMMENDED_VERSION "3.7.3")
Boudewijn Rempt's avatar
Boudewijn Rempt committed
503
    find_package(CalligraSqlite 3.6.16)
Jarosław Staniek's avatar
Jarosław Staniek committed
504 505 506
    macro_log_feature(SQLITE_FOUND "SQLite" "Embedded SQL database engine" "http://www.sqlite.org"
                      FALSE ${SQLITE_MIN_VERSION} "Required by Kexi (for its default database driver).")

507
    if(NOT SQLITE_FOUND)
Jarosław Staniek's avatar
Jarosław Staniek committed
508 509
        set(SHOULD_BUILD_KEXI FALSE)
        message(STATUS "WARNING: Kexi will not be built.")
510
    endif(NOT SQLITE_FOUND)
Jarosław Staniek's avatar
Jarosław Staniek committed
511 512
endif(BUILD_kexi AND SHOULD_BUILD_KEXI)

513 514 515 516 517 518
 ###################
####################
## Subdirectories ##
####################
###################

C. Boemann's avatar
C. Boemann committed
519
if(SHOULD_BUILD_WORDS)
520
   macro_optional_add_subdirectory(words)
C. Boemann's avatar
C. Boemann committed
521
endif(SHOULD_BUILD_WORDS)
522

523 524 525
if (SHOULD_BUILD_FLOW)
    macro_optional_add_subdirectory(flow)
endif (SHOULD_BUILD_FLOW)
526 527 528

if (SHOULD_BUILD_KOUNAVAIL)
    macro_optional_add_subdirectory(kounavail)
529
endif (SHOULD_BUILD_KOUNAVAIL)
530

531
if (SHOULD_BUILD_PLAN)
532
    macro_optional_add_subdirectory(kdgantt)
533
endif (SHOULD_BUILD_PLAN)
534

535
if(SHOULD_BUILD_STAGE)
536
  macro_optional_add_subdirectory(stage)
537
endif(SHOULD_BUILD_STAGE)
538 539 540 541 542

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

543 544 545
if(SHOULD_BUILD_PLAN)
    macro_optional_add_subdirectory(plan)
endif(SHOULD_BUILD_PLAN)
546

547 548 549
if(SHOULD_BUILD_TABLES)
    macro_optional_add_subdirectory(tables)
endif(SHOULD_BUILD_TABLES)
550 551 552 553 554 555 556 557 558

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)

559 560 561 562
if(SHOULD_BUILD_BRAINDUMP)
  macro_optional_add_subdirectory(braindump)
endif(SHOULD_BUILD_BRAINDUMP)

563
if(SHOULD_BUILD_ACTIVE)
564
  macro_optional_add_subdirectory(active)
565 566
endif(SHOULD_BUILD_ACTIVE)

567

568
if(NOT SHOULD_BUILD_TABLES OR NOT SHOULD_BUILD_WORDS OR NOT SHOULD_BUILD_STAGE)
569
    set(SHOULD_BUILD_KOABSTRACTION FALSE)
570
endif(NOT SHOULD_BUILD_TABLES OR NOT SHOULD_BUILD_WORDS OR NOT SHOULD_BUILD_STAGE)
571

572
if(SHOULD_BUILD_KOABSTRACTION)
573 574 575 576 577 578 579
    # koabstraction depends on kotext & flake
    set(KOABSTRACTION_INCLUDES ${KDE4_INCLUDES}
                        ${KOTEXT_INCLUDES}
                        ${FLAKE_INCLUDES}
                        ${KOPAGEAPP_INCLUDES}
                        ${KOMAIN_INCLUDES}
                        ${CMAKE_SOURCE_DIR}/tools/koabstraction)
580
else(SHOULD_BUILD_KOABSTRACTION)
581
    set(SHOULD_BUILD_MOBILE FALSE)
582
endif(SHOULD_BUILD_KOABSTRACTION)
583

584
if(SHOULD_BUILD_TABLES AND SHOULD_BUILD_WORDS)
585
    # build cstester
586
else(SHOULD_BUILD_TABLES AND SHOULD_BUILD_WORDS)
587
    set(SHOULD_BUILD_CSTESTER FALSE)
588
endif(SHOULD_BUILD_TABLES AND SHOULD_BUILD_WORDS)
589

590 591
macro_optional_add_subdirectory(doc)

592 593 594 595
# 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
596
add_subdirectory(pics)
597
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
598 599
add_subdirectory(servicetypes)
add_subdirectory(templates)
600 601
add_subdirectory(tools)
add_subdirectory(filters)
Laurent Montel's avatar
Laurent Montel committed
602

603
macro_display_feature_log()
604

605 606 607 608 609 610
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
611
message(STATUS "---------------- The following applications will be built ----------------" )
612

C. Boemann's avatar
C. Boemann committed
613
macro_display_application_enabled(words ${SHOULD_BUILD_WORDS})
614
macro_display_application_enabled(tables ${SHOULD_BUILD_TABLES})
615
macro_display_application_enabled(stage ${SHOULD_BUILD_STAGE})
616
macro_display_application_enabled(flow ${SHOULD_BUILD_FLOW})
617
macro_display_application_enabled(kexi ${SHOULD_BUILD_KEXI})
618
macro_display_application_enabled(plan ${SHOULD_BUILD_PLAN})
619 620
macro_display_application_enabled(krita ${SHOULD_BUILD_KRITA})
macro_display_application_enabled(karbon ${SHOULD_BUILD_KARBON})
621
macro_display_application_enabled(braindump ${SHOULD_BUILD_BRAINDUMP})
622
macro_display_application_enabled(mobile ${SHOULD_BUILD_MOBILE})
623
macro_display_application_enabled(calligra ${SHOULD_BUILD_CALLIGRA})
624
macro_display_application_enabled(cstester ${SHOULD_BUILD_CSTESTER})
625
macro_display_application_enabled(active ${SHOULD_BUILD_ACTIVE})
626 627 628

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

629
add_custom_target(apidox doc/api/gendocs.pl WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
630 631 632

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)