Warning, /utilities/krename/cmake/modules/FindPoDoFo.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2016 Pino Toscano <pino@kde.org>
0002 # SPDX-FileCopyrightText: 2023 Heiko Becker <heiko.becker@kde.org>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 
0006 
0007 #[=======================================================================[.rst:
0008 FindPoDoFo
0009 ------------
0010 
0011 Try to find PoDoFo, a C++ library to work with the PDF file format
0012 
0013 This will define the following variables:
0014 
0015 ``PoDoFo_FOUND``
0016     True if PoDoFo is available
0017 ``PoDoFo_VERSION``
0018     The version of PoDoFo
0019 ``PoDoFo_LIBRARIES``
0020     The libraries of PoDoFofor use with target_link_libraries()
0021 ``PoDoFo_INCLUDE_DIRS``
0022     The include dirs of PoDoFo for use with target_include_directories()
0023 
0024 If ``PoDoFo_FOUND`` is TRUE, it will also define the following imported
0025 target:
0026 
0027 ``PoDoFo::PoDoFo``
0028     The PoDoFo library
0029 
0030 In general we recommend using the imported target, as it is easier to use.
0031 Bear in mind, however, that if the target is in the link interface of an
0032 exported library, it must be made available by the package config file.
0033 
0034 #]=======================================================================]
0035 
0036 find_package(PkgConfig QUIET)
0037 pkg_search_module(PC_PoDoFo QUIET libpodofo libpodofo-0)
0038 
0039 find_library(PoDoFo_LIBRARIES
0040     NAMES podofo
0041     HINTS ${PC_PoDoFo_LIBRARY_DIRS}
0042 )
0043 
0044 find_path(PoDoFo_INCLUDE_DIRS
0045     NAMES podofo.h
0046     HINTS ${PC_PoDoFo_INCLUDE_DIRS}
0047 )
0048 
0049 if(PoDoFo_INCLUDE_DIRS)
0050     # NOTE: I have no idea if that's still needed and no possibility to test on
0051     # Windows.
0052     #if(WIN32)
0053     #  if(NOT DEFINED PoDoFo_USE_SHARED)
0054     #    message(SEND_ERROR "Win32 users MUST set PoDoFo_USE_SHARED")
0055     #    message(SEND_ERROR "Set -DPoDoFo_USE_SHARED=0 if linking to a static library PoDoFo")
0056     #    message(SEND_ERROR "or -DPoDoFo_USE_SHARED=1 if linking to a DLL build of PoDoFo")
0057     #    message(FATAL_ERROR "PoDoFo_USE_SHARED unset on win32 build")
0058     #  else()
0059     #    if(PoDoFo_USE_SHARED)
0060     #      set(PoDoFo_DEFINITIONS "${PoDoFo_DEFINITIONS} -DUSING_SHARED_PODOFO")
0061     #    endif(PoDoFo_USE_SHARED)
0062     #  endif()
0063     #endif()
0064 
0065     find_file(PoDoFo_CONFIG podofo_config.h PATHS ${PoDoFo_INCLUDE_DIRS} PATH_SUFFIXES auxiliary base)
0066     file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MAJOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+[0-9]+$")
0067     file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MINOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+[0-9]+$")
0068     file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_PATCH_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+[0-9]+$")
0069     string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+([0-9]+)$" "\\1" PoDoFo_MAJOR_VER "${PoDoFo_MAJOR_VER_LINE}")
0070     string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+([0-9]+)$" "\\1" PoDoFo_MINOR_VER "${PoDoFo_MINOR_VER_LINE}")
0071     string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+([0-9]+)$" "\\1" PoDoFo_PATCH_VER "${PoDoFo_PATCH_VER_LINE}")
0072     set(PoDoFo_VERSION "${PoDoFo_MAJOR_VER}.${PoDoFo_MINOR_VER}.${PoDoFo_PATCH_VER}")
0073 
0074     # PoDoFo-0.9.5 unconditionally includes openssl/opensslconf.h in a public
0075     # header. The fix is in https://sourceforge.net/p/podofo/code/1830/ and will
0076     # hopefully be released soon with 0.9.6. Note that krename doesn't use
0077     # OpenSSL in any way.
0078     if(PoDoFo_VERSION VERSION_EQUAL "0.9.5")
0079         find_package(OpenSSL)
0080         if(OpenSSL_FOUND)
0081             message("OpenSSL found, which is required for this version of PoDofo (0.9.5)")
0082             set(PoDoFo_INCLUDE_DIRS ${PoDoFo_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
0083         else()
0084             unset(PoDoFo_FOUND)
0085             message("OpenSSL NOT found, which is required for this version of PoDofo (0.9.5)")
0086         endif()
0087     endif()
0088 endif()
0089 
0090 if(PoDoFo_VERSION VERSION_GREATER_EQUAL 0.10.0)
0091     set(CMAKE_CXX_STANDARD 17)
0092 endif()
0093 
0094 include(FindPackageHandleStandardArgs)
0095 find_package_handle_standard_args(PoDoFo
0096     FOUND_VAR
0097         PoDoFo_FOUND
0098     REQUIRED_VARS
0099         PoDoFo_LIBRARIES
0100         PoDoFo_INCLUDE_DIRS
0101     VERSION_VAR
0102         PoDoFo_VERSION
0103 )
0104 
0105 if(PoDoFo_FOUND AND NOT TARGET PoDoFo::PoDoFo)
0106     add_library(PoDoFo::PoDoFo UNKNOWN IMPORTED)
0107     set_target_properties(PoDoFo::PoDoFo PROPERTIES
0108         IMPORTED_LOCATION "${PoDoFo_LIBRARIES}"
0109         INTERFACE_COMPILE_OPTIONS "${PC_PoDoFo_CFLAGS}"
0110         INTERFACE_INCLUDE_DIRECTORIES "${PoDoFo_INCLUDE_DIRS}"
0111     )
0112     if(TARGET PkgConfig::PC_PoDoFo)
0113         target_link_libraries(PoDoFo::PoDoFo INTERFACE PkgConfig::PC_PoDoFo)
0114     endif()
0115 endif()
0116 
0117 mark_as_advanced(PoDoFo_LIBRARIES PoDoFo_INCLUDE_DIRS PoDoFo_VERSION)
0118 
0119 include(FeatureSummary)
0120 set_package_properties(PoDoFo PROPERTIES
0121     DESCRIPTION "A C++ libary to work with the PDF file format"
0122     URL "https://github.com/podofo/podofo"
0123 )
0124