64 lines
2.3 KiB
CMake
64 lines
2.3 KiB
CMake
# PDFium integration.
|
|
#
|
|
# PDFium is NOT a vcpkg package — it is built from source via depot_tools/GN/Ninja
|
|
# (see third_party/pdfium/). That build installs into:
|
|
#
|
|
# third_party/pdfium/install/
|
|
# include/ public PDFium headers (fpdfview.h, fpdf_*.h, ...)
|
|
# lib/ the static library (pdfium.lib / libpdfium.a)
|
|
#
|
|
# This module turns that install tree into an imported target: pdfium::pdfium
|
|
#
|
|
# Behaviour:
|
|
# PDFENGINE_WITH_PDFIUM = OFF (default)
|
|
# No target is created. The engine compiles with PDFium code paths
|
|
# #ifdef-ed out. This keeps Phase 0 unblocked before PDFium is built.
|
|
# PDFENGINE_WITH_PDFIUM = ON
|
|
# The install tree MUST exist; otherwise this is a hard error directing
|
|
# the developer to the build script.
|
|
|
|
if(NOT PDFENGINE_WITH_PDFIUM)
|
|
message(STATUS "PDFium: disabled (PDFENGINE_WITH_PDFIUM=OFF). "
|
|
"Engine builds without raw PDFium linkage.")
|
|
return()
|
|
endif()
|
|
|
|
set(PDFIUM_INSTALL_DIR "${CMAKE_SOURCE_DIR}/third_party/pdfium/install"
|
|
CACHE PATH "Root of the PDFium install tree produced by build_pdfium.*")
|
|
|
|
find_path(PDFIUM_INCLUDE_DIR
|
|
NAMES fpdfview.h
|
|
PATHS "${PDFIUM_INSTALL_DIR}/include"
|
|
NO_DEFAULT_PATH)
|
|
|
|
find_library(PDFIUM_LIBRARY
|
|
NAMES pdfium libpdfium
|
|
PATHS "${PDFIUM_INSTALL_DIR}/lib"
|
|
NO_DEFAULT_PATH)
|
|
|
|
if(NOT PDFIUM_INCLUDE_DIR OR NOT PDFIUM_LIBRARY)
|
|
message(FATAL_ERROR
|
|
"PDFENGINE_WITH_PDFIUM=ON but no PDFium install tree was found under:\n"
|
|
" ${PDFIUM_INSTALL_DIR}\n"
|
|
"Build PDFium first (one-time, slow):\n"
|
|
" Windows: pwsh third_party/pdfium/build_pdfium.ps1\n"
|
|
" Unix: ./third_party/pdfium/build_pdfium.sh\n"
|
|
"See third_party/pdfium/README.md.")
|
|
endif()
|
|
|
|
add_library(pdfium::pdfium STATIC IMPORTED GLOBAL)
|
|
set_target_properties(pdfium::pdfium PROPERTIES
|
|
IMPORTED_LOCATION "${PDFIUM_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${PDFIUM_INCLUDE_DIR}")
|
|
|
|
# PDFium is a C++ static lib; consumers on Linux also need the C++ runtime and
|
|
# pthreads. These are no-ops where irrelevant.
|
|
if(UNIX AND NOT APPLE)
|
|
set_property(TARGET pdfium::pdfium APPEND PROPERTY
|
|
INTERFACE_LINK_LIBRARIES pthread dl)
|
|
endif()
|
|
|
|
message(STATUS "PDFium: found")
|
|
message(STATUS " include .. ${PDFIUM_INCLUDE_DIR}")
|
|
message(STATUS " library .. ${PDFIUM_LIBRARY}")
|