aboutsummaryrefslogtreecommitdiff
path: root/cmake/FindLibIntl.cmake
diff options
context:
space:
mode:
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)