CMakeLists.txt 22.1 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
set(POPPLER_MAJOR_VERSION "0")
Albert Astals Cid's avatar
Albert Astals Cid committed
20
set(POPPLER_MINOR_VERSION "31")
Albert Astals Cid's avatar
Albert Astals Cid committed
21
set(POPPLER_MICRO_VERSION "0")
22
set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}")
23 24 25 26 27

# 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
28
option(BUILD_QT5_TESTS "Whether compile the Qt5 test programs." ON)
29
option(BUILD_CPP_TESTS "Whether compile the CPP test programs." ON)
30 31
option(ENABLE_SPLASH "Build the Splash graphics backend." ON)
option(ENABLE_UTILS "Compile poppler command line utils." ON)
32
option(ENABLE_CPP "Compile poppler cpp wrapper." ON)
Adrian Johnson's avatar
Adrian Johnson committed
33
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.")
34
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
35
option(ENABLE_LIBCURL "Build libcurl based HTTP support." OFF)
36
option(ENABLE_ZLIB "Build with zlib (not totally safe)." OFF)
37 38
option(USE_FIXEDPOINT "Use fixed point arithmetic in the Splash backend" OFF)
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
39
if(WIN32)
40
  option(ENABLE_RELOCATABLE "Do not hardcode the poppler library location (on Windows)." ON)
41 42 43
else(WIN32)
  set(ENABLE_RELOCATABLE OFF)
endif(WIN32)
44

45 46
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
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()

66 67 68 69 70 71 72
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)
73 74
set(WITH_FONTCONFIGURATION_WIN32 OFF)
set(WITH_FONTCONFIGURATION_FONTCONFIG OFF)
75 76 77 78 79 80 81 82
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")

83
# Enable these unconditionally.
84
set(MULTITHREADED ON)
85 86 87 88
set(OPI_SUPPORT ON)
set(TEXTOUT_WORD_LIST ON)

# setting the minimum required versions for some components
89
set(QT4_MIN_VERSION "4.7.0")
90
set(CAIRO_VERSION "1.10.0")
91
set(GLIB_REQUIRED "2.18")
92 93 94

macro_bool_to_01(ENABLE_SPLASH HAVE_SPLASH)
find_package(Freetype REQUIRED)
95 96 97
if(WITH_FONTCONFIGURATION_FONTCONFIG)
  find_package(Fontconfig REQUIRED)
endif(WITH_FONTCONFIGURATION_FONTCONFIG)
98
macro_optional_find_package(JPEG)
99
macro_optional_find_package(PNG)
100
macro_optional_find_package(TIFF)
101
if(JPEG_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
102
  set(ENABLE_LIBJPEG ${JPEG_FOUND})
103 104
endif(JPEG_FOUND)
macro_optional_find_package(Qt4)
105 106 107 108 109 110
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)
111 112 113
  if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Xml_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND)
    set(QT5_FOUND true)
  else ()
114 115
    message("-- Package Qt5Core or Qt5Gui or Qt5Xml or Qt5Widgets or Qt5Test not found")
    set(QT5_FOUND false)
116
  endif()
117
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} VERSION_GREATER 2.8.7)
Albert Astals Cid's avatar
Albert Astals Cid committed
118
  set(QT5_FOUND false)
119 120 121
  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)

122 123
macro_optional_find_package(Cairo ${CAIRO_VERSION})
if(CAIRO_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
124
  set(HAVE_CAIRO ${CAIRO_FOUND})
125 126
  set(CAIRO_FEATURE "#define POPPLER_HAS_CAIRO 1")
  set(CAIRO_REQ "cairo")
127 128
  set(POPPLER_GLIB_DISABLE_DEPRECATED "")
  set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "")
129
  macro_optional_find_package(GLIB)
130
  if(GLIB_FOUND)
131
    set(ENABLE_GLIB ON)
132
    # Check for introspection
133
    macro_optional_find_package(GObjectIntrospection 0.9.12)
134
    set(HAVE_INTROSPECTION ${INTROSPECTION_FOUND})
135 136
    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")
137
    macro_optional_find_package(GTK)
138 139 140 141
  endif(GLIB_FOUND)
else(CAIRO_FOUND)
  set(CAIRO_FEATURE "#undef POPPLER_HAS_CAIRO")
endif(CAIRO_FOUND)
142 143 144 145 146
if(ENABLE_CPP)
  macro_optional_find_package(Iconv)
  set(ENABLE_CPP ${ICONV_FOUND})
  set(HAVE_ICONV ${ICONV_FOUND})
endif(ENABLE_CPP)
147 148 149
if(ENABLE_ZLIB)
  find_package(ZLIB)
  if(ZLIB_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
150
    set(HAVE_LIBZ ${ZLIB_FOUND})
151 152 153
  endif(ZLIB_FOUND)
  set(ENABLE_ZLIB ${ZLIB_FOUND})
endif(ENABLE_ZLIB)
Adrian Johnson's avatar
Adrian Johnson committed
154 155 156
set(USE_OPENJPEG1 FALSE)
set(USE_OPENJPEG2 FALSE)
if(ENABLE_LIBOPENJPEG STREQUAL "auto")
157
  find_package(LIBOPENJPEG)
Adrian Johnson's avatar
Adrian Johnson committed
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
  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()
174
if(ENABLE_CMS STREQUAL "auto")
Pino Toscano's avatar
Pino Toscano committed
175
  find_package(LCMS2)
176 177
  set(USE_CMS ${LCMS2_FOUND})
  if(NOT LCMS2_FOUND)
Pino Toscano's avatar
Pino Toscano committed
178 179 180
    find_package(LCMS)
    set(USE_CMS ${LCMS_FOUND})
    set(USE_LCMS1 ${LCMS_FOUND})
181 182 183 184 185 186 187 188 189
  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
190 191 192 193 194
if(ENABLE_LIBCURL)
  find_package(CURL)
  include_directories(${CURL_INCLUDE_DIR})
  set(POPPLER_HAS_CURL_SUPPORT ON)
endif(ENABLE_LIBCURL)
195

196
add_definitions(-DHAVE_CONFIG_H=1)
197 198 199 200
if(MINGW)
  # Use mingw's ansi stdio extensions
  add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
endif(MINGW)
201 202
if(FONTCONFIG_FOUND)
  add_definitions(${FONTCONFIG_DEFINITIONS})
203
  include_directories(${FONTCONFIG_INCLUDE_DIR})
204
endif(FONTCONFIG_FOUND)
205 206 207 208 209 210
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)
211 212 213 214 215 216 217
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
218
  ${FREETYPE_INCLUDE_DIRS}
219 220
)
set(HAVE_FREETYPE_H ON)
221 222 223
if(CMAKE_USE_PTHREADS_INIT)
  set(HAVE_PTHREAD ON)
endif(CMAKE_USE_PTHREADS_INIT)
224 225 226 227 228 229 230 231

if(ENABLE_ZLIB)
  include_directories(${ZLIB_INCLUDE_DIR})
endif(ENABLE_ZLIB)
if(JPEG_FOUND)
  include_directories(${JPEG_INCLUDE_DIR})
  set(ENABLE_LIBJPEG ON)
endif(JPEG_FOUND)
232 233 234 235
if(PNG_FOUND)
  include_directories(${PNG_INCLUDE_DIR})
  set(ENABLE_LIBPNG ON)
endif(PNG_FOUND)
236 237 238 239
if(TIFF_FOUND)
  include_directories(${TIFF_INCLUDE_DIR})
  set(ENABLE_LIBTIFF ON)
endif(TIFF_FOUND)
240
if(LIBOPENJPEG_FOUND)
241
  include_directories(${LIBOPENJPEG_INCLUDE_DIR})
242
endif(LIBOPENJPEG_FOUND)
Adrian Johnson's avatar
Adrian Johnson committed
243 244 245
if(LIBOPENJPEG2_FOUND)
  include_directories(${LIBOPENJPEG2_INCLUDE_DIRS})
endif()
Albert Astals Cid's avatar
Albert Astals Cid committed
246 247 248
if(LCMS_FOUND)
  include_directories(${LCMS_INCLUDE_DIR})
endif(LCMS_FOUND)
Pino Toscano's avatar
Pino Toscano committed
249 250 251
if(LCMS2_FOUND)
  include_directories(${LCMS2_INCLUDE_DIR})
endif(LCMS2_FOUND)
252

253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
# 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)

269 270 271 272 273 274
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")
275
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_NO} ${CMAKE_CXX_FLAGS}")
276 277
endif(_comp_warnings STREQUAL "no")
if(_comp_warnings STREQUAL "yes")
278
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
279
  set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_YES} ${CMAKE_CXX_FLAGS}")
280 281
endif(_comp_warnings STREQUAL "yes")
if(_comp_warnings STREQUAL "kde")
282
  set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
283 284 285 286 287 288
  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)
289
configure_file(poppler/poppler-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h)
290 291 292 293 294 295 296 297 298 299 300


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
301
  goo/NetPBMWriter.cc
302
  goo/PNGWriter.cc
303
  goo/TiffWriter.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
304
  goo/JpegWriter.cc
305
  goo/ImgWriter.cc
306
  goo/gstrtod.cc
307
  goo/grandom.cc
308 309 310 311 312
  fofi/FoFiBase.cc
  fofi/FoFiEncodings.cc
  fofi/FoFiTrueType.cc
  fofi/FoFiType1.cc
  fofi/FoFiType1C.cc
313
  fofi/FoFiIdentifier.cc
314 315 316 317
  poppler/Annot.cc
  poppler/Array.cc
  poppler/BuiltinFont.cc
  poppler/BuiltinFontTables.cc
Hib Eris's avatar
Hib Eris committed
318
  poppler/CachedFile.cc
319 320 321
  poppler/Catalog.cc
  poppler/CharCodeToUnicode.cc
  poppler/CMap.cc
322
  poppler/DateInfo.cc
323 324 325
  poppler/Decrypt.cc
  poppler/Dict.cc
  poppler/Error.cc
326
  poppler/FileSpec.cc
327 328 329 330 331 332 333 334
  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
335
  poppler/Hints.cc
336 337 338 339
  poppler/JArithmeticDecoder.cc
  poppler/JBIG2Stream.cc
  poppler/Lexer.cc
  poppler/Link.cc
Hib Eris's avatar
Hib Eris committed
340
  poppler/Linearization.cc
341
  poppler/LocalPDFDocBuilder.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
342
  poppler/MarkedContentOutputDev.cc
343 344
  poppler/NameToCharCode.cc
  poppler/Object.cc
345
  poppler/OptionalContent.cc
346 347 348 349 350 351 352
  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
353
  poppler/PDFDocFactory.cc
354
  poppler/PopplerCache.cc
355 356 357 358
  poppler/ProfileData.cc
  poppler/PreScanOutputDev.cc
  poppler/PSTokenizer.cc
  poppler/Stream.cc
Albert Astals Cid's avatar
Albert Astals Cid committed
359 360
  poppler/StructTreeRoot.cc
  poppler/StructElement.cc
361
  poppler/strtok_r.cpp
362 363
  poppler/UnicodeMap.cc
  poppler/UnicodeTypeTable.cc
364
  poppler/UTF.cc
365 366 367 368 369
  poppler/XRef.cc
  poppler/PSOutputDev.cc
  poppler/TextOutputDev.cc
  poppler/PageLabelInfo.cc
  poppler/SecurityHandler.cc
370
  poppler/StdinCachedFile.cc
371
  poppler/StdinPDFDocBuilder.cc
372
  poppler/Sound.cc
373
  poppler/ViewerPreferences.cc
374
  poppler/XpdfPluginAPI.cc
Hugo Mercier's avatar
Hugo Mercier committed
375
  poppler/Movie.cc
376
  poppler/Rendition.cc
377
)
378
set(poppler_LIBS ${FREETYPE_LIBRARIES})
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402
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)
403 404 405
if(FONTCONFIG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${FONTCONFIG_LIBRARIES})
endif(FONTCONFIG_FOUND)
406 407 408 409 410 411 412 413 414 415 416 417
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}
    poppler/FlateStream.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${ZLIB_LIBRARIES})
endif(ENABLE_ZLIB)
Hib Eris's avatar
Hib Eris committed
418 419 420
if(ENABLE_LIBCURL)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/CurlCachedFile.cc
Hib Eris's avatar
Hib Eris committed
421
    poppler/CurlPDFDocBuilder.cc
Hib Eris's avatar
Hib Eris committed
422 423 424
  )
  set(poppler_LIBS ${poppler_LIBS} ${CURL_LIBRARIES})
endif(ENABLE_LIBCURL)
425
if(LIBOPENJPEG_FOUND)
426 427 428 429
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPEG2000Stream.cc
  )
  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG_LIBRARIES})
Adrian Johnson's avatar
Adrian Johnson committed
430 431 432 433 434 435 436 437 438
  add_definitions(-DUSE_OPENJPEG1)
elseif (LIBOPENJPEG2_FOUND)
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPEG2000Stream.cc
  )
  add_definitions(-DUSE_OPENJPEG2)
MESSAGE(${LIBOPENJPEG2_LIBRARIES})
  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES})
else ()
439 440 441
  set(poppler_SRCS ${poppler_SRCS}
    poppler/JPXStream.cc
  )
Adrian Johnson's avatar
Adrian Johnson committed
442
endif()
443
if(USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
444 445 446 447 448 449
  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)
450
endif(USE_CMS)
451 452 453 454
if(WIN32)
  # gdi32 is needed under win32
  set(poppler_LIBS ${poppler_LIBS} gdi32)
endif(WIN32)
455 456 457
if(PNG_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${PNG_LIBRARIES})
endif(PNG_FOUND)
458 459 460
if(TIFF_FOUND)
  set(poppler_LIBS ${poppler_LIBS} ${TIFF_LIBRARIES})
endif(TIFF_FOUND)
461 462 463
if(HAVE_PTHREAD)
  set(poppler_LIBS ${poppler_LIBS} ${CMAKE_THREAD_LIBS_INIT})
endif()
464

465
if(MSVC)
466
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
467
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- ${CMAKE_CXX_FLAGS}")
468 469
add_library(poppler STATIC ${poppler_SRCS})
else(MSVC)
470
add_library(poppler SHARED ${poppler_SRCS})
471
endif(MSVC)
Albert Astals Cid's avatar
Albert Astals Cid committed
472
set_target_properties(poppler PROPERTIES VERSION 50.0.0 SOVERSION 50)
473
target_link_libraries(poppler ${poppler_LIBS})
474
target_link_libraries(poppler LINK_INTERFACE_LIBRARIES "")
475
install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
476 477 478 479 480 481 482

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

set(PKG_CONFIG_VERSION_0_18 TRUE)
663 664
if(PKG_CONFIG_EXECUTABLE)
  exec_program(${PKG_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _output_VAR)
665
  macro_ensure_version("0.18" "${_output_VAR}" PKG_CONFIG_VERSION_0_18)
666
endif(PKG_CONFIG_EXECUTABLE)
667 668 669 670 671 672 673 674
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)

675
poppler_create_install_pkgconfig(poppler.pc lib${LIB_SUFFIX}/pkgconfig)
676
if(ENABLE_SPLASH)
677
  poppler_create_install_pkgconfig(poppler-splash.pc lib${LIB_SUFFIX}/pkgconfig)
678 679
endif(ENABLE_SPLASH)
if(QT4_FOUND)
680
  poppler_create_install_pkgconfig(poppler-qt4.pc lib${LIB_SUFFIX}/pkgconfig)
681
endif(QT4_FOUND)
Albert Astals Cid's avatar
Albert Astals Cid committed
682 683 684
if(QT5_FOUND)
  poppler_create_install_pkgconfig(poppler-qt5.pc lib${LIB_SUFFIX}/pkgconfig)
endif(QT5_FOUND)
685
if(ENABLE_GLIB)
686
  poppler_create_install_pkgconfig(poppler-glib.pc lib${LIB_SUFFIX}/pkgconfig)
687
endif(ENABLE_GLIB)
688
if(CAIRO_FOUND)
689
  poppler_create_install_pkgconfig(poppler-cairo.pc lib${LIB_SUFFIX}/pkgconfig)
690
endif(CAIRO_FOUND)
691 692 693
if(ENABLE_CPP)
  poppler_create_install_pkgconfig(poppler-cpp.pc lib${LIB_SUFFIX}/pkgconfig)
endif(ENABLE_CPP)
694 695 696


message("Building Poppler with support for:")
697
show_end_message("font configuration" ${font_configuration})
698 699 700
show_end_message_yesno("splash output" ENABLE_SPLASH)
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
701
show_end_message_yesno("qt5 wrapper" QT5_FOUND)
702
show_end_message_yesno("glib wrapper" ENABLE_GLIB)
703
show_end_message_yesno("  introspection" INTROSPECTION_FOUND)
704
show_end_message_yesno("cpp wrapper" ENABLE_CPP)
705
show_end_message("use gtk-doc" "not supported with this CMake build system")
706 707
show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
show_end_message_yesno("use libpng" ENABLE_LIBPNG)
708
show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
709
show_end_message_yesno("use zlib" ENABLE_ZLIB)
Hib Eris's avatar
Hib Eris committed
710
show_end_message_yesno("use curl" ENABLE_LIBCURL)
Adrian Johnson's avatar
Adrian Johnson committed
711 712 713 714 715 716 717
show_end_message_yesno("use libopenjpeg" WITH_OPENJPEG)
if(USE_OPENJPEG1)
  message("      with openjpeg1")
endif()
if(USE_OPENJPEG2)
  message("      with openjpeg2")
endif()
718
show_end_message_yesno("use cms" USE_CMS)
Pino Toscano's avatar
Pino Toscano committed
719 720 721 722 723 724
if(LCMS_FOUND)
  message("      with lcms1")
endif(LCMS_FOUND)
if(LCMS2_FOUND)
  message("      with lcms2")
endif(LCMS2_FOUND)
725
show_end_message_yesno("command line utils" ENABLE_UTILS)
726
show_end_message("test data dir" ${TESTDATADIR})
727 728 729 730

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)