CMakeLists.txt 23.8 KB
Newer Older
1
2
project(poppler)

3
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
4
5
6
7
8
9
10
11
12

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

include(PopplerDefaults)
include(PopplerMacros)
include(MacroOptionalFindPackage)
find_package(PkgConfig)
include(MacroEnsureVersion)
include(MacroBoolTo01)
13
find_package(Threads)
14
15
include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)
16
17
include(CheckFileOffsetBits)
CHECK_FILE_OFFSET_BITS()
18

19
20
21
22
23
find_package (ECM 1.6.0 QUIET NO_MODULE)
if (ECM_FOUND)
    include("${ECM_MODULE_DIR}/ECMEnableSanitizers.cmake")
endif()

24
set(POPPLER_MAJOR_VERSION "0")
Albert Astals Cid's avatar
0.49    
Albert Astals Cid committed
25
set(POPPLER_MINOR_VERSION "49")
Albert Astals Cid's avatar
0.28.0    
Albert Astals Cid committed
26
set(POPPLER_MICRO_VERSION "0")
27
set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}")
28
29
30
31
32

# command line switches
option(ENABLE_XPDF_HEADERS "Install unsupported xpdf headers." OFF)
option(BUILD_GTK_TESTS "Whether compile the GTK+ test programs." ON)
option(BUILD_QT4_TESTS "Whether compile the Qt4 test programs." ON)
Albert Astals Cid's avatar
Albert Astals Cid committed
33
option(BUILD_QT5_TESTS "Whether compile the Qt5 test programs." ON)
34
option(BUILD_CPP_TESTS "Whether compile the CPP test programs." ON)
35
36
option(ENABLE_SPLASH "Build the Splash graphics backend." ON)
option(ENABLE_UTILS "Compile poppler command line utils." ON)
37
option(ENABLE_CPP "Compile poppler cpp wrapper." ON)
Adrian Johnson's avatar
Adrian Johnson committed
38
set(ENABLE_LIBOPENJPEG "auto" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: auto, openjpeg1, openjpeg2. 'auto' prefers openjpeg1 over openjpeg2 if both are available. Unset to not use openjpeg.")
39
set(ENABLE_CMS "auto" CACHE STRING "Use color management system. Possible values: auto, lcms1, lcms2. 'auto' prefers lcms2 over lcms1 if both are available. Unset to disable color management system.")
Hib Eris's avatar
Hib Eris committed
40
option(ENABLE_LIBCURL "Build libcurl based HTTP support." OFF)
41
42
option(ENABLE_ZLIB "Build with zlib." ON)
option(ENABLE_ZLIB_UNCOMPRESS "Use zlib to uncompress flate streams (not totally safe)." OFF)
43
option(SPLASH_CMYK "Include support for CMYK rasterization." OFF)
44
45
option(USE_FIXEDPOINT "Use fixed point arithmetic in the Splash backend" OFF)
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
46
if(WIN32)
47
  option(ENABLE_RELOCATABLE "Do not hardcode the poppler library location (on Windows)." ON)
48
49
50
else(WIN32)
  set(ENABLE_RELOCATABLE OFF)
endif(WIN32)
51

52
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
53
set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name")
54

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
set(TESTDATADIR "${CMAKE_SOURCE_DIR}/../test" CACHE STRING "Specify test data dir.")
if(NOT (EXISTS ${TESTDATADIR} AND EXISTS ${TESTDATADIR}/test-poppler.c))
  message(WARNING "
 No test data found in $testdatadir.
 You will not be able to run 'make test' successfully.

 The test data is not included in the source packages
 and is also not part of the main git repository. Instead,
 you can checkout the test data from its own git
 repository with:

   git clone git://git.freedesktop.org/git/poppler/test

 You should checkout the test data as a sibling of your
 poppler source folder or specify the location of your
 checkout with -DTESTDATADIR=/path/to/checkoutdir/test.
  ")
endif()

74
75
76
77
78
79
80
if(WIN32)
  set(_default_fontconfiguration "win32")
else(WIN32)
  set(_default_fontconfiguration "fontconfig")
endif(WIN32)
set(FONT_CONFIGURATION "${_default_fontconfiguration}" CACHE STRING "The font configuration backend (win32|fontconfig).")
string(TOLOWER "${FONT_CONFIGURATION}" font_configuration)
81
82
set(WITH_FONTCONFIGURATION_WIN32 OFF)
set(WITH_FONTCONFIGURATION_FONTCONFIG OFF)
83
84
85
86
87
88
89
90
if(font_configuration STREQUAL "win32")
  set(WITH_FONTCONFIGURATION_WIN32 ON)
elseif(font_configuration STREQUAL "fontconfig")
  set(WITH_FONTCONFIGURATION_FONTCONFIG ON)
else(font_configuration STREQUAL "win32")
  message(FATAL_ERROR "Invalid font configuration setting: ${FONT_CONFIGURATION}")
endif(font_configuration STREQUAL "win32")

91
# Enable these unconditionally.
92
set(MULTITHREADED ON)
93
94
95
96
set(OPI_SUPPORT ON)
set(TEXTOUT_WORD_LIST ON)

# setting the minimum required versions for some components
97
set(QT4_MIN_VERSION "4.7.0")
98
set(CAIRO_VERSION "1.10.0")
Albert Astals Cid's avatar
Albert Astals Cid committed
99
set(GLIB_REQUIRED "2.41")
100
101
102

macro_bool_to_01(ENABLE_SPLASH HAVE_SPLASH)
find_package(Freetype REQUIRED)
103
104
105
if(WITH_FONTCONFIGURATION_FONTCONFIG)
  find_package(Fontconfig REQUIRED)
endif(WITH_FONTCONFIGURATION_FONTCONFIG)
106
macro_optional_find_package(JPEG)
Albert Astals Cid's avatar
Albert Astals Cid committed
107
macro_optional_find_package(PNG)
108
macro_optional_find_package(TIFF)
André Guerreiro's avatar
André Guerreiro committed
109
macro_optional_find_package(NSS3)
110
if(JPEG_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
111
  set(ENABLE_LIBJPEG ${JPEG_FOUND})
112
113
endif(JPEG_FOUND)
macro_optional_find_package(Qt4)
114
115
116
117
118
119
if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)
  find_package(Qt5Core)
  find_package(Qt5Gui)
  find_package(Qt5Xml)
  find_package(Qt5Widgets)
  find_package(Qt5Test)
120
121
122
  if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Xml_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND)
    set(QT5_FOUND true)
  else ()
123
124
    message("-- Package Qt5Core or Qt5Gui or Qt5Xml or Qt5Widgets or Qt5Test not found")
    set(QT5_FOUND false)
125
  endif()
126
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)
Albert Astals Cid's avatar
Albert Astals Cid committed
127
  set(QT5_FOUND false)
128
129
130
  message("-- CMake >= 2.8.8 is needed to enable Qt5")
endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)

131
132
macro_optional_find_package(Cairo ${CAIRO_VERSION})
if(CAIRO_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
133
  set(HAVE_CAIRO ${CAIRO_FOUND})
134
135
  set(CAIRO_FEATURE "#define POPPLER_HAS_CAIRO 1")
  set(CAIRO_REQ "cairo")
136
137
  set(POPPLER_GLIB_DISABLE_DEPRECATED "")
  set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "")
138
  macro_optional_find_package(GLIB)
139
  if(GLIB_FOUND)
140
    set(ENABLE_GLIB ON)
141
    # Check for introspection
142
    macro_optional_find_package(GObjectIntrospection 0.9.12)
143
    set(HAVE_INTROSPECTION ${INTROSPECTION_FOUND})
144
145
    set(POPPLER_GLIB_DISABLE_DEPRECATED "${POPPLER_GLIB_DISABLE_DEPRECATED} -DG_DISABLE_DEPRECATED")
    set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "${POPPLER_GLIB_DISABLE_SINGLE_INCLUDES} -DG_DISABLE_SINGLE_INCLUDES")
146
    macro_optional_find_package(GTK)
147
148
149
150
  endif(GLIB_FOUND)
else(CAIRO_FOUND)
  set(CAIRO_FEATURE "#undef POPPLER_HAS_CAIRO")
endif(CAIRO_FOUND)
151
152
153
154
155
if(ENABLE_CPP)
  macro_optional_find_package(Iconv)
  set(ENABLE_CPP ${ICONV_FOUND})
  set(HAVE_ICONV ${ICONV_FOUND})
endif(ENABLE_CPP)
156
157
158
if(ENABLE_ZLIB)
  find_package(ZLIB)
  if(ZLIB_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
159
    set(HAVE_LIBZ ${ZLIB_FOUND})
160
161
162
  endif(ZLIB_FOUND)
  set(ENABLE_ZLIB ${ZLIB_FOUND})
endif(ENABLE_ZLIB)
163
164
165
166
if(ENABLE_ZLIB_UNCOMPRESS AND NOT ENABLE_ZLIB)
  message("Warning: ENABLE_ZLIB_UNCOMPRESS requires ENABLE_ZLIB")
  set(ENABLE_ZLIB_UNCOMPRESS FALSE)
endif(ENABLE_ZLIB_UNCOMPRESS AND NOT ENABLE_ZLIB)
Adrian Johnson's avatar
Adrian Johnson committed
167
168
set(USE_OPENJPEG1 FALSE)
set(USE_OPENJPEG2 FALSE)
169
set(WITH_OPENJPEG FALSE)
Adrian Johnson's avatar
Adrian Johnson committed
170
if(ENABLE_LIBOPENJPEG STREQUAL "auto")
171
  find_package(LIBOPENJPEG)
Adrian Johnson's avatar
Adrian Johnson committed
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
  set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})
  if(NOT LIBOPENJPEG_FOUND)
    find_package(LIBOPENJPEG2)
    set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
    set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
  endif()
elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg1")
  find_package(LIBOPENJPEG)
  set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})
elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg2")
  find_package(LIBOPENJPEG2)
  set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
endif()
188
set(ENABLE_LIBOPENJPEG "${WITH_OPENJPEG}")
189
if(ENABLE_CMS STREQUAL "auto")
Pino Toscano's avatar
Pino Toscano committed
190
  find_package(LCMS2)
191
192
  set(USE_CMS ${LCMS2_FOUND})
  if(NOT LCMS2_FOUND)
Pino Toscano's avatar
Pino Toscano committed
193
194
195
    find_package(LCMS)
    set(USE_CMS ${LCMS_FOUND})
    set(USE_LCMS1 ${LCMS_FOUND})
196
197
198
199
200
201
202
203
204
  endif(NOT LCMS2_FOUND)
elseif(ENABLE_CMS STREQUAL "lcms1")
  find_package(LCMS)
  set(USE_CMS ${LCMS_FOUND})
  set(USE_LCMS1 ${LCMS_FOUND})
elseif(ENABLE_CMS STREQUAL "lcms2")
  find_package(LCMS2)
  set(USE_CMS ${LCMS2_FOUND})
endif()
Hib Eris's avatar
Hib Eris committed
205
206
207
208
209
if(ENABLE_LIBCURL)
  find_package(CURL)
  include_directories(${CURL_INCLUDE_DIR})
  set(POPPLER_HAS_CURL_SUPPORT ON)
endif(ENABLE_LIBCURL)
210

211
add_definitions(-DHAVE_CONFIG_H=1)
212
213
214
215
if(MINGW)
  # Use mingw's ansi stdio extensions
  add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
endif(MINGW)
216
217
if(FONTCONFIG_FOUND)
  add_definitions(${FONTCONFIG_DEFINITIONS})
218
  include_directories(${FONTCONFIG_INCLUDE_DIR})
219
endif(FONTCONFIG_FOUND)
220
221
222
223
224
225
if(WITH_FONTCONFIGURATION_WIN32)
  if(MINGW)
    # Set the minimum required Internet Explorer version to 5.0
    add_definitions(-D_WIN32_IE=0x0500)
  endif(MINGW)
endif(WITH_FONTCONFIGURATION_WIN32)
226
227
228
229
230
231
232
include_directories(
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/fofi
  ${CMAKE_CURRENT_SOURCE_DIR}/goo
  ${CMAKE_CURRENT_SOURCE_DIR}/poppler
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}/poppler
233
  ${FREETYPE_INCLUDE_DIRS}
234
235
)
set(HAVE_FREETYPE_H ON)
236
237
238
if(CMAKE_USE_PTHREADS_INIT)
  set(HAVE_PTHREAD ON)
endif(CMAKE_USE_PTHREADS_INIT)
239
240
241
242

if(ENABLE_ZLIB)
  include_directories(${ZLIB_INCLUDE_DIR})
endif(ENABLE_ZLIB)
André Guerreiro's avatar
André Guerreiro committed
243
244
245
246
247

if (NSS3_FOUND)
  add_definitions(${NSS3_CFLAGS})
  set(ENABLE_NSS3 ON)
endif(NSS3_FOUND)
248
249
250
251
if(JPEG_FOUND)
  include_directories(${JPEG_INCLUDE_DIR})
  set(ENABLE_LIBJPEG ON)
endif(JPEG_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
252
253
254
255
if(PNG_FOUND)
  include_directories(${PNG_INCLUDE_DIR})
  set(ENABLE_LIBPNG ON)
endif(PNG_FOUND)
256
257
258
259
if(TIFF_FOUND)
  include_directories(${TIFF_INCLUDE_DIR})
  set(ENABLE_LIBTIFF ON)
endif(TIFF_FOUND)
260
if(LIBOPENJPEG_FOUND)
261
  include_directories(${LIBOPENJPEG_INCLUDE_DIR})
262
endif(LIBOPENJPEG_FOUND)
Adrian Johnson's avatar
Adrian Johnson committed
263
264
265
if(LIBOPENJPEG2_FOUND)
  include_directories(${LIBOPENJPEG2_INCLUDE_DIRS})
endif()
Albert Astals Cid's avatar
Albert Astals Cid committed
266
267
268
if(LCMS_FOUND)
  include_directories(${LCMS_INCLUDE_DIR})
endif(LCMS_FOUND)
Pino Toscano's avatar
Pino Toscano committed
269
270
271
if(LCMS2_FOUND)
  include_directories(${LCMS2_INCLUDE_DIR})
endif(LCMS2_FOUND)
272

273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# Recent versions of poppler-data install a .pc file.
# Use it to determine the encoding data path, if available.
# Default to the same prefix otherwise.
pkg_check_modules(POPPLER_DATA poppler-data)
if(POPPLER_DATA_FOUND)
  execute_process(COMMAND "${PKG_CONFIG_EXECUTABLE}" --variable=poppler_datadir poppler-data
                  RESULT_VARIABLE _result_var
                  OUTPUT_VARIABLE _output_var OUTPUT_STRIP_TRAILING_WHITESPACE)
  if(_result_var STREQUAL "0" AND NOT _output_var STREQUAL "")
    set(POPPLER_DATADIR "${_output_var}")
  endif(_result_var STREQUAL "0" AND NOT _output_var STREQUAL "")
endif(POPPLER_DATA_FOUND)
if(NOT DEFINED POPPLER_DATADIR)
  set(POPPLER_DATADIR "${CMAKE_INSTALL_PREFIX}/share/poppler")
endif(NOT DEFINED POPPLER_DATADIR)

289
290
291
292
293
294
if(DEFINED COMPILE_WARNINGS)
else(DEFINED COMPILE_WARNINGS)
  set(COMPILE_WARNINGS "yes")
endif(DEFINED COMPILE_WARNINGS)
string(TOLOWER "${COMPILE_WARNINGS}" _comp_warnings)
if(_comp_warnings STREQUAL "no")
295
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_NO} ${CMAKE_CXX_FLAGS}")
296
297
endif(_comp_warnings STREQUAL "no")
if(_comp_warnings STREQUAL "yes")
298
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
299
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_YES} ${CMAKE_CXX_FLAGS}")
300
301
endif(_comp_warnings STREQUAL "yes")
if(_comp_warnings STREQUAL "kde")
302
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
303
304
305
306
307
308
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_KDE} ${CMAKE_CXX_FLAGS}")
endif(_comp_warnings STREQUAL "kde")


include(ConfigureChecks.cmake)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
309
configure_file(poppler/poppler-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h)
310
311
312
313
314
315
316
317
318
319
320


set(poppler_SRCS
  goo/gfile.cc
  goo/gmempp.cc
  goo/GooHash.cc
  goo/GooList.cc
  goo/GooTimer.cc
  goo/GooString.cc
  goo/gmem.cc
  goo/FixedPoint.cc
321
  goo/NetPBMWriter.cc
322
  goo/PNGWriter.cc
323
  goo/TiffWriter.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
324
  goo/JpegWriter.cc
325
  goo/ImgWriter.cc
326
  goo/gstrtod.cc
327
  goo/grandom.cc
328
  goo/glibc.cc
329
330
331
332
333
  fofi/FoFiBase.cc
  fofi/FoFiEncodings.cc
  fofi/FoFiTrueType.cc
  fofi/FoFiType1.cc
  fofi/FoFiType1C.cc
334
  fofi/FoFiIdentifier.cc
335
336
337
338
  poppler/Annot.cc
  poppler/Array.cc
  poppler/BuiltinFont.cc
  poppler/BuiltinFontTables.cc
Hib Eris's avatar
Hib Eris committed
339
  poppler/CachedFile.cc
340
341
342
  poppler/Catalog.cc
  poppler/CharCodeToUnicode.cc
  poppler/CMap.cc
343
  poppler/DateInfo.cc
344
345
346
  poppler/Decrypt.cc
  poppler/Dict.cc
  poppler/Error.cc
347
  poppler/FileSpec.cc
348
349
350
351
352
353
354
355
  poppler/FontEncodingTables.cc
  poppler/Form.cc
  poppler/FontInfo.cc
  poppler/Function.cc
  poppler/Gfx.cc
  poppler/GfxFont.cc
  poppler/GfxState.cc
  poppler/GlobalParams.cc
Hib Eris's avatar
Hib Eris committed
356
  poppler/Hints.cc
357
358
359
360
  poppler/JArithmeticDecoder.cc
  poppler/JBIG2Stream.cc
  poppler/Lexer.cc
  poppler/Link.cc
Hib Eris's avatar
Hib Eris committed
361
  poppler/Linearization.cc
362
  poppler/LocalPDFDocBuilder.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
363
  poppler/MarkedContentOutputDev.cc
364
365
  poppler/NameToCharCode.cc
  poppler/Object.cc
366
  poppler/OptionalContent.cc
367
368
369
370
371
372
373
  poppler/Outline.cc
  poppler/OutputDev.cc
  poppler/Page.cc
  poppler/PageTransition.cc
  poppler/Parser.cc
  poppler/PDFDoc.cc
  poppler/PDFDocEncoding.cc
Hib Eris's avatar
Hib Eris committed
374
  poppler/PDFDocFactory.cc
375
  poppler/PopplerCache.cc
376
377
378
  poppler/ProfileData.cc
  poppler/PreScanOutputDev.cc
  poppler/PSTokenizer.cc
379
  poppler/SignatureInfo.cc
380
  poppler/Stream.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
381
382
  poppler/StructTreeRoot.cc
  poppler/StructElement.cc
383
  poppler/strtok_r.cpp
384
385
  poppler/UnicodeMap.cc
  poppler/UnicodeTypeTable.cc
386
  poppler/UTF.cc
387
388
389
390
391
  poppler/XRef.cc
  poppler/PSOutputDev.cc
  poppler/TextOutputDev.cc
  poppler/PageLabelInfo.cc
  poppler/SecurityHandler.cc
392
  poppler/StdinCachedFile.cc
393
  poppler/StdinPDFDocBuilder.cc
394
  poppler/Sound.cc
395
  poppler/ViewerPreferences.cc
396
  poppler/XpdfPluginAPI.cc
Hugo Mercier's avatar
Hugo Mercier committed
397
  poppler/Movie.cc
398
  poppler/Rendition.cc
399
)
400
set(poppler_LIBS ${FREETYPE_LIBRARIES})
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
if(ENABLE_SPLASH)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/SplashOutputDev.cc
    splash/Splash.cc
    splash/SplashBitmap.cc
    splash/SplashClip.cc
    splash/SplashFTFont.cc
    splash/SplashFTFontEngine.cc
    splash/SplashFTFontFile.cc
    splash/SplashFont.cc
    splash/SplashFontEngine.cc
    splash/SplashFontFile.cc
    splash/SplashFontFileID.cc
    splash/SplashPath.cc
    splash/SplashPattern.cc
    splash/SplashScreen.cc
    splash/SplashState.cc
    splash/SplashT1Font.cc
    splash/SplashT1FontEngine.cc
    splash/SplashT1FontFile.cc
    splash/SplashXPath.cc
    splash/SplashXPathScanner.cc
  )
endif(ENABLE_SPLASH)
425
426
427
if(FONTCONFIG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${FONTCONFIG_LIBRARIES})
endif(FONTCONFIG_FOUND)
André Guerreiro's avatar
André Guerreiro committed
428

429
430
431
432
433
434
435
436
if(JPEG_FOUND)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/DCTStream.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${JPEG_LIBRARIES})
endif(JPEG_FOUND)
if(ENABLE_ZLIB)
  set(poppler_SRCS ${poppler_SRCS}
437
    poppler/FlateEncoder.cc
438
439
440
  )
  set(poppler_LIBS ${poppler_LIBS} ${ZLIB_LIBRARIES})
endif(ENABLE_ZLIB)
441
442
443
444
445
if(ENABLE_ZLIB_UNCOMPRESS)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/FlateStream.cc
  )
endif(ENABLE_ZLIB_UNCOMPRESS)
Hib Eris's avatar
Hib Eris committed
446
447
448
if(ENABLE_LIBCURL)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/CurlCachedFile.cc
Hib Eris's avatar
Hib Eris committed
449
    poppler/CurlPDFDocBuilder.cc
Hib Eris's avatar
Hib Eris committed
450
451
452
  )
  set(poppler_LIBS ${poppler_LIBS} ${CURL_LIBRARIES})
endif(ENABLE_LIBCURL)
André Guerreiro's avatar
André Guerreiro committed
453
454
455
456
457
458
if (ENABLE_NSS3)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/SignatureHandler.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${NSS3_LIBRARIES})
endif(ENABLE_NSS3)  
459
if(LIBOPENJPEG_FOUND)
460
461
462
463
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPEG2000Stream.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG_LIBRARIES})
Adrian Johnson's avatar
Adrian Johnson committed
464
465
466
467
468
469
470
471
  add_definitions(-DUSE_OPENJPEG1)
elseif (LIBOPENJPEG2_FOUND)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPEG2000Stream.cc
  )
  add_definitions(-DUSE_OPENJPEG2)
  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES})
else ()
472
473
474
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPXStream.cc
  )
Adrian Johnson's avatar
Adrian Johnson committed
475
endif()
476
if(USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
477
478
479
480
481
482
  if(LCMS_FOUND)
    set(poppler_LIBS ${poppler_LIBS} ${LCMS_LIBRARIES})
  endif(LCMS_FOUND)
  if(LCMS2_FOUND)
    set(poppler_LIBS ${poppler_LIBS} ${LCMS2_LIBRARIES})
  endif(LCMS2_FOUND)
483
endif(USE_CMS)
484
485
486
487
if(WIN32)
  # gdi32 is needed under win32
  set(poppler_LIBS ${poppler_LIBS} gdi32)
endif(WIN32)
488
489
490
if(PNG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${PNG_LIBRARIES})
endif(PNG_FOUND)
491
492
493
if(TIFF_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${TIFF_LIBRARIES})
endif(TIFF_FOUND)
494
495
496
if(HAVE_PTHREAD)
  set(poppler_LIBS ${poppler_LIBS} ${CMAKE_THREAD_LIBS_INIT})
endif()
497

498
if(MSVC)
499
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
500
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- ${CMAKE_CXX_FLAGS}")
501
502
add_library(poppler STATIC ${poppler_SRCS})
else(MSVC)
503
add_library(poppler SHARED ${poppler_SRCS})
504
endif(MSVC)
Albert Astals Cid's avatar
0.49    
Albert Astals Cid committed
505
set_target_properties(poppler PROPERTIES VERSION 65.0.0 SOVERSION 65)
506
target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
507
install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
508
509
510
511
512
513
514

if(ENABLE_XPDF_HEADERS)
  install(FILES
    poppler/Annot.h
    poppler/Array.h
    poppler/BuiltinFont.h
    poppler/BuiltinFontTables.h
Hib Eris's avatar
Hib Eris committed
515
    poppler/CachedFile.h
516
517
518
    poppler/Catalog.h
    poppler/CharCodeToUnicode.h
    poppler/CMap.h
519
    poppler/DateInfo.h
520
521
522
    poppler/Decrypt.h
    poppler/Dict.h
    poppler/Error.h
523
    poppler/FileSpec.h
524
525
526
527
528
529
530
531
    poppler/FontEncodingTables.h
    poppler/FontInfo.h
    poppler/Form.h
    poppler/Function.cc
    poppler/Function.h
    poppler/Gfx.h
    poppler/GfxFont.h
    poppler/GfxState.h
532
    poppler/GfxState_helpers.h
533
    poppler/GlobalParams.h
Hib Eris's avatar
Hib Eris committed
534
    poppler/Hints.h
535
536
537
538
    poppler/JArithmeticDecoder.h
    poppler/JBIG2Stream.h
    poppler/Lexer.h
    poppler/Link.h
Hib Eris's avatar
Hib Eris committed
539
    poppler/Linearization.h
540
    poppler/LocalPDFDocBuilder.h
Albert Astals Cid's avatar
Albert Astals Cid committed
541
    poppler/MarkedContentOutputDev.h
542
    poppler/Movie.h
543
544
    poppler/NameToCharCode.h
    poppler/Object.h
545
    poppler/OptionalContent.h
546
547
548
549
550
551
    poppler/Outline.h
    poppler/OutputDev.h
    poppler/Page.h
    poppler/PageTransition.h
    poppler/Parser.h
    poppler/PDFDoc.h
Hib Eris's avatar
Hib Eris committed
552
    poppler/PDFDocBuilder.h
553
    poppler/PDFDocEncoding.h
Hib Eris's avatar
Hib Eris committed
554
    poppler/PDFDocFactory.h
Albert Astals Cid's avatar
Albert Astals Cid committed
555
    poppler/PopplerCache.h
556
557
558
    poppler/ProfileData.h
    poppler/PreScanOutputDev.h
    poppler/PSTokenizer.h
559
    poppler/Rendition.h
560
561
    poppler/Stream-CCITT.h
    poppler/Stream.h
Albert Astals Cid's avatar
Albert Astals Cid committed
562
563
    poppler/StructElement.h
    poppler/StructTreeRoot.h
564
565
566
567
568
569
    poppler/UnicodeMap.h
    poppler/UnicodeMapTables.h
    poppler/UnicodeTypeTable.h
    poppler/UnicodeCClassTables.h
    poppler/UnicodeCompTables.h
    poppler/UnicodeDecompTables.h
570
    poppler/ViewerPreferences.h
571
572
573
574
575
576
577
578
    poppler/XRef.h
    poppler/CharTypes.h
    poppler/CompactFontTables.h
    poppler/ErrorCodes.h
    poppler/NameToUnicodeTable.h
    poppler/PSOutputDev.h
    poppler/TextOutputDev.h
    poppler/SecurityHandler.h
579
    poppler/StdinCachedFile.h
580
    poppler/StdinPDFDocBuilder.h
581
    poppler/UTF.h
582
    poppler/UTF8.h
583
584
585
586
    poppler/XpdfPluginAPI.h
    poppler/Sound.h
    ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h
    DESTINATION include/poppler)
587
588
589
590
591
592
593
594
595
596
  install(FILES
    goo/GooHash.h
    goo/GooList.h
    goo/GooTimer.h
    goo/GooMutex.h
    goo/GooString.h
    goo/gtypes.h
    goo/gmem.h
    goo/gfile.h
    goo/FixedPoint.h
Maciej Mrozowski's avatar
Maciej Mrozowski committed
597
    goo/ImgWriter.h
598
    goo/GooLikely.h
599
    goo/gstrtod.h
600
    goo/grandom.h
601
    DESTINATION include/poppler/goo)
Maciej Mrozowski's avatar
Maciej Mrozowski committed
602
603
604
605
606
  if(PNG_FOUND)
    install(FILES
      goo/PNGWriter.h
      DESTINATION include/poppler/goo)
  endif(PNG_FOUND)
607
608
609
610
611
  if(TIFF_FOUND)
    install(FILES
      goo/TiffWriter.h
      DESTINATION include/poppler/goo)
  endif(TIFF_FOUND)
612
613
614
615
616
  if(JPEG_FOUND)
    install(FILES
      goo/JpegWriter.h
      DESTINATION include/poppler/goo)
  endif(JPEG_FOUND)
617
618
619
620
621
622
  install(FILES
    fofi/FoFiBase.h
    fofi/FoFiEncodings.h
    fofi/FoFiTrueType.h
    fofi/FoFiType1.h
    fofi/FoFiType1C.h
623
    fofi/FoFiIdentifier.h
624
    DESTINATION include/poppler/fofi)
Hib Eris's avatar
Hib Eris committed
625
626
627
  if(ENABLE_LIBCURL)
    install(FILES
      poppler/CurlCachedFile.h
Hib Eris's avatar
Hib Eris committed
628
      poppler/CurlPDFDocBuilder.h
Hib Eris's avatar
Hib Eris committed
629
630
      DESTINATION include/poppler)
  endif(ENABLE_LIBCURL)
631
  if(LIBOPENJPEG_FOUND)
632
633
634
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
635
636
637
638
639
  elseif(LIBOPENJPEG2_FOUND)
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
  else()
640
641
642
    install(FILES
      poppler/JPXStream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
643
  endif()
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
  if(ENABLE_SPLASH)
    install(FILES
      poppler/SplashOutputDev.h
      DESTINATION include/poppler)
    install(FILES
      splash/Splash.h
      splash/SplashBitmap.h
      splash/SplashClip.h
      splash/SplashErrorCodes.h
      splash/SplashFTFont.h
      splash/SplashFTFontEngine.h
      splash/SplashFTFontFile.h
      splash/SplashFont.h
      splash/SplashFontEngine.h
      splash/SplashFontFile.h
      splash/SplashFontFileID.h
      splash/SplashGlyphBitmap.h
      splash/SplashMath.h
      splash/SplashPath.h
      splash/SplashPattern.h
      splash/SplashScreen.h
      splash/SplashState.h
      splash/SplashT1Font.h
      splash/SplashT1FontEngine.h
      splash/SplashT1FontFile.h
      splash/SplashTypes.h
      splash/SplashXPath.h
      splash/SplashXPathScanner.h
      DESTINATION include/poppler/splash)
  endif(ENABLE_SPLASH)
endif(ENABLE_XPDF_HEADERS)


if(ENABLE_UTILS)
  add_subdirectory(utils)
endif(ENABLE_UTILS)
680
if(ENABLE_GLIB)
681
  add_subdirectory(glib)
682
endif(ENABLE_GLIB)
683
684
685
686
add_subdirectory(test)
if(QT4_FOUND)
  add_subdirectory(qt4)
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
687
688
689
if(QT5_FOUND)
  add_subdirectory(qt5)
endif(QT5_FOUND)
690
691
692
if(ENABLE_CPP)
  add_subdirectory(cpp)
endif(ENABLE_CPP)
693
694

set(PKG_CONFIG_VERSION_0_18 TRUE)
695
696
if(PKG_CONFIG_EXECUTABLE)
  exec_program(${PKG_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _output_VAR)
697
  macro_ensure_version("0.18" "${_output_VAR}" PKG_CONFIG_VERSION_0_18)
698
endif(PKG_CONFIG_EXECUTABLE)
699
700
701
702
703
704
705
706
if(PKG_CONFIG_VERSION_0_18)
  set(PC_REQUIRES "")
  set(PC_REQUIRES_PRIVATE "Requires.private: poppler = ${POPPLER_VERSION}")
else(PKG_CONFIG_VERSION_0_18)
  set(PC_REQUIRES "poppler = ${POPPLER_VERSION}")
  set(PC_REQUIRES_PRIVATE "")
endif(PKG_CONFIG_VERSION_0_18)

707
poppler_create_install_pkgconfig(poppler.pc lib${LIB_SUFFIX}/pkgconfig)
708
if(ENABLE_SPLASH)
709
  poppler_create_install_pkgconfig(poppler-splash.pc lib${LIB_SUFFIX}/pkgconfig)
710
711
endif(ENABLE_SPLASH)
if(QT4_FOUND)
712
  poppler_create_install_pkgconfig(poppler-qt4.pc lib${LIB_SUFFIX}/pkgconfig)
713
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
714
715
716
if(QT5_FOUND)
  poppler_create_install_pkgconfig(poppler-qt5.pc lib${LIB_SUFFIX}/pkgconfig)
endif(QT5_FOUND)
717
if(ENABLE_GLIB)
718
  poppler_create_install_pkgconfig(poppler-glib.pc lib${LIB_SUFFIX}/pkgconfig)
719
endif(ENABLE_GLIB)
720
if(CAIRO_FOUND)
721
  poppler_create_install_pkgconfig(poppler-cairo.pc lib${LIB_SUFFIX}/pkgconfig)
722
endif(CAIRO_FOUND)
Pino Toscano's avatar
Pino Toscano committed
723
724
725
if(ENABLE_CPP)
  poppler_create_install_pkgconfig(poppler-cpp.pc lib${LIB_SUFFIX}/pkgconfig)
endif(ENABLE_CPP)
726
727
728


message("Building Poppler with support for:")
729
show_end_message("font configuration" ${font_configuration})
730
show_end_message_yesno("splash output" ENABLE_SPLASH)
731
732
733
if(SPLASH_CMYK)
  message("      with CMYK support")
endif()
734
735
show_end_message_yesno("cairo output" CAIRO_FOUND)
show_end_message_yesno("qt4 wrapper" QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
736
show_end_message_yesno("qt5 wrapper" QT5_FOUND)
737
show_end_message_yesno("glib wrapper" ENABLE_GLIB)
738
show_end_message_yesno("  introspection" INTROSPECTION_FOUND)
739
show_end_message_yesno("cpp wrapper" ENABLE_CPP)
740
show_end_message("use gtk-doc" "not supported with this CMake build system")
741
742
show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
show_end_message_yesno("use libpng" ENABLE_LIBPNG)
743
show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
744
745
show_end_message_yesno("use zlib compress" ENABLE_ZLIB)
show_end_message_yesno("use zlib uncompress" ENABLE_ZLIB_UNCOMPRESS)
André Guerreiro's avatar
André Guerreiro committed
746
show_end_message_yesno("use nss3" ENABLE_NSS3)
Hib Eris's avatar
Hib Eris committed
747
show_end_message_yesno("use curl" ENABLE_LIBCURL)
Adrian Johnson's avatar
Adrian Johnson committed
748
749
750
751
752
753
754
show_end_message_yesno("use libopenjpeg" WITH_OPENJPEG)
if(USE_OPENJPEG1)
  message("      with openjpeg1")
endif()
if(USE_OPENJPEG2)
  message("      with openjpeg2")
endif()
755
show_end_message_yesno("use cms" USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
756
757
758
759
760
761
if(LCMS_FOUND)
  message("      with lcms1")
endif(LCMS_FOUND)
if(LCMS2_FOUND)
  message("      with lcms2")
endif(LCMS2_FOUND)
762
show_end_message_yesno("command line utils" ENABLE_UTILS)
763
show_end_message("test data dir" ${TESTDATADIR})
764

765
766
767
768
if(NOT ENABLE_SPLASH AND NOT CAIRO_FOUND)
  message("Warning: There is no rendering backend enabled")
endif(NOT ENABLE_SPLASH AND NOT CAIRO_FOUND)

769
770
771
if(USE_FIXEDPOINT AND USE_FLOAT)
  message("Warning: Single precision and fixed point options should not be enabled at the same time")
endif(USE_FIXEDPOINT AND USE_FLOAT)
772
773
774
775
776

if(NOT ENABLE_LIBJPEG)
  message("Warning: Using libjpeg is recommended. The internal DCT decoder is unmaintained.")
endif(NOT ENABLE_LIBJPEG)

777
if(ENABLE_ZLIB_UNCOMPRESS)
778
  message("Warning: Using zlib is not totally safe")
779
endif(ENABLE_ZLIB_UNCOMPRESS)
780
781
782
783

if(NOT WITH_OPENJPEG)
  message("Warning: Using libopenjpeg is recommended. The internal JPX decoder is unmaintained.")
endif(NOT WITH_OPENJPEG)