summaryrefslogtreecommitdiffstats
path: root/FindICU.cmake
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-09-27 01:55:44 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-09-27 01:55:44 +0200
commite1d8490f0654a3da0b900407d80d91d8d0da68c8 (patch)
treed65b4bd4a596a98061e094120b6a1aed388d1c89 /FindICU.cmake
parentd88c486ae403bee8f4b16e4bdf9daf19f8915eed (diff)
downloadmad-e1d8490f0654a3da0b900407d80d91d8d0da68c8.tar
mad-e1d8490f0654a3da0b900407d80d91d8d0da68c8.zip
Use libicu to support unicode properly; migrated ConfigManager to UnicodeString
Diffstat (limited to 'FindICU.cmake')
-rw-r--r--FindICU.cmake99
1 files changed, 99 insertions, 0 deletions
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)