Warning, /frameworks/kcalendarcore/cmake/FindLibIcal.cmake is written in an unsupported language. File is not indexed.

0001 #.rst:
0002 # FindLibIcal
0003 # -----------
0004 #
0005 # Try to find the Ical libraries.
0006 #
0007 # This will define the following variables:
0008 #
0009 # ``LibIcal_FOUND``
0010 #     True if a suitable LibIcal was found
0011 #  ``LibIcal_INCLUDE_DIRS``
0012 #     This should be passed to target_include_directories() if
0013 #     the target is not used for linking
0014 #  ``LibIcal_LIBRARIES``
0015 #     The Ical libraries (ical + icalss)
0016 #     This can be passed to target_link_libraries() instead of
0017 #     the ``LibIcal`` target
0018 #
0019 # ``LibIcal_VERSION``
0020 #     The LibIcal version defined in ical.h
0021 # If ``LibIcal_FOUND`` is TRUE, the following imported target
0022 # will be available:
0023 #
0024 # ``LibIcal``
0025 #     The Ical libraries
0026 #
0027 # The following variables are set for compatibility reason and will be
0028 # removed in the next major version
0029 #  ``LibIcal_MAJOR_VERSION``
0030 #     The LibIcal major version
0031 #  ``LibIcal_MINOR_VERSION``
0032 #     The LibIcal minor version
0033 #
0034 # SPDX-FileCopyrightText: 2008, 2010 Allen Winter <winter@kde.org>
0035 #
0036 # SPDX-License-Identifier: BSD-3-Clause
0037 #=============================================================================
0038 
0039 if(NOT LibIcal_FIND_VERSION)
0040   set(LibIcal_FIND_VERSION "0.33")
0041 endif()
0042 
0043 find_package(PkgConfig QUIET)
0044 pkg_check_modules(PC_LibIcal QUIET libical)
0045 
0046 find_path(LibIcal_INCLUDE_DIRS
0047   NAMES libical/ical.h
0048   HINTS ${PC_LibIcal_INCLUDEDIR}
0049 )
0050 
0051 find_library(LibIcal_LIBRARY
0052   NAMES ical libical
0053   HINTS ${PC_LibIcal_LIBDIR}
0054 )
0055 
0056 find_library(LibIcalss_LIBRARY
0057   NAMES icalss libicalss
0058   HINTS ${PC_LibIcal_LIBDIR}
0059 )
0060 
0061 find_library(LibIcalvcal_LIBRARY
0062   NAMES icalvcal
0063   HINTS ${PC_LibIcal_LIBDIR}
0064 )
0065 
0066 # For backward compatibility
0067 set(LibIcal_INCLUDE_DIRS "${LibIcal_INCLUDE_DIRS}" "${LibIcal_INCLUDE_DIRS}/libical")
0068 
0069 set(LibIcal_LIBRARIES ${LibIcal_LIBRARY} ${LibIcalss_LIBRARY} ${LibIcalvcal_LIBRARY})
0070 
0071 set(LibIcal_VERSION "${PC_LibIcal_VERSION}")
0072 
0073 if(NOT ICAL_H)
0074   find_file(ICAL_H ical.h HINTS ${LibIcal_INCLUDE_DIRS})
0075 endif()
0076 
0077 if(NOT LibIcal_VERSION)
0078   if(EXISTS "${ICAL_H}")
0079     file(STRINGS "${ICAL_H}" _ICAL_H_VERSION REGEX "^#define[ ]+ICAL_VERSION[ ]+\"[0-9].[0-9]\"$")
0080     string(REGEX REPLACE "^#define[ ]+ICAL_VERSION[ ]+\"([0-9].[0-9])\"$" "\\1" LibIcal_VERSION "${_ICAL_H_VERSION}")
0081     file(STRINGS "${ICAL_H}" _ICAL_H_PATCH_VERSION REGEX "^#define[ ]+ICAL_PATCH_VERSION[ ]+\\([0-9]+\\)$")
0082     string(REGEX REPLACE "^#define[ ]+ICAL_PATCH_VERSION[ ]+\\(([0-9]+)\\)$" "\\1" LibIcal_PATCH_VERSION "${_ICAL_H_PATCH_VERSION}")
0083     unset(_ICAL_H_VERSION)
0084     unset(_ICAL_H_PATCH_VERSION)
0085     if(LibIcal_PATCH_VERSION)
0086       set(LibIcal_VERSION "${LibIcal_VERSION}.${LibIcal_PATCH_VERSION}")
0087     endif()
0088   endif()
0089 endif()
0090 
0091 # For compatibility
0092 string(REGEX REPLACE "^([0-9]).[0-9]$" "\\1" LibIcal_MAJOR_VERSION "${LibIcal_VERSION}")
0093 string(REGEX REPLACE "^[0-9].([0-9])$" "\\1" LibIcal_MINOR_VERSION "${LibIcal_VERSION}")
0094 
0095 if(NOT LibIcal_VERSION VERSION_LESS 0.46)
0096   set(USE_ICAL_0_46 TRUE)
0097 endif()
0098 if(NOT LibIcal_VERSION VERSION_LESS 1.00)
0099   set(USE_ICAL_1_0 TRUE)
0100 endif()
0101 
0102 include(FindPackageHandleStandardArgs)
0103 
0104 find_package_handle_standard_args(LibIcal
0105     FOUND_VAR LibIcal_FOUND
0106     REQUIRED_VARS LibIcal_LIBRARIES LibIcal_INCLUDE_DIRS
0107     VERSION_VAR LibIcal_VERSION
0108 )
0109 
0110 # Internal
0111 if(LibIcal_FOUND AND NOT TARGET LibIcalss)
0112   add_library(LibIcalss UNKNOWN IMPORTED)
0113   set_target_properties(LibIcalss PROPERTIES
0114   IMPORTED_LOCATION "${LibIcalss_LIBRARY}")
0115 endif()
0116 if(LibIcal_FOUND AND NOT TARGET LibIcalvcal)
0117   add_library(LibIcalvcal UNKNOWN IMPORTED)
0118   set_target_properties(LibIcalvcal PROPERTIES
0119   IMPORTED_LOCATION "${LibIcalvcal_LIBRARY}")
0120 endif()
0121 
0122 # Public Target
0123 if(LibIcal_FOUND AND NOT TARGET LibIcal)
0124   add_library(LibIcal UNKNOWN IMPORTED)
0125   set_target_properties(LibIcal PROPERTIES
0126     IMPORTED_LOCATION "${LibIcal_LIBRARY}"
0127     INTERFACE_INCLUDE_DIRECTORIES "${LibIcal_INCLUDE_DIRS}"
0128     INTERFACE_LINK_LIBRARIES "LibIcalss;LibIcalvcal"
0129   )
0130 endif()
0131 
0132 mark_as_advanced(LibIcal_INCLUDE_DIRS LibIcal_LIBRARY LibIcalss_LIBRARY LibIcalvcal_LIBRARY LibIcal_LIBRARIES)
0133 
0134 include(FeatureSummary)
0135 set_package_properties(LibIcal PROPERTIES
0136   URL "https://github.com/libical/libical"
0137   DESCRIPTION "Implementation of iCalendar protocols and data formats"
0138 )