-
Notifications
You must be signed in to change notification settings - Fork 6.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[poppler,gdal] Major update to poppler; poppler feature for gdal (#22720
) * Major update to port poppler * Fixup usage requirements via main pc file * Add usage based on FindPkgConfig * Export unofficial cmake config * uwp is unsupported * [gdal] Add poppler feature * [gdal] Update poppler dependency * [gdal] Add patch for poppler C++17 API * Disable ENABLE_RELOCATABLE * Update to 22.02.0 from poppler gitlab * Update versions * [skip actions] CI with gdal tools * Revert "[skip actions] CI with gdal tools" * Modify feature name for private API * Update versions * Add license field to gdal manifest * Add port name to unofficial namespace * Rectify poppler version number * Update versions * poppler[fontconfig] doesn't build for MSVC * Update versions Co-authored-by: Matthias Kuhn <matthias@opengis.ch>
- Loading branch information
Showing
18 changed files
with
259 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
diff --git a/gdal/frmts/pdf/GNUmakefile b/gdal/frmts/pdf/GNUmakefile | ||
index aa42769477fc..56c2cd775d05 100644 | ||
--- a/gdal/frmts/pdf/GNUmakefile | ||
+++ b/gdal/frmts/pdf/GNUmakefile | ||
@@ -11,6 +11,12 @@ LD_SHARED = $(LD) -bundle | ||
endif | ||
|
||
ifeq ($(HAVE_POPPLER),yes) | ||
+# Poppler 2022.1 requires c++17 | ||
+ifeq ($(shell test $(POPPLER_MAJOR_VERSION) -gt 21; echo $$?),0) | ||
+CXX := $(subst -std=c++11,,${CXX}) | ||
+CXX := $(subst -std=c++14,,${CXX}) | ||
+CXX := ${CXX} -std=c++17 | ||
+endif | ||
CPPFLAGS += -DHAVE_POPPLER -DPOPPLER_MAJOR_VERSION=$(POPPLER_MAJOR_VERSION) -DPOPPLER_MINOR_VERSION=$(POPPLER_MINOR_VERSION) | ||
endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
if("${FONT_CONFIGURATION}" STREQUAL "fontconfig") | ||
# Poppler uses different variable names than CMake. | ||
find_package(Fontconfig REQUIRED) | ||
set(FONTCONFIG_DEFINITIONS "") | ||
set(FONTCONFIG_INCLUDE_DIR "${Fontconfig_INCLUDE_DIRS}") | ||
set(FONTCONFIG_LIBRARIES "Fontconfig::Fontconfig") | ||
endif() | ||
|
||
# Poppler uses different variable names than CMake, | ||
# plus ICONV_SECOND_ARGUMENT_IS_CONST | ||
find_package(Iconv REQUIRED) | ||
set(ICONV_INCLUDE_DIR "${Iconv_INCLUDE_DIR}") | ||
set(ICONV_LIBRARIES "${Iconv_LIBRARIES}") | ||
|
||
# Create helper file for iconv usage requirement | ||
set(poppler_iconv [[ | ||
Name: poppler-vcpkg-iconv | ||
Description: iconv linking requirements for poppler | ||
Version: 0 | ||
Libs:]]) | ||
string(TOLOWER "${Iconv_LIBRARIES}" iconv_libraries) | ||
if(iconv_libraries MATCHES "iconv") | ||
string(APPEND poppler_iconv " -liconv") | ||
endif() | ||
if(iconv_libraries MATCHES "charset") | ||
string(APPEND poppler_iconv " -lcharset") | ||
endif() | ||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/poppler-vcpkg-iconv.pc" "${poppler_iconv}") | ||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/poppler-vcpkg-iconv.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index 9a0dcb1..c1f2f02 100644 | ||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -600,7 +600,14 @@ target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS}) | ||
if(CMAKE_USE_PTHREADS_INIT) | ||
target_link_libraries(poppler LINK_PRIVATE Threads::Threads) | ||
endif() | ||
-install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
+target_include_directories(poppler PUBLIC | ||
+ $<INSTALL_INTERFACE:include/poppler> | ||
+ $<INSTALL_INTERFACE:include/poppler/fofi> | ||
+ $<INSTALL_INTERFACE:include/poppler/goo> | ||
+) | ||
+set_target_properties(poppler PROPERTIES EXPORT_NAME poppler-private) | ||
+install(TARGETS poppler EXPORT unofficial-poppler-targets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
+install(EXPORT unofficial-poppler-targets NAMESPACE unofficial::poppler:: DESTINATION share/unofficial-poppler) | ||
|
||
if(ENABLE_UNSTABLE_API_ABI_HEADERS) | ||
install(FILES | ||
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt | ||
index c37936b..344933c 100644 | ||
--- a/cpp/CMakeLists.txt | ||
+++ b/cpp/CMakeLists.txt | ||
@@ -32,7 +32,8 @@ if(MINGW AND BUILD_SHARED_LIBS) | ||
set_target_properties(poppler-cpp PROPERTIES SUFFIX "-${POPPLER_CPP_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}") | ||
endif() | ||
target_link_libraries(poppler-cpp poppler ${ICONV_LIBRARIES}) | ||
-install(TARGETS poppler-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
+install(TARGETS poppler-cpp EXPORT unofficial-poppler-cpp-targets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
+install(EXPORT unofficial-poppler-cpp-targets NAMESPACE unofficial::poppler:: DESTINATION share/unofficial-poppler) | ||
|
||
install(FILES | ||
poppler-destination.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,76 @@ | ||
vcpkg_from_github( | ||
vcpkg_from_gitlab( | ||
GITLAB_URL https://gitlab.freedesktop.org | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO freedesktop/poppler | ||
REF poppler-20.12.1 | ||
SHA512 f692682689c0b0fcc3953a1cc157b6e1d2ce3ccab185189d6dc0807f1dd3ea2d1a9773d0b805079a30b3c8a3b0cf3ee83239ed48d7b08dc7762eba29c2033674 | ||
REPO poppler/poppler | ||
REF poppler-22.02.0 | ||
SHA512 693b813ef80656e7078f8830ec38e23520c6abd307befbb1721ba883233c92099704a7f02557807b28560f9c7ea1aa27192aea620b2ce4e9062a0b8790e93225 | ||
HEAD_REF master | ||
PATCHES | ||
0002-remove-test-subdirectory.patch | ||
0003-fix-gperf-not-recognized.patch | ||
0004-disable-clang-format.patch | ||
export-unofficial-poppler.patch | ||
) | ||
file(REMOVE "${SOURCE_PATH}/cmake/Modules/FindFontconfig.cmake") | ||
|
||
vcpkg_find_acquire_program(GPERF) | ||
get_filename_component(GPERF_PATH ${GPERF} DIRECTORY) | ||
vcpkg_add_to_path(${GPERF_PATH}) | ||
set(POPPLER_PC_REQUIRES "freetype2 libjpeg libopenjp2 libpng libtiff-4 poppler-vcpkg-iconv") | ||
|
||
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS | ||
curl ENABLE_CURL | ||
zlib ENABLE_ZLIB | ||
splash ENABLE_SPLASH | ||
FEATURES | ||
cairo WITH_Cairo | ||
curl ENABLE_LIBCURL | ||
private-api ENABLE_UNSTABLE_API_ABI_HEADERS | ||
zlib ENABLE_ZLIB | ||
) | ||
if("fontconfig" IN_LIST FEATURES) | ||
list(APPEND FEATURE_OPTIONS "-DFONT_CONFIGURATION=fontconfig") | ||
string(APPEND POPPLER_PC_REQUIRES " fontconfig") | ||
elseif(VCPKG_TARGET_IS_WINDOWS) | ||
list(APPEND FEATURE_OPTIONS "-DFONT_CONFIGURATION=win32") | ||
else() | ||
list(APPEND FEATURE_OPTIONS "-DFONT_CONFIGURATION=generic") | ||
endif() | ||
if("cairo" IN_LIST FEATURES) | ||
string(APPEND POPPLER_PC_REQUIRES " cairo") | ||
endif() | ||
if("curl" IN_LIST FEATURES) | ||
string(APPEND POPPLER_PC_REQUIRES " libcurl") | ||
endif() | ||
if("zlib" IN_LIST FEATURES) | ||
string(APPEND POPPLER_PC_REQUIRES " zlib") | ||
endif() | ||
|
||
vcpkg_configure_cmake( | ||
SOURCE_PATH ${SOURCE_PATH} | ||
PREFER_NINJA | ||
vcpkg_find_acquire_program(PKGCONFIG) | ||
|
||
vcpkg_cmake_configure( | ||
SOURCE_PATH "${SOURCE_PATH}" | ||
OPTIONS | ||
"-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake" | ||
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" | ||
-DBUILD_GTK_TESTS=OFF | ||
-DBUILD_QT5_TESTS=OFF | ||
-DBUILD_QT6_TESTS=OFF | ||
-DBUILD_CPP_TESTS=OFF | ||
-DENABLE_LIBCURL=${ENABLE_CURL} | ||
-DBUILD_MANUAL_TESTS=OFF | ||
-DENABLE_UTILS=OFF | ||
-DENABLE_GLIB=OFF | ||
-DENABLE_GLOBJECT_INTROSPECTION=OFF | ||
-DENABLE_GOBJECT_INTROSPECTION=OFF | ||
-DENABLE_QT5=OFF | ||
-DENABLE_QT6=OFF | ||
-DENABLE_CMS=none | ||
-DRUN_GPERF_IF_PRESENT=OFF | ||
-DENABLE_RELOCATABLE=OFF # https://gitlab.freedesktop.org/poppler/poppler/-/issues/1209 | ||
-DWITH_NSS3=OFF | ||
${FEATURE_OPTIONS} | ||
) | ||
vcpkg_cmake_install() | ||
|
||
configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial-poppler-config.cmake" "${CURRENT_PACKAGES_DIR}/share/unofficial-poppler/unofficial-poppler-config.cmake" @ONLY) | ||
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-poppler) | ||
|
||
vcpkg_install_cmake() | ||
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/poppler.pc" "Libs:" "Requires.private: ${POPPLER_PC_REQUIRES}\nLibs:") | ||
if(NOT DEFINED VCPKG_BUILD_TYPE) | ||
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/poppler.pc" "Libs:" "Requires.private: ${POPPLER_PC_REQUIRES}\nLibs:") | ||
endif() | ||
vcpkg_fixup_pkgconfig() | ||
|
||
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") | ||
|
||
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) | ||
vcpkg_fixup_pkgconfig() | ||
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
include(CMakeFindDependencyMacro) | ||
cmake_policy(SET CMP0012 NEW) | ||
cmake_policy(SET CMP0057 NEW) | ||
set(features "@FEATURES@") | ||
find_dependency(Boost) | ||
if("fontconfig" IN_LIST features) | ||
find_dependency(Fontconfig) # CMake 3.14 | ||
endif() | ||
find_dependency(Freetype) | ||
find_dependency(JPEG) | ||
find_dependency(PNG) | ||
find_dependency(TIFF) | ||
find_dependency(OpenJPEG CONFIG) | ||
if("curl" IN_LIST features) | ||
find_dependency(CURL) | ||
endif() | ||
if("zlib" IN_LIST features) | ||
find_dependency(ZLIB) | ||
endif() | ||
find_dependency(Iconv) # CMake 3.11 | ||
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-poppler-targets.cmake") | ||
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-poppler-cpp-targets.cmake") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
The package poppler can be imported via CMake FindPkgConfig module: | ||
|
||
include(FindPkgConfig) | ||
pkg_check_modules(POPPLER_CPP REQUIRED IMPORTED_TARGET poppler-cpp) | ||
|
||
target_link_libraries(main PRIVATE PkgConfig::poppler-cpp) |
Oops, something went wrong.