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 )