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
Albert Astals Cid committed
25
set(POPPLER_MINOR_VERSION "52")
Albert Astals Cid's avatar
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")
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)
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 172 173 174 175 176 177
  find_package(LIBOPENJPEG2)
  set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
  if(NOT LIBOPENJPEG2_FOUND)
    find_package(LIBOPENJPEG)
    set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
    set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})  
Adrian Johnson's avatar
Adrian Johnson committed
178 179 180 181 182 183 184 185 186 187
  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)
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
Albert Astals Cid committed
505
set_target_properties(poppler PROPERTIES VERSION 66.0.0 SOVERSION 66)
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
597
    goo/ImgWriter.h
598
    goo/GooLikely.h
599
    goo/gstrtod.h
600
    goo/grandom.h
601
    DESTINATION include/poppler/goo)
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)
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

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