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.44  
Albert Astals Cid committed
25
set(POPPLER_MINOR_VERSION "44")
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.18")
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
  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)
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 329 330 331 332
  fofi/FoFiBase.cc
  fofi/FoFiEncodings.cc
  fofi/FoFiTrueType.cc
  fofi/FoFiType1.cc
  fofi/FoFiType1C.cc
333
  fofi/FoFiIdentifier.cc
334 335 336 337
  poppler/Annot.cc
  poppler/Array.cc
  poppler/BuiltinFont.cc
  poppler/BuiltinFontTables.cc
Hib Eris's avatar
Hib Eris committed
338
  poppler/CachedFile.cc
339 340 341
  poppler/Catalog.cc
  poppler/CharCodeToUnicode.cc
  poppler/CMap.cc
342
  poppler/DateInfo.cc
343 344 345
  poppler/Decrypt.cc
  poppler/Dict.cc
  poppler/Error.cc
346
  poppler/FileSpec.cc
347 348 349 350 351 352 353 354
  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
355
  poppler/Hints.cc
356 357 358 359
  poppler/JArithmeticDecoder.cc
  poppler/JBIG2Stream.cc
  poppler/Lexer.cc
  poppler/Link.cc
Hib Eris's avatar
Hib Eris committed
360
  poppler/Linearization.cc
361
  poppler/LocalPDFDocBuilder.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
362
  poppler/MarkedContentOutputDev.cc
363 364
  poppler/NameToCharCode.cc
  poppler/Object.cc
365
  poppler/OptionalContent.cc
366 367 368 369 370 371 372
  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
373
  poppler/PDFDocFactory.cc
374
  poppler/PopplerCache.cc
375 376 377
  poppler/ProfileData.cc
  poppler/PreScanOutputDev.cc
  poppler/PSTokenizer.cc
378
  poppler/SignatureInfo.cc
379
  poppler/Stream.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
380 381
  poppler/StructTreeRoot.cc
  poppler/StructElement.cc
382
  poppler/strtok_r.cpp
383 384
  poppler/UnicodeMap.cc
  poppler/UnicodeTypeTable.cc
385
  poppler/UTF.cc
386 387 388 389 390
  poppler/XRef.cc
  poppler/PSOutputDev.cc
  poppler/TextOutputDev.cc
  poppler/PageLabelInfo.cc
  poppler/SecurityHandler.cc
391
  poppler/StdinCachedFile.cc
392
  poppler/StdinPDFDocBuilder.cc
393
  poppler/Sound.cc
394
  poppler/ViewerPreferences.cc
395
  poppler/XpdfPluginAPI.cc
Hugo Mercier's avatar
Hugo Mercier committed
396
  poppler/Movie.cc
397
  poppler/Rendition.cc
398
)
399
set(poppler_LIBS ${FREETYPE_LIBRARIES})
400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
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)
424 425 426
if(FONTCONFIG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${FONTCONFIG_LIBRARIES})
endif(FONTCONFIG_FOUND)
André Guerreiro's avatar
André Guerreiro committed
427

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

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

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
514
    poppler/CachedFile.h
515 516 517
    poppler/Catalog.h
    poppler/CharCodeToUnicode.h
    poppler/CMap.h
518
    poppler/DateInfo.h
519 520 521
    poppler/Decrypt.h
    poppler/Dict.h
    poppler/Error.h
522
    poppler/FileSpec.h
523 524 525 526 527 528 529 530
    poppler/FontEncodingTables.h
    poppler/FontInfo.h
    poppler/Form.h
    poppler/Function.cc
    poppler/Function.h
    poppler/Gfx.h
    poppler/GfxFont.h
    poppler/GfxState.h
531
    poppler/GfxState_helpers.h
532
    poppler/GlobalParams.h
Hib Eris's avatar
Hib Eris committed
533
    poppler/Hints.h
534 535 536 537
    poppler/JArithmeticDecoder.h
    poppler/JBIG2Stream.h
    poppler/Lexer.h
    poppler/Link.h
Hib Eris's avatar
Hib Eris committed
538
    poppler/Linearization.h
539
    poppler/LocalPDFDocBuilder.h
Albert Astals Cid's avatar
Albert Astals Cid committed
540
    poppler/MarkedContentOutputDev.h
541
    poppler/Movie.h
542 543
    poppler/NameToCharCode.h
    poppler/Object.h
544
    poppler/OptionalContent.h
545 546 547 548 549 550
    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
551
    poppler/PDFDocBuilder.h
552
    poppler/PDFDocEncoding.h
Hib Eris's avatar
Hib Eris committed
553
    poppler/PDFDocFactory.h
Albert Astals Cid's avatar
Albert Astals Cid committed
554
    poppler/PopplerCache.h
555 556 557
    poppler/ProfileData.h
    poppler/PreScanOutputDev.h
    poppler/PSTokenizer.h
558
    poppler/Rendition.h
559 560
    poppler/Stream-CCITT.h
    poppler/Stream.h
Albert Astals Cid's avatar
Albert Astals Cid committed
561 562
    poppler/StructElement.h
    poppler/StructTreeRoot.h
563 564 565 566 567 568
    poppler/UnicodeMap.h
    poppler/UnicodeMapTables.h
    poppler/UnicodeTypeTable.h
    poppler/UnicodeCClassTables.h
    poppler/UnicodeCompTables.h
    poppler/UnicodeDecompTables.h
569
    poppler/ViewerPreferences.h
570 571 572 573 574 575 576 577
    poppler/XRef.h
    poppler/CharTypes.h
    poppler/CompactFontTables.h
    poppler/ErrorCodes.h
    poppler/NameToUnicodeTable.h
    poppler/PSOutputDev.h
    poppler/TextOutputDev.h
    poppler/SecurityHandler.h
578
    poppler/StdinCachedFile.h
579
    poppler/StdinPDFDocBuilder.h
580
    poppler/UTF.h
581
    poppler/UTF8.h
582 583 584 585
    poppler/XpdfPluginAPI.h
    poppler/Sound.h
    ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h
    DESTINATION include/poppler)
586 587 588 589 590 591 592 593 594 595
  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
596
    goo/ImgWriter.h
597
    goo/GooLikely.h
598
    goo/gstrtod.h
599
    goo/grandom.h
600
    DESTINATION include/poppler/goo)
601 602 603 604 605
  if(PNG_FOUND)
    install(FILES
      goo/PNGWriter.h
      DESTINATION include/poppler/goo)
  endif(PNG_FOUND)
606 607 608 609 610
  if(TIFF_FOUND)
    install(FILES
      goo/TiffWriter.h
      DESTINATION include/poppler/goo)
  endif(TIFF_FOUND)
611 612 613 614 615
  if(JPEG_FOUND)
    install(FILES
      goo/JpegWriter.h
      DESTINATION include/poppler/goo)
  endif(JPEG_FOUND)
616 617 618 619 620 621
  install(FILES
    fofi/FoFiBase.h
    fofi/FoFiEncodings.h
    fofi/FoFiTrueType.h
    fofi/FoFiType1.h
    fofi/FoFiType1C.h
622
    fofi/FoFiIdentifier.h
623
    DESTINATION include/poppler/fofi)
Hib Eris's avatar
Hib Eris committed
624 625 626
  if(ENABLE_LIBCURL)
    install(FILES
      poppler/CurlCachedFile.h
Hib Eris's avatar
Hib Eris committed
627
      poppler/CurlPDFDocBuilder.h
Hib Eris's avatar
Hib Eris committed
628 629
      DESTINATION include/poppler)
  endif(ENABLE_LIBCURL)
630
  if(LIBOPENJPEG_FOUND)
631 632 633
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
634 635 636 637 638
  elseif(LIBOPENJPEG2_FOUND)
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
  else()
639 640 641
    install(FILES
      poppler/JPXStream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
642
  endif()
643 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
  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)
679
if(ENABLE_GLIB)
680
  add_subdirectory(glib)
681
endif(ENABLE_GLIB)
682 683 684 685
add_subdirectory(test)
if(QT4_FOUND)
  add_subdirectory(qt4)
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
686 687 688
if(QT5_FOUND)
  add_subdirectory(qt5)
endif(QT5_FOUND)
689 690 691
if(ENABLE_CPP)
  add_subdirectory(cpp)
endif(ENABLE_CPP)
692 693

set(PKG_CONFIG_VERSION_0_18 TRUE)
694 695
if(PKG_CONFIG_EXECUTABLE)
  exec_program(${PKG_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _output_VAR)
696
  macro_ensure_version("0.18" "${_output_VAR}" PKG_CONFIG_VERSION_0_18)
697
endif(PKG_CONFIG_EXECUTABLE)
698 699 700 701 702 703 704 705
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)

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


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

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

768 769 770
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)
771 772 773 774 775

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

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

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