summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@codelibre.net>2014-11-09 22:46:58 (GMT)
committerBrad King <brad.king@kitware.com>2014-11-11 18:02:16 (GMT)
commitc5e797dbb8b2b507431c665e924a41ed0def879e (patch)
treed11efb7a1fa13e96a75dcd1ba1347306dbc67b02
parentf476b41fd8a92c7784a84059f615fdf8155d687e (diff)
downloadCMake-c5e797dbb8b2b507431c665e924a41ed0def879e.zip
CMake-c5e797dbb8b2b507431c665e924a41ed0def879e.tar.gz
CMake-c5e797dbb8b2b507431c665e924a41ed0def879e.tar.bz2
FindIntl: New module to find Gettext libintl
Add support for Sun/Uniforum/GNU gettext libintl. This belongs in CMake rather than upstream because: * There are multiple upstreams (Sun, GNU). * It may or may not be in the glibc C library depending upon the platform and build options used. Although we already have a FindGettext module, that is for the tools. This module is for the library, and is independent because it's perfectly OK to use libintl without the gettext tools (and vice versa), and they might not all be found. Add cross references between the two modules in notes to make the relationship clearer.
-rw-r--r--Help/manual/cmake-modules.7.rst1
-rw-r--r--Help/module/FindIntl.rst1
-rw-r--r--Modules/FindGettext.cmake3
-rw-r--r--Modules/FindIntl.cmake69
4 files changed, 74 insertions, 0 deletions
diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index f5a35b3..083ed7a 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -118,6 +118,7 @@ All Modules
/module/FindIce
/module/FindIcotool
/module/FindImageMagick
+ /module/FindIntl
/module/FindITK
/module/FindJasper
/module/FindJava
diff --git a/Help/module/FindIntl.rst b/Help/module/FindIntl.rst
new file mode 100644
index 0000000..813e2df
--- /dev/null
+++ b/Help/module/FindIntl.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIntl.cmake
diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake
index f972ad0..ac53c3f 100644
--- a/Modules/FindGettext.cmake
+++ b/Modules/FindGettext.cmake
@@ -50,6 +50,9 @@
# (by default use share/locale/).
# If ALL is specified, the po files are processed when building the all traget.
# It creates a custom target "pofiles".
+#
+# .. note::
+# If you wish to use the Gettext library (libintl), use :module:`FindIntl`.
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
diff --git a/Modules/FindIntl.cmake b/Modules/FindIntl.cmake
new file mode 100644
index 0000000..cd2ec63
--- /dev/null
+++ b/Modules/FindIntl.cmake
@@ -0,0 +1,69 @@
+#.rst:
+# FindIntl
+# --------
+#
+# Find the Gettext libintl headers and libraries.
+#
+# This module reports information about the Gettext libintl
+# installation in several variables. General variables::
+#
+# Intl_FOUND - true if the libintl headers and libraries were found
+# Intl_INCLUDE_DIRS - the directory containing the libintl headers
+# Intl_LIBRARIES - libintl libraries to be linked
+#
+# The following cache variables may also be set::
+#
+# Intl_INCLUDE_DIR - the directory containing the libintl headers
+# Intl_LIBRARY - the libintl library (if any)
+#
+# .. note::
+# On some platforms, such as Linux with GNU libc, the gettext
+# functions are present in the C standard library and libintl
+# is not required. ``Intl_LIBRARIES`` will be empty in this
+# case.
+#
+# .. note::
+# If you wish to use the Gettext tools (``msgmerge``,
+# ``msgfmt``, etc.), use :module:`FindGettext`.
+
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+#=============================================================================
+# Copyright 2014 Roger Leigh <rleigh@codelibre.net>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+# Find include directory
+find_path(Intl_INCLUDE_DIR
+ NAMES "libintl.h"
+ DOC "libintl include directory")
+mark_as_advanced(Intl_INCLUDE_DIR)
+
+# Find all Intl libraries
+find_library(Intl_LIBRARY "intl"
+ DOC "libintl libraries (if not in the C library)")
+mark_as_advanced(Intl_LIBRARY)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Intl
+ FOUND_VAR Intl_FOUND
+ REQUIRED_VARS Intl_INCLUDE_DIR
+ FAIL_MESSAGE "Failed to find Gettext libintl")
+
+if(Intl_FOUND)
+ set(Intl_INCLUDE_DIRS "${Intl_INCLUDE_DIR}")
+ if(Intl_LIBRARY)
+ set(Intl_LIBRARIES "${Intl_LIBRARY}")
+ else()
+ unset(Intl_LIBRARIES)
+ endif()
+endif()