diff --git a/cmake/modules/FindICU.cmake b/cmake/modules/FindICU.cmake index e62f737..ebfdadb 100644 --- a/cmake/modules/FindICU.cmake +++ b/cmake/modules/FindICU.cmake @@ -13,6 +13,29 @@ # ICO_MINOR_VERSION - ICU minor version # +find_package(PkgConfig) +if(PKG_CONFIG_FOUND) + pkg_check_modules(_pc_icu icu-i18n) + if(_pc_icu_FOUND) + set(ICU_FOUND 1) + set(ICU_I18N_FOUND 1) + string(REPLACE ";" " " ICU_LDFLAGS "${_pc_icu_LDFLAGS}") + set(ICU_LIBRARIES ${ICU_LDFLAGS}) + set(ICU_LIBRARY ${ICU_LDFLAGS}) + set(ICU_I18N_LIBRARY ${ICU_LDFLAGS}) + mark_as_advanced(ICU_LIBRARY) + mark_as_advanced(ICU_I18N_LIBRARY) + set(ICU_INCLUDE_DIRS ${_pc_icu_CFLAGS}) + set(ICU_INCLUDE_DIR ${_pc_icu_INCLUDE_DIRS}) + mark_as_advanced(ICU_INCLUDE_DIR) + set(ICU_VERSION ${_pc_icu_VERSION}) + string(REGEX REPLACE "([0-9]+)[.].*" "\\1" ICU_MAJOR_VERSION "${ICU_VERSION}") + string(REGEX REPLACE ".*[.]([0-9]+)" "\\1" ICU_MINOR_VERSION "${ICU_VERSION}") + endif() +endif() + +if(NOT ICU_FOUND) + if(WIN32) file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _program_FILES_DIR) endif() @@ -95,6 +118,8 @@ else() set(ICU_MINOR_VERSION) endif() +endif() + if(ICU_FOUND) if(NOT ICU_FIND_QUIETLY) message(STATUS "Found ICU version ${ICU_VERSION}")