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 35.4 KB
Newer Older
1
project(calligra)
Laurent Montel's avatar
Laurent Montel committed
2

3
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
4

5
cmake_policy(SET CMP0002 OLD)
6 7 8 9
#cmake_policy CMP0017 was introduced in version 2.8.4
if(${CMAKE_VERSION} VERSION_GREATER 2.8.3)
    cmake_policy(SET CMP0017 NEW)
endif()
Laurent Montel's avatar
Laurent Montel committed
10

11 12 13
if(${CMAKE_VERSION} VERSION_GREATER 2.8.12)
    cmake_policy(SET CMP0022 OLD)
endif()
14

15 16 17 18 19
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
20

Jigar Raisinghani's avatar
Jigar Raisinghani committed
21 22 23 24 25 26 27 28 29
# define common versions of Calligra applications, used to generate calligraversion.h
# update these version for every release:
set(CALLIGRA_VERSION_STRING "2.9 Pre-Alpha")
set(CALLIGRA_VERSION_MAJOR 2)
set(CALLIGRA_STABLE_VERSION_MINOR 9)
set(CALLIGRA_VERSION_RELEASE 89)  # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
set(CALLIGRA_ALPHA 1) # uncomment only for Pre-Alpha and Alpha
#set(CALLIGRA_BETA 1) # uncomment only for Beta
#set(CALLIGRA_RC 1) # uncomment only for RC
30
set(CALLIGRA_YEAR 2014) # update every year
Jigar Raisinghani's avatar
Jigar Raisinghani committed
31 32 33 34 35 36 37

if(NOT DEFINED CALLIGRA_ALPHA AND NOT DEFINED CALLIGRA_BETA AND NOT DEFINED CALLIGRA_RC)
    set(CALLIGRA_STABLE 1) # do not edit
endif()

message(STATUS "Calligra version: ${CALLIGRA_VERSION_STRING}")

Boudewijn Rempt's avatar
Boudewijn Rempt committed
38 39
# define the generic version of the Calligra libraries here
# this makes it easy to advance it when the next Calligra release comes
Jigar Raisinghani's avatar
Jigar Raisinghani committed
40 41 42 43 44 45 46 47
if(CALLIGRA_VERSION_MAJOR EQUAL 2)
    math(EXPR GENERIC_CALLIGRA_LIB_VERSION_MAJOR "${CALLIGRA_STABLE_VERSION_MINOR} + 5")
else()
    # let's make sure we won't forget to update the "5"
    message(FATAL_ERROR "Reminder: please update offset == 5 used to compute GENERIC_CALLIGRA_LIB_VERSION_MAJOR to something bigger")
endif()
set(GENERIC_CALLIGRA_LIB_VERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "${GENERIC_CALLIGRA_LIB_VERSION_MAJOR}")
48

49
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
50

Jigar Raisinghani's avatar
Jigar Raisinghani committed
51 52 53
# fetch git revision for the current build

set(CALLIGRA_GIT_SHA1_STRING "")
54
set(CALLIGRA_GIT_BRANCH_STRING "")
Jigar Raisinghani's avatar
Jigar Raisinghani committed
55 56 57

include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
58
get_git_branch(GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
59

60
if(GIT_SHA1 AND GIT_BRANCH)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
61 62
    string(SUBSTRING ${GIT_SHA1} 0 7 GIT_SHA1)
    set(CALLIGRA_GIT_SHA1_STRING ${GIT_SHA1})
63 64
    set(CALLIGRA_GIT_BRANCH_STRING ${GIT_BRANCH})
endif()
65

66 67
if(NOT DEFINED RELEASE_BUILD)
    # estimate mode by CMAKE_BUILD_TYPE content if not set on cmdline
68
    string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
69
    set(RELEASE_BUILD_TYPES "release" "relwithdebinfo" "minsizerel")
70
    list(FIND RELEASE_BUILD_TYPES "${CMAKE_BUILD_TYPE_TOLOWER}" INDEX)
71 72 73 74 75 76 77 78
    if (INDEX EQUAL -1)
        set(RELEASE_BUILD FALSE)
    else(INDEX EQUAL -1)
        set(RELEASE_BUILD TRUE)
    endif(INDEX EQUAL -1)
endif(NOT DEFINED RELEASE_BUILD)
message(STATUS "Release build: ${RELEASE_BUILD}")

Jigar Raisinghani's avatar
Jigar Raisinghani committed
79 80 81 82 83
 ############
#############
## Options ##
#############
############
84

Jigar Raisinghani's avatar
Jigar Raisinghani committed
85
option(USEOPENGL "Allow the use of OpenGL for Krita" ON)
86 87 88
if (WIN32)
    option(USE_BREAKPAD "Build the crash handler for Krita (only on windows)" OFF)
endif (WIN32)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
89
option(GHNS "support Get Hot New Stuff" OFF)
90 91 92
# TODO: orthogonal setting, results in minimal features, yet needs to be defined
# option(TINY "compile a tiny Calligra" OFF)
option(QT3SUPPORT "Build the parts of Calligra that still depend on Qt3" ON)
93
option(PACKAGERS_BUILD "Build support of multiple CPU architectures in one binary. Should be used by packagers only." ON)
94 95 96 97

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

98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
 #######################
########################
## Productset setting ##
########################
#######################

# For predefined productsets see the definitions in CalligraProducts.cmake and
# in the files in the folder cmake/productsets.

# Finding out the products & features to build is done in 5 steps:
# 1. have the user define the products/features wanted, by giving a productset
# 2. estimate all additional required products/features
# 3. estimate which of the products/features can be build by external deps
# 4. find which products/features have been temporarily disabled due to problems
# 5. estimate which of the products/features can be build by internal deps

# get the special macros
include(CalligraProductSetMacros)

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

120
set(PRODUCTSET_DEFAULT "ALL")
121
# temporary migration support
122 123 124 125 126 127
if (CREATIVEONLY)
    set(WARN_ABOUT_CREATIVEONLY TRUE)
    set(PRODUCTSET_DEFAULT "CREATIVE")
endif (CREATIVEONLY)

if(NOT PRODUCTSET)
128
    set(PRODUCTSET ${PRODUCTSET_DEFAULT} CACHE STRING "Set of products/features to build" FORCE)
129 130
endif(NOT PRODUCTSET)

131 132 133 134 135
if (RELEASE_BUILD)
    set(CALLIGRA_SHOULD_BUILD_STAGING FALSE)
else (RELEASE_BUILD)
    set(CALLIGRA_SHOULD_BUILD_STAGING TRUE)
endif (RELEASE_BUILD)
136

137
# finally choose products/features to build
138
calligra_set_productset(${PRODUCTSET})
139

140 141 142 143 144
 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
145 146
set(KDE_MIN_VERSION "4.3.0")
find_package(KDE4 4.3.0 REQUIRED)
Cyrille Berger's avatar
Cyrille Berger committed
147

148
if (QT3SUPPORT)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
149
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus Qt3Support)
150
else (QT3SUPPORT)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
151
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus)
152
endif (QT3SUPPORT)
153

Jigar Raisinghani's avatar
Jigar Raisinghani committed
154 155 156 157 158
if (USEOPENGL)
    find_package(Qt4 4.6.0 REQUIRED QtOpenGL)
endif (USEOPENGL)


159 160
include (KDE4Defaults)
include (MacroLibrary)
161 162 163
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)

164 165
if ((${QTVERSION} VERSION_EQUAL 4.8.0) OR (${QTVERSION} VERSION_EQUAL 4.8.1))
    if (NOT IHAVEPATCHEDQT)
166 167
        set(SHOULD_BUILD_PART_WORDS FALSE)
        set(SHOULD_BUILD_PART_STAGE FALSE)
168 169
        set(SHOULD_BUILD_PLUGIN_TEXTSHAPE FALSE)
        set(SHOULD_BUILD_PLUGIN_TEXTEDITING FALSE)
170 171 172 173
        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))

Boudewijn Rempt's avatar
Boudewijn Rempt committed
174 175 176 177
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
    endif(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
178

Boudewijn Rempt's avatar
Boudewijn Rempt committed
179 180
    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.")
181

Boudewijn Rempt's avatar
Boudewijn Rempt committed
182 183 184 185 186 187
    if (NOT LIBATTICA_FOUND)
        set(GHNS FALSE)
    else (NOT LIBATTICA_FOUND)
        MESSAGE(STATUS "WARNING: You are compiling with Get Hot New Stuff enabled. Do not do that when building distribution packages. GHNS is unusable these days until someone starts maintaining it again.")
    endif (NOT LIBATTICA_FOUND)
endif (GHNS)
188

189 190
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")

191 192 193 194 195
if(KDE4_BUILD_TESTS)
    # only with this definition will the FOO_TEST_EXPORT macro do something
    add_definitions(-DCOMPILING_TESTS)
endif(KDE4_BUILD_TESTS)

196 197 198 199 200 201 202 203 204 205 206 207 208
# overcome some platform incompatibilities
if(WIN32)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/winquirks)
    add_definitions(-D_USE_MATH_DEFINES)
    add_definitions(-DNOMINMAX)
    set(WIN32_PLATFORM_NET_LIBS ws2_32.lib netapi32.lib)
endif(WIN32)

add_definitions(
    -DQT_USE_FAST_CONCATENATION
    -DQT_USE_FAST_OPERATOR_PLUS
)

209 210 211 212 213 214 215 216
# would need more code changes before 4.8.0, e.g. with qPrintable()
if(NOT ${QTVERSION} VERSION_LESS 4.8.0)
    # enable QStringBuilder enhancement
    add_definitions(
        -DQT_USE_FAST_CONCATENATION
        -DQT_USE_FAST_OPERATOR_PLUS
    )
endif(NOT ${QTVERSION} VERSION_LESS 4.8.0)
217 218


219 220 221 222 223
 ###########################
############################
## Required dependencies  ##
############################
###########################
224

Laurent Montel's avatar
Laurent Montel committed
225 226
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
227
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
228 229 230 231
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)
Dmitry Kazakov's avatar
Dmitry Kazakov committed
232 233

add_definitions(-DBOOST_ALL_NO_LIB)
234
find_package(Boost REQUIRED COMPONENTS system) # for pigment and stage
235
if (NOT Boost_FOUND)
236
    MESSAGE(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
237
endif (NOT Boost_FOUND)
238

239 240 241
if (APPLE)
   find_package(Carbon REQUIRED)
endif (APPLE)
242

243 244 245 246 247 248
 ###########################
############################
## Optional dependencies  ##
############################
###########################

249 250 251 252
##
## Test for sqlite
##
set(SQLITE_MIN_VERSION 3.6.16)
253
set(SQLITE_RECOMMENDED_VERSION 3.8.6)
254
set(SQLITE_LOAD_EXTENSION_REQUIRED ON)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
255
macro_optional_find_package(CalligraSqlite ${SQLITE_MIN_VERSION})
256
macro_bool_to_01(SQLITE_FOUND HAVE_SQLITE)
257
macro_log_feature(SQLITE_FOUND "SQLite" "Embedded SQL database engine with enabled extensions loading"
258 259
                  "http://www.sqlite.org" FALSE "${SQLITE_MIN_VERSION}"
                  "Required by Calligra's default database handler for Kexi and bibliography in Words.")
260

261 262 263
##
## Test for ICU
##
264 265
macro_optional_find_package(ICU)
macro_bool_to_01(ICU_FOUND HAVE_ICU)
266
macro_log_feature(ICU_FOUND "ICU" "International Components for Unicode (ICU) Library"
267 268
                  "http://icu-project.org" FALSE ""
                  "Required by Calligra's default database handler for Kexi and Words.")
269

270
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
271
## Check for OpenEXR
272
##
273

274 275
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
276

277 278 279
##
## Look for OpenGL
##
280
set(HAVE_OPENGL 0)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
281 282
if (USEOPENGL)
    macro_optional_find_package(OpenGL)
283

Jigar Raisinghani's avatar
Jigar Raisinghani committed
284 285 286 287 288 289 290 291 292 293 294 295 296
    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")
endif(USEOPENGL)
297

298 299 300 301 302 303 304 305
##
## Test for GNU Scientific Library
##
macro_optional_find_package(GSL)
macro_log_feature(GSL_FOUND "GSL" "GNU Scientific Library" "http://www.gnu.org/software/gsl"
                  FALSE "1.7" "Required by Krita's Transform tool and Sheets' solver plugin")
macro_bool_to_01(GSL_FOUND HAVE_GSL)
configure_file(config-gsl.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-gsl.h )
306

307 308 309
##
## Test for kdepimlibs
##
310
macro_optional_find_package(KdepimLibs 4.6.0)
311
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)")
312

313
##
Maximiliano Curia's avatar
Maximiliano Curia committed
314
## Test for eigen3
315
##
Maximiliano Curia's avatar
Maximiliano Curia committed
316 317
macro_optional_find_package(Eigen3)
macro_log_feature(EIGEN3_FOUND "Eigen" "C++ template library for linear algebra" "http://eigen.tuxfamily.org" FALSE "3.0" "Required by Calligra Sheets and Krita")
318

319 320 321
##
## Test for QCA2
##
322
macro_optional_find_package(QCA2)
323
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)")
324

325 326 327
##
## Test for exiv2
##
328 329 330
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")
331

332 333 334 335 336 337 338
##
## 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(SOPRANO_INCLUDE_DIR "")
339
endif(NOT Soprano_FOUND)
340 341


342 343 344 345
##
## Test for marble
##
macro_optional_find_package(Marble)
346
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")
347 348 349 350 351
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
352
endif(NOT MARBLE_FOUND)
353
if( MARBLE_FOUND )
354 355 356 357 358
    add_definitions( -DCAN_USE_MARBLE )
    ##
    ## Marble changed addMarbleWidget to setMarbleWidget in MarbleControlBox.h
    ## with commit ea177ca. This is for compatibility with older versions.
    ##
359
    find_file(MARBLECONTROLBOX_H MarbleControlBox.h ${MARBLE_INCLUDE_DIR} PATH_SUFFIXES marble)
360
    if( MARBLECONTROLBOX_H )
361 362
    file(READ ${MARBLECONTROLBOX_H} MARBLECONTROLBOX_H_CONTENT)
    string(REGEX MATCH "setMarbleWidget" SETMARBLEWIDGET ${MARBLECONTROLBOX_H_CONTENT})
363 364 365
        if( SETMARBLEWIDGET )
            add_definitions(-DHAVE_SETMARBLEWIDGET)
        endif( SETMARBLEWIDGET)
366 367
    else( MARBLECONTROLBOX_H )
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
368
    endif( MARBLECONTROLBOX_H )
369 370
endif( MARBLE_FOUND )

371 372
##
## Test for lcms
373
##
374
macro_optional_find_package(LCMS2)
375
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")
376
if(LCMS2_FOUND)
377
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
378
        set(HAVE_LCMS24 TRUE)
379
    endif(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
380
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
381
    set(HAVE_LCMS2 TRUE)
382 383
endif(LCMS2_FOUND)

384 385 386 387 388 389
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
390
macro_optional_find_package(Vc 0.6.70)
391 392
macro_log_feature(Vc_FOUND "Vc" "Portable, zero-overhead SIMD library for C++" "http://code.compeng.uni-frankfurt.de/projects/vc" FALSE "" "Required by the Krita for vectorization")
macro_bool_to_01(Vc_FOUND HAVE_VC)
393 394
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

395 396 397 398 399 400
configure_file(config-vc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-vc.h )

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

    SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Vc_CMAKE_MODULES_DIR}")
401 402
    include (VcMacros)

403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
    #Handle Vc master
    if(Vc_VERSION_MAJOR GREATER 0 OR Vc_VERSION_MINOR GREATER 7)
        message(STATUS "Vc version is greater than 0.7, enabling AVX2 support")

        if(Vc_COMPILER_IS_GCC)
            AddCompilerFlag("-std=c++11" _ok)
            if(NOT _ok)
                AddCompilerFlag("-std=c++0x" _ok)
            endif()
        endif(Vc_COMPILER_IS_GCC)

        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX AVX2)
        else(PACKAGERS_BUILD)
            set(${_objs} ${_src})
        endif(PACKAGERS_BUILD)
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX AVX2)
        else(PACKAGERS_BUILD)
            set(${_objs} ${_src})
        endif(PACKAGERS_BUILD)
        endmacro()
    else()
        macro(ko_compile_for_all_implementations_no_scalar _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX)
        else(PACKAGERS_BUILD)
            set(${_objs} ${_src})
        endif(PACKAGERS_BUILD)
        endmacro()

        macro(ko_compile_for_all_implementations _objs _src)
        if(PACKAGERS_BUILD)
            vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX)
        else(PACKAGERS_BUILD)
            set(${_objs} ${_src})
        endif(PACKAGERS_BUILD)
        endmacro()
    endif()
446

447 448 449 450
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
    endif (NOT PACKAGERS_BUILD)
451 452 453
endif(HAVE_VC)
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

454 455 456
##
## Test for Xinput
##
457
if(NOT WIN32 AND NOT APPLE)
458
  set(REQUIRED_Xinput_FOUND ${X11_Xinput_FOUND})
459
else(NOT WIN32 AND NOT APPLE)
460
  set(REQUIRED_Xinput_FOUND TRUE)
461
endif(NOT WIN32 AND NOT APPLE)
462

463 464 465
##
## Test for KActivities
##
466
macro_optional_find_package(KActivities 6.1.0)
467 468 469 470 471
macro_log_feature(KActivities_FOUND "KActivities" "Activities interface library" "https://projects.kde.org/projects/kde/kdelibs/kactivities" FALSE "" "Required for Activities integration.")
if(KActivities_FOUND)
    set(HAVE_KACTIVITIES TRUE)
endif(KActivities_FOUND)

Thomas Zander's avatar
Thomas Zander committed
472 473
#Set the build of TextShape changetraker

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

476
if(WIN32)
477 478 479 480 481 482 483 484 485 486 487 488 489 490
    # 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} )


491 492 493 494
else(WIN32)
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
endif(WIN32)

Hanzes Matus's avatar
Hanzes Matus committed
495 496 497
##
## Test for Fontconfig
##
498
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
499
if(NOT WIN32 AND NOT APPLE)
500 501
    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")
502
endif()
Hanzes Matus's avatar
Hanzes Matus committed
503 504 505 506

##
## Test for Freetype
##
507
## Only test if on non-Windows system
Yue Liu's avatar
Yue Liu committed
508
if(NOT WIN32 AND NOT APPLE)
509 510
    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")
511
endif()
Hanzes Matus's avatar
Hanzes Matus committed
512

513
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
514 515 516
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
else(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
517
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
Hanzes Matus's avatar
Hanzes Matus committed
518
endif(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
519

Cyrille Berger's avatar
Cyrille Berger committed
520 521 522
##
## Test for Qt Webkit
##
523 524 525 526
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
527

528 529 530 531 532
##
## Test for KDeclarative
##
macro_optional_find_package(KDeclarative)

533 534 535
##
## Test endianess
##
David Faure's avatar
David Faure committed
536
include (TestBigEndian)
537 538
TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)

539 540 541 542 543 544
##
## Test SharedMimeInfo
##
macro_optional_find_package(SharedMimeInfo)
macro_log_feature(SHARED_MIME_INFO_FOUND "SharedMimeInfo" "Shared Mime Info" "http://freedesktop.org/wiki/Software/shared-mime-info" FALSE "" "Required to determine file types OpenRaster (Krita default format), SVM or all of MSOOXML.")

545 546 547 548 549
##
## Test for Okular
##
macro_optional_find_package(Okular)
macro_log_feature(OKULAR_FOUND "Okular" "Okular ODP Plugin" "http://okular.kde.org/" FALSE "" "Required to build the Okular OpenDocument Presenter plugin")
550

551 552 553 554 555 556 557 558 559 560
##
## Test for librevenge
##
macro_optional_find_package(LibRevenge)
macro_log_feature(LIBREVENGE_FOUND "LibRevenge"
                  "A base library for writing document import filters"
                  "http://sf.net/p/libwpd/librevenge/" FALSE ""
                  "Required by various import filters"
)

561
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
562 563 564 565 566 567 568 569 570 571 572
## Test for libodfgen
##
macro_optional_find_package(LibOdfGen)
macro_log_feature(LIBODFGEN_FOUND "LibOdfGen"
                  "Open Document Format Generation Library"
                  "http://sf.net/p/libwpd/libodfgen/" FALSE ""
                  "Required by various import filters"
)

##
## Test for WordPerfect Document Library
573
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
574 575 576 577 578 579
macro_optional_find_package(LibWpd)
macro_log_feature(LIBWPD_FOUND "LibWpd"
                  "WordPerfect Document Library"
                  "http://libwpd.sourceforge.net/" FALSE ""
                  "Required by the Words WPD import filter"
)
580 581

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
582
## Test for WordPerfect Graphics Library
583
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
584 585 586 587 588 589
macro_optional_find_package(LibWpg)
macro_log_feature(LIBWPG_FOUND "LibWpg"
                  "WordPerfect Graphics Library"
                  "http://libwpg.sourceforge.net/" FALSE ""
                  "Required by the Karbon WPG import filter"
)
590 591 592 593

##
## Test for Microsoft Works Document Library
##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
594 595 596 597 598 599
macro_optional_find_package(LibWps)
macro_log_feature(LIBWPS_FOUND "LibWps"
                  "Microsoft Works Document Library"
                  "http://libwps.sourceforge.net/" FALSE ""
                  "Required by the Words WPS import filter"
)
600 601

##
Jigar Raisinghani's avatar
Jigar Raisinghani committed
602
## Test for Microsoft Visio Document Library
603 604
##
macro_optional_find_package(LibVisio)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
605 606
macro_log_feature(LIBVISIO_FOUND "LibVisio"
                  "Visio Import Filter Library"
607
                  "https://wiki.documentfoundation.org/DLP/Libraries/libvisio" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
608 609 610 611 612 613 614 615 616
                  "Required by the Flow visio import filter"
)

##
## Test for Apple Keynote Document Library
##
macro_optional_find_package(LibEtonyek)
macro_log_feature(LIBETONYEK_FOUND "LibEtonyek"
                  "Apple Keynote Document Library"
617
                  "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek" FALSE ""
Jigar Raisinghani's avatar
Jigar Raisinghani committed
618 619
                  "Required by the Stage keynote import filter"
)
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639

##
## Test for qt-poppler
##
macro_optional_find_package(Poppler)
macro_log_feature( POPPLER_FOUND "poppler-qt4" "The Poppler Qt4 interface library" "http://poppler.freedesktop.org" FALSE "" "Required by the Krita PDF filter, Karbon PDF import filter and CSTester PDF feature")

## The Karbon pdf-importer needs the not-officially-supported XPDF Headers
## Installing these is off by default in poppler sources, so lets make
## sure they're really there before trying to build the pdf import
if(POPPLER_FOUND)
    find_path(POPPLER_XPDF_HEADERS poppler-config.h
    HINTS ${POPPLER_INCLUDE_DIR} )
    if(POPPLER_XPDF_HEADERS)
        set(POPPLER_XPDF_HEADERS_FOUND TRUE)
    endif(POPPLER_XPDF_HEADERS)
    macro_log_feature( POPPLER_XPDF_HEADERS_FOUND "poppler-qt4-xpdf-headers" "XPDF headers in the Poppler Qt4 interface library" "http://poppler.freedesktop.org" FALSE "" "Required by the Karbon PDF import filter")
endif(POPPLER_FOUND)


640 641 642 643 644 645
##
## Test for libgit2 and Libqgit2
##
macro_optional_find_package(Libgit2)
macro_optional_find_package(Libqgit2)

646 647 648 649
##
## Generate a file for prefix information
##

650 651 652 653 654
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
655

Boudewijn Rempt's avatar
Boudewijn Rempt committed
656
include(MacroCalligraAddBenchmark)
657
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
658

659 660 661 662 663 664
 ####################
#####################
## Define includes ##
#####################
####################

665 666 667
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

671 672 673
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

674 675
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

676
# koodf is at the bottom of the stack
677 678
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
                   ${CMAKE_BINARY_DIR}/libs/odf
679
                   ${KDE4_INCLUDES})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
680

681

682
# pigment depends on koplugin and lcms
683
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
684 685
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
686
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
687
                   ${Boost_INCLUDE_DIRS} 
688
                   ${QT_INCLUDES}
689
                   ${KDE4_INCLUDES})
690

691 692 693 694 695
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
696
                   ${KUNDO2_INCLUDES}
697
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
698 699
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
700
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
701
                   ${CMAKE_BINARY_DIR}/libs/flake)
702

703
# vectorimage
Jigar Raisinghani's avatar
Jigar Raisinghani committed
704
set(VECTORIMAGE_INCLUDES
705 706 707 708
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libemf
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libsvm
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libwmf)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
709

710 711 712 713 714 715
# 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
716
                   ${SOPRANO_INCLUDE_DIR}
717
                   ${FLAKE_INCLUDES}
718 719
                   ${KOODF_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/main)
720

721 722 723 724
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

C. Boemann's avatar
C. Boemann committed
725 726 727 728 729
# BasicFlakes depends on flake, widgets
set(BASICFLAKES_INCLUDES ${KOWIDGETS_INCLUDES} ${FLAKE_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

730
# komain depends on kotext & flake
731
set(KOMAIN_INCLUDES ${KDE4_INCLUDES}
732
                    ${TEXTLAYOUT_INCLUDES}
733
                    ${CMAKE_SOURCE_DIR}/libs/widgets
734
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils
735
                    ${CMAKE_SOURCE_DIR}/libs/main
Jigar Raisinghani's avatar
Jigar Raisinghani committed
736
                    ${CMAKE_BINARY_DIR}/libs/main
737
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
738

739 740 741
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)
742
set(KORDF_LIBS kordf)
743

744
if(SHOULD_BUILD_FEATURE_SCRIPTING)
745
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
746
endif(SHOULD_BUILD_FEATURE_SCRIPTING)
747

David Faure's avatar
David Faure committed
748
# kopageapp
749 750 751 752 753
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 )
754

755 756 757 758
# koproperty
set(KOPROPERTY_INCLUDES ${KOODF_INCLUDES}
                        ${CMAKE_SOURCE_DIR}/libs
                        ${CMAKE_SOURCE_DIR}/libs/widgets)
759
set(KOPROPERTY_LIBS koproperty)
760

761 762 763 764 765 766 767 768 769
# koreport
set(KOREPORT_INCLUDES
    ${CMAKE_SOURCE_DIR}/libs/
    ${CMAKE_SOURCE_DIR}/libs/koreport
    ${CMAKE_SOURCE_DIR}/libs/koreport/common
    ${CMAKE_SOURCE_DIR}/libs/koreport/renderer
    ${CMAKE_SOURCE_DIR}/libs/koreport/wrtembed)
set(KOREPORT_LIBS koreport)

770
# calligradb
771 772 773
set(CALLIGRADB_LIBS calligradb)                    # TODO remove when Predicate lib arrives
set(CALLIGRADB_INCLUDES ${CMAKE_SOURCE_DIR}/libs   # TODO remove when Predicate lib arrives
                        ${CMAKE_BINARY_DIR}/libs/db)
774

775 776 777
#############################################
####          3rd party libraries        ####
#############################################
778

779 780 781
set(KDGANTT_INCLUDES
    ${CMAKE_SOURCE_DIR}/3rdparty/kdgantt
)
782

783 784 785
set(KDCHART_INCLUDES
    ${CMAKE_SOURCE_DIR}/3rdparty/kdchart/include
)
786 787
set(KDCHART_LIBS calligrakdchart)

788

789 790 791 792 793 794 795 796 797
#############################################
####           filter libraries          ####
#############################################

# libodf2
set(KOODF2_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodf2
)

798 799 800 801 802
# libodfreader
set(KOODFREADER_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/libodfreader
)

803 804 805 806 807
 ###################################################
####################################################
## Detect which products/features can be compiled ##
####################################################
###################################################
808

809 810 811 812 813 814 815 816 817
if (NOT WIN32)
    set(NOT_WIN TRUE)
endif()
if (NOT QT_MAC_USE_COCOA)
    set(NOT_COCOA TRUE)
endif()
if (${QTVERSION} VERSION_GREATER 4.7.0)
    set(QT_GREATER_470 TRUE)
endif()
818

819 820 821
calligra_drop_product_on_bad_condition( LIB_KOMSOOXML
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found (needed to install mimetypes)"
)
822

823 824 825
calligra_drop_product_on_bad_condition( FEATURE_RDF
    Soprano_FOUND "Soprano not found"
)
Jigar Raisinghani's avatar
Jigar Raisinghani committed
826

827 828 829
calligra_drop_product_on_bad_condition( PART_SHEETS
    EIGEN3_FOUND "Eigen devel not found"
)
830

831 832 833 834 835 836 837 838
calligra_drop_product_on_bad_condition( APP_KRITA
    EIGEN3_FOUND "Eigen devel not found"
    EXIV2_FOUND "libexiv2 devel not found"
    HAVE_REQUIRED_LCMS_VERSION "lcms devel not found"
    SHARED_MIME_INFO_FOUND "SharedMimeInfo not found"
    Boost_SYSTEM_FOUND "boost-system devel not found"
    REQUIRED_Xinput_FOUND "Xinput devel not found "
)
839

840 841 842 843 844
calligra_drop_product_on_bad_condition( APP_ACTIVE
    QT_GREATER_470 "Qt version <= 4.7.0"
    QT_QTDECLARATIVE_FOUND "QtDeclarative not found"
    KDECLARATIVE_FOUND "KDeclarative not found"
)
845

846
# TODO: remove when Predicate lib arrives
847 848 849 850
calligra_drop_product_on_bad_condition( LIB_CALLIGRADB
    HAVE_ICU "ICU devel not found"
    HAVE_SQLITE "sqlite devel not found"
)
851

852 853 854
calligra_drop_product_on_bad_condition( APP_KEXI
    QT3SUPPORT "Qt3Support not found"
)
855

856 857 858
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODP
    OKULAR_FOUND "Okular devel not found"
)
859

860 861 862
calligra_drop_product_on_bad_condition( OKULAR_GENERATOR_ODT
    OKULAR_FOUND "Okular devel not found"
)
863

864 865 866 867 868
calligra_drop_product_on_bad_condition( FILTER_KEY_TO_ODP
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBETONYEK_FOUND "libetonyek devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
869

870 871 872 873 874
calligra_drop_product_on_bad_condition( FILTER_VISIO_TO_ODG
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBVISIO_FOUND "libvisio devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
875

876 877 878 879 880 881
calligra_drop_product_on_bad_condition( FILTER_WORDPERFECT_TO_ODT
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPD_FOUND "libwpd devel not found"
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
882

883 884 885 886 887
calligra_drop_product_on_bad_condition( FILTER_WORKS_TO_ODT
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPS_FOUND "libwps devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
888

889 890 891 892
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_SVG
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
893

894 895 896 897 898
calligra_drop_product_on_bad_condition( FILTER_WPG_TO_ODG
    LIBODFGEN_FOUND "libodfgen devel not found"
    LIBWPG_FOUND "libwpg devel not found"
    LIBREVENGE_FOUND "librevenge devel not found"
)
899

900 901 902 903
calligra_drop_product_on_bad_condition( FILTER_PDF_TO_SVG
    NOT_WIN "not supported on Windows"
    POPPLER_XPDF_HEADERS_FOUND "poppler xpdf headers not found"
)
904

905 906 907 908
calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
909

910 911 912 913
calligra_drop_product_on_bad_condition( FILTER_SHEETS_TO_HTML
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
914

915 916 917 918
calligra_drop_product_on_bad_condition( FILTER_KSPREAD_TO_LATEX
    NOT_WIN "not supported on Windows"
    NOT_COCOA "not supported with Qt Cocoa"
)
919

920 921 922
calligra_drop_product_on_bad_condition( FILTER_MPXJ_IMPORT
    SHARED_MIME_INFO_FOUND  "SharedMimeInfo not found (needed to install mimetypes)"
)
923

924 925 926
calligra_drop_product_on_bad_condition( APP_BRAINDUMP
    NOT_WIN "unmaintained on Windows"
)
927

928
calligra_drop_product_on_bad_condition( PLUGIN_CALLIGRAGEMINI_GIT
929 930 931 932
    LIBGIT2_FOUND  "libgit2 devel not found"
    LIBQGIT2_FOUND "libqgit2 devel not found"
)

933 934 935 936 937 938
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
939 940 941 942 943 944 945 946 947
calligra_drop_products_on_old_flag(braindump APP_BRAINDUMP)
calligra_drop_products_on_old_flag(flow APP_FLOW)
calligra_drop_products_on_old_flag(karbon APP_KARBON)
calligra_drop_products_on_old_flag(kexi APP_KEXI)
calligra_drop_products_on_old_flag(krita APP_KRITA)
calligra_drop_products_on_old_flag(plan  APP_PLAN)
calligra_drop_products_on_old_flag(sheets PART_SHEETS APP_SHEETS)
calligra_drop_products_on_old_flag(stage  PART_STAGE APP_STAGE)
calligra_drop_products_on_old_flag(words  PART_WORDS APP_WORDS)
948

949 950 951 952 953
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
954 955
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
956
# calligra_disable_product(APP_KEXI "isn't buildable at the moment")
957 958 959 960 961

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

962
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
963

964

965 966 967 968
#############################################
####     Setup product-depending vars    ####
#############################################

969
if(SHOULD_BUILD_FEATURE_RDF)
970
   add_definitions( -DSHOULD_BUILD_RDF )
971
endif(SHOULD_BUILD_FEATURE_RDF)
972 973


974 975 976 977 978 979
 ###################
####################
## Subdirectories ##
####################
###################

980
add_subdirectory(words)
981

982
if (SHOULD_BUILD_APP_FLOW)
983
    add_subdirectory(flow)
984
endif (SHOULD_BUILD_APP_FLOW)
985

986
add_subdirectory(stage)
987

988
if(SHOULD_BUILD_APP_KEXI)
989
    add_subdirectory(kexi)
990
endif(SHOULD_BUILD_APP_KEXI)
991

992
if(SHOULD_BUILD_APP_PLAN)
993
    add_subdirectory(plan)
994
endif(SHOULD_BUILD_APP_PLAN)
995

996
add_subdirectory(sheets)
997

998
if(SHOULD_BUILD_APP_KRITA)
999
  add_subdirectory(krita)
1000
endif(SHOULD_BUILD_APP_KRITA)
1001

1002
if(SHOULD_BUILD_APP_KARBON)
1003
  add_subdirectory(karbon)
1004
endif(SHOULD_BUILD_APP_KARBON)
1005

1006
if(SHOULD_BUILD_APP_BRAINDUMP)
1007
  add_subdirectory(braindump)
1008
endif(SHOULD_BUILD_APP_BRAINDUMP)
1009

1010
if(SHOULD_BUILD_APP_ACTIVE)
1011
  add_subdirectory(active)
1012
endif(SHOULD_BUILD_APP_ACTIVE)
1013

1014
if(SHOULD_BUILD_DOC)
1015
    add_subdirectory(doc)
1016
endif(SHOULD_BUILD_DOC)
1017

1018 1019 1020 1021 1022 1023 1024 1025
if(SHOULD_BUILD_PART_QTQUICK)
    add_subdirectory(qtquick)
endif(SHOULD_BUILD_PART_QTQUICK)

if(SHOULD_BUILD_GEMINI)
    add_subdirectory(gemini)
endif(SHOULD_BUILD_GEMINI)

1026 1027
# non-app directories are moved here because they can depend on SHOULD_BUILD_{appname} variables set above
add_subdirectory(libs)
1028
add_subdirectory(3rdparty)
1029 1030
add_subdirectory(interfaces)
add_subdirectory(cmake)
Laurent Montel's avatar
Laurent Montel committed
1031
add_subdirectory(pics)
1032
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
1033
add_subdirectory(servicetypes)
1034 1035
add_subdirectory(devtools)
add_subdirectory(extras)
1036
add_subdirectory(filters)
1037
add_subdirectory(data)
Laurent Montel's avatar
Laurent Montel committed
1038

1039
macro_display_feature_log()
1040

1041
calligra_product_deps_report("product_deps")
1042
calligra_log_should_build()
1043

1044
add_custom_target(apidox doc/api/gendocs.pl WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
1045 1046

configure_file(KoConfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/KoConfig.h )
1047
install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/KoConfig.h DESTINATION ${INCLUDE_INSTALL_DIR}/calligra COMPONENT Devel)
1048 1049 1050 1051

## temporary warning
if (WARN_ABOUT_CREATIVEONLY)
    message(STATUS "WARNING:\n   You are using a deprecated build flag,\n   switch from \"-DCREATIVEONLY=ON\" to \"-DPRODUCTSET=CREATIVE\"\n   and remove the line \"CREATIVEONLY:BOOL=ON\" from CMakeCache.txt")
1052
    message(STATUS "-------------------------------------------------------------------" )
1053
endif (WARN_ABOUT_CREATIVEONLY)