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/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 3464e856d09de090a17ca7d8ce3e35b3caff4746 Mon Sep 17 00:00:00 2001
From: Roger Leigh <[email protected]>
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 0000000..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 0000000..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
+#   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 library was found
+#   ICE_<C>_LIBRARY - component library
+#
+# This module reads hints about search results from variables::
+#
+#   ICE_HOME - the root of the Ice installation
+#   ICE_BINARYDIR - the directory containing the Ice programs
+#   ICE_INCLUDEDIR - the directory containing the Ice headers
+#   ICE_SLICEDIR - the directory containing the Ice slice interface definitions
+#   ICE_LIBRARYDIR - 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 since the package is contained in a
+#   single directory.  On Unix, the programs, headers and libraries
+#   will usually be in standard locations, but Ice_SLICE_DIR might not
+#   be automatically detected.  All the other variables are defaulted
+#   using ICE_HOME, if set.  It's possible to set ICE_HOME and
+#   selectively specify alternative locations for the other
+#   components; this might be required for e.g. newer versions of
+#   Visual Studio if the heuristics are not sufficient to identify the
+#   correct programs and libraries.
+#
+# Other variables one may set to control this module are::
+#
+#   ICE_DEBUG - Set to ON to enable debug output from FindIce.
+
+# Written by Roger Leigh <[email protected]>
+
+#=============================================================================
+# Copyright 2014 University of Dundee
+#
+# 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.)
+
+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)
+
+function(_Ice_FIND)
+  # Released versions of Ice, including generic short forms
+  set(ice_versions
+      3
+      3.5
+      3.5.1
+      3.5.0
+      3.4
+      3.4.2
+      3.4.1
+      3.4.0
+      3.3
+      3.3.1
+      3.3.0)
+
+  # Set up search paths, taking compiler into account.  Search ICE_HOME,
+  # with ICE_HOME in the environment as a fallback if unset.
+  if(ICE_HOME)
+    list(APPEND ice_roots "${ICE_HOME}")
+  else(ICE_HOME)
+    if("$ENV{ICE_HOME}" STREQUAL "")
+    else("$ENV{ICE_HOME}" STREQUAL "")
+      file(TO_CMAKE_PATH "$ENV{ICE_HOME}" NATIVE_PATH)
+      list(APPEND ice_roots "${NATIVE_PATH}")
+      set(ICE_HOME "${NATIVE_PATH}"
+          CACHE PATH "Location of the Ice installation" FORCE)
+    endif("$ENV{ICE_HOME}" STREQUAL "")
+  endif(ICE_HOME)
+
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    # 64-bit path suffix
+    set(_x64 "/x64")
+    # 64-bit library directory
+    set(_lib64 "lib64")
+  endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+
+  if(MSVC_VERSION)
+    # VS 8.0
+    if((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND MSVC_VERSION LESS 1500))
+      set(vcver vc80)
+    endif((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION GREATER 1400 AND MSVC_VERSION LESS 1500))
+    # VS 9.0
+    if((MSVC_VERSION EQUAL 1500) OR (MSVC_VERSION GREATER 1500 AND MSVC_VERSION LESS 1600))
+      set(vcver vc90)
+    endif((MSVC_VERSION EQUAL 1500) OR (MSVC_VERSION GREATER 1500 AND MSVC_VERSION LESS 1600))
+    # VS 10.0
+    if((MSVC_VERSION EQUAL 1600) OR (MSVC_VERSION GREATER 1600 AND MSVC_VERSION LESS 1700))
+      set(vcver vc100)
+    endif((MSVC_VERSION EQUAL 1600) OR (MSVC_VERSION GREATER 1600 AND MSVC_VERSION LESS 1700))
+    # VS 11.0
+    if((MSVC_VERSION EQUAL 1700) OR (MSVC_VERSION GREATER 1700 AND MSVC_VERSION LESS 1800))
+      set(vcver vc110)
+    endif((MSVC_VERSION EQUAL 1700) OR (MSVC_VERSION GREATER 1700 AND MSVC_VERSION LESS 1800))
+    # VS 12.0
+    if((MSVC_VERSION EQUAL 1800) OR (MSVC_VERSION GREATER 1800 AND MSVC_VERSION LESS 1900))
+      set(vcver vc120)
+    endif((MSVC_VERSION EQUAL 1800) OR (MSVC_VERSION GREATER 1800 AND MSVC_VERSION LESS 1900))
+    # VS 14.0
+    if((MSVC_VERSION EQUAL 1900) OR (MSVC_VERSION GREATER 1900 AND MSVC_VERSION LESS 2000))
+      set(vcver vc140)
+    endif((MSVC_VERSION EQUAL 1900) OR (MSVC_VERSION GREATER 1900 AND MSVC_VERSION LESS 2000))
+  endif(MSVC_VERSION)
+
+  foreach(root ${ice_roots})
+    # For compatibility with ZeroC Windows builds.
+    if(vcver)
+      # Versions prior to VS 10.0 don't use vcnnn subdirectories, but are harmless to check.
+      list(APPEND ice_binary_paths "${root}/bin/${vcver}${_x64}")
+      list(APPEND ice_library_paths "${root}/lib/${vcver}${_x64}")
+      list(APPEND ice_binary_paths "${root}/bin/${vcver}")
+      list(APPEND ice_library_paths "${root}/lib/${vcver}")
+    endif(vcver)
+    # Generic 64-bit directories
+    list(APPEND ice_binary_paths "${root}/bin${_x64}")
+    list(APPEND ice_library_paths "${root}/${_lib64}")
+    list(APPEND ice_library_paths "${root}/lib${_x64}")
+    # Generic 64-bit or 32-bit directories
+    list(APPEND ice_binary_paths "${root}/bin")
+    list(APPEND ice_include_paths "${root}/include")
+    # Common directories
+    list(APPEND ice_library_paths "${root}/lib")
+    list(APPEND ice_slice_paths "${root}/slice")
+  endforeach(root)
+
+  # On Windows, look in standard install locations.  Different versions
+  # of Ice install in different places and support different compiler
+  # versions.  Look only in the locations compatible with the compiler
+  # in use.  For newer versions which this hardcoded logic can't
+  # support, ICE_HOME and/or the other configuration options must be
+  # used, in which case the above logic will be used instead.
+  if(vcver)
+    foreach(ice_version ${ice_versions})
+      get_filename_component(ice_location
+                             "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version};InstallDir]"
+                             ABSOLUTE)
+      if(ice_location AND NOT "${ice_location}" STREQUAL "/registry")
+        # Search for version-specific Visual Studio builds before generic location
+        list(APPEND ice_binary_paths "${ice_location}/bin/${vcver}${_x64}")
+        list(APPEND ice_library_paths "${ice_location}/lib/${vcver}${_x64}")
+        list(APPEND ice_binary_paths "${ice_location}/bin/${vcver}")
+        list(APPEND ice_library_paths "${ice_location}/lib/${vcver}")
+        list(APPEND ice_binary_paths "${ice_location}/bin${_x64}")
+        list(APPEND ice_library_paths "${ice_location}/lib${_x64}")
+        list(APPEND ice_binary_paths "${ice_location}/bin")
+        list(APPEND ice_library_paths "${ice_location}/lib")
+        list(APPEND ice_include_paths "${ice_location}/include")
+        list(APPEND ice_slice_paths "${ice_location}/slice")
+      endif(ice_location AND NOT "${ice_location}" STREQUAL "/registry")
+    endforeach(ice_version)
+  else(vcver)
+    foreach(ice_version ${ice_versions})
+      # Prefer 64-bit variants if present (and using a 64-bit compiler)
+      list(APPEND ice_binary_paths  "/opt/Ice-${ice_version}/bin${_x64}")
+      list(APPEND ice_binary_paths  "/opt/Ice-${ice_version}/bin")
+      list(APPEND ice_library_paths "/opt/Ice-${ice_version}/lib${_x64}")
+      list(APPEND ice_library_paths "/opt/Ice-${ice_version}/${_lib64}")
+      list(APPEND ice_library_paths "/opt/Ice-${ice_version}/lib")
+      list(APPEND ice_include_paths "/opt/Ice-${ice_version}/include")
+      list(APPEND ice_slice_paths   "/opt/Ice-${ice_version}/slice")
+    endforeach(ice_version)
+  endif(vcver)
+
+  set(ice_programs
+      slice2cpp
+      slice2cs
+      slice2freezej
+      slice2freeze
+      slice2html
+      slice2java
+      slice2php
+      slice2py
+      slice2rb)
+
+  set(ice_libraries
+      Freeze
+      Glacier2
+      Ice
+      IceBox
+      IceDB
+      IceGrid
+      IcePatch2
+      IceSSL
+      IceStorm
+      IceUtil
+      IceXML
+      Slice)
+
+  # Find all Ice programs
+  foreach(program ${ice_programs})
+    string(TOUPPER "${program}" program_upcase)
+    set(program_var "Ice_${program_upcase}_EXECUTABLE")
+    find_program("${program_var}" "${program}"
+      PATHS "${ICE_BINARYDIR}"
+            ${ice_binary_paths}
+      DOC "Ice slice translator")
+    mark_as_advanced(program_var)
+    set("${program_var}" "${${program_var}}" PARENT_SCOPE)
+    if(NOT FOUND_ICE_BINARY_DIR)
+      get_filename_component(FOUND_ICE_BINARY_DIR "${${program_var}}" PATH)
+    endif(NOT FOUND_ICE_BINARY_DIR)
+  endforeach(program ${ice_programs})
+  set(Ice_BINARY_DIR "${FOUND_ICE_BINARY_DIR}" PARENT_SCOPE)
+
+  # Get version.
+  if(Ice_SLICE2CPP_EXECUTABLE)
+    # Execute in C locale for safety
+    set(_Ice_SAVED_LC_ALL "$ENV{LC_ALL}")
+    set(ENV{LC_ALL} C)
+
+    execute_process(COMMAND ${Ice_SLICE2CPP_EXECUTABLE} --version
+      ERROR_VARIABLE Ice_VERSION_SLICE2CPP_FULL
+      ERROR_STRIP_TRAILING_WHITESPACE)
+
+    # restore the previous LC_ALL
+    set(ENV{LC_ALL} ${_Ice_SAVED_LC_ALL})
+
+    # Make short version
+    string(REGEX REPLACE "^(.*)\\.[^.]*$" "\\1" Ice_VERSION_SLICE2CPP_SHORT "${Ice_VERSION_SLICE2CPP_FULL}")
+    set(_ICE_VERSION "${Ice_VERSION_SLICE2CPP_FULL}" PARENT_SCOPE)
+  endif(Ice_SLICE2CPP_EXECUTABLE)
+
+  message(STATUS "Ice version: ${Ice_VERSION_SLICE2CPP_FULL}")
+
+  # The following searches prefer the version found; note reverse
+  # order due to prepending.
+  if(NOT MSVC)
+    list(INSERT ice_slice_paths   0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice")
+    list(INSERT ice_include_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/include")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/lib")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/${_lib64}")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/lib${_x64}")
+    list(INSERT ice_binary_paths  0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/bin")
+    list(INSERT ice_binary_paths  0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}/bin${_x64}")
+
+    list(INSERT ice_slice_paths   0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice")
+    list(INSERT ice_include_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/include")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/lib")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/${_lib64}")
+    list(INSERT ice_library_paths 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/lib${_x64}")
+    list(INSERT ice_binary_paths  0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/bin")
+    list(INSERT ice_binary_paths  0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}/bin${_x64}")
+  endif(NOT MSVC)
+
+  # Find include directory
+  find_path(ICE_INCLUDE_DIR
+            NAMES "Ice/Ice.h"
+            PATHS  "${ICE_INCLUDEDIR}"
+                   ${ice_include_paths})
+  set(Ice_INCLUDE_DIR "${ICE_INCLUDE_DIR}" PARENT_SCOPE)
+
+  # In common use on Linux and MacOS X (homebrew); prefer version-specific dir
+  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")
+
+  # Find slice directory
+  find_path(ICE_SLICE_DIR
+            NAMES "Ice/Connection.ice"
+            PATHS "${ICE_SLICEDIR}"
+                  ${ice_slice_paths}
+            NO_DEFAULT_PATH)
+  set(Ice_SLICE_DIR "${ICE_SLICE_DIR}" PARENT_SCOPE)
+
+  # Find all Ice libraries
+  set(ICE_LIBS_ALLFOUND ON)
+  foreach(component ${Ice_FIND_COMPONENTS})
+    string(TOUPPER "${component}" component_upcase)
+    set(component_lib "${component_upcase}_LIBRARY")
+    set(component_found "${component_upcase}_FOUND")
+    find_library("${component_lib}" "${component}"
+      PATHS
+        "${ICE_LIBRARYDIR}"
+        ${ice_library_paths}
+      HINT
+        "${ICE_HOME}/lib"
+      DOC "Ice slice translator")
+    mark_as_advanced("${component_lib}")
+    if("${component_lib}")
+      set("${component_found}" ON)
+      list(APPEND ICE_LIBRARIES "${${component_lib}}")
+    endif("${component_lib}")
+    mark_as_advanced("${component_found}")
+    set("${component_found}" "${${component_found}}" PARENT_SCOPE)
+    if("${component_found}")
+      if ("Ice_FIND_REQUIRED_${component}")
+        list(APPEND ICE_LIBS_FOUND "${component} (required)")
+      else("Ice_FIND_REQUIRED_${component}")
+        list(APPEND ICE_LIBS_FOUND "${component} (optional)")
+      endif("Ice_FIND_REQUIRED_${component}")
+    else("${component_found}")
+      if ("Ice_FIND_REQUIRED_${component}")
+        set(ICE_LIBS_ALLFOUND OFF)
+        list(APPEND ICE_LIBS_NOTFOUND "${component} (required)")
+      else("Ice_FIND_REQUIRED_${component}")
+        list(APPEND ICE_LIBS_NOTFOUND "${component} (optional)")
+      endif("Ice_FIND_REQUIRED_${component}")
+    endif("${component_found}")
+    if(NOT FOUND_ICE_LIBRARY_DIR)
+      get_filename_component(FOUND_ICE_LIBRARY_DIR "${${component_lib}}" PATH)
+    endif(NOT FOUND_ICE_LIBRARY_DIR)
+  endforeach(component)
+  set(_ICE_LIBS_ALLFOUND "${ICE_LIBS_ALLFOUND}" PARENT_SCOPE)
+  set(Ice_LIBRARIES "${ICE_LIBRARIES}" PARENT_SCOPE)
+  set(Ice_LIBRARY_DIR "${FOUND_ICE_LIBRARY_DIR}" PARENT_SCOPE)
+
+  if(ICE_LIBS_FOUND)
+    message(STATUS "Found the following Ice libraries:")
+    foreach(found ${ICE_LIBS_FOUND})
+      message(STATUS "  ${found}")
+    endforeach(found)
+  endif(ICE_LIBS_FOUND)
+  if(ICE_LIBS_NOTFOUND)
+    message(STATUS "The following Ice libraries were not found:")
+    foreach(notfound ${ICE_LIBS_NOTFOUND})
+      message(STATUS "  ${notfound}")
+    endforeach(notfound)
+  endif(ICE_LIBS_NOTFOUND)
+
+  if(ICE_DEBUG)
+    message(STATUS "--------FindIce.cmake search debug--------")
+    message(STATUS "ICE binary path search order: ${ice_binary_paths}")
+    message(STATUS "ICE include path search order: ${ice_include_paths}")
+    message(STATUS "ICE slice path search order: ${ice_slice_paths}")
+    message(STATUS "ICE library path search order: ${ice_library_paths}")
+    message(STATUS "----------------")
+  endif(ICE_DEBUG)
+endfunction(_Ice_FIND)
+
+_Ice_FIND()
+
+if(ICE_DEBUG)
+  message(STATUS "--------FindIce.cmake results debug--------")
+  message(STATUS "ICE_VERSION number: ${_ICE_VERSION}")
+  message(STATUS "ICE_HOME directory: ${ICE_HOME}")
+  message(STATUS "Ice_BINARY_DIR directory: ${Ice_BINARY_DIR}")
+  message(STATUS "Ice_INCLUDE_DIR directory: ${Ice_INCLUDE_DIR}")
+  message(STATUS "Ice_SLICE_DIR directory: ${Ice_SLICE_DIR}")
+  message(STATUS "Ice_LIBRARY_DIR directory: ${Ice_LIBRARY_DIR}")
+  message(STATUS "Ice_LIBRARIES: ${Ice_LIBRARIES}")
+  message(STATUS "slice2cpp executable: ${Ice_SLICE2CPP_EXECUTABLE}")
+  message(STATUS "slice2cs executable: ${Ice_SLICE2CS_EXECUTABLE}")
+  message(STATUS "slice2freezej executable: ${Ice_SLICE2FREEZEJ_EXECUTABLE}")
+  message(STATUS "slice2freeze executable: ${Ice_SLICE2FREEZE_EXECUTABLE}")
+  message(STATUS "slice2html executable: ${Ice_SLICE2HTML_EXECUTABLE}")
+  message(STATUS "slice2java executable: ${Ice_SLICE2JAVA_EXECUTABLE}")
+  message(STATUS "slice2php executable: ${Ice_SLICE2PHP_EXECUTABLE}")
+  message(STATUS "slice2py executable: ${Ice_SLICE2PY_EXECUTABLE}")
+  message(STATUS "slice2rb executable: ${Ice_SLICE2RB_EXECUTABLE}")
+  foreach(component ${Ice_FIND_COMPONENTS})
+    string(TOUPPER "${component}" component_upcase)
+    set(component_lib "${component_upcase}_LIBRARY")
+    set(component_found "${component_upcase}_FOUND")
+    message(STATUS "${component} library found: ${${component_found}}")
+    message(STATUS "${component} library: ${${component_lib}}")
+  endforeach(component ${Ice_FIND_COMPONENTS})
+  message(STATUS "----------------")
+endif(ICE_DEBUG)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ice
+                                  REQUIRED_VARS Ice_SLICE2CPP_EXECUTABLE
+                                                Ice_INCLUDE_DIR
+                                                Ice_SLICE_DIR
+                                                _ICE_LIBS_ALLFOUND
+                                  VERSION_VAR _ICE_VERSION
+                                  FAIL_MESSAGE "Failed to find all Ice components")
+
+unset(_ICE_VERSION)
+unset(_ICE_LIBS_ALLFOUND)
-- 
1.9.4.msysgit.0

-- 

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