CMakeLists.txt 26 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 "57")
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 30
set (CMAKE_CXX_STANDARD 11)

31 32 33 34
# 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
35
option(BUILD_QT5_TESTS "Whether compile the Qt5 test programs." ON)
36
option(BUILD_CPP_TESTS "Whether compile the CPP test programs." ON)
37 38
option(ENABLE_SPLASH "Build the Splash graphics backend." ON)
option(ENABLE_UTILS "Compile poppler command line utils." ON)
39
option(ENABLE_CPP "Compile poppler cpp wrapper." ON)
40
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")
41
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.")
42
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
43
option(ENABLE_LIBCURL "Build libcurl based HTTP support." OFF)
44 45
option(ENABLE_ZLIB "Build with zlib." ON)
option(ENABLE_ZLIB_UNCOMPRESS "Use zlib to uncompress flate streams (not totally safe)." OFF)
46
option(SPLASH_CMYK "Include support for CMYK rasterization." OFF)
47 48
option(USE_FIXEDPOINT "Use fixed point arithmetic in the Splash backend" OFF)
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
49
if(WIN32)
50
  option(ENABLE_RELOCATABLE "Do not hardcode the poppler library location (on Windows)." ON)
51 52 53
else(WIN32)
  set(ENABLE_RELOCATABLE OFF)
endif(WIN32)
54

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

58 59
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

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

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

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

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

macro_bool_to_01(ENABLE_SPLASH HAVE_SPLASH)
find_package(Freetype REQUIRED)
108 109 110
if(WITH_FONTCONFIGURATION_FONTCONFIG)
  find_package(Fontconfig REQUIRED)
endif(WITH_FONTCONFIGURATION_FONTCONFIG)
111
macro_optional_find_package(JPEG)
112
macro_optional_find_package(PNG)
113
macro_optional_find_package(TIFF)
André Guerreiro's avatar
André Guerreiro committed
114
macro_optional_find_package(NSS3)
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
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()
131
macro_optional_find_package(Qt4)
132 133 134 135 136 137
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)
138 139 140
  if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Xml_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND)
    set(QT5_FOUND true)
  else ()
141 142
    message("-- Package Qt5Core or Qt5Gui or Qt5Xml or Qt5Widgets or Qt5Test not found")
    set(QT5_FOUND false)
143
  endif()
144
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)
Albert Astals Cid's avatar
Albert Astals Cid committed
145
  set(QT5_FOUND false)
146 147 148
  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)

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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