From e1d8490f0654a3da0b900407d80d91d8d0da68c8 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 27 Sep 2009 01:55:44 +0200 Subject: Use libicu to support unicode properly; migrated ConfigManager to UnicodeString --- FindICU.cmake | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 FindICU.cmake (limited to 'FindICU.cmake') diff --git a/FindICU.cmake b/FindICU.cmake new file mode 100644 index 0000000..dfbf67d --- /dev/null +++ b/FindICU.cmake @@ -0,0 +1,99 @@ +FIND_PROGRAM(ICU_CONFIG NAMES icu-config) + +IF(ICU_CONFIG) + SET(ICU_FOUND 1) +ELSE(ICU_CONFIG) + SET(ICU_FOUND 0) +ENDIF(ICU_CONFIG) + +IF(ICU_FOUND) + EXECUTE_PROCESS( + COMMAND ${ICU_CONFIG} --cflags + OUTPUT_VARIABLE ICU_CONFIG_CFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE ICU_CONFIG_RESULT + ) + + IF("${ICU_CONFIG_RESULT}" MATCHES "^0$") + STRING(REGEX REPLACE " +" ";" ICU_CONFIG_CFLAGS "${ICU_CONFIG_CFLAGS}") + + # Look for -I options. + SET(ICU_INCLUDE_DIRS) + FOREACH(flag ${ICU_CONFIG_CFLAGS}) + IF("${flag}" MATCHES "^-I") + STRING(REGEX REPLACE "^-I" "" DIR "${flag}") + FILE(TO_CMAKE_PATH "${DIR}" DIR) + SET(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIRS} "${DIR}") + ENDIF("${flag}" MATCHES "^-I") + ENDFOREACH(flag) + ELSE("${ICU_CONFIG_RESULT}" MATCHES "^0$") + MESSAGE("Error running ${ICU_CONFIG}: [${ICU_CONFIG_RESULT}]") + SET(ICU_FOUND 0) + ENDIF("${ICU_CONFIG_RESULT}" MATCHES "^0$") +ENDIF(ICU_FOUND) + +IF(ICU_FOUND) + EXECUTE_PROCESS( + COMMAND ${ICU_CONFIG} --ldflags + OUTPUT_VARIABLE ICU_CONFIG_LDFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE ICU_CONFIG_RESULT + ) + + IF("${ICU_CONFIG_RESULT}" MATCHES "^0$") + STRING(REGEX REPLACE " +" ";" ICU_CONFIG_LDFLAGS "${ICU_CONFIG_LDFLAGS}") + + # Look for -L flags for directories and -l flags for library names. + SET(ICU_LIBRARY_DIRS) + SET(ICU_LIBRARY_NAMES) + FOREACH(flag ${ICU_CONFIG_LDFLAGS}) + IF("${flag}" MATCHES "^-L") + STRING(REGEX REPLACE "^-L" "" DIR "${flag}") + FILE(TO_CMAKE_PATH "${DIR}" DIR) + SET(ICU_LIBRARY_DIRS ${ICU_LIBRARY_DIRS} "${DIR}") + ELSEIF("${flag}" MATCHES "^-l") + STRING(REGEX REPLACE "^-l" "" NAME "${flag}") + SET(ICU_LIBRARY_NAMES ${ICU_LIBRARY_NAMES} "${NAME}") + ENDIF("${flag}" MATCHES "^-L") + ENDFOREACH(flag) + + # Search for each library needed using the directories given. + FOREACH(name ${ICU_LIBRARY_NAMES}) + # Look for this library. + FIND_LIBRARY(ICU_${name}_LIBRARY + NAMES ${name} + PATHS ${ICU_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + FIND_LIBRARY(ICU_${name}_LIBRARY NAMES ${name}) + MARK_AS_ADVANCED(ICU_${name}_LIBRARY) + + # If any library is not found then the whole package is not found. + IF(NOT ICU_${name}_LIBRARY) + SET(ICU_FOUND 0) + ENDIF(NOT ICU_${name}_LIBRARY) + + # Build an ordered list of all the libraries needed. + SET(ICU_LIBRARIES ${ICU_LIBRARIES} "${ICU_${name}_LIBRARY}") + ENDFOREACH(name) + ELSE("${ICU_CONFIG_RESULT}" MATCHES "^0$") + MESSAGE("Error running ${ICU_CONFIG}: [${ICU_CONFIG_RESULT}]") + SET(ICU_FOUND 0) + ENDIF("${ICU_CONFIG_RESULT}" MATCHES "^0$") +ENDIF(ICU_FOUND) + +# Report the results. +IF(ICU_FOUND) + MESSAGE(STATUS "Found ICU headers: ${ICU_INCLUDE_DIRS}") + MESSAGE(STATUS "Found ICU libs: ${ICU_LIBRARIES}") +ELSE(ICU_FOUND) + SET(ICU_DIR_MESSAGE + "ICU was not found.") + IF(NOT ICU_FIND_QUIETLY) + MESSAGE(STATUS "${ICU_DIR_MESSAGE}") + ELSE(NOT ICU_FIND_QUIETLY) + IF(ICU_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "${ICU_DIR_MESSAGE}") + ENDIF(ICU_FIND_REQUIRED) + ENDIF(NOT ICU_FIND_QUIETLY) +ENDIF(ICU_FOUND) -- cgit v1.2.3