aboutsummaryrefslogtreecommitdiff
path: root/cmake/FindLibIntl.cmake
diff options
context:
space:
mode:
authorAlexis Hildebrandt <afh@surryhill.net>2014-02-26 13:55:43 +0100
committerashleyh <gh@ashleyh.eu>2014-02-27 19:11:48 +0000
commit05b9e11584c30c03cb911bf909374c86450ee13e (patch)
treeb6ed38e24df01346535aeeac552ce14b6db6eec9 /cmake/FindLibIntl.cmake
parentfba074d99440f58d534d18ff8adbd6ca8c7be675 (diff)
downloadrneovim-05b9e11584c30c03cb911bf909374c86450ee13e.tar.gz
rneovim-05b9e11584c30c03cb911bf909374c86450ee13e.tar.bz2
rneovim-05b9e11584c30c03cb911bf909374c86450ee13e.zip
CMakeLists: Improve handling of libintl
by refactoring it into a separate CMake module
Diffstat (limited to 'cmake/FindLibIntl.cmake')
-rw-r--r--cmake/FindLibIntl.cmake54
1 files changed, 54 insertions, 0 deletions
diff --git a/cmake/FindLibIntl.cmake b/cmake/FindLibIntl.cmake
new file mode 100644
index 0000000000..ef7e3c10fd
--- /dev/null
+++ b/cmake/FindLibIntl.cmake
@@ -0,0 +1,54 @@
+# - Try to find libintl
+# Once done, this will define
+#
+# LibIntl_FOUND - system has libintl
+# LibIntl_INCLUDE_DIRS - the libintl include directories
+# LibIntl_LIBRARIES - link these to use libintl
+
+include(CheckCSourceCompiles)
+include(LibFindMacros)
+
+# Append custom gettext path to CMAKE_PREFIX_PATH
+# if installed via Mac Hombrew
+if (CMAKE_HOST_APPLE)
+ find_program(HOMEBREW_PROG brew)
+ if (EXISTS ${HOMEBREW_PROG})
+ execute_process(COMMAND ${HOMEBREW_PROG} --prefix gettext
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ OUTPUT_VARIABLE HOMEBREW_GETTEXT_PREFIX)
+ list(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_GETTEXT_PREFIX}")
+ endif()
+endif()
+
+find_path(LibIntl_INCLUDE_DIR
+ NAMES libintl.h
+)
+
+find_library(LibIntl_LIBRARY
+ NAMES intl libintl.a
+)
+
+if (LibIntl_INCLUDE_DIR)
+ set(CMAKE_REQUIRED_INCLUDES "${LibIntl_INCLUDE_DIR}")
+endif()
+
+# This is required because some operating systems don't have a separate
+# libintl--it is built into glibc. So we only need to specify the library
+# if one was actually found.
+if (LibIntl_LIBRARY)
+ set(CMAKE_REQUIRED_LIBRARIES "${LibIntl_LIBRARY}")
+endif()
+
+check_c_source_compiles("
+#include <libintl.h>
+
+int main(int argc, char** argv) {
+ gettext(\"foo\");
+ bindtextdomain(\"foo\", \"bar\");
+ bind_textdomain_codeset(\"foo\", \"bar\");
+ textdomain(\"foo\");
+}" HAVE_WORKING_LIBINTL)
+
+set(LibIntl_PROCESS_INCLUDES LibIntl_INCLUDE_DIR)
+set(LibIntl_PROCESS_LIBS LibIntl_LIBRARY)
+libfind_process(LibIntl)