summaryrefslogtreecommitdiff
path: root/cmake/FindICU.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindICU.cmake')
-rw-r--r--cmake/FindICU.cmake64
1 files changed, 64 insertions, 0 deletions
diff --git a/cmake/FindICU.cmake b/cmake/FindICU.cmake
new file mode 100644
index 000000000..471e43c1d
--- /dev/null
+++ b/cmake/FindICU.cmake
@@ -0,0 +1,64 @@
+#[=======================================================================[.rst:
+FindICU
+-------
+
+Finds components of the ICU library.
+
+Accepted components are: uc, i18n, le, lx, io
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This will define the following variables:
+
+``ICU_FOUND``
+ True if components of ICU library are found.
+``ICU_VERSION``
+ The version of the ICU library which was found.
+``ICU_<c>_FOUND``
+ True if the system has the <c> component of ICU library.
+``ICU_<c>_INCLUDE_DIRS``
+ Include directories needed to use the <c> component of ICU library.
+``ICU_<c>_LIBRARIES``
+ Libraries needed to link to the <c> component of ICU library.
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+
+set(ICU_KNOWN_COMPONENTS "uc" "i18n" "le" "lx" "io")
+
+foreach(MOD_NAME IN LISTS ICU_FIND_COMPONENTS)
+ if (NOT MOD_NAME IN_LIST ICU_KNOWN_COMPONENTS)
+ message(FATAL_ERROR "Unknown ICU component: ${MOD_NAME}")
+ endif()
+ pkg_check_modules(PC_ICU_${MOD_NAME} QUIET icu-${MOD_NAME})
+
+ # Check the libraries returned by pkg-config really exist.
+ unset(PC_LIBRARIES)
+ foreach(LIBRARY IN LISTS PC_ICU_${MOD_NAME}_LIBRARIES)
+ unset(PC_LIBRARY CACHE)
+ find_library(PC_LIBRARY NAMES ${LIBRARY})
+ if (NOT PC_LIBRARY)
+ unset(PC_ICU_${MOD_NAME}_FOUND)
+ endif()
+ list(APPEND PC_LIBRARIES ${PC_LIBRARY})
+ endforeach()
+ unset(PC_LIBRARY CACHE)
+
+ if (${PC_ICU_${MOD_NAME}_FOUND})
+ set(ICU_COMPONENT_FOUND TRUE)
+ set(ICU_${MOD_NAME}_FOUND TRUE)
+ set(ICU_${MOD_NAME}_LIBRARIES ${PC_LIBRARIES})
+ set(ICU_${MOD_NAME}_INCLUDE_DIRS ${PC_ICU_${MOD_NAME}_INCLUDE_DIRS})
+ set(ICU_VERSION ${PC_ICU_${MOD_NAME}_VERSION})
+ endif()
+endforeach()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ICU
+ FOUND_VAR ICU_FOUND
+ REQUIRED_VARS ICU_COMPONENT_FOUND
+ VERSION_VAR ICU_VERSION
+ HANDLE_COMPONENTS
+)