# SPDX-License-Identifier: MIT

#[=======================================================================[.rst:
FindLibserialport
-------

Finds the sigrok serial port library (``libserialport``)

Imported Targets
^^^^^^^^^^^^^^^^

This module defines the following imported targets, if found:

``Libserialport::Libserialport``
  The serialport library

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

This module will define the following variables:

``Libserialport_FOUND``
  True if the system has the serialport library.
``Libserialport_VERSION``
  The version of the serialport library which was found.
``Libserialport_INCLUDE_DIRS``
  Include directories needed to use ``libserialport``.
``Libserialport_LIBRARIES``
  Libraries needed to link to ``libserialport``.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``Libserialport_INCLUDE_DIR``
  The directory containing ``libserialport.h``.
``Libserialport_LIBRARY``
  The path to the ``libserialport`` library.

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

find_package(PkgConfig)
pkg_check_modules(PC_Libserialport QUIET libserialport)

find_path(Libserialport_INCLUDE_DIR
    NAMES libserialport.h
    PATHS "${PC_Libserialport_INCLUDE_DIRS}"
)
find_library(Libserialport_LIBRARY
    NAMES serialport
    HINTS "${PC_Libserialport_LIBRARY_DIRS}"
)

set(Foo_VERSION ${PC_Foo_VERSION})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libserialport
    FOUND_VAR Libserialport_FOUND
    REQUIRED_VARS
        Libserialport_LIBRARY
        Libserialport_INCLUDE_DIR
    VERSION_VAR Libserialport_VERSION
)

if(Libserialport_FOUND)
    set(Libserialport_LIBRARIES ${Libserialport_LIBRARY})
    set(Libserialport_INCLUDE_DIRS ${Libserialport_INCLUDE_DIR})
    set(Libserialport_DEFINITIONS ${PC_Liberialport_CFLAGS_OTHER})
endif()

if(Libserialport_FOUND AND NOT TARGET Libserialport::Libserialport)
    add_library(Libserialport::Libserialport UNKNOWN IMPORTED)
    set_target_properties(Libserialport::Libserialport PROPERTIES
        IMPORTED_LOCATION "${Libserialport_LIBRARY}"
        INTERFACE_COMPILE_OPTIONS "${PC_Libserialport_CFLAGS_OTHER}"
        INTERFACE_INCLUDE_DIRECTORIES "${Libserialport_INCLUDE_DIR}"
    )
endif()