# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file COPYING-CMAKE-SCRIPTS or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
FindPODOFO
-----------

Copyright (c) 2017, Hiroshi Miura <miurahr@linux.com>

Find the PODOFO headers and libraries.

IMPORTED Targets
^^^^^^^^^^^^^^^^

This module defines :prop_tgt:`IMPORTED` target ``PODOFO::PODOFO``, if
PODOFO has been found.

Result Variables
^^^^^^^^^^^^^^^^

This module defines the following variables:

``PODOFO_FOUND``
  True if PODOFO found.

``PODOFO_INCLUDE_DIRS``
  where to find podofo/POFDoc.h, etc.

``PODOFO_LIBRARIES``
  List of podofo libraries to link.

``PODOFO_VERSION_STRING``
  Version of podofo library defined in podofo/base/podofo_config.h

#]=======================================================================]

find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
  pkg_check_modules(PC_PODOFO QUIET podofo)
endif()

find_path(PODOFO_INCLUDE_DIR
          NAMES podofo.h
          HINTS ${PC_PODOFO_INCLUDE_DIRS}
          PATH_SUFFIXES podofo)

find_library(PODOFO_LIBRARY
             NAMES podofo libpodofo
             NAMES_PER_DIR
             HINTS ${PC_PODOFO_LIBRARY_DIRS})

mark_as_advanced(PODOFO_INCLUDE_DIR PODOFO_LIBRARY)

if(PODOFO_INCLUDE_DIR)
  set(version_hdr "${PODOFO_INCLUDE_DIR}/base/podofo_config.h")
  if(NOT EXISTS ${version_hdr})
    # PoDoFo >= 0.10
    set(version_hdr "${PODOFO_INCLUDE_DIR}/auxiliary/podofo_config.h")
  endif()
  if(EXISTS ${version_hdr})
    file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define PODOFO_VERSION_.*")
    if(_contents)
        string(REGEX REPLACE ".*#define PODOFO_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" PODOFO_VERSION_MAJOR "${_contents}")
        string(REGEX REPLACE ".*#define PODOFO_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" PODOFO_VERSION_MINOR "${_contents}")
        string(REGEX REPLACE ".*#define PODOFO_VERSION_PATCH[ \t]+([0-9]+).*" "\\1" PODOFO_VERSION_PATCH "${_contents}")
    endif()
    set(PODOFO_VERSION_STRING  ${PODOFO_VERSION_MAJOR}.${PODOFO_VERSION_MINOR}.${PODOFO_VERSION_PATCH})
  endif()
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Podofo
                                  FOUND_VAR PODOFO_FOUND
                                  REQUIRED_VARS PODOFO_LIBRARY PODOFO_INCLUDE_DIR
                                  VERSION_VAR PODOFO_VERSION_STRING)

if(PODOFO_FOUND)
  get_filename_component(PODOFO_PARENT_INCLUDE_DIR ${PODOFO_INCLUDE_DIR} DIRECTORY)
  set(PODOFO_INCLUDE_DIRS "${PODOFO_INCLUDE_DIR};${PODOFO_PARENT_INCLUDE_DIR}")
  set(PODOFO_LIBRARIES "${PDOFO_LIBRARY}")
  if(NOT TARGET PODOFO::Podofo)
    add_library(PODOFO::Podofo UNKNOWN IMPORTED)
    set_target_properties(PODOFO::Podofo PROPERTIES
                          INTERFACE_INCLUDE_DIRECTORIES "${PODOFO_INCLUDE_DIRS}"
                          IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                          IMPORTED_LOCATION "${PODOFO_LIBRARY}")
  endif()
endif()

include(FeatureSummary)
set_package_properties(PODOFO PROPERTIES
                       DESCRIPTION "a free, portable C++ library which includes classes to parse PDF files and modify their contents into memory."
                       URL "http://podofo.sourceforge.net/"
)
