Hi,

I have attached an initial patch for adding support for Sun/Uniforum/GNU
gettext libintl.  This is likely better in cmake than upstream because
there are:

1) multiple upstreams (Sun, GNU)
2) it may or may not be in the glibc C library depending upon the platform
   and build options used

It could be argued that this belongs in the FindGettext module, which is
currently restricted to the Gettext tools rather than the library and
headers, and I'd certainly be fine with that.  However, given the unusual
nature of the library, I think the "_FOUND" variable should probably be
separate given that it's perfectly OK to use libintl without the gettext
tools (and vice versa), and they might not all be found.  I've added
cross references between the two in notes to make the relationship
clearer.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux    http://people.debian.org/~rleigh/
 `. `'   schroot and sbuild  http://alioth.debian.org/projects/buildd-tools
   `-    GPG Public Key      F33D 281D 470A B443 6756 147C 07B3 C8BC 4083 E800
From 1db4b20046f25a0de77cbc6b6bfc53bd3679dc24 Mon Sep 17 00:00:00 2001
From: Roger Leigh <[email protected]>
Date: Sun, 9 Nov 2014 22:46:58 +0000
Subject: [PATCH] FindIntl: New module to find Gettext libintl

---
 Help/manual/cmake-modules.7.rst |  1 +
 Modules/FindGettext.cmake       |  3 ++
 Modules/FindIntl.cmake          | 69 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 Modules/FindIntl.cmake

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/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..222cfa9
--- /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 (:program:`msgmerge`,
+#   :program:`msgfmt`, etc.), use :module:`FindGettext`.
+
+
+# Written by Roger Leigh <[email protected]>
+
+#=============================================================================
+# Copyright 2014 Roger Leigh <[email protected]>
+#
+# 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()
-- 
2.1.3

Attachment: signature.asc
Description: Digital signature

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to