annotate 3rdparty/vmime/cmake/FindICU.cmake @ 0:a4671277546c tip

created the repository for the thymian project
author ferencd
date Tue, 17 Aug 2021 11:19:54 +0200
parents
children
rev   line source
ferencd@0 1 # This module can find the International Components for Unicode (ICU) Library
ferencd@0 2 #
ferencd@0 3 # Requirements:
ferencd@0 4 # - CMake >= 2.8.3 (for new version of find_package_handle_standard_args)
ferencd@0 5 #
ferencd@0 6 # The following variables will be defined for your use:
ferencd@0 7 # - ICU_FOUND : were all of your specified components found (include dependencies)?
ferencd@0 8 # - ICU_INCLUDE_DIRS : ICU include directory
ferencd@0 9 # - ICU_LIBRARIES : ICU libraries
ferencd@0 10 # - ICU_VERSION : complete version of ICU (x.y.z)
ferencd@0 11 # - ICU_MAJOR_VERSION : major version of ICU
ferencd@0 12 # - ICU_MINOR_VERSION : minor version of ICU
ferencd@0 13 # - ICU_PATCH_VERSION : patch version of ICU
ferencd@0 14 # - ICU_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency)
ferencd@0 15 #
ferencd@0 16 # For windows or non standard installation, define ICU_ROOT variable to point to the root installation of ICU. Two ways:
ferencd@0 17 # - run cmake with -DICU_ROOT=<PATH>
ferencd@0 18 # - define an environment variable with the same name before running cmake
ferencd@0 19 # With cmake-gui, before pressing "Configure":
ferencd@0 20 # 1) Press "Add Entry" button
ferencd@0 21 # 2) Add a new entry defined as:
ferencd@0 22 # - Name: ICU_ROOT
ferencd@0 23 # - Type: choose PATH in the selection list
ferencd@0 24 # - Press "..." button and select the root installation of ICU
ferencd@0 25 #
ferencd@0 26 # Example Usage:
ferencd@0 27 #
ferencd@0 28 # 1. Copy this file in the root of your project source directory
ferencd@0 29 # 2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt:
ferencd@0 30 # set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
ferencd@0 31 # 3. Finally call find_package() once, here are some examples to pick from
ferencd@0 32 #
ferencd@0 33 # Require ICU 4.4 or later
ferencd@0 34 # find_package(ICU 4.4 REQUIRED)
ferencd@0 35 #
ferencd@0 36 # if(ICU_FOUND)
ferencd@0 37 # include_directories(${ICU_INCLUDE_DIRS})
ferencd@0 38 # add_executable(myapp myapp.c)
ferencd@0 39 # target_link_libraries(myapp ${ICU_LIBRARIES})
ferencd@0 40 # endif(ICU_FOUND)
ferencd@0 41
ferencd@0 42 #=============================================================================
ferencd@0 43 # Copyright (c) 2011-2012, julp
ferencd@0 44 # https://github.com/julp/FindICU.cmake
ferencd@0 45 #
ferencd@0 46 # Distributed under the OSI-approved BSD License
ferencd@0 47 #
ferencd@0 48 # This software is distributed WITHOUT ANY WARRANTY; without even the
ferencd@0 49 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ferencd@0 50 #=============================================================================
ferencd@0 51
ferencd@0 52 find_package(PkgConfig QUIET)
ferencd@0 53
ferencd@0 54 ########## Private ##########
ferencd@0 55 set(ICU_PUBLIC_VAR_NS "ICU") # Prefix for all ICU relative public variables
ferencd@0 56 set(ICU_PRIVATE_VAR_NS "_${ICU_PUBLIC_VAR_NS}") # Prefix for all ICU relative internal variables
ferencd@0 57 set(PC_ICU_PRIVATE_VAR_NS "_PC${ICU_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables
ferencd@0 58
ferencd@0 59 function(icudebug _VARNAME)
ferencd@0 60 if(${ICU_PUBLIC_VAR_NS}_DEBUG)
ferencd@0 61 if(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
ferencd@0 62 message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = ${${ICU_PUBLIC_VAR_NS}_${_VARNAME}}")
ferencd@0 63 else(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
ferencd@0 64 message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>")
ferencd@0 65 endif(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
ferencd@0 66 endif(${ICU_PUBLIC_VAR_NS}_DEBUG)
ferencd@0 67 endfunction(icudebug)
ferencd@0 68
ferencd@0 69 set(${ICU_PRIVATE_VAR_NS}_ROOT "")
ferencd@0 70 if(DEFINED ENV{ICU_ROOT})
ferencd@0 71 set(${ICU_PRIVATE_VAR_NS}_ROOT "$ENV{ICU_ROOT}")
ferencd@0 72 endif(DEFINED ENV{ICU_ROOT})
ferencd@0 73 if (DEFINED ICU_ROOT)
ferencd@0 74 set(${ICU_PRIVATE_VAR_NS}_ROOT "${ICU_ROOT}")
ferencd@0 75 endif(DEFINED ICU_ROOT)
ferencd@0 76
ferencd@0 77 set(${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES )
ferencd@0 78 set(${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES )
ferencd@0 79 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
ferencd@0 80 list(APPEND ${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin64")
ferencd@0 81 list(APPEND ${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib64")
ferencd@0 82 endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
ferencd@0 83 list(APPEND ${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin")
ferencd@0 84 list(APPEND ${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib")
ferencd@0 85
ferencd@0 86 set(${ICU_PRIVATE_VAR_NS}_COMPONENTS )
ferencd@0 87 # <icu component name> <library name 1> ... <library name N>
ferencd@0 88 macro(icu_declare_component _NAME)
ferencd@0 89 list(APPEND ${ICU_PRIVATE_VAR_NS}_COMPONENTS ${_NAME})
ferencd@0 90 set("${ICU_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN})
ferencd@0 91 endmacro(icu_declare_component)
ferencd@0 92
ferencd@0 93 icu_declare_component(data icudata)
ferencd@0 94 icu_declare_component(uc icuuc) # Common and Data libraries
ferencd@0 95 icu_declare_component(i18n icui18n icuin) # Internationalization library
ferencd@0 96 icu_declare_component(io icuio ustdio) # Stream and I/O Library
ferencd@0 97 icu_declare_component(le icule) # Layout library
ferencd@0 98 icu_declare_component(lx iculx) # Paragraph Layout library
ferencd@0 99
ferencd@0 100 ########## Public ##########
ferencd@0 101 set(${ICU_PUBLIC_VAR_NS}_FOUND TRUE)
ferencd@0 102 set(${ICU_PUBLIC_VAR_NS}_LIBRARIES )
ferencd@0 103 set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS )
ferencd@0 104 set(${ICU_PUBLIC_VAR_NS}_C_FLAGS "")
ferencd@0 105 set(${ICU_PUBLIC_VAR_NS}_CXX_FLAGS "")
ferencd@0 106 set(${ICU_PUBLIC_VAR_NS}_CPP_FLAGS "")
ferencd@0 107 set(${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS "")
ferencd@0 108 set(${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS "")
ferencd@0 109 set(${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS "")
ferencd@0 110 foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS})
ferencd@0 111 string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
ferencd@0 112 set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the icu_declare_component macro
ferencd@0 113 endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
ferencd@0 114
ferencd@0 115 # Check components
ferencd@0 116 if(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) # uc required at least
ferencd@0 117 set(${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
ferencd@0 118 else(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
ferencd@0 119 list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
ferencd@0 120 list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
ferencd@0 121 foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
ferencd@0 122 if(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
ferencd@0 123 message(FATAL_ERROR "Unknown ICU component: ${${ICU_PRIVATE_VAR_NS}_COMPONENT}")
ferencd@0 124 endif(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
ferencd@0 125 endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
ferencd@0 126 endif(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
ferencd@0 127
ferencd@0 128 # Includes
ferencd@0 129 find_path(
ferencd@0 130 ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
ferencd@0 131 NAMES unicode/utypes.h utypes.h
ferencd@0 132 HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
ferencd@0 133 PATH_SUFFIXES "include"
ferencd@0 134 DOC "Include directories for ICU"
ferencd@0 135 )
ferencd@0 136
ferencd@0 137 if(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
ferencd@0 138 ########## <part to keep synced with tests/version/CMakeLists.txt> ##########
ferencd@0 139 if(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uvernum.h") # ICU >= 4
ferencd@0 140 file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uvernum.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
ferencd@0 141 elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uversion.h") # ICU [2;4[
ferencd@0 142 file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uversion.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
ferencd@0 143 elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/utypes.h") # ICU [1.4;2[
ferencd@0 144 file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
ferencd@0 145 elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/utypes.h") # ICU 1.3
ferencd@0 146 file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
ferencd@0 147 else()
ferencd@0 148 message(FATAL_ERROR "ICU version header not found")
ferencd@0 149 endif()
ferencd@0 150
ferencd@0 151 if(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *ICU_VERSION *\"([0-9]+)\".*") # ICU 1.3
ferencd@0 152 # [1.3;1.4[ as #define ICU_VERSION "3" (no patch version, ie all 1.3.X versions will be detected as 1.3.0)
ferencd@0 153 set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "1")
ferencd@0 154 set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_1}")
ferencd@0 155 set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "0")
ferencd@0 156 elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION_MAJOR_NUM *([0-9]+).*")
ferencd@0 157 set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
ferencd@0 158 #
ferencd@0 159 # Since version 4.9.1, ICU release version numbering was totaly changed, see:
ferencd@0 160 # - http://site.icu-project.org/download/49
ferencd@0 161 # - http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
ferencd@0 162 #
ferencd@0 163 if(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION LESS 49)
ferencd@0 164 string(REGEX REPLACE ".*# *define *U_ICU_VERSION_MINOR_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
ferencd@0 165 string(REGEX REPLACE ".*# *define *U_ICU_VERSION_PATCHLEVEL_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
ferencd@0 166 else(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION LESS 49)
ferencd@0 167 string(REGEX MATCH [0-9]$ ${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION}")
ferencd@0 168 string(REGEX REPLACE [0-9]$ "" ${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION}")
ferencd@0 169 string(REGEX REPLACE ".*# *define *U_ICU_VERSION_MINOR_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
ferencd@0 170 endif(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION LESS 49)
ferencd@0 171 elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION *\"(([0-9]+)(\\.[0-9]+)*)\".*") # ICU [1.4;1.8[
ferencd@0 172 # [1.4;1.8[ as #define U_ICU_VERSION "1.4.1.2" but it seems that some 1.4.1(?:\.\d)? have releasing error and appears as 1.4.0
ferencd@0 173 set(${ICU_PRIVATE_VAR_NS}_FULL_VERSION "${CMAKE_MATCH_1}") # copy CMAKE_MATCH_1, no longer valid on the following if
ferencd@0 174 if(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$")
ferencd@0 175 set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
ferencd@0 176 set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}")
ferencd@0 177 set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "0")
ferencd@0 178 elseif(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
ferencd@0 179 set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
ferencd@0 180 set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}")
ferencd@0 181 set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "${CMAKE_MATCH_3}")
ferencd@0 182 endif()
ferencd@0 183 else()
ferencd@0 184 message(FATAL_ERROR "failed to detect ICU version")
ferencd@0 185 endif()
ferencd@0 186 set(${ICU_PUBLIC_VAR_NS}_VERSION "${${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${ICU_PUBLIC_VAR_NS}_MINOR_VERSION}.${${ICU_PUBLIC_VAR_NS}_PATCH_VERSION}")
ferencd@0 187 ########## </part to keep synced with tests/version/CMakeLists.txt> ##########
ferencd@0 188
ferencd@0 189 # Check dependencies (implies pkg-config)
ferencd@0 190 if(PKG_CONFIG_FOUND)
ferencd@0 191 set(${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
ferencd@0 192 foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP})
ferencd@0 193 pkg_check_modules(PC_ICU_PRIVATE_VAR_NS "icu-${${ICU_PRIVATE_VAR_NS}_COMPONENT}" QUIET)
ferencd@0 194
ferencd@0 195 if(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
ferencd@0 196 foreach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY ${PC_ICU_LIBRARIES})
ferencd@0 197 string(REGEX REPLACE "^icu" "" ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARY})
ferencd@0 198 list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY})
ferencd@0 199 endforeach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY)
ferencd@0 200 endif(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
ferencd@0 201 endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
ferencd@0 202 list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
ferencd@0 203 endif(PKG_CONFIG_FOUND)
ferencd@0 204
ferencd@0 205 # Check libraries
ferencd@0 206 foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
ferencd@0 207 set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES )
ferencd@0 208 set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES )
ferencd@0 209 foreach(${ICU_PRIVATE_VAR_NS}_BASE_NAME ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}})
ferencd@0 210 list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}")
ferencd@0 211 list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}d")
ferencd@0 212 list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${ICU_MAJOR_VERSION}${ICU_MINOR_VERSION}")
ferencd@0 213 list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${ICU_MAJOR_VERSION}${ICU_MINOR_VERSION}d")
ferencd@0 214 endforeach(${ICU_PRIVATE_VAR_NS}_BASE_NAME)
ferencd@0 215
ferencd@0 216 find_library(
ferencd@0 217 ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
ferencd@0 218 NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES}
ferencd@0 219 HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
ferencd@0 220 PATH_SUFFIXES ${_ICU_LIB_SUFFIXES}
ferencd@0 221 DOC "Release libraries for ICU"
ferencd@0 222 )
ferencd@0 223 find_library(
ferencd@0 224 ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
ferencd@0 225 NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES}
ferencd@0 226 HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
ferencd@0 227 PATH_SUFFIXES ${_ICU_LIB_SUFFIXES}
ferencd@0 228 DOC "Debug libraries for ICU"
ferencd@0 229 )
ferencd@0 230
ferencd@0 231 string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
ferencd@0 232 if(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # both not found
ferencd@0 233 set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE)
ferencd@0 234 set("${ICU_PUBLIC_VAR_NS}_FOUND" FALSE)
ferencd@0 235 else(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # one or both found
ferencd@0 236 set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE)
ferencd@0 237 if(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # release not found => we are in debug
ferencd@0 238 set(${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT} "${${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}")
ferencd@0 239 elseif(NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # debug not found => we are in release
ferencd@0 240 set(${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT} "${${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}")
ferencd@0 241 else() # both found
ferencd@0 242 set(
ferencd@0 243 ${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
ferencd@0 244 optimized ${${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}
ferencd@0 245 debug ${${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}
ferencd@0 246 )
ferencd@0 247 endif()
ferencd@0 248 list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT}})
ferencd@0 249 endif(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
ferencd@0 250 endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
ferencd@0 251
ferencd@0 252 # Try to find out compiler flags
ferencd@0 253 find_program(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT} icu-config)
ferencd@0 254 if(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
ferencd@0 255 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 256 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 257 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 258
ferencd@0 259 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 260 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 261 execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
ferencd@0 262 endif(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
ferencd@0 263
ferencd@0 264 # Check find_package arguments
ferencd@0 265 include(FindPackageHandleStandardArgs)
ferencd@0 266 if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
ferencd@0 267 find_package_handle_standard_args(
ferencd@0 268 ${ICU_PUBLIC_VAR_NS}
ferencd@0 269 REQUIRED_VARS ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
ferencd@0 270 VERSION_VAR ${ICU_PUBLIC_VAR_NS}_VERSION
ferencd@0 271 )
ferencd@0 272 else(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
ferencd@0 273 find_package_handle_standard_args(${ICU_PUBLIC_VAR_NS} "ICU not found" ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
ferencd@0 274 endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
ferencd@0 275 else(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
ferencd@0 276 if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
ferencd@0 277 message(FATAL_ERROR "Could not find ICU include directory")
ferencd@0 278 endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
ferencd@0 279 endif(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
ferencd@0 280
ferencd@0 281 mark_as_advanced(
ferencd@0 282 ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
ferencd@0 283 ${ICU_PUBLIC_VAR_NS}_LIBRARIES
ferencd@0 284 )
ferencd@0 285
ferencd@0 286 # IN (args)
ferencd@0 287 icudebug("FIND_COMPONENTS")
ferencd@0 288 icudebug("FIND_REQUIRED")
ferencd@0 289 icudebug("FIND_QUIETLY")
ferencd@0 290 icudebug("FIND_VERSION")
ferencd@0 291 # OUT
ferencd@0 292 # Found
ferencd@0 293 icudebug("FOUND")
ferencd@0 294 icudebug("UC_FOUND")
ferencd@0 295 icudebug("I18N_FOUND")
ferencd@0 296 icudebug("IO_FOUND")
ferencd@0 297 icudebug("LE_FOUND")
ferencd@0 298 icudebug("LX_FOUND")
ferencd@0 299 icudebug("DATA_FOUND")
ferencd@0 300 # Flags
ferencd@0 301 icudebug("C_FLAGS")
ferencd@0 302 icudebug("CPP_FLAGS")
ferencd@0 303 icudebug("CXX_FLAGS")
ferencd@0 304 icudebug("C_SHARED_FLAGS")
ferencd@0 305 icudebug("CPP_SHARED_FLAGS")
ferencd@0 306 icudebug("CXX_SHARED_FLAGS")
ferencd@0 307 # Linking
ferencd@0 308 icudebug("INCLUDE_DIRS")
ferencd@0 309 icudebug("LIBRARIES")
ferencd@0 310 # Version
ferencd@0 311 icudebug("MAJOR_VERSION")
ferencd@0 312 icudebug("MINOR_VERSION")
ferencd@0 313 icudebug("PATCH_VERSION")
ferencd@0 314 icudebug("VERSION")