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

Albert Astals Cid's avatar
Albert Astals Cid committed
3
cmake_minimum_required(VERSION 3.1.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 "58")
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

Albert Astals Cid's avatar
Albert Astals Cid committed
29
set (CMAKE_CXX_STANDARD 11)
30
set (CMAKE_CXX_EXTENSIONS OFF)
Albert Astals Cid's avatar
Albert Astals Cid committed
31

32 33 34 35
# 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
36
option(BUILD_QT5_TESTS "Whether compile the Qt5 test programs." ON)
37
option(BUILD_CPP_TESTS "Whether compile the CPP test programs." ON)
38 39
option(ENABLE_SPLASH "Build the Splash graphics backend." ON)
option(ENABLE_UTILS "Compile poppler command line utils." ON)
40
option(ENABLE_CPP "Compile poppler cpp wrapper." ON)
41
set(ENABLE_LIBOPENJPEG "auto" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: auto, openjpeg1, openjpeg2, unmaintained, none. 'auto' prefers openjpeg2 over openjpeg1 if both are available. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no JPX decoder at all. Default: auto")
42
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.")
43
set(ENABLE_DCTDECODER "libjpeg" CACHE STRING "Use libjpeg for DCT streams. Possible values: libjpeg, unmaintained, none. will use libjpeg if available or fail if not. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no DCT decoder at all. Default: libjpeg")
Hib Eris's avatar
Hib Eris committed
44
option(ENABLE_LIBCURL "Build libcurl based HTTP support." OFF)
45 46
option(ENABLE_ZLIB "Build with zlib." ON)
option(ENABLE_ZLIB_UNCOMPRESS "Use zlib to uncompress flate streams (not totally safe)." OFF)
47
option(SPLASH_CMYK "Include support for CMYK rasterization." OFF)
48 49
option(USE_FIXEDPOINT "Use fixed point arithmetic in the Splash backend" OFF)
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
50
if(WIN32)
51
  option(ENABLE_RELOCATABLE "Do not hardcode the poppler library location (on Windows)." ON)
52 53 54
else(WIN32)
  set(ENABLE_RELOCATABLE OFF)
endif(WIN32)
55

56
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
57
set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name")
58

59 60
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
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()

80 81 82 83 84 85 86
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)
87 88
set(WITH_FONTCONFIGURATION_WIN32 OFF)
set(WITH_FONTCONFIGURATION_FONTCONFIG OFF)
89 90 91 92 93 94 95 96
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")

97
# Enable these unconditionally.
98
set(MULTITHREADED ON)
99 100 101 102
set(OPI_SUPPORT ON)
set(TEXTOUT_WORD_LIST ON)

# setting the minimum required versions for some components
103
set(QT4_MIN_VERSION "4.7.0")
104
set(CAIRO_VERSION "1.10.0")
105
set(GLIB_REQUIRED "2.41")
106 107 108

macro_bool_to_01(ENABLE_SPLASH HAVE_SPLASH)
find_package(Freetype REQUIRED)
109 110 111
if(WITH_FONTCONFIGURATION_FONTCONFIG)
  find_package(Fontconfig REQUIRED)
endif(WITH_FONTCONFIGURATION_FONTCONFIG)
112
macro_optional_find_package(JPEG)
113
macro_optional_find_package(PNG)
114
macro_optional_find_package(TIFF)
André Guerreiro's avatar
André Guerreiro committed
115
macro_optional_find_package(NSS3)
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
if(ENABLE_DCTDECODER STREQUAL "libjpeg")
  if(JPEG_FOUND)
    set(ENABLE_LIBJPEG ${JPEG_FOUND})
  else()
    message(FATAL_ERROR "Install libjpeg before trying to build poppler. You can also decide to use the internal unmaintained DCT decoder or none at all.")
  endif()
  set(HAVE_DCT_DECODER ON)
elseif(ENABLE_DCTDECODER STREQUAL "unmaintained")
  set(ENABLE_LIBJPEG OFF)
  set(HAVE_DCT_DECODER ON)
elseif(ENABLE_DCTDECODER STREQUAL "none")
  set(ENABLE_LIBJPEG OFF)
  set(HAVE_DCT_DECODER OFF)
else()
  message(FATAL_ERROR "Invalid ENABLE_DCTDECODER value.")
endif()
132
macro_optional_find_package(Qt4)
133 134 135 136 137 138
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)
139 140 141
  if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Xml_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND)
    set(QT5_FOUND true)
  else ()
142 143
    message("-- Package Qt5Core or Qt5Gui or Qt5Xml or Qt5Widgets or Qt5Test not found")
    set(QT5_FOUND false)
144
  endif()
145
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)
Albert Astals Cid's avatar
Albert Astals Cid committed
146
  set(QT5_FOUND false)
147 148 149
  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)

150 151
macro_optional_find_package(Cairo ${CAIRO_VERSION})
if(CAIRO_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
152
  set(HAVE_CAIRO ${CAIRO_FOUND})
153 154
  set(CAIRO_FEATURE "#define POPPLER_HAS_CAIRO 1")
  set(CAIRO_REQ "cairo")
155 156
  set(POPPLER_GLIB_DISABLE_DEPRECATED "")
  set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "")
157
  macro_optional_find_package(GLIB)
158
  if(GLIB_FOUND)
159
    set(ENABLE_GLIB ON)
160
    # Check for introspection
161
    macro_optional_find_package(GObjectIntrospection 0.9.12)
162
    set(HAVE_INTROSPECTION ${INTROSPECTION_FOUND})
163 164
    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")
165
    macro_optional_find_package(GTK)
166 167 168 169
  endif(GLIB_FOUND)
else(CAIRO_FOUND)
  set(CAIRO_FEATURE "#undef POPPLER_HAS_CAIRO")
endif(CAIRO_FOUND)
170 171 172 173 174
if(ENABLE_CPP)
  macro_optional_find_package(Iconv)
  set(ENABLE_CPP ${ICONV_FOUND})
  set(HAVE_ICONV ${ICONV_FOUND})
endif(ENABLE_CPP)
175 176 177
if(ENABLE_ZLIB)
  find_package(ZLIB)
  if(ZLIB_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
178
    set(HAVE_LIBZ ${ZLIB_FOUND})
179 180 181
  endif(ZLIB_FOUND)
  set(ENABLE_ZLIB ${ZLIB_FOUND})
endif(ENABLE_ZLIB)
182 183 184 185
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
186 187
set(USE_OPENJPEG1 FALSE)
set(USE_OPENJPEG2 FALSE)
188
set(WITH_OPENJPEG FALSE)
Adrian Johnson's avatar
Adrian Johnson committed
189
if(ENABLE_LIBOPENJPEG STREQUAL "auto")
190 191 192 193 194 195 196
  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})  
197 198 199
    if(NOT LIBOPENJPEG_FOUND)
      message(FATAL_ERROR "Install libopenjpeg2 or libopenjpeg1 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
    endif()
Adrian Johnson's avatar
Adrian Johnson committed
200
  endif()
201
  set(HAVE_JPX_DECODER ON)
Adrian Johnson's avatar
Adrian Johnson committed
202 203 204 205
elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg1")
  find_package(LIBOPENJPEG)
  set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})
206 207 208 209
  if(NOT LIBOPENJPEG_FOUND)
    message(FATAL_ERROR "Install libopenjpeg1 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
  endif()
  set(HAVE_JPX_DECODER ON)
Adrian Johnson's avatar
Adrian Johnson committed
210 211 212 213
elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg2")
  find_package(LIBOPENJPEG2)
  set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
  set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
214 215 216 217 218 219 220 221 222 223 224 225
  if(NOT LIBOPENJPEG2_FOUND)
    message(FATAL_ERROR "Install libopenjpeg2 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
  endif()
  set(HAVE_JPX_DECODER ON)
elseif(ENABLE_LIBOPENJPEG STREQUAL "unmaintained")
  set(WITH_OPENJPEG OFF)
  set(HAVE_JPX_DECODER ON)
elseif(ENABLE_LIBOPENJPEG STREQUAL "none")
  set(WITH_OPENJPEG OFF)
  set(HAVE_JPX_DECODER OFF)
else()
  message(FATAL_ERROR "Invalid ENABLE_LIBOPENJPEG value: ${ENABLE_LIBOPENJPEG}")
Adrian Johnson's avatar
Adrian Johnson committed
226
endif()
227
set(ENABLE_LIBOPENJPEG "${WITH_OPENJPEG}")
228
if(ENABLE_CMS STREQUAL "auto")
Pino Toscano's avatar
Pino Toscano committed
229
  find_package(LCMS2)
230 231
  set(USE_CMS ${LCMS2_FOUND})
  if(NOT LCMS2_FOUND)
Pino Toscano's avatar
Pino Toscano committed
232 233 234
    find_package(LCMS)
    set(USE_CMS ${LCMS_FOUND})
    set(USE_LCMS1 ${LCMS_FOUND})
235 236 237 238 239 240 241 242 243
  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
244 245 246 247 248
if(ENABLE_LIBCURL)
  find_package(CURL)
  include_directories(${CURL_INCLUDE_DIR})
  set(POPPLER_HAS_CURL_SUPPORT ON)
endif(ENABLE_LIBCURL)
249

250
add_definitions(-DHAVE_CONFIG_H=1)
251 252 253 254
if(MINGW)
  # Use mingw's ansi stdio extensions
  add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
endif(MINGW)
255 256
if(FONTCONFIG_FOUND)
  add_definitions(${FONTCONFIG_DEFINITIONS})
257
  include_directories(${FONTCONFIG_INCLUDE_DIR})
258
endif(FONTCONFIG_FOUND)
259 260 261 262 263 264
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)
265 266 267 268 269 270 271
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
272
  ${FREETYPE_INCLUDE_DIRS}
273 274
)
set(HAVE_FREETYPE_H ON)
275 276 277
if(CMAKE_USE_PTHREADS_INIT)
  set(HAVE_PTHREAD ON)
endif(CMAKE_USE_PTHREADS_INIT)
278 279 280 281

if(ENABLE_ZLIB)
  include_directories(${ZLIB_INCLUDE_DIR})
endif(ENABLE_ZLIB)
André Guerreiro's avatar
André Guerreiro committed
282 283 284 285 286

if (NSS3_FOUND)
  add_definitions(${NSS3_CFLAGS})
  set(ENABLE_NSS3 ON)
endif(NSS3_FOUND)
287 288 289
if(JPEG_FOUND)
  include_directories(${JPEG_INCLUDE_DIR})
endif(JPEG_FOUND)
290 291 292 293
if(PNG_FOUND)
  include_directories(${PNG_INCLUDE_DIR})
  set(ENABLE_LIBPNG ON)
endif(PNG_FOUND)
294 295 296 297
if(TIFF_FOUND)
  include_directories(${TIFF_INCLUDE_DIR})
  set(ENABLE_LIBTIFF ON)
endif(TIFF_FOUND)
298
if(LIBOPENJPEG_FOUND)
299
  include_directories(${LIBOPENJPEG_INCLUDE_DIR})
300
endif(LIBOPENJPEG_FOUND)
Adrian Johnson's avatar
Adrian Johnson committed
301 302 303
if(LIBOPENJPEG2_FOUND)
  include_directories(${LIBOPENJPEG2_INCLUDE_DIRS})
endif()
Albert Astals Cid's avatar
Albert Astals Cid committed
304 305 306
if(LCMS_FOUND)
  include_directories(${LCMS_INCLUDE_DIR})
endif(LCMS_FOUND)
Pino Toscano's avatar
Pino Toscano committed
307 308 309
if(LCMS2_FOUND)
  include_directories(${LCMS2_INCLUDE_DIR})
endif(LCMS2_FOUND)
310

311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326
# 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)

327 328 329 330 331 332
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")
333
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_NO} ${CMAKE_CXX_FLAGS}")
334 335
endif(_comp_warnings STREQUAL "no")
if(_comp_warnings STREQUAL "yes")
336
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
337
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_YES} ${CMAKE_CXX_FLAGS}")
338 339
endif(_comp_warnings STREQUAL "yes")
if(_comp_warnings STREQUAL "kde")
340
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
341 342 343 344 345 346
  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)
347
configure_file(poppler/poppler-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h)
348 349 350 351 352 353 354 355 356 357 358


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
359
  goo/NetPBMWriter.cc
360
  goo/PNGWriter.cc
361
  goo/TiffWriter.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
362
  goo/JpegWriter.cc
363
  goo/ImgWriter.cc
364
  goo/gstrtod.cc
365
  goo/grandom.cc
366
  goo/glibc.cc
367 368 369 370 371
  fofi/FoFiBase.cc
  fofi/FoFiEncodings.cc
  fofi/FoFiTrueType.cc
  fofi/FoFiType1.cc
  fofi/FoFiType1C.cc
372
  fofi/FoFiIdentifier.cc
373 374 375 376
  poppler/Annot.cc
  poppler/Array.cc
  poppler/BuiltinFont.cc
  poppler/BuiltinFontTables.cc
Hib Eris's avatar
Hib Eris committed
377
  poppler/CachedFile.cc
378 379 380
  poppler/Catalog.cc
  poppler/CharCodeToUnicode.cc
  poppler/CMap.cc
381
  poppler/DateInfo.cc
382 383 384
  poppler/Decrypt.cc
  poppler/Dict.cc
  poppler/Error.cc
385
  poppler/FileSpec.cc
386 387 388 389 390 391 392 393
  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
394
  poppler/Hints.cc
395 396 397 398
  poppler/JArithmeticDecoder.cc
  poppler/JBIG2Stream.cc
  poppler/Lexer.cc
  poppler/Link.cc
Hib Eris's avatar
Hib Eris committed
399
  poppler/Linearization.cc
400
  poppler/LocalPDFDocBuilder.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
401
  poppler/MarkedContentOutputDev.cc
402 403
  poppler/NameToCharCode.cc
  poppler/Object.cc
404
  poppler/OptionalContent.cc
405 406 407 408 409 410 411
  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
412
  poppler/PDFDocFactory.cc
413
  poppler/PopplerCache.cc
414 415 416
  poppler/ProfileData.cc
  poppler/PreScanOutputDev.cc
  poppler/PSTokenizer.cc
417
  poppler/SignatureInfo.cc
418
  poppler/Stream.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
419 420
  poppler/StructTreeRoot.cc
  poppler/StructElement.cc
421
  poppler/strtok_r.cpp
422 423
  poppler/UnicodeMap.cc
  poppler/UnicodeTypeTable.cc
424
  poppler/UTF.cc
425 426 427 428 429
  poppler/XRef.cc
  poppler/PSOutputDev.cc
  poppler/TextOutputDev.cc
  poppler/PageLabelInfo.cc
  poppler/SecurityHandler.cc
430
  poppler/StdinCachedFile.cc
431
  poppler/StdinPDFDocBuilder.cc
432
  poppler/Sound.cc
433
  poppler/ViewerPreferences.cc
434
  poppler/XpdfPluginAPI.cc
Hugo Mercier's avatar
Hugo Mercier committed
435
  poppler/Movie.cc
436
  poppler/Rendition.cc
437
)
438
set(poppler_LIBS ${FREETYPE_LIBRARIES})
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
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)
463 464 465
if(FONTCONFIG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${FONTCONFIG_LIBRARIES})
endif(FONTCONFIG_FOUND)
André Guerreiro's avatar
André Guerreiro committed
466

467 468 469 470 471 472 473 474
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}
475
    poppler/FlateEncoder.cc
476 477 478
  )
  set(poppler_LIBS ${poppler_LIBS} ${ZLIB_LIBRARIES})
endif(ENABLE_ZLIB)
479 480 481 482 483
if(ENABLE_ZLIB_UNCOMPRESS)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/FlateStream.cc
  )
endif(ENABLE_ZLIB_UNCOMPRESS)
Hib Eris's avatar
Hib Eris committed
484 485 486
if(ENABLE_LIBCURL)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/CurlCachedFile.cc
Hib Eris's avatar
Hib Eris committed
487
    poppler/CurlPDFDocBuilder.cc
Hib Eris's avatar
Hib Eris committed
488 489 490
  )
  set(poppler_LIBS ${poppler_LIBS} ${CURL_LIBRARIES})
endif(ENABLE_LIBCURL)
André Guerreiro's avatar
André Guerreiro committed
491 492 493 494 495 496
if (ENABLE_NSS3)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/SignatureHandler.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${NSS3_LIBRARIES})
endif(ENABLE_NSS3)  
497
if(LIBOPENJPEG_FOUND)
498 499 500 501
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPEG2000Stream.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG_LIBRARIES})
Adrian Johnson's avatar
Adrian Johnson committed
502 503 504 505 506 507 508 509
  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 ()
510 511 512
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPXStream.cc
  )
Adrian Johnson's avatar
Adrian Johnson committed
513
endif()
514
if(USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
515 516 517 518 519 520
  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)
521
endif(USE_CMS)
522
if(WIN32)
523 524
  # use clean APIs
  add_definitions(-DWIN32_LEAN_AND_MEAN)
525 526 527
  # gdi32 is needed under win32
  set(poppler_LIBS ${poppler_LIBS} gdi32)
endif(WIN32)
528 529 530
if(PNG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${PNG_LIBRARIES})
endif(PNG_FOUND)
531 532 533
if(TIFF_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${TIFF_LIBRARIES})
endif(TIFF_FOUND)
534 535 536
if(HAVE_PTHREAD)
  set(poppler_LIBS ${poppler_LIBS} ${CMAKE_THREAD_LIBS_INIT})
endif()
537

538
if(MSVC)
539
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
540
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- ${CMAKE_CXX_FLAGS}")
541 542
add_library(poppler STATIC ${poppler_SRCS})
else(MSVC)
543
add_library(poppler SHARED ${poppler_SRCS})
544
endif(MSVC)
Albert Astals Cid's avatar
Albert Astals Cid committed
545
set_target_properties(poppler PROPERTIES VERSION 69.0.0 SOVERSION 69)
546
target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
547
install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
548 549 550 551 552 553 554

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
555
    poppler/CachedFile.h
556 557 558
    poppler/Catalog.h
    poppler/CharCodeToUnicode.h
    poppler/CMap.h
559
    poppler/DateInfo.h
560 561 562
    poppler/Decrypt.h
    poppler/Dict.h
    poppler/Error.h
563
    poppler/FileSpec.h
564 565 566 567 568 569 570 571
    poppler/FontEncodingTables.h
    poppler/FontInfo.h
    poppler/Form.h
    poppler/Function.cc
    poppler/Function.h
    poppler/Gfx.h
    poppler/GfxFont.h
    poppler/GfxState.h
572
    poppler/GfxState_helpers.h
573
    poppler/GlobalParams.h
Hib Eris's avatar
Hib Eris committed
574
    poppler/Hints.h
575 576 577 578
    poppler/JArithmeticDecoder.h
    poppler/JBIG2Stream.h
    poppler/Lexer.h
    poppler/Link.h
Hib Eris's avatar
Hib Eris committed
579
    poppler/Linearization.h
580
    poppler/LocalPDFDocBuilder.h
Albert Astals Cid's avatar
Albert Astals Cid committed
581
    poppler/MarkedContentOutputDev.h
582
    poppler/Movie.h
583 584
    poppler/NameToCharCode.h
    poppler/Object.h
585
    poppler/OptionalContent.h
586 587 588 589 590 591
    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
592
    poppler/PDFDocBuilder.h
593
    poppler/PDFDocEncoding.h
Hib Eris's avatar
Hib Eris committed
594
    poppler/PDFDocFactory.h
Albert Astals Cid's avatar
Albert Astals Cid committed
595
    poppler/PopplerCache.h
596 597 598
    poppler/ProfileData.h
    poppler/PreScanOutputDev.h
    poppler/PSTokenizer.h
599
    poppler/Rendition.h
600 601
    poppler/Stream-CCITT.h
    poppler/Stream.h
Albert Astals Cid's avatar
Albert Astals Cid committed
602 603
    poppler/StructElement.h
    poppler/StructTreeRoot.h
604 605 606 607 608 609
    poppler/UnicodeMap.h
    poppler/UnicodeMapTables.h
    poppler/UnicodeTypeTable.h
    poppler/UnicodeCClassTables.h
    poppler/UnicodeCompTables.h
    poppler/UnicodeDecompTables.h
610
    poppler/ViewerPreferences.h
611 612 613 614 615 616 617 618
    poppler/XRef.h
    poppler/CharTypes.h
    poppler/CompactFontTables.h
    poppler/ErrorCodes.h
    poppler/NameToUnicodeTable.h
    poppler/PSOutputDev.h
    poppler/TextOutputDev.h
    poppler/SecurityHandler.h
619
    poppler/StdinCachedFile.h
620
    poppler/StdinPDFDocBuilder.h
621
    poppler/UTF.h
622
    poppler/UTF8.h
623 624 625 626
    poppler/XpdfPluginAPI.h
    poppler/Sound.h
    ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h
    DESTINATION include/poppler)
627 628 629 630 631 632 633 634 635 636
  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
637
    goo/ImgWriter.h
638
    goo/GooLikely.h
639
    goo/gstrtod.h
640
    goo/grandom.h
641
    DESTINATION include/poppler/goo)
642 643 644 645 646
  if(PNG_FOUND)
    install(FILES
      goo/PNGWriter.h
      DESTINATION include/poppler/goo)
  endif(PNG_FOUND)
647 648 649 650 651
  if(TIFF_FOUND)
    install(FILES
      goo/TiffWriter.h
      DESTINATION include/poppler/goo)
  endif(TIFF_FOUND)
652 653 654 655 656
  if(JPEG_FOUND)
    install(FILES
      goo/JpegWriter.h
      DESTINATION include/poppler/goo)
  endif(JPEG_FOUND)
657 658 659 660 661 662
  install(FILES
    fofi/FoFiBase.h
    fofi/FoFiEncodings.h
    fofi/FoFiTrueType.h
    fofi/FoFiType1.h
    fofi/FoFiType1C.h
663
    fofi/FoFiIdentifier.h
664
    DESTINATION include/poppler/fofi)
Hib Eris's avatar
Hib Eris committed
665 666 667
  if(ENABLE_LIBCURL)
    install(FILES
      poppler/CurlCachedFile.h
Hib Eris's avatar
Hib Eris committed
668
      poppler/CurlPDFDocBuilder.h
Hib Eris's avatar
Hib Eris committed
669 670
      DESTINATION include/poppler)
  endif(ENABLE_LIBCURL)
671
  if(LIBOPENJPEG_FOUND)
672 673 674
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
675 676 677 678 679
  elseif(LIBOPENJPEG2_FOUND)
    install(FILES
      poppler/JPEG2000Stream.h
      DESTINATION include/poppler)
  else()
680 681 682
    install(FILES
      poppler/JPXStream.h
      DESTINATION include/poppler)
Adrian Johnson's avatar
Adrian Johnson committed
683
  endif()
684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719
  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)
720
if(ENABLE_GLIB)
721
  add_subdirectory(glib)
722
endif(ENABLE_GLIB)
723 724 725 726
add_subdirectory(test)
if(QT4_FOUND)
  add_subdirectory(qt4)
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
727 728 729
if(QT5_FOUND)
  add_subdirectory(qt5)
endif(QT5_FOUND)
730 731 732
if(ENABLE_CPP)
  add_subdirectory(cpp)
endif(ENABLE_CPP)
733 734

set(PKG_CONFIG_VERSION_0_18 TRUE)
735 736
if(PKG_CONFIG_EXECUTABLE)
  exec_program(${PKG_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _output_VAR)
737
  macro_ensure_version("0.18" "${_output_VAR}" PKG_CONFIG_VERSION_0_18)
738
endif(PKG_CONFIG_EXECUTABLE)
739 740 741 742 743 744 745 746
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)

747
poppler_create_install_pkgconfig(poppler.pc lib${LIB_SUFFIX}/pkgconfig)
748
if(ENABLE_SPLASH)
749
  poppler_create_install_pkgconfig(poppler-splash.pc lib${LIB_SUFFIX}/pkgconfig)
750 751
endif(ENABLE_SPLASH)
if(QT4_FOUND)
752
  poppler_create_install_pkgconfig(poppler-qt4.pc lib${LIB_SUFFIX}/pkgconfig)
753
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
754 755 756
if(QT5_FOUND)
  poppler_create_install_pkgconfig(poppler-qt5.pc lib${LIB_SUFFIX}/pkgconfig)
endif(QT5_FOUND)
757
if(ENABLE_GLIB)
758
  poppler_create_install_pkgconfig(poppler-glib.pc lib${LIB_SUFFIX}/pkgconfig)
759
endif(ENABLE_GLIB)
760
if(CAIRO_FOUND)
761
  poppler_create_install_pkgconfig(poppler-cairo.pc lib${LIB_SUFFIX}/pkgconfig)
762
endif(CAIRO_FOUND)
763 764 765
if(ENABLE_CPP)
  poppler_create_install_pkgconfig(poppler-cpp.pc lib${LIB_SUFFIX}/pkgconfig)
endif(ENABLE_CPP)
766 767 768


message("Building Poppler with support for:")
769
show_end_message("font configuration" ${font_configuration})
770
show_end_message_yesno("splash output" ENABLE_SPLASH)
771 772 773
if(SPLASH_CMYK)
  message("      with CMYK support")
endif()
774 775
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
776
show_end_message_yesno("qt5 wrapper" QT5_FOUND)
777
show_end_message_yesno("glib wrapper" ENABLE_GLIB)
778
show_end_message_yesno("  introspection" INTROSPECTION_FOUND)
779
show_end_message_yesno("cpp wrapper" ENABLE_CPP)
780
show_end_message("use gtk-doc" "not supported with this CMake build system")
781 782
show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
show_end_message_yesno("use libpng" ENABLE_LIBPNG)
783
show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
784 785
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
786
show_end_message_yesno("use nss3" ENABLE_NSS3)
Hib Eris's avatar
Hib Eris committed
787
show_end_message_yesno("use curl" ENABLE_LIBCURL)
Adrian Johnson's avatar
Adrian Johnson committed
788 789 790 791 792 793 794
show_end_message_yesno("use libopenjpeg" WITH_OPENJPEG)
if(USE_OPENJPEG1)
  message("      with openjpeg1")
endif()
if(USE_OPENJPEG2)
  message("      with openjpeg2")
endif()
795
show_end_message_yesno("use cms" USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
796 797 798 799 800 801
if(LCMS_FOUND)
  message("      with lcms1")
endif(LCMS_FOUND)
if(LCMS2_FOUND)
  message("      with lcms2")
endif(LCMS2_FOUND)
802
show_end_message_yesno("command line utils" ENABLE_UTILS)
803
show_end_message("test data dir" ${TESTDATADIR})
804

805 806 807 808
if(NOT ENABLE_SPLASH AND NOT CAIRO_FOUND)
  message("Warning: There is no rendering backend enabled")
endif(NOT ENABLE_SPLASH AND NOT CAIRO_FOUND)

809 810 811
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)
812

813
if(NOT ENABLE_LIBJPEG AND HAVE_DCT_DECODER)
814
  message("Warning: Using libjpeg is recommended. The internal DCT decoder is unmaintained.")
815 816 817 818 819
endif()

if(NOT HAVE_DCT_DECODER)
  message("Warning: You're not compiling any DCT decoder. Some files will fail to display properly.")
endif()
820

821
if(ENABLE_ZLIB_UNCOMPRESS)
822
  message("Warning: Using zlib is not totally safe")
823
endif(ENABLE_ZLIB_UNCOMPRESS)
824

825
if(NOT WITH_OPENJPEG AND HAVE_JPX_DECODER)
826
  message("Warning: Using libopenjpeg2 is recommended. The internal JPX decoder is unmaintained.")
827 828 829 830 831
endif()

if(NOT HAVE_JPX_DECODER)
  message("Warning: You're not compiling any JPX decoder. Some files will fail to display properly.")
endif()