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 41.5 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 10

#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
11

12 13 14 15 16 17
 ############
#############
## Options ##
#############
############

18 19 20 21 22
 ######################
#######################
## Constants defines ##
#######################
######################
Thomas Zander's avatar
Thomas Zander committed
23

Boudewijn Rempt's avatar
Boudewijn Rempt committed
24 25
# define the generic version of the Calligra libraries here
# this makes it easy to advance it when the next Calligra release comes
26 27
set(GENERIC_CALLIGRA_LIB_VERSION "13.0.0")
set(GENERIC_CALLIGRA_LIB_SOVERSION "13")
28

29
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
30

31

32 33 34 35 36
 ########################
#########################
## Product definitions ##
#########################
########################
37 38 39

# There are currently 4 product sets predefined:
# "ACTIVE", "CREATIVE", "DESKTOP", "ALL" (default).
40
# One can define her/his own set, see cmake/productsets/README
41

42 43
# Finding out the products to build is done in 5 steps:
# 1. have the user define the products wanted, by choosing a productset
44 45
# 2. estimate all additional required products
# 3. estimate which of the products can be build by external deps
46 47
# 4. find which products have been temporarily disabled due to problems
# 5. estimate which of the products can be build by internal deps
48 49 50

include(CalligraProductSetMacros)

Boudewijn Rempt's avatar
Boudewijn Rempt committed
51
option(GHNS "support Get Hot New Stuff" OFF)
52 53 54 55
option(NEPOMUK "support NEPOMUK Tagging" ON)
# 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)
56
option(PACKAGERS_BUILD "Build support of multiple CPU architectures in one binary. Should be used by packagers only." ON)
57 58 59 60 61 62 63 64 65 66 67 68

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

# temporary migration support
set(PRODUCTSET_DEFAULT "ALL")
if (CREATIVEONLY)
    set(WARN_ABOUT_CREATIVEONLY TRUE)
    set(PRODUCTSET_DEFAULT "CREATIVE")
endif (CREATIVEONLY)

if(NOT PRODUCTSET)
69
    set(PRODUCTSET ${PRODUCTSET_DEFAULT} CACHE STRING "Set of products to build" FORCE)
70 71 72 73 74 75 76
endif(NOT PRODUCTSET)

# TODO: also add headers/sdk for all the libs ("_DEVEL"?)
# TODO: note external deps for products, so they are only checked if needed
# There can be required or optional external deps, required will also result
# in automatic disabling of product building
# TODO: some products have multiple optional requirements, but need at least one.
77
# See CONVERTER, EXTRA_*
78 79

# 3rd-party libs
80 81
calligra_define_product(LIB_KDGANTT "libkdgantt")
calligra_define_product(LIB_KDCHART "libkdchart")
82 83
calligra_define_product(LIB_WRITERPERFECT "libwriterperfect")
# Calligra-independent utility libs
84
calligra_define_product(LIB_VECTORIMAGE "libvectorimage")
85 86 87
calligra_define_product(LIB_KOPROPERTY "libkoproperty")
calligra_define_product(LIB_KOREPORT "libkoreport" NEEDS LIB_KOPROPERTY)
calligra_define_product(LIB_CALLIGRADB "libcalligradb")
88 89 90
# calligra libs
calligra_define_product(CALLIGRA_LIBS "Calligra core libs")
calligra_define_product(LIB_KOPAGEAPP "Lib for paged documents"  NEEDS CALLIGRA_LIBS)
91
calligra_define_product(LIB_ODF2 "libodf2"  NEEDS CALLIGRA_LIBS)
92
calligra_define_product(LIB_ODFREADER "libodfreader"  NEEDS CALLIGRA_LIBS)
93
calligra_define_product(LIB_MSO "libmso"  NEEDS CALLIGRA_LIBS)
94
calligra_define_product(LIB_MSOOXML "libmsooxml"  NEEDS LIB_ODF2 CALLIGRA_LIBS)
95 96
calligra_define_product(SCRIPTING "Scripting feature") # TODO
calligra_define_product(RDF "RDF feature")
97 98
# plugins
calligra_define_product(PLUGIN_TEXTSHAPE ""  NEEDS CALLIGRA_LIBS)
99
# apps
100
calligra_define_product(WORDS_PART "Words engine" NEEDS CALLIGRA_LIBS PLUGIN_TEXTSHAPE)
101
calligra_define_product(WORDS_APP "Words executable (for Desktop)"  NEEDS WORDS_PART)
102
calligra_define_product(STAGE_PART "Stage engine"  NEEDS CALLIGRA_LIBS LIB_KOPAGEAPP)
103
calligra_define_product(STAGE_APP "Stage executable (for Desktop)"  NEEDS STAGE_PART)
104 105
calligra_define_product(SHEETS_PART "Sheets engine"  NEEDS CALLIGRA_LIBS)
calligra_define_product(SHEETS_APP "Sheets executable (for Desktop)"  NEEDS SHEETS_PART)
106 107
calligra_define_product(AUTHOR_APP "Full Author (for Desktop)"  NEEDS WORDS_PART)
calligra_define_product(KARBON_APP "Full Karbon (for Desktop)"  NEEDS CALLIGRA_LIBS)
108
calligra_define_product(KRITA_APP "Full Krita (for Desktop)"  NEEDS CALLIGRA_LIBS)
109 110 111 112
calligra_define_product(KEXI_APP "Full Kexi (for Desktop)"  NEEDS CALLIGRA_LIBS LIB_KOREPORT LIB_CALLIGRADB)
calligra_define_product(FLOW_APP "Full Flow (for Desktop)"  NEEDS CALLIGRA_LIBS LIB_KOPAGEAPP)
calligra_define_product(PLAN_APP "Full Plan (for Desktop)"  NEEDS CALLIGRA_LIBS LIB_KOREPORT LIB_KDCHART LIB_KDGANTT)
calligra_define_product(BRAINDUMP_APP "Full Braindump (for Desktop)"  NEEDS CALLIGRA_LIBS)
113
calligra_define_product(DOC "Calligra Documentations")
114
# extras
115 116 117
calligra_define_product(CONVERTER "Format converter for commandline"  NEEDS CALLIGRA_LIBS)
calligra_define_product(EXTRA_PROPERTIES "Plugin for the KDE file properties dialog"  NEEDS CALLIGRA_LIBS)
calligra_define_product(EXTRA_THUMBNAIL "Plugins for KDE filesystem thumbnailing"  NEEDS CALLIGRA_LIBS)
118 119
calligra_define_product(EXTRA_QUICKPRINT "Plugin for the filemanager adding a \"Print\" action")
calligra_define_product(EXTRA_FILEMANAGER_TEMPLATES "File templates for filemanager")
120
calligra_define_product(OKULARODPGENERATOR "Plugin for Okular adding support for ODP and MS PPT/PPTX" NEEDS STAGE_PART)
121
# more plugins
122 123 124 125 126 127
calligra_define_product(PLUGIN_COLORENGINES ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_MUSICSHAPE ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_SPACENAVIGATOR ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_ARTISTICTEXTSHAPE ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_DOCKERS ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_TEXTEDITING ""  NEEDS CALLIGRA_LIBS)
128
calligra_define_product(PLUGIN_KEXI_SPREADSHEETMIGRATION ""  NEEDS KEXI_APP SHEETS_PART)
129 130 131 132 133 134 135 136 137
calligra_define_product(PLUGIN_DEFAULTTOOLS ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_PATHSHAPES ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_VARIABLES ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_CHARTSHAPE "" NEEDS CALLIGRA_LIBS LIB_KDCHART)
calligra_define_product(PLUGIN_PICTURESHAPE ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_PLUGINSHAPE ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_FORMULASHAPE ""  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_VIDEOSHAPE "Plugin for handling videos in Calligra"  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_VECTORSHAPE "" NEEDS CALLIGRA_LIBS LIB_VECTORIMAGE)
138
calligra_define_product(PLUGIN_REPORTING ""  NEEDS LIB_KOREPORT LIB_KDCHART)
139
# staging plugins
140 141 142
calligra_define_product(PLUGIN_GOOGLEDOCS "" STAGING  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_THREEDSHAPE ""  STAGING  NEEDS CALLIGRA_LIBS)
calligra_define_product(PLUGIN_SHEETS_PIVOTTABLES ""  STAGING  NEEDS SHEETS_PART)
143
# Sheets filters
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
calligra_define_product(FILTER_XLSX_TO_ODS "XLSX to ODS filter" NEEDS LIB_MSOOXML SHEETS_PART)
calligra_define_product(FILTER_XLS_TO_SHEETS "Sheets XLS import filter" NEEDS LIB_MSO LIB_MSOOXML SHEETS_PART)
calligra_define_product(FILTER_SHEETS_TO_XLS "Sheets XLS export filter" NEEDS LIB_MSO LIB_MSOOXML SHEETS_PART)
calligra_define_product(FILTER_CSV_TO_SHEETS "Sheets CSV import filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_SHEETS_TO_CSV "Sheets CSV export filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_APPLIXSPREAD_TO_KSPREAD "Applix Spreadsheet to KSpread filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_DBASE_TO_KSPREAD "dBASE to KSpread filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_GNUMERIC_TO_SHEETS "Sheets GNUMERIC import filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_SHEETS_TO_GNUMERIC "Sheets GNUMERIC import filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_OPENCALC_TO_SHEETS "Sheets OpenOffice.org Calc import filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_SHEETS_TO_OPENCALC "Sheets OpenOffice.org Calc export filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_QUATTROPRO_TO_SHEETS "Sheets Quattro Pro import filter" NEEDS SHEETS_PART)
calligra_define_product(FILTER_HTML_TO_ODS "HTML to ODS filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_SHEETS_TO_HTML "Sheets HTML export filter"  NEEDS SHEETS_PART)
calligra_define_product(FILTER_KSPREAD_TO_LATEX "KSpread to LaTeX filter"  NEEDS CALLIGRA_LIBS)
159 160 161 162
calligra_define_product(FILTER_SHEETS_IMPORT "All Sheets import filter"  WANTS FILTER_XLSX_TO_ODS FILTER_XLS_TO_SHEETS FILTER_CSV_TO_SHEETS FILTER_APPLIXSPREAD_TO_KSPREAD FILTER_DBASE_TO_KSPREAD FILTER_GNUMERIC_TO_SHEETS FILTER_OPENCALC_TO_SHEETS FILTER_QUATTROPRO_TO_SHEETS FILTER_HTML_TO_ODS)
calligra_define_product(FILTER_SHEETS_EXPORT "All Sheets export filter"  WANTS FILTER_SHEETS_TO_XLS FILTER_SHEETS_TO_CSV FILTER_SHEETS_TO_GNUMERIC FILTER_SHEETS_TO_OPENCALC FILTER_SHEETS_TO_HTML FILTER_KSPREAD_TO_LATEX)
calligra_define_product(FILTER_SHEETS "All Sheets filter"  WANTS FILTER_SHEETS_IMPORT FILTER_SHEETS_EXPORT)
# Flow filters
163
calligra_define_product(FILTER_VISIO_TO_ODG "Visio to ODG filter"  NEEDS LIB_WRITERPERFECT CALLIGRA_LIBS)
164 165 166 167
calligra_define_product(FILTER_FLOW_IMPORT "All Flow import filter"  WANTS FILTER_VISIO_TO_ODG)
calligra_define_product(FILTER_FLOW_EXPORT "All Flow export filter"  WANTS )
calligra_define_product(FILTER_FLOW "All Flow filter"  WANTS FILTER_FLOW_IMPORT FILTER_FLOW_EXPORT)
# Stage filters
168 169
calligra_define_product(FILTER_KPR_TO_OPD "KPresenter to ODP filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_PPT_TO_ODP "PPT to OPD filter" NEEDS LIB_MSO CALLIGRA_LIBS)
170
calligra_define_product(FILTER_PPTX_TO_ODP "PPTX to ODP filter" NEEDS LIB_MSOOXML LIB_ODF2 CALLIGRA_LIBS)
171 172 173 174
calligra_define_product(FILTER_STAGE_IMPORT "All Stage import filter"  WANTS FILTER_KPR_TO_OPD FILTER_PPT_TO_ODP FILTER_PPTX_TO_ODP)
calligra_define_product(FILTER_STAGE_EXPORT "All Stage export filter"  WANTS )
calligra_define_product(FILTER_STAGE "All Stage filter"  WANTS FILTER_STAGE_IMPORT FILTER_STAGE_EXPORT)
# Words filters
175
calligra_define_product(FILTER_DOC_TO_ODT "DOC to ODT filter" NEEDS LIB_MSO LIB_MSOOXML CALLIGRA_LIBS)
176
calligra_define_product(FILTER_DOCX_TO_ODT "DOCX to ODT filter" NEEDS LIB_MSOOXML LIB_ODF2 CALLIGRA_LIBS)
177 178 179 180
calligra_define_product(FILTER_WORDPERFECT_TO_ODT "Word Perfect to ODT filter"  NEEDS LIB_WRITERPERFECT CALLIGRA_LIBS)
calligra_define_product(FILTER_WORKS_TO_ODT "MS Works to ODT filter"  NEEDS LIB_WRITERPERFECT CALLIGRA_LIBS)
calligra_define_product(FILTER_APPLIXWORD_TO_ODT "Applixword to ODT filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_ASCII_TO_WORDS "Words ASCII import filter"  NEEDS WORDS_PART)
Inge Wallin's avatar
Inge Wallin committed
181
calligra_define_product(FILTER_ODT_TO_ASCII "ODT to ASCII filter"  NEEDS LIB_ODFREADER CALLIGRA_LIBS)
182 183 184 185
calligra_define_product(FILTER_RTF_TO_ODT "RTF to ODT filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_ODT_TO_MOBI "Mobi export filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_ODT_TO_EPUB2 "ODT Epub2 export filter"  NEEDS LIB_VECTORIMAGE CALLIGRA_LIBS)
calligra_define_product(FILTER_ODT_TO_HTML "ODT HTML export filter"  NEEDS LIB_VECTORIMAGE CALLIGRA_LIBS)
186 187 188 189 190 191 192
calligra_define_product(FILTER_WORDS_IMPORT "All Words import filter"  WANTS FILTER_DOC_TO_ODT FILTER_DOCX_TO_ODT FILTER_WORDPERFECT_TO_ODT FILTER_WORKS_TO_ODT FILTER_ASCII_TO_WORDS FILTER_RTF_TO_ODT)
calligra_define_product(FILTER_WORDS_EXPORT "All Words export filter"  WANTS FILTER_ODT_TO_ASCII FILTER_ODT_TO_MOBI FILTER_ODT_TO_EPUB2 FILTER_ODT_TO_HTML)
calligra_define_product(FILTER_WORDS "All Words filter"  WANTS FILTER_WORDS_IMPORT FILTER_WORDS_EXPORT)
# Plan filters
calligra_define_product(FILTER_MPXJ_IMPORT "MS Project import filter"  NEEDS PLAN_APP)
calligra_define_product(FILTER_PLAN "All Plan filter" WANTS FILTER_MPXJ_IMPORT)
# Karbon filters
193 194 195 196
calligra_define_product(FILTER_EPS_TO_SVG_AI "EPS to SVG/AI filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_XFIG_TO_ODG "XFig to ODG filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_PDF_TO_SVG "PDF to SVG filter"  NEEDS CALLIGRA_LIBS)
calligra_define_product(FILTER_WPG_TO_SVG "WPG to SVG filter"  NEEDS CALLIGRA_LIBS)
197 198 199 200
calligra_define_product(FILTER_KARBON_TO_IMAGE "Karbon image export filter"  NEEDS KARBON_APP)
calligra_define_product(FILTER_KARBON_TO_SVG "Karbon SVG export filter"  NEEDS KARBON_APP)
calligra_define_product(FILTER_SVG_TO_KARBON "Karbon SVG import filter"  NEEDS KARBON_APP)
calligra_define_product(FILTER_KARBON_TO_WMF "Karbon WMF export filter"  NEEDS KARBON_APP)
201
calligra_define_product(FILTER_WMF_TO_SVG "WMF to SVG filter"  NEEDS LIB_VECTORIMAGE CALLIGRA_LIBS)
202 203 204 205 206 207 208
calligra_define_product(FILTER_KARBON1X_TO_KARBON "Karbon 1.x import filter"  NEEDS KARBON_APP)
calligra_define_product(FILTER_KARBON_IMPORT "All Karbon import filter"  WANTS FILTER_EPS_TO_SVG_AI FILTER_PDF_TO_SVG FILTER_WPG_TO_SVG FILTER_SVG_TO_KARBON FILTER_WMF_TO_SVG FILTER_KARBON1X_TO_KARBON)
calligra_define_product(FILTER_KARBON_EXPORT "All Karbon export filter"  WANTS FILTER_KARBON_TO_IMAGE FILTER_KARBON_TO_SVG FILTER_KARBON_TO_WMF)
calligra_define_product(FILTER_KARBON "All Karbon filter"  WANTS FILTER_KARBON_IMPORT FILTER_KARBON_EXPORT)
# meta apps
calligra_define_product(WORDS "Full Words (for Desktop)"  NEEDS WORDS_APP  WANTS FILTER_WORDS)
calligra_define_product(STAGE "Full Stage (for Desktop)"  NEEDS STAGE_APP  WANTS FILTER_STAGE)
209
calligra_define_product(SHEETS "Full Sheets (for Desktop)"  NEEDS SHEETS_APP  WANTS FILTER_SHEETS PLUGIN_SHEETS_PIVOTTABLES)
210 211
calligra_define_product(AUTHOR "Full Author (for Desktop)"  NEEDS AUTHOR_APP  WANTS FILTER_WORDS)
calligra_define_product(KARBON "Full Karbon (for Desktop)"  NEEDS KARBON_APP  WANTS FILTER_KARBON)
212
calligra_define_product(KRITA "Full Krita (for Desktop)"  NEEDS KRITA_APP)
213
calligra_define_product(KEXI "Full Kexi (for Desktop)"  NEEDS KEXI_APP  WANTS PLUGIN_KEXI_SPREADSHEETMIGRATION PLUGIN_REPORTING)
214 215 216 217 218
calligra_define_product(FLOW "Full Flow (for Desktop)"  NEEDS FLOW_APP  WANTS FILTER_FLOW)
calligra_define_product(PLAN "Full Plan (for Desktop)"  NEEDS PLAN_APP  WANTS FILTER_PLAN)
calligra_define_product(BRAINDUMP "Full Braindump (for Desktop)"  NEEDS BRAINDUMP_APP)
calligra_define_product(ACTIVE "Calligra Active"  NEEDS SHEETS_PART STAGE_PART WORDS_PART)
calligra_define_product(CALLIGRA ""  NEEDS CALLIGRA_LIBS)
219
# developer utils
220
calligra_define_product(DEVTOOLS "Tools for developers")
221
calligra_define_product(CSTESTER "" NEEDS SHEETS_PART STAGE_PART WORDS_PART)
222

223 224 225 226 227 228
# For new products see cmake/productsets/README, "How to add another product?"

#############################################
####      Choose products to build       ####
#############################################

229
calligra_set_productset(${PRODUCTSET})
230

231 232 233 234 235
 ########################
#########################
## Look for KDE and Qt ##
#########################
########################
236 237
set(KDE_MIN_VERSION "4.3.0")
find_package(KDE4 4.3.0 REQUIRED)
Cyrille Berger's avatar
Cyrille Berger committed
238

239
if (QT3SUPPORT)
240
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus QtOpenGL Qt3Support)
241
else (QT3SUPPORT)
242
    find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtXml QtScript QtSvg QtTest QtWebKit QtDBus QtOpenGL)
243
endif (QT3SUPPORT)
244

245 246
include (KDE4Defaults)
include (MacroLibrary)
247 248 249
include (MacroAdditionalCleanFiles)
include (MacroAddFileDependencies)

250 251
if ((${QTVERSION} VERSION_EQUAL 4.8.0) OR (${QTVERSION} VERSION_EQUAL 4.8.1))
    if (NOT IHAVEPATCHEDQT)
252 253
        set(SHOULD_BUILD_WORDS_PART FALSE)
        set(SHOULD_BUILD_STAGE_PART FALSE)
254 255
        set(SHOULD_BUILD_PLUGIN_TEXTSHAPE FALSE)
        set(SHOULD_BUILD_PLUGIN_TEXTEDITING FALSE)
256 257 258 259
        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
260 261 262 263
if (GHNS)
    if(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
        set(GHNS FALSE)
    endif(NOT ${KDE_VERSION} VERSION_GREATER 4.4.0)
264

Boudewijn Rempt's avatar
Boudewijn Rempt committed
265 266
    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.")
267

Boudewijn Rempt's avatar
Boudewijn Rempt committed
268 269 270 271 272 273
    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)
274

275 276 277
if(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
  set(NEPOMUK FALSE)
endif(NOT ${KDE_VERSION} VERSION_GREATER 4.6.4)
278

279 280
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")

281 282 283 284 285
if(KDE4_BUILD_TESTS)
    # only with this definition will the FOO_TEST_EXPORT macro do something
    add_definitions(-DCOMPILING_TESTS)
endif(KDE4_BUILD_TESTS)

286 287 288 289 290
 ###########################
############################
## Required dependencies  ##
############################
###########################
291

Laurent Montel's avatar
Laurent Montel committed
292 293
find_package(Perl REQUIRED)
find_package(ZLIB REQUIRED)
294
find_package(PNG REQUIRED)
Boudewijn Rempt's avatar
Boudewijn Rempt committed
295 296 297 298
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)
299 300
find_package(Boost REQUIRED) # for pigment and stage
if (NOT Boost_FOUND)
301
    MESSAGE(FATAL_ERROR "Did not find Boost. Boost is required for the core libraries, stage, sheets and krita.")
302
endif (NOT Boost_FOUND)
303

304 305 306
if (APPLE)
   find_package(Carbon REQUIRED)
endif (APPLE)
307

308 309 310 311 312 313
 ###########################
############################
## Optional dependencies  ##
############################
###########################

314 315 316 317
##
## Test for sqlite
##
set(SQLITE_MIN_VERSION 3.6.16)
318
set(SQLITE_RECOMMENDED_VERSION 3.7.15)
319
set(SQLITE_LOAD_EXTENSION_REQUIRED ON)
320 321
macro_optional_find_package(CalligraSqlite 3.6.16)
macro_bool_to_01(SQLITE_FOUND HAVE_SQLITE)
322
macro_log_feature(SQLITE_FOUND "SQLite" "Embedded SQL database engine with enabled extensions loading"
323 324
                  "http://www.sqlite.org" FALSE "${SQLITE_MIN_VERSION}"
                  "Required by Calligra's default database handler for Kexi and bibliography in Words.")
325

326 327 328
##
## Test for ICU
##
329 330
macro_optional_find_package(ICU)
macro_bool_to_01(ICU_FOUND HAVE_ICU)
331
macro_log_feature(ICU_FOUND "ICU" "International Components for Unicode (ICU) Library"
332 333
                  "http://icu-project.org" FALSE ""
                  "Required by Calligra's default database handler for Kexi and Words.")
334

335
##
336
## Check for OpenEXR 
337
##
338

339 340
macro_optional_find_package(OpenEXR)
macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
341

342 343 344
##
## Look for OpenGL
##
345
set(HAVE_OPENGL 0)
346 347 348
if (WIN32)
    message(STATUS "OpenGL is not supported on Windows.")
else (WIN32)
349 350 351 352 353 354 355 356 357 358 359 360 361
    macro_optional_find_package(OpenGL)

    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)
362
endif (WIN32)
363 364

macro_log_feature(HAVE_OPENGL "OpenGL" "OpenGL support" "" FALSE "" "Required by parts of Krita and optionally by flake")
365

366 367 368
##
## Test for kdepimlibs
##
369
macro_optional_find_package(KdepimLibs)
370
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)")
371

372

373 374 375 376
##
## Test for eigen2
##
macro_optional_find_package(Eigen2)
377
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")
378

379 380 381
##
## Test for QCA2
##
382
macro_optional_find_package(QCA2)
383
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)")
384

385 386 387
##
## Test for exiv2
##
388 389 390
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")
391

392 393 394 395 396 397 398
##
## 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 "")
399
endif(NOT Soprano_FOUND)
400 401


402 403 404 405
##
## Test for marble
##
macro_optional_find_package(Marble)
406
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")
407 408 409 410 411
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
412
endif(NOT MARBLE_FOUND)
413
if( MARBLE_FOUND )
414 415 416 417 418
    add_definitions( -DCAN_USE_MARBLE )
    ##
    ## Marble changed addMarbleWidget to setMarbleWidget in MarbleControlBox.h
    ## with commit ea177ca. This is for compatibility with older versions.
    ##
419
    find_file(MARBLECONTROLBOX_H MarbleControlBox.h ${MARBLE_INCLUDE_DIR} PATH_SUFFIXES marble)
420
    if( MARBLECONTROLBOX_H )
421 422
    file(READ ${MARBLECONTROLBOX_H} MARBLECONTROLBOX_H_CONTENT)
    string(REGEX MATCH "setMarbleWidget" SETMARBLEWIDGET ${MARBLECONTROLBOX_H_CONTENT})
423 424 425
        if( SETMARBLEWIDGET )
            add_definitions(-DHAVE_SETMARBLEWIDGET)
        endif( SETMARBLEWIDGET)
426 427
    else( MARBLECONTROLBOX_H )
        message( WARNING "MarbleControlBox.h not found, could not properly set the SETMARBLEWIDGET define." )
428
    endif( MARBLECONTROLBOX_H )
429 430
endif( MARBLE_FOUND )

431 432
##
## Test for lcms
433
##
434
macro_optional_find_package(LCMS2)
435
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")
436
if(LCMS2_FOUND)
437
    if(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
438
        set(HAVE_LCMS24 TRUE)
439
    endif(NOT ${LCMS2_VERSION} VERSION_LESS 2040 )
440
    set(HAVE_REQUIRED_LCMS_VERSION TRUE)
441
    set(HAVE_LCMS2 TRUE)
442 443
endif(LCMS2_FOUND)

444 445 446 447 448 449
##
## Test for Vc
##

set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} )
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
450
macro_optional_find_package(Vc 0.6.70)
451 452
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)
453 454
macro_bool_to_01(PACKAGERS_BUILD DO_PACKAGERS_BUILD)

455 456 457 458 459 460
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}")
461 462
    include (VcMacros)

463
    macro(ko_compile_for_all_implementations_no_scalar _objs _src)
464
      if(PACKAGERS_BUILD)
465
        vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY SSE2 SSSE3 SSE4_1 AVX)
466 467 468 469
      else(PACKAGERS_BUILD)
        set(${_objs} ${_src})
      endif(PACKAGERS_BUILD)
    endmacro()
470

471
    macro(ko_compile_for_all_implementations _objs _src)
472
      if(PACKAGERS_BUILD)
473
        vc_compile_for_all_implementations(${_objs} ${_src} FLAGS -fPIC ONLY Scalar SSE2 SSSE3 SSE4_1 AVX)
474 475 476 477 478
      else(PACKAGERS_BUILD)
        set(${_objs} ${_src})
      endif(PACKAGERS_BUILD)
    endmacro()

479 480 481 482
    if (NOT PACKAGERS_BUILD)
      # Optimize the whole Calligra for current architecture
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Vc_DEFINITIONS}")
    endif (NOT PACKAGERS_BUILD)
483 484 485
endif(HAVE_VC)
set(CMAKE_MODULE_PATH ${OLD_CMAKE_MODULE_PATH} )

486 487 488 489 490
##
## Test for Nepomuk
##
if(NEPOMUK)
    macro_optional_find_package(Nepomuk)
491 492 493
    if(NOT NEPOMUK_FOUND)
        set(NEPOMUK FALSE)
    endif(NOT NEPOMUK_FOUND)
494
    add_definitions(-DDISABLE_NEPOMUK_LEGACY)
Srikanth Tiyyagura's avatar
Srikanth Tiyyagura committed
495
    macro_log_feature(NEPOMUK_FOUND "Nepomuk" "Handles metadata of resources" FALSE  "Required to handle metadata of resources")
496 497
endif(NEPOMUK)

498 499 500
##
## Test for KActivities
##
501
macro_optional_find_package(KActivities 6.1.0)
502 503 504 505 506
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
507 508
#Set the build of TextShape changetraker

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

511
if(WIN32)
512 513 514 515 516 517 518 519 520 521 522 523 524 525
    # 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} )


526 527 528 529
else(WIN32)
    set (KDE4_ICON_DIR  ${CMAKE_INSTALL_PREFIX}/share/icons)
endif(WIN32)

Hanzes Matus's avatar
Hanzes Matus committed
530 531 532
##
## Test for Fontconfig
##
533 534 535 536 537
## 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
538 539 540 541

##
## Test for Freetype
##
542 543 544 545 546
## 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
547

548
if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
Hanzes Matus's avatar
Hanzes Matus committed
549 550 551
    set(FONTCONFIG_INCLUDE_DIR "")
    set(FREETYPE_INCLUDE_DIRS "")
else(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
552
    add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
Hanzes Matus's avatar
Hanzes Matus committed
553
endif(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
554

Cyrille Berger's avatar
Cyrille Berger committed
555 556 557
##
## Test for Qt Webkit
##
558 559 560 561
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
562

563 564 565
##
## QImageBlitz (for Kexi)
##
566 567
#macro_optional_find_package(QImageBlitz)
#macro_log_feature(QIMAGEBLITZ_FOUND "QImageBlitz" "Fast, smooth scaling of QImages" "sourceforge.net/projects/qimageblitz/" FALSE "" "Required for Kexi")
568

569 570 571 572 573
##
## Test for KDeclarative
##
macro_optional_find_package(KDeclarative)

574 575 576
##
## Test endianess
##
David Faure's avatar
David Faure committed
577
include (TestBigEndian)
578 579
TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)

580 581 582 583 584 585
##
## 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.")

586 587 588 589 590
##
## 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")
591

592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634
##
## Test for WordPerfect Document Lib
##
macro_optional_find_package(WPD)
macro_log_feature(WPD_FOUND "WPD" "WordPerfect Document Library" "http://libwpd.sourceforge.net/" FALSE "" "Required by the Words WPD import filter")

##
## Test for WordPerfect Graphics Lib
##
macro_optional_find_package(WPG)
macro_log_feature(LIBWPG_FOUND "WPG" "WordPerfect Graphics Library" "http://libwpg.sourceforge.net/" FALSE "" "Required by the Karbon WPG import filter")

##
## Test for Microsoft Works Document Library
##
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")

##
## Test for libvisio
##
macro_optional_find_package(LibVisio)
macro_log_feature(LIBVISIO_FOUND "LibVisio" "Visio Import Filter Library" "http://www.freedesktop.org/wiki/Software/libvisio" FALSE "" "Required by the Flow visio import filter")

##
## 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)


635 636 637 638
##
## Generate a file for prefix information
##

639 640 641 642 643
 ###############################
################################
## Add Calligra helper macros ##
################################
###############################
Cyrille Berger's avatar
Cyrille Berger committed
644

Boudewijn Rempt's avatar
Boudewijn Rempt committed
645
include(MacroCalligraAddBenchmark)
646
include(MacroCalligraBuildTest)
Cyrille Berger's avatar
Cyrille Berger committed
647

648 649 650 651 652 653
 ####################
#####################
## Define includes ##
#####################
####################

654 655 656
# WARNING: make sure that QT_INCLUDES is the first directory to be added to include_directory before
#          any other include directory

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

660 661 662
# koplugin is at the bottom of the stack
set(KOPLUGIN_INCLUDES ${CMAKE_SOURCE_DIR}/libs/koplugin)

663
# koodf is at the bottom of the stack
664
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
665
                   ${CMAKE_SOURCE_DIR}/libs/odf/styles
666
                   ${CMAKE_BINARY_DIR}/libs/odf
667
                   ${KDE4_INCLUDES})
Boudewijn Rempt's avatar
Boudewijn Rempt committed
668

669 670
set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)

671
# pigment depends on koplugin and lcms
672
set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES}
673 674
                   ${CMAKE_SOURCE_DIR}/libs/pigment
                   ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops
675
                   ${CMAKE_SOURCE_DIR}/libs/pigment/resources
676
                   ${QT_INCLUDES}
677
                   ${KDE4_INCLUDES})
678

679 680 681 682 683
# flake depends on koodf and pigment
set(FLAKE_INCLUDES ${CMAKE_SOURCE_DIR}/libs/flake
                   ${KOODF_INCLUDES}
                   ${KOPLUGIN_INCLUDES}
                   ${PIGMENT_INCLUDES}
684
                   ${KUNDO2_INCLUDES}
685
                   ${CMAKE_SOURCE_DIR}/libs/widgetutils
686 687
                   ${CMAKE_SOURCE_DIR}/libs/flake/commands
                   ${CMAKE_SOURCE_DIR}/libs/flake/tools
688
                   ${CMAKE_SOURCE_DIR}/libs/flake/svg
689
                   ${CMAKE_BINARY_DIR}/libs/flake)
690

691 692 693 694 695 696 697
# vectorimage
set(VECTORIMAGE_INCLUDES 
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libemf
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libsvm
                   ${CMAKE_SOURCE_DIR}/libs/vectorimage/libwmf)
                   
698 699 700 701 702 703
# 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
704
                   ${SOPRANO_INCLUDE_DIR}
705
                   ${FLAKE_INCLUDES}
706 707
                   ${KOODF_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/main)
708

709 710 711 712
# TextLayout depends on kotext
set(TEXTLAYOUT_INCLUDES ${KOTEXT_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/textlayout)

C. Boemann's avatar
C. Boemann committed
713 714 715 716 717
# BasicFlakes depends on flake, widgets
set(BASICFLAKES_INCLUDES ${KOWIDGETS_INCLUDES} ${FLAKE_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes
                   ${CMAKE_SOURCE_DIR}/libs/basicflakes/tools)

718
# komain depends on kotext & flake
719
set(KOMAIN_INCLUDES ${KDE4_INCLUDES}
720
                    ${TEXTLAYOUT_INCLUDES}
721
                    ${CMAKE_SOURCE_DIR}/libs/widgets
722
                    ${CMAKE_SOURCE_DIR}/libs/widgetutils
723
                    ${CMAKE_SOURCE_DIR}/libs/main
724
                    ${CMAKE_SOURCE_DIR}/libs/main/config)
725

726 727 728 729
set(KORDF_INCLUDES ${KOMAIN_INCLUDES}
                   ${CMAKE_SOURCE_DIR}/libs/rdf
)

730 731 732
if(SHOULD_BUILD_SCRIPTING)
  set(KOKROSS_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kokross ${CMAKE_BINARY_DIR}/libs/kokross)
endif(SHOULD_BUILD_SCRIPTING)
733

David Faure's avatar
David Faure committed
734
# kopageapp
735 736 737 738 739
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 )
740

741 742 743 744
# koproperty
set(KOPROPERTY_INCLUDES ${KOODF_INCLUDES}
                        ${CMAKE_SOURCE_DIR}/libs
                        ${CMAKE_SOURCE_DIR}/libs/widgets)
745
set(KOPROPERTY_LIBS koproperty)
746

747 748 749 750 751 752 753 754 755
# 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)

756
# calligradb
757 758 759
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)
760

761 762 763
#############################################
####          3rd party libraries        ####
#############################################
764

765 766 767
set(KDGANTT_INCLUDES
    ${CMAKE_SOURCE_DIR}/3rdparty/kdgantt
)
768

769 770 771
set(KDCHART_INCLUDES
    ${CMAKE_SOURCE_DIR}/3rdparty/kdchart/include
)
772 773
set(KDCHART_LIBS calligrakdchart)

774

775 776 777 778
set(WRITERPERFECT_INCLUDES
    ${CMAKE_SOURCE_DIR}/filters/writerperfect
)

779 780 781 782 783 784 785 786 787
#############################################
####           filter libraries          ####
#############################################

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

788 789 790 791 792
 #########################################
##########################################
## Detect which products can be compile ##
##########################################
#########################################
793

794
#
795 796 797
# WARNING: when adding a dependency for product x if there is already a line
# containing calligra_disable_product(product_x, don't add a new one, just add
# the test to the if construct and the reasoning
798 799
#

800
if(NOT SHARED_MIME_INFO_FOUND)
801
    calligra_disable_product(LIB_MSOOXML "SharedMimeInfo not found (needed to install mimetypes)")
802
endif(NOT SHARED_MIME_INFO_FOUND)
803

804 805 806 807
if(NOT Soprano_FOUND)
    calligra_disable_product(RDF "Soprano not found")
endif(NOT Soprano_FOUND)

808
if(NOT EIGEN2_FOUND)
809
    calligra_disable_product(SHEETS_PART "Eigen devel not found")
810
endif(NOT EIGEN2_FOUND)
811

812
if(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION OR NOT SHARED_MIME_INFO_FOUND)
813
    calligra_disable_product(KRITA_APP "SharedMimeInfo|libeigen2|libexiv2|lcms devel not found ")
814
endif(NOT EIGEN2_FOUND OR NOT EXIV2_FOUND OR NOT HAVE_REQUIRED_LCMS_VERSION OR NOT SHARED_MIME_INFO_FOUND)
815

816
if (NOT ${QTVERSION} VERSION_GREATER 4.7.0)
817
    calligra_disable_product(ACTIVE "Qt version <= 4.7.0")
818 819
endif (NOT ${QTVERSION} VERSION_GREATER 4.7.0)

820
if (NOT QT_QTDECLARATIVE_FOUND OR NOT KDECLARATIVE_FOUND)
821
    calligra_disable_product(ACTIVE "QtDeclarative|KDeclarative not found")
822
endif(NOT QT_QTDECLARATIVE_FOUND OR NOT KDECLARATIVE_FOUND)
823

824
# TODO: remove when Predicate lib arrives
825
if (NOT HAVE_ICU OR NOT HAVE_SQLITE)
826
    calligra_disable_product(LIB_CALLIGRADB "ICU|sqlite devel not found")
827
endif (NOT HAVE_ICU OR NOT HAVE_SQLITE)
828

829
if (NOT QT3SUPPORT)
830
    calligra_disable_product(KEXI_APP "Qt3Support not found")
831 832
endif (NOT QT3SUPPORT)

833
if(NOT OKULAR_FOUND)
834
    calligra_disable_product(OKULARODPGENERATOR "Okular devel not found")
835
endif(NOT OKULAR_FOUND)
836

837
if (NOT WPD_FOUND OR NOT LIBWPG_FOUND OR NOT LIBVISIO_FOUND)
838
    calligra_disable_product(FILTER_VISIO_TO_ODG "libwpd|libwpg|libvisio devel not found")
839 840 841
endif (NOT WPD_FOUND OR NOT LIBWPG_FOUND OR NOT LIBVISIO_FOUND)

if(NOT WPD_FOUND OR NOT LIBWPG_FOUND)
842
    calligra_disable_product(FILTER_WORDPERFECT_TO_ODT "libwpd|libwpg devel not found")
843 844 845
endif(NOT WPD_FOUND OR NOT LIBWPG_FOUND)

if(NOT WPD_FOUND OR NOT LIBWPS_FOUND)
846
    calligra_disable_product(FILTER_WORKS_TO_ODT "libwpd|libwps devel not found")
847 848 849
endif(NOT WPD_FOUND OR NOT LIBWPS_FOUND)

if (NOT WPD_FOUND OR NOT LIBWPG_FOUND)
850
    calligra_disable_product(LIB_WRITERPERFECT "libwpd|libwpg devel not found")
851 852 853
endif (NOT WPD_FOUND OR NOT LIBWPG_FOUND)

if (NOT WPD_FOUND OR NOT LIBWPG_FOUND)
854
    calligra_disable_product(FILTER_WPG_TO_SVG "libwpd|libwpg devel not found")
855 856 857
endif (NOT WPD_FOUND OR NOT LIBWPG_FOUND)

if (WIN32 OR NOT POPPLER_XPDF_HEADERS_FOUND)
858
    calligra_disable_product(FILTER_PDF_TO_SVG "poppler xpdf headers not found or on win")
859 860 861
endif (WIN32 OR NOT POPPLER_XPDF_HEADERS_FOUND)

if(WIN32 OR QT_MAC_USE_COCOA)
862
    calligra_disable_product(FILTER_HTML_TO_ODS "not supported on platform")
863 864 865
endif(WIN32 OR QT_MAC_USE_COCOA)

if(WIN32 OR QT_MAC_USE_COCOA)
866
    calligra_disable_product(FILTER_SHEETS_TO_HTML "not supported on platform")
867 868 869
endif(WIN32 OR QT_MAC_USE_COCOA)

if(WIN32 OR QT_MAC_USE_COCOA)
870
    calligra_disable_product(FILTER_KSPREAD_TO_LATEX "not supported on platform")
871 872
endif(WIN32 OR QT_MAC_USE_COCOA)

873 874 875 876
if(NOT SHARED_MIME_INFO_FOUND)
    calligra_disable_product(FILTER_MPXJ_IMPORT "SharedMimeInfo not found (needed to install mimetypes)")
endif(NOT SHARED_MIME_INFO_FOUND)

877
if(WIN32)
878
    calligra_disable_product(BRAINDUMP_APP "unmaintained on Windows")
879 880
endif()

881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896
#############################################
####  Backward compatibility BUILD_x=off ####
#############################################

# workaround: disable directly all products which might be activated by internal
# dependencies, but belong to scope of old flag
calligra_drop_products_on_old_flag(braindump BRAINDUMP_APP)
calligra_drop_products_on_old_flag(flow FLOW_APP)
calligra_drop_products_on_old_flag(karbon KARBON_APP)
calligra_drop_products_on_old_flag(kexi KEXI_APP)
calligra_drop_products_on_old_flag(krita KRITA_APP)
calligra_drop_products_on_old_flag(plan  PLAN_APP)
calligra_drop_products_on_old_flag(sheets SHEETS_PART SHEETS_APP)
calligra_drop_products_on_old_flag(stage  STAGE_PART STAGE_APP)
calligra_drop_products_on_old_flag(words  WORDS_PART WORDS_APP)

897 898 899 900 901
#############################################
####      Temporarily broken products    ####
#############################################

# If a product does not build due to some temporary brokeness disable it here,
902 903 904
# by calling calligra_disable_product with the product id and the reason,
# e.g.:
# calligra_disable_product(KEXI_APP "isn't buildable at the moment")
905 906 907 908 909

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

910
calligra_drop_unbuildable_products()
Jarosław Staniek's avatar
Jarosław Staniek committed
911

912

913 914 915 916 917 918 919 920 921
#############################################
####     Setup product-depending vars    ####
#############################################

if(SHOULD_BUILD_RDF)
   add_definitions( -DSHOULD_BUILD_RDF )
endif(SHOULD_BUILD_RDF)


922 923 924 925 926 927
 ###################
####################
## Subdirectories ##
####################
###################

928
add_subdirectory(words)
929

930
if (SHOULD_BUILD_FLOW_APP)
931
    add_subdirectory(flow)
932
endif (SHOULD_BUILD_FLOW_APP)
933

934
add_subdirectory(stage)
935

936
if(SHOULD_BUILD_KEXI_APP)
937
    add_subdirectory(kexi)
938
endif(SHOULD_BUILD_KEXI_APP)
939

940
if(SHOULD_BUILD_PLAN_APP)
941
    add_subdirectory(plan)
942
endif(SHOULD_BUILD_PLAN_APP)
943

944
add_subdirectory(sheets)
945

946
if(SHOULD_BUILD_KRITA_APP)
947
  add_subdirectory(krita)
948
endif(SHOULD_BUILD_KRITA_APP)
949

950
if(SHOULD_BUILD_KARBON_APP)
951
  add_subdirectory(karbon)
952
endif(SHOULD_BUILD_KARBON_APP)
953

954
if(SHOULD_BUILD_BRAINDUMP_APP)
955
  add_subdirectory(braindump)
956
endif(SHOULD_BUILD_BRAINDUMP_APP)
957

958
if(SHOULD_BUILD_ACTIVE)
959
  add_subdirectory(active)
960 961
endif(SHOULD_BUILD_ACTIVE)

962
if(SHOULD_BUILD_DOC)
963
    add_subdirectory(doc)
964
endif(SHOULD_BUILD_DOC)
965

966 967
# non-app directories are moved here because they can depend on SHOULD_BUILD_{appname} variables set above
add_subdirectory(libs)
968
add_subdirectory(3rdparty)
969 970
add_subdirectory(interfaces)
add_subdirectory(cmake)
Laurent Montel's avatar
Laurent Montel committed
971
add_subdirectory(pics)
972
add_subdirectory(plugins)
Laurent Montel's avatar
Laurent Montel committed
973
add_subdirectory(servicetypes)
974 975
add_subdirectory(devtools)
add_subdirectory(extras)
976
add_subdirectory(filters)
977
add_subdirectory(data)
Laurent Montel's avatar
Laurent Montel committed
978

979
macro_display_feature_log()
980

981
calligra_log_should_build()
982

983
add_custom_target(apidox doc/api/gendocs.pl WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
984 985 986

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)
987 988 989 990 991 992

## 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")
    message(STATUS "--------------------------------------------------------------------------" )
endif (WARN_ABOUT_CREATIVEONLY)