summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Astals Cid <aacid@kde.org>2023-08-15 23:44:59 +0200
committerAlbert Astals Cid <aacid@kde.org>2023-09-25 09:00:04 +0000
commit8646a6aa2cb60644b56dc6e6e3b3af30ba920245 (patch)
treea2db2efc599c33646560933864df2dbd471cc10b
parent49cc0c4ccbc7776454cd5c7dd4136f52e3d545c8 (diff)
Make a few more dependencies soft-mandatory
they can be disabled via cmake option
-rw-r--r--.gitlab-ci.yml16
-rw-r--r--CMakeLists.txt86
2 files changed, 49 insertions, 53 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 83c96dd4..7187f922 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -56,7 +56,7 @@ build_clang15_libcpp:
- srcdir=`pwd` && mkdir -p /tmp/poppler_build && cd /tmp/poppler_build
- clang++-15 -fPIC -shared -o goostring-format-checker.so $srcdir/test/goostring-format-checker/goostring-format-checker.cc -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I /usr/lib/llvm-15/include/
- echo "We disable Qt6 tests since Qt6 exposes std::string in its ABI which makes it not build in this CI since we're using libc++ but Qt6 in debian is build with libstdc++"
- - CC=clang-15 CXX=clang++-15 cmake -G Ninja -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker -Werror -Wno-deprecated-declarations" -DTESTDATADIR=$srcdir/test-data -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_QT6_TESTS=OFF $srcdir
+ - CC=clang-15 CXX=clang++-15 cmake -G Ninja -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker -Werror -Wno-deprecated-declarations" -DTESTDATADIR=$srcdir/test-data -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_QT6_TESTS=OFF -DENABLE_GPGME=OFF $srcdir
- ninja -j ${FDO_CI_CONCURRENT}
- ctest --output-on-failure
- echo "This is a complex way of not running clang-tidy over autogenerated files, unfortunately -DCMAKE_CXX_CLANG_TIDY doesn't support that https://gitlab.kitware.com/cmake/cmake/-/issues/19772"
@@ -81,7 +81,7 @@ build_ubuntu_20_04:
script:
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
- mkdir -p build && cd build
- - cmake -G Ninja -DTESTDATADIR=$PWD/../test-data -DCMAKE_PREFIX_PATH=$PWD/../6.2.0/gcc_64/lib/cmake ..
+ - cmake -G Ninja -DENABLE_GPGME=OFF -DTESTDATADIR=$PWD/../test-data -DCMAKE_PREFIX_PATH=$PWD/../6.2.0/gcc_64/lib/cmake ..
- ninja
- ctest --output-on-failure
@@ -94,7 +94,7 @@ build_mingw64_fedora38:
- dnf -y install glibc-langpack-en make ninja-build mingw64-boost mingw64-curl mingw64-qt6-qtbase mingw64-gcc-c++ cmake-rpm-macros
script:
- mkdir -p build && cd build
- - mingw64-cmake -G Ninja ..
+ - mingw64-cmake -DENABLE_NSS3=OFF -DENABLE_GPGME=OFF -G Ninja ..
- ninja
build_clazy_clang15:
@@ -102,10 +102,10 @@ build_clazy_clang15:
script:
- apt-get install --yes --no-install-recommends clazy clang-15
- mkdir -p build && cd build
- - CC=clang-15 CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -G Ninja ..
+ - CC=clang-15 CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -DENABLE_GPGME=OFF -G Ninja ..
- CLAZY_CHECKS="level0,level1,level2,isempty-vs-count,qhash-with-char-pointer-key,tr-non-literal,no-non-pod-global-static" ninja -j ${FDO_CI_CONCURRENT}
-build_android:
+build_qt5_android:
stage: build
image: kdeorg/android-sdk
before_script:
@@ -121,6 +121,12 @@ build_android:
-DENABLE_DCTDECODER=unmaintained
-DENABLE_LIBOPENJPEG=unmaintained
-DENABLE_BOOST=OFF
+ -DENABLE_LCMS=OFF
+ -DENABLE_LIBCURL=OFF
+ -DENABLE_LIBTIFF=OFF
+ -DENABLE_QT6=OFF
+ -DENABLE_NSS3=OFF
+ -DENABLE_GPGME=OFF
-DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
-DCMAKE_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
- ninja -j ${FDO_CI_CONCURRENT}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4c57a783..d8801e64 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,9 +74,12 @@ option(ENABLE_GTK_DOC "Whether to generate glib API documentation." OFF)
option(ENABLE_QT5 "Compile poppler qt5 wrapper." ON)
option(ENABLE_QT6 "Compile poppler qt6 wrapper." ON)
set(ENABLE_LIBOPENJPEG "openjpeg2" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: openjpeg2, unmaintained, none. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no JPX decoder at all. Default: openjpeg2")
-set(ENABLE_CMS "lcms2" CACHE STRING "Use color management system. Possible values: lcms2, none. 'none' disables color management system.")
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")
+option(ENABLE_LCMS "Use LCMS for color management." ON)
option(ENABLE_LIBCURL "Build libcurl based HTTP support." ON)
+option(ENABLE_LIBTIFF "Build code to write images as TIFF (pdfimages/pdftocairo/etc)." ON)
+option(ENABLE_NSS3 "Build the NSS backend for cryptographic support" ON)
+option(ENABLE_GPGME "Build the GPG backend for cryptographic support" ON)
option(ENABLE_ZLIB_UNCOMPRESS "Use zlib to uncompress flate streams (not totally safe)." OFF)
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
option(BUILD_SHARED_LIBS "Build poppler as a shared library" ON)
@@ -151,11 +154,22 @@ if(WITH_FONTCONFIGURATION_FONTCONFIG)
elseif(WITH_FONTCONFIGURATION_ANDROID)
find_library(Androidlib NAMES android REQUIRED)
endif()
+
+macro(find_soft_mandatory_package _enable_option _package_name _package_version)
+ if(${_enable_option})
+ find_package(${_package_name} ${_package_version})
+ if(NOT ${_package_name}_FOUND)
+ MESSAGE(FATAL_ERROR "Could not find the ${_package_version} version of ${_package_name}. If you're not interested in the features it provides set the cmake ${_enable_option} option to OFF")
+ endif()
+ endif()
+endmacro()
+
+find_soft_mandatory_package(ENABLE_NSS3 NSS3 3.68)
+find_soft_mandatory_package(ENABLE_GPGME Gpgmepp 1.19)
+find_soft_mandatory_package(ENABLE_LIBTIFF TIFF 4.1)
+
macro_optional_find_package(JPEG)
macro_optional_find_package(PNG)
-macro_optional_find_package(TIFF)
-macro_optional_find_package(NSS3)
-macro_optional_find_package(Gpgmepp 1.19)
if(ENABLE_DCTDECODER STREQUAL "libjpeg")
if(JPEG_FOUND)
include(CheckCSourceCompiles)
@@ -194,26 +208,19 @@ else()
message(FATAL_ERROR "Invalid ENABLE_DCTDECODER value.")
endif()
-if (ENABLE_QT5)
- find_package(Qt5Core 5.12) # Update QT_DISABLE_DEPRECATED_BEFORE in qt5/CMakeLists.txt when increasing this
- find_package(Qt5Gui)
- find_package(Qt5Xml)
- find_package(Qt5Widgets)
- find_package(Qt5Test)
- if (NOT (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Xml_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND))
- message("-- Package Qt5Core or Qt5Gui or Qt5Xml or Qt5Widgets or Qt5Test not found")
- set(ENABLE_QT5 OFF)
- endif()
-endif()
+set(QT5_VERSION "5.12") # Update QT_DISABLE_DEPRECATED_BEFORE in qt5/CMakeLists.txt when changing this
+find_soft_mandatory_package(ENABLE_QT5 Qt5Core ${QT5_VERSION})
+find_soft_mandatory_package(ENABLE_QT5 Qt5Gui ${QT5_VERSION})
+find_soft_mandatory_package(ENABLE_QT5 Qt5Xml ${QT5_VERSION})
+find_soft_mandatory_package(ENABLE_QT5 Qt5Widgets ${QT5_VERSION})
+find_soft_mandatory_package(ENABLE_QT5 Qt5Test ${QT5_VERSION})
-if (ENABLE_QT6)
- SET(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
- find_package(Qt6 6.2 COMPONENTS Core Gui Widgets Test QUIET)
- if (NOT (Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND AND Qt6Test_FOUND))
- message("-- Package Qt6Core or Qt6Gui or Qt6Widgets or Qt6Test not found")
- set(ENABLE_QT6 OFF)
- endif()
-endif()
+set(QT6_VERSION "6.2")
+SET(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
+find_soft_mandatory_package(ENABLE_QT6 Qt6Core ${QT6_VERSION})
+find_soft_mandatory_package(ENABLE_QT6 Qt6Gui ${QT6_VERSION})
+find_soft_mandatory_package(ENABLE_QT6 Qt6Widgets ${QT6_VERSION})
+find_soft_mandatory_package(ENABLE_QT6 Qt6Test ${QT6_VERSION})
# Check for Cairo rendering backend
macro_optional_find_package(Cairo ${CAIRO_VERSION})
@@ -312,20 +319,12 @@ else()
message(FATAL_ERROR "Invalid ENABLE_LIBOPENJPEG value: ${ENABLE_LIBOPENJPEG}")
endif()
set(ENABLE_LIBOPENJPEG "${WITH_OPENJPEG}")
-if(ENABLE_CMS STREQUAL "lcms2")
- find_package(LCMS2)
- set(USE_CMS ${LCMS2_FOUND})
-elseif(NOT ENABLE_CMS STREQUAL "none")
- message(FATAL_ERROR "Invalid ENABLE_CMS value: ${ENABLE_CMS}")
-endif()
-if(ENABLE_LIBCURL)
- find_package(CURL)
- if(CURL_FOUND)
- set(POPPLER_HAS_CURL_SUPPORT ON)
- else()
- set(ENABLE_LIBCURL OFF)
- endif()
-endif()
+
+find_soft_mandatory_package(ENABLE_LCMS LCMS2 2.9)
+set(USE_CMS ${ENABLE_LCMS})
+
+find_soft_mandatory_package(ENABLE_LIBCURL CURL 7.68)
+set(POPPLER_HAS_CURL_SUPPORT ${ENABLE_LIBCURL})
if(MINGW)
# Use mingw's ansi stdio extensions
@@ -346,18 +345,9 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}/poppler
)
-if (NSS3_FOUND)
- set(ENABLE_NSS3 ON)
-endif()
-if (Gpgmepp_FOUND)
- set(ENABLE_GPGME ON)
-endif()
if(PNG_FOUND)
set(ENABLE_LIBPNG ON)
endif()
-if(TIFF_FOUND)
- set(ENABLE_LIBTIFF ON)
-endif()
set(SIGNATURE_BACKENDS "")
if(ENABLE_NSS3)
@@ -580,7 +570,7 @@ endif()
if(PNG_FOUND)
set(poppler_LIBS ${poppler_LIBS} PNG::PNG)
endif()
-if(TIFF_FOUND)
+if(ENABLE_LIBTIFF)
set(poppler_LIBS ${poppler_LIBS} TIFF::TIFF)
endif()
if(Boost_FOUND)
@@ -754,7 +744,7 @@ if(ENABLE_UNSTABLE_API_ABI_HEADERS)
goo/PNGWriter.h
DESTINATION include/poppler/goo)
endif()
- if(TIFF_FOUND)
+ if(ENABLE_LIBTIFF)
install(FILES
goo/TiffWriter.h
DESTINATION include/poppler/goo)