Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-27 Thread Roger Leigh
On Fri, Aug 22, 2014 at 11:17:05AM +0100, Roger Leigh wrote:
 On Thu, Aug 21, 2014 at 02:47:24PM +0200, Rolf Eike Beer wrote:
  Roger Leigh wrote:
   On Sun, Aug 17, 2014 at 05:22:38PM +0100, Roger Leigh wrote:
On Sun, Aug 17, 2014 at 05:50:58PM +0200, Rolf Eike Beer wrote:
 Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
  On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
   OK.  I'll have to read up on this and see what needs doing.
   In the meantime, I've attached a revised patch with all the
   above corrections included.
  
  Based on the comments made on my other FindXerces patch, I've
  updated this patch to also use current naming and usage
  conventions.  I hope this is all OK with you.
 
 +if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND
 MSVC_VERSION LESS 1500)) if((NOT MSVC_VERSION VERSION_LESS 1400 AND
 MSVC_VERSION LESS 1500) 
Thanks, I've fixed this now in the attached patch.
   
   One single line change to the patch attached, to add support for
   FreeBSD, which uses a different slice directory (unversioned
   share/Ice).
  
  Pushed, including some cleanups:
  -remove text in else(), endif() and so on (applies also to FindXerces)
  -if (...) else() can be if (NOT ...)
  -used elseif for MSVC version scanning, once you have found one version the 
  other if's can't be true
  
  Please check if I have messed something up.
 
 I've looked through the changes for both files and I can't see any
 problems there.
 
 I tested FindXerces on Linux and MacOS and can't see any changes
 in behaviour.  Likewise I tested FindIce on Linux, MacOS and
 Windows in a variety of different combinations of compiler and
 Ice versions and also didn't see any problems.
 
 I've pushed the cleanups into our local git repositories and they
 will be picked up by our automated jenkins CI testing; I'll have
 the results of that by Monday, but I wouldn't expect it to be any
 different from the manual testing I've already done.

It has been tested on several different CI systems for the last
three days (CentOS, MacOSX10.8/9, Windows 2008R2) as well as being
tested by several of our developers and I haven't got any problems
to report.


Thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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
-- 

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


Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-22 Thread Roger Leigh
On Thu, Aug 21, 2014 at 02:47:24PM +0200, Rolf Eike Beer wrote:
 Roger Leigh wrote:
  On Sun, Aug 17, 2014 at 05:22:38PM +0100, Roger Leigh wrote:
   On Sun, Aug 17, 2014 at 05:50:58PM +0200, Rolf Eike Beer wrote:
Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
 On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
  OK.  I'll have to read up on this and see what needs doing.
  In the meantime, I've attached a revised patch with all the
  above corrections included.
 
 Based on the comments made on my other FindXerces patch, I've
 updated this patch to also use current naming and usage
 conventions.  I hope this is all OK with you.

+if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND
MSVC_VERSION LESS 1500)) if((NOT MSVC_VERSION VERSION_LESS 1400 AND
MSVC_VERSION LESS 1500) 
   Thanks, I've fixed this now in the attached patch.
  
  One single line change to the patch attached, to add support for
  FreeBSD, which uses a different slice directory (unversioned
  share/Ice).
 
 Pushed, including some cleanups:
 -remove text in else(), endif() and so on (applies also to FindXerces)
 -if (...) else() can be if (NOT ...)
 -used elseif for MSVC version scanning, once you have found one version the 
 other if's can't be true
 
 Please check if I have messed something up.

I've looked through the changes for both files and I can't see any
problems there.

I tested FindXerces on Linux and MacOS and can't see any changes
in behaviour.  Likewise I tested FindIce on Linux, MacOS and
Windows in a variety of different combinations of compiler and
Ice versions and also didn't see any problems.

I've pushed the cleanups into our local git repositories and they
will be picked up by our automated jenkins CI testing; I'll have
the results of that by Monday, but I wouldn't expect it to be any
different from the manual testing I've already done.


Many thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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
-- 

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


Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-21 Thread Rolf Eike Beer
Roger Leigh wrote:
 On Sun, Aug 17, 2014 at 05:22:38PM +0100, Roger Leigh wrote:
  On Sun, Aug 17, 2014 at 05:50:58PM +0200, Rolf Eike Beer wrote:
   Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
 OK.  I'll have to read up on this and see what needs doing.
 In the meantime, I've attached a revised patch with all the
 above corrections included.

Based on the comments made on my other FindXerces patch, I've
updated this patch to also use current naming and usage
conventions.  I hope this is all OK with you.
   
   +if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND
   MSVC_VERSION LESS 1500)) if((NOT MSVC_VERSION VERSION_LESS 1400 AND
   MSVC_VERSION LESS 1500) 
  Thanks, I've fixed this now in the attached patch.
 
 One single line change to the patch attached, to add support for
 FreeBSD, which uses a different slice directory (unversioned
 share/Ice).

Pushed, including some cleanups:
-remove text in else(), endif() and so on (applies also to FindXerces)
-if (...) else() can be if (NOT ...)
-used elseif for MSVC version scanning, once you have found one version the 
other if's can't be true

Please check if I have messed something up.

Eike
-- 

signature.asc
Description: This is a digitally signed message part.
-- 

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

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-18 Thread Roger Leigh
On Sun, Aug 17, 2014 at 05:22:38PM +0100, Roger Leigh wrote:
 On Sun, Aug 17, 2014 at 05:50:58PM +0200, Rolf Eike Beer wrote:
  Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
   On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
OK.  I'll have to read up on this and see what needs doing.
In the meantime, I've attached a revised patch with all the
above corrections included.
   
   Based on the comments made on my other FindXerces patch, I've
   updated this patch to also use current naming and usage
   conventions.  I hope this is all OK with you.
  
  +if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND 
  MSVC_VERSION LESS 1500))
  if((NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION LESS 1500)
 
 Thanks, I've fixed this now in the attached patch.

One single line change to the patch attached, to add support for
FreeBSD, which uses a different slice directory (unversioned
share/Ice).

This has now been tested on:
- Windows with all Ice 3.3, 3.4 and 3.5 versions with
  VS 2010, 2012, 2013
- MacOS 10.8 and 10.9 with homebrew ice
- Linux with Ubuntu 2012.04/ice34, 2014.04/ice35,
 Debian unstable/ice35 and
 CentOS 6.5/ice34.
- FreeBSD 10.0-STABLE with devel/ice (3.5.1) port


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 a559c1ce25e5586151bbe8bbe27eeac8f26014b5 Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 408 
 3 files changed, 410 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..2ff3e4b
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,408 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]   # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED]  # Fail with error if Ice is not found
+# [COMPONENTS libs...]) # Ice libraries by their name
+#
+# Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``,
+# ``IceBox``, ``IceDB``, ``IceGrid``, ``IcePatch``, ``IceSSL``,
+# ``IceStorm``, ``IceUtil``, ``IceXML``, or ``Slice``.
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#   Ice_LIBRARIES - component libraries to be linked
+#   Ice_INCLUDE_DIRS - the directories containing the Ice headers
+#   Ice_SLICE_DIRS - the directories containing the Ice slice interface
+#definitions
+#
+# Ice programs are reported in::
+#
+#   Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+#   Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable
+#   Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable
+#   Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable
+#   Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
+#   Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
+#
+# Ice component libraries are reported in::
+#
+#   Ice_C_FOUND - ON if component was found
+#   Ice_C_LIBRARIES - libraries for component
+#
+# Note that ``C`` is the uppercased name of the component.
+#
+# 

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-17 Thread Roger Leigh
On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
 OK.  I'll have to read up on this and see what needs doing.
 In the meantime, I've attached a revised patch with all the
 above corrections included.

Based on the comments made on my other FindXerces patch, I've
updated this patch to also use current naming and usage
conventions.  I hope this is all OK with you.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 2a6e7b81e5eb1fe8f53d156a78e8bbda7ed98b7a Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 402 
 3 files changed, 404 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..774b9fe
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,402 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]   # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED]  # Fail with error if Ice is not found
+# [COMPONENTS libs...]) # Ice libraries by their name
+#
+# Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``,
+# ``IceBox``, ``IceDB``, ``IceGrid``, ``IcePatch``, ``IceSSL``,
+# ``IceStorm``, ``IceUtil``, ``IceXML``, or ``Slice``.
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#   Ice_LIBRARIES - component libraries to be linked
+#   Ice_INCLUDE_DIRS - the directories containing the Ice headers
+#   Ice_SLICE_DIRS - the directories containing the Ice slice interface
+#definitions
+#
+# Ice programs are reported in::
+#
+#   Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+#   Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable
+#   Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable
+#   Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable
+#   Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
+#   Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
+#
+# Ice component libraries are reported in::
+#
+#   Ice_C_FOUND - ON if component was found
+#   Ice_C_LIBRARIES - libraries for component
+#
+# Note that ``C`` is the uppercased name of the component.
+#
+# This module reads hints about search results from::
+#
+#   Ice_HOME - the root of the Ice installation
+#
+# The environment variable :envvar:`ICE_HOME` may also be used; the
+# Ice_HOME variable takes precedence.
+#
+# The following cache variables may also be set::
+#
+#   Ice_P_EXECUTABLE - the path to executable P
+#   Ice_INCLUDE_DIR - the directory containing the Ice headers
+#   Ice_SLICE_DIR - the directory containing the Ice slice interface
+#   definitions
+#   Ice_C_LIBRARY - the library for component C
+#
+# .. note::
+#
+#   In most cases none of the above variables will require setting,
+#   unless multiple Ice versions are available and a specific version
+#   is required.  On Windows, the most recent version of Ice will be
+#   found through the registry.  On Unix, the programs, headers and
+#   libraries will usually be in standard locations, but 

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-17 Thread Rolf Eike Beer
Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
 On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
  OK.  I'll have to read up on this and see what needs doing.
  In the meantime, I've attached a revised patch with all the
  above corrections included.
 
 Based on the comments made on my other FindXerces patch, I've
 updated this patch to also use current naming and usage
 conventions.  I hope this is all OK with you.

+if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND 
MSVC_VERSION LESS 1500))
if((NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION LESS 1500)

Eike

signature.asc
Description: This is a digitally signed message part.
-- 

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

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-17 Thread Roger Leigh
On Sun, Aug 17, 2014 at 05:50:58PM +0200, Rolf Eike Beer wrote:
 Am Sonntag, 17. August 2014, 16:21:24 schrieb Roger Leigh:
  On Fri, Aug 15, 2014 at 12:31:17AM +0100, Roger Leigh wrote:
   OK.  I'll have to read up on this and see what needs doing.
   In the meantime, I've attached a revised patch with all the
   above corrections included.
  
  Based on the comments made on my other FindXerces patch, I've
  updated this patch to also use current naming and usage
  conventions.  I hope this is all OK with you.
 
 +if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND 
 MSVC_VERSION LESS 1500))
 if((NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION LESS 1500)

Thanks, I've fixed this now in the attached patch.

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 495652e38c725f96d2d3b46cecef6ae2dd783b7b Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 406 
 3 files changed, 408 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..2d06d41
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,406 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]   # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED]  # Fail with error if Ice is not found
+# [COMPONENTS libs...]) # Ice libraries by their name
+#
+# Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``,
+# ``IceBox``, ``IceDB``, ``IceGrid``, ``IcePatch``, ``IceSSL``,
+# ``IceStorm``, ``IceUtil``, ``IceXML``, or ``Slice``.
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#   Ice_LIBRARIES - component libraries to be linked
+#   Ice_INCLUDE_DIRS - the directories containing the Ice headers
+#   Ice_SLICE_DIRS - the directories containing the Ice slice interface
+#definitions
+#
+# Ice programs are reported in::
+#
+#   Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+#   Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable
+#   Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable
+#   Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable
+#   Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
+#   Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
+#
+# Ice component libraries are reported in::
+#
+#   Ice_C_FOUND - ON if component was found
+#   Ice_C_LIBRARIES - libraries for component
+#
+# Note that ``C`` is the uppercased name of the component.
+#
+# This module reads hints about search results from::
+#
+#   Ice_HOME - the root of the Ice installation
+#
+# The environment variable :envvar:`ICE_HOME` may also be used; the
+# Ice_HOME variable takes precedence.
+#
+# The following cache variables may also be set::
+#
+#   Ice_P_EXECUTABLE - the path to executable P
+#   Ice_INCLUDE_DIR - the directory containing the Ice headers
+#   Ice_SLICE_DIR - the directory containing the Ice slice interface
+#   definitions
+#   Ice_C_LIBRARY - the library for component C
+#
+# .. note::

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-14 Thread Roger Leigh
On Wed, Aug 13, 2014 at 10:10:01AM -0400, Brad King wrote:
 On 08/12/2014 05:59 PM, Roger Leigh wrote:
  Regarding the Windows Registry, I've taken a look and it looks
  like there might be some usable keys from the installer which
  could be used, but I'll need to do further digging with all
  the different versions to see what's most usable here.
  
  This turned out to be fairly simple at least for Ice versions
  3.4.0 - 3.5.1, which all have the same naming convention.
  Earlier versions have odd naming conventions and are in
  Wow6432Node so I've not included them (they are obsolete in
  any case, and ICE_HOME can be set to use them).
 
 The Wow6432Node is for distinguishing between 32-bit and 64-bit
 views of the registry.  Just omit it from any registry key path.
 When CMake find_* commands evaluate registry values they take
 into account whether the target architecture is 32-bit or 64-bit
 and prefer the matching registry view.
 
 So, please go ahead and add the registry entries for the earlier
 versions.  Just convert any \Wow6432Node\ to \ in the keys.

OK, done now and it's working fine.

 Other comments:
 
  +# Components can include any of: Freeze Glacier2 Ice IceBox IceDB
  +# IceGrid IcePatch IceSSL IceStorm IceUtil IceXML Slice.
 
 I think each name in the list should be ``quoted`` to clarify
 that it is a name to appear in code.

Done.

  +#   ICE_LIBRARIES - component libraries to be linked
 
 Is that a typo in the docs?  It should be Ice_LIBRARIES.

Yes, fixed now.

  +#   ICE_C_LIBRARY - component library
 
 Although the individual find result is a singular-named cache entry
 the results presented to the project should still be plural-named
 normal variables:
 
  Ice_C_LIBRARY - cache entry
  Ice_C_LIBRARIES - results (even if only one entry)

This is also fixed.

  +set(ICE_HOME NOTFOUND
  +CACHE PATH Location of the Ice installation)
  +mark_as_advanced(FORCE ICE_HOME)
  +
  +set(ICE_BINARYDIR NOTFOUND
  +CACHE PATH Location of the Ice programs)
  +mark_as_advanced(FORCE ICE_BINARYDIR)
  +
  +set(ICE_INCLUDEDIR NOTFOUND
  +CACHE PATH Location of the Ice headers)
  +mark_as_advanced(FORCE ICE_INCLUDEDIR)
  +
  +set(ICE_SLICEDIR NOTFOUND
  +CACHE PATH Location of the Ice slice interface definitions)
  +mark_as_advanced(FORCE ICE_SLICEDIR)
  +
  +set(ICE_LIBRARYDIR NOTFOUND
  +CACHE PATH Location of the Ice libraries)
  +mark_as_advanced(FORCE ICE_LIBRARYDIR)
 
 These hints should not need to be explicitly cached with such
 granularity.  The find_* commands create cache entries for
 their results both to save them persistently and to allow users
 to set them granularly.  The CMAKE_PREFIX_PATH variable allows
 users to add custom prefixes without a per-package _HOME or
 _ROOT variable.

These are all removed.

  +  list(APPEND ice_slice_paths
  +/usr/local/share/Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice
  +/usr/local/share/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice
  +/usr/local/share/Ice/slice
  +/usr/share/Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice
  +/usr/share/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice
  +/usr/share/Ice/slice)
 
 It looks like a lot of the explicit search location construction
 could be simplified using PATH_SUFFIXES options to the find
 commands.  There should not need to be any explicit copies of
 paths for every common prefix.

I have changed all the find_* code to use PATH_SUFFIXES and the
correct cache variable names.  It certainly has simplified things
quite a bit.

 Another option you might be interested in exploring, but not
 as a requirement for our acceptance of this module, is creation
 of imported targets to hold the find results with usage reqs.
 See the cmake-buildsystem(7) manual:
 
  http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html
 
 for more info.  See the FindQt4 module for an example.  This
 part could be added as a follow-up change once the main module
 is in though.

OK.  I'll have to read up on this and see what needs doing.
In the meantime, I've attached a revised patch with all the
above corrections included.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 0ee1f79f060579e036e9158020c1650df6759d67 Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst 

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-13 Thread Brad King
Hi Roger,

Thanks for the revisions!

On 08/12/2014 05:59 PM, Roger Leigh wrote:
 Regarding the Windows Registry, I've taken a look and it looks
 like there might be some usable keys from the installer which
 could be used, but I'll need to do further digging with all
 the different versions to see what's most usable here.
 
 This turned out to be fairly simple at least for Ice versions
 3.4.0 - 3.5.1, which all have the same naming convention.
 Earlier versions have odd naming conventions and are in
 Wow6432Node so I've not included them (they are obsolete in
 any case, and ICE_HOME can be set to use them).

The Wow6432Node is for distinguishing between 32-bit and 64-bit
views of the registry.  Just omit it from any registry key path.
When CMake find_* commands evaluate registry values they take
into account whether the target architecture is 32-bit or 64-bit
and prefer the matching registry view.

So, please go ahead and add the registry entries for the earlier
versions.  Just convert any \Wow6432Node\ to \ in the keys.

Other comments:

 +# Components can include any of: Freeze Glacier2 Ice IceBox IceDB
 +# IceGrid IcePatch IceSSL IceStorm IceUtil IceXML Slice.

I think each name in the list should be ``quoted`` to clarify
that it is a name to appear in code.

 +#   ICE_LIBRARIES - component libraries to be linked

Is that a typo in the docs?  It should be Ice_LIBRARIES.

 +#   ICE_C_LIBRARY - component library

Although the individual find result is a singular-named cache entry
the results presented to the project should still be plural-named
normal variables:

 Ice_C_LIBRARY - cache entry
 Ice_C_LIBRARIES - results (even if only one entry)

 +set(ICE_HOME NOTFOUND
 +CACHE PATH Location of the Ice installation)
 +mark_as_advanced(FORCE ICE_HOME)
 +
 +set(ICE_BINARYDIR NOTFOUND
 +CACHE PATH Location of the Ice programs)
 +mark_as_advanced(FORCE ICE_BINARYDIR)
 +
 +set(ICE_INCLUDEDIR NOTFOUND
 +CACHE PATH Location of the Ice headers)
 +mark_as_advanced(FORCE ICE_INCLUDEDIR)
 +
 +set(ICE_SLICEDIR NOTFOUND
 +CACHE PATH Location of the Ice slice interface definitions)
 +mark_as_advanced(FORCE ICE_SLICEDIR)
 +
 +set(ICE_LIBRARYDIR NOTFOUND
 +CACHE PATH Location of the Ice libraries)
 +mark_as_advanced(FORCE ICE_LIBRARYDIR)

These hints should not need to be explicitly cached with such
granularity.  The find_* commands create cache entries for
their results both to save them persistently and to allow users
to set them granularly.  The CMAKE_PREFIX_PATH variable allows
users to add custom prefixes without a per-package _HOME or
_ROOT variable.

 +  list(APPEND ice_slice_paths
 +/usr/local/share/Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice
 +/usr/local/share/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice
 +/usr/local/share/Ice/slice
 +/usr/share/Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice
 +/usr/share/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice
 +/usr/share/Ice/slice)

It looks like a lot of the explicit search location construction
could be simplified using PATH_SUFFIXES options to the find
commands.  There should not need to be any explicit copies of
paths for every common prefix.

Another option you might be interested in exploring, but not
as a requirement for our acceptance of this module, is creation
of imported targets to hold the find results with usage reqs.
See the cmake-buildsystem(7) manual:

 http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html

for more info.  See the FindQt4 module for an example.  This
part could be added as a follow-up change once the main module
is in though.

-Brad

-- 

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


Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-12 Thread Roger Leigh
On Mon, Aug 11, 2014 at 11:07:57AM -0400, Brad King wrote:
 On 08/08/2014 08:56 AM, Roger Leigh wrote:
  On Thu, Aug 07, 2014 at 06:49:28PM +0100, Roger Leigh wrote:
  Hi,
 
  I've written a module for finding the details of a ZeroC ICE installation,
  attached, which I thought might be of interest to a wider audience and be
  suitable for direct inclusion into cmake.  I've attached the patch for 
  this.
  The docs should be correct, but I'm not yet totally familiar with the cmake
  docs build, so it might possibly need some minor tweaking.
  
  I have added a few portability and documentation fixes.  Updated copy
  attached.
 
 Thanks for working on this.  The patch looks pretty complete.
 
 Is it possible to convince ZeroC ICE to provide a CMake
 Package Configuration File as documented here:
 
  http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html

I will certainly ask them if they will consider it.

 ?  That would be much more maintainable and allows for much more
 powerful CMake interfaces to be used.  It is the CMake equivalent
 of a pkg-config .pc file, but is much more powerful.
 
 Otherwise we can consider the module here, but we ask that you
 commit to regular maintenance as the upstream changes.

I'm currently working on this for my job, and so will be keeping this
up to date.  I just thought it would benefit being upstream so that
others can benefit from it.  I'll also make the upstream aware of it.
They release fairly infrequently, so I don't expect updates generally
more than once or twice a year, if that.

While a configuration file would be ideal for new releases, the
proposed find script will cater for their most recent releases
to date, and as such will support all current Linux, Mac and
Windows users.

 As for the module itself, there are a few problems:

I hope that the new patch (attached) addresses these problems.  I
hope this is more acceptable, and I'll be happy to make any additional
changes.

 1. The legal notice block is not of the proper format and
fails the CMake.ModuleNotices test.

This should be fixed.

 2. The module provides singular names like comp_LIBRARY as its
output.  Please read
 
 
 http://www.cmake.org/cmake/help/v3.0/manual/cmake-developer.7.html#find-modules
 
for conventions on variable naming.  The find_* command
cached result variables should not overlap with the output
variables from the module.

I read through the conventions and fixed things to work as best as
I understood things.  I also switched to supporting COMPONENTS
and OPTIONAL_COMPONENTS for all the separate libraries.

 3. There is a lot of hard-coded version-specific information
that will require constant maintenance and new releases
of CMake as the upstream versions change.  This is not
maintainable, and is one reason the package configuration
file approach linked above is much preferred to a Find
module.  Are there Windows Registry entries available
that specify the install location?

I have reworked this so that it loops through all the variants
which are compatible with the generator in use, plus fallbacks.
The disadvantage is that this now means that on Windows you
won't get an outright failure if the visual studio version
mismatches with the detected libraries whereas the previous
approach hardcoded all that knowledge.  That said, it's a
whole lot more flexible and maintainable this way and so is an
acceptable tradeoff.

Regarding the Windows Registry, I've taken a look and it looks
like there might be some usable keys from the installer which
could be used, but I'll need to do further digging with all
the different versions to see what's most usable here.

 4. Rather than repeatedly testing CMAKE_SIZEOF_VOID_P,
save the /x64 suffix in a ${_x64} variable.

Also fixed now.

If you had any further comments on the attached revision, I'll
be happy to make any further changes as needed, and as noted
above I'll also look at the registry stuff.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 e9c1ce9a8df62904e69ac687b6e0ed4f4aa769f8 Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 461 
 3 files changed, 

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-12 Thread Roger Leigh
On Tue, Aug 12, 2014 at 09:08:57PM +0100, Roger Leigh wrote:
 On Mon, Aug 11, 2014 at 11:07:57AM -0400, Brad King wrote:
  On 08/08/2014 08:56 AM, Roger Leigh wrote:
   On Thu, Aug 07, 2014 at 06:49:28PM +0100, Roger Leigh wrote:
 
  3. There is a lot of hard-coded version-specific information
 that will require constant maintenance and new releases
 of CMake as the upstream versions change.  This is not
 maintainable, and is one reason the package configuration
 file approach linked above is much preferred to a Find
 module.  Are there Windows Registry entries available
 that specify the install location?
 
 I have reworked this so that it loops through all the variants
 which are compatible with the generator in use, plus fallbacks.
 The disadvantage is that this now means that on Windows you
 won't get an outright failure if the visual studio version
 mismatches with the detected libraries whereas the previous
 approach hardcoded all that knowledge.  That said, it's a
 whole lot more flexible and maintainable this way and so is an
 acceptable tradeoff.
 
 Regarding the Windows Registry, I've taken a look and it looks
 like there might be some usable keys from the installer which
 could be used, but I'll need to do further digging with all
 the different versions to see what's most usable here.

This turned out to be fairly simple at least for Ice versions
3.4.0 - 3.5.1, which all have the same naming convention.
Earlier versions have odd naming conventions and are in
Wow6432Node so I've not included them (they are obsolete in
any case, and ICE_HOME can be set to use them).

I've attached an updated copy which now includes using the
registry.  Happy to make any further improvements if needed.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 3464e856d09de090a17ca7d8ce3e35b3caff4746 Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 443 
 3 files changed, 445 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..2930e2d
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,443 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]   # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED]  # Fail with error if Ice is not found
+# [COMPONENTS libs...]) # Ice libraries by their name
+#
+# Components can include any of: Freeze Glacier2 Ice IceBox IceDB
+# IceGrid IcePatch IceSSL IceStorm IceUtil IceXML Slice.
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#   ICE_LIBRARIES - component libraries to be linked
+#   Ice_BINARY_DIR - the directory containing the Ice programs
+#   Ice_INCLUDE_DIR - the directory containing the Ice headers
+#   Ice_SLICE_DIR - the directory containing the Ice slice interface definitions
+#   Ice_LIBRARY_DIR - the directory containing the Ice libraries
+#
+# Ice programs are reported in::
+#
+#   Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+# 

Re: [cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-08 Thread Roger Leigh
On Thu, Aug 07, 2014 at 06:49:28PM +0100, Roger Leigh wrote:
 Hi,
 
 I've written a module for finding the details of a ZeroC ICE installation,
 attached, which I thought might be of interest to a wider audience and be
 suitable for direct inclusion into cmake.  I've attached the patch for this.
 The docs should be correct, but I'm not yet totally familiar with the cmake
 docs build, so it might possibly need some minor tweaking.

I have added a few portability and documentation fixes.  Updated copy
attached.


-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 b0fefe8ad8206a6f6524aad0a9f2434faf6c80fb Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 534 
 3 files changed, 536 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..b41ab71
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,534 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]  # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED])# Fail with error if Ice is not found
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#
+# Ice programs are reported in::
+#
+#   SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+#   SLICE2HTML_EXECUTABLE - path to slice2html executable
+#   SLICE2JAVA_EXECUTABLE - path to slice2java executable
+#   SLICE2PHP_EXECUTABLE - path to slice2php executable
+#   SLICE2PY_EXECUTABLE - path to slice2py executable
+#   SLICE2RB_EXECUTABLE - path to slice2rb executable
+#
+# Ice libraries are reported in::
+#
+#   FREEZE_LIBRARY - Freeze library
+#   GLACIER2_LIBRARY - Glacier2 library
+#   ICE_LIBRARY - Ice library
+#   ICEBOX_LIBRARY - IceBox library
+#   ICEDB_LIBRARY - IceDB library
+#   ICEGRID_LIBRARY - IceGrid library
+#   ICEPATCH2_LIBRARY - IcePatch library
+#   ICESSL_LIBRARY - IceSSL library
+#   ICESTORM_LIBRARY - IceStorm library
+#   ICEUTIL_LIBRARY - IceUtil library
+#   ICEXML_LIBRARY - IceXML library
+#   SLICE_LIBRARY - Slice library
+#
+# Ice directories for C++ programs, includes and slice includes and libraries
+# are reported in::
+#
+#   ICE_BINARY_DIR - the directory containing the Ice programs
+#   ICE_INCLUDE_DIR - the directory containing the Ice headers
+#   ICE_SLICE_DIR - the directory containing the Ice slice interface definitions
+#   ICE_LIBRARY_DIR - the directory containing the Ice libraries
+#
+# This module reads hints about search results from variables::
+#
+#   ICE_HOME - the root of the Ice installation
+#   ICE_BINARY_DIR - the directory containing the Ice programs
+#   ICE_INCLUDE_DIR - the directory containing the Ice headers
+#   ICE_SLICE_DIR - the directory containing the Ice slice interface definitions
+#   ICE_LIBRARY_DIR - the directory containing the Ice libraries
+#
+# The environment variable :envvar:`ICE_HOME` may also be used, unless
+# overridden by setting the ICE_HOME variable.
+#
+# .. note::
+#
+#   These variables are not all required to be set, and in most cases
+#   will not 

[cmake-developers] [PATCH] New module: FindIce.cmake

2014-08-07 Thread Roger Leigh
Hi,

I've written a module for finding the details of a ZeroC ICE installation,
attached, which I thought might be of interest to a wider audience and be
suitable for direct inclusion into cmake.  I've attached the patch for this.
The docs should be correct, but I'm not yet totally familiar with the cmake
docs build, so it might possibly need some minor tweaking.


Kind regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linuxhttp://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 d797fef2c883b5fc9e6d19267b21c4f818befe50 Mon Sep 17 00:00:00 2001
From: Roger Leigh r.le...@dundee.ac.uk
Date: Thu, 7 Aug 2014 18:37:36 +0100
Subject: [PATCH] FindIce: New module to find ZeroC Ice

- autodetects Ice on all major platforms
- allows building with all supported Visual Studio versions on Windows
- autodetects the slice path on most platforms
- separately detects the Ice programs, headers, slice files and
  libraries so that any Ice configuration or installation errors can
  be accurately reported, making diagnosis of Ice problems simpler
---
 Help/manual/cmake-modules.7.rst |   1 +
 Help/module/FindIce.rst |   1 +
 Modules/FindIce.cmake   | 507 
 3 files changed, 509 insertions(+)
 create mode 100644 Help/module/FindIce.rst
 create mode 100644 Modules/FindIce.cmake

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 91fffe9..737057c 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -114,6 +114,7 @@ All Modules
/module/FindHg
/module/FindHSPELL
/module/FindHTMLHelp
+   /module/FindIce
/module/FindIcotool
/module/FindImageMagick
/module/FindITK
diff --git a/Help/module/FindIce.rst b/Help/module/FindIce.rst
new file mode 100644
index 000..3af9405
--- /dev/null
+++ b/Help/module/FindIce.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIce.cmake
diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake
new file mode 100644
index 000..f42b4ee
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,507 @@
+#.rst:
+# FindIce
+# ---
+#
+# Find the ZeroC Internet Communication Engine (ICE) programs,
+# libraries and datafiles.
+#
+# Use this module by invoking find_package with the form::
+#
+#   find_package(Ice
+# [version] [EXACT]  # Minimum or EXACT version e.g. 3.5.1
+# [REQUIRED] # Fail with error if Ice is not found
+#
+# This module reports information about the Ice installation in
+# several variables.  General variables::
+#
+#   Ice_VERSION - Ice release version
+#   Ice_FOUND - true if the main programs and libraries were found
+#
+# Ice programs are reported in::
+#
+#   SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+#   SLICE2CS_EXECUTABLE - path to slice2cs executable
+#   SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+#   SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+#   SLICE2HTML_EXECUTABLE - path to slice2html executable
+#   SLICE2JAVA_EXECUTABLE - path to slice2java executable
+#   SLICE2PHP_EXECUTABLE - path to slice2php executable
+#   SLICE2PY_EXECUTABLE - path to slice2py executable
+#   SLICE2RB_EXECUTABLE - path to slice2rb executable
+#
+# Ice libraries are reported in::
+#
+#   FREEZE_LIBRARY - Freeze library
+#   GLACIER2_LIBRARY - Glacier2 library
+#   ICE_LIBRARY - Ice library
+#   ICEBOX_LIBRARY - IceBox library
+#   ICEDB_LIBRARY - IceDB library
+#   ICEGRID_LIBRARY - IceGrid library
+#   ICEPATCH2_LIBRARY - IcePatch library
+#   ICESSL_LIBRARY - IceSSL library
+#   ICESTORM_LIBRARY - IceStorm library
+#   ICEUTIL_LIBRARY - IceUtil library
+#   ICEXML_LIBRARY - IceXML library
+#   SLICE_LIBRARY - Slice library
+#
+# Ice directories for C++ includes and slice includes are reported
+# in::
+#
+#   ICE_BINARY_DIR - the directory containing the Ice programs
+#   ICE_INCLUDE_DIR - the directory containing the Ice headers
+#   ICE_SLICE_DIR - the directory containing the Ice slice interface definitions
+#   ICE_LIBRARY_DIR - the directory containing the Ice libraries
+#
+# This module reads hints about search results from variables::
+#
+#   ICE_HOME - the root of the Ice installation
+#   ICE_BINARY_DIR - the directory containing the Ice programs
+#   ICE_INCLUDE_DIR - the directory containing the Ice headers
+#   ICE_SLICE_DIR - the directory containing the Ice slice interface definitions
+#   ICE_LIBRARY_DIR - the directory containing the Ice libraries
+#
+# The environment variable :envvar:`ICE_HOME` may also be used, unless
+# overridden by setting the ICE_HOME variable.
+#
+# .. note::
+#
+#   These variables are not all required to be set, and in most cases
+#   will not require setting at all unless multiple Ice versions are
+#   available and a specific version is required.  On Windows,
+#   ICE_HOME is usually sufficient