diff options
author | Albert Astals Cid <aacid@kde.org> | 2023-08-15 23:44:59 +0200 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2023-09-25 09:00:04 +0000 |
commit | 8646a6aa2cb60644b56dc6e6e3b3af30ba920245 (patch) | |
tree | a2db2efc599c33646560933864df2dbd471cc10b | |
parent | 49cc0c4ccbc7776454cd5c7dd4136f52e3d545c8 (diff) |
Make a few more dependencies soft-mandatory
they can be disabled via cmake option
-rw-r--r-- | .gitlab-ci.yml | 16 | ||||
-rw-r--r-- | CMakeLists.txt | 86 |
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) |