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/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 0ee1f79f060579e036e9158020c1650df6759d67 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           | 397 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 399 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..5371502
--- /dev/null
+++ b/Modules/FindIce.cmake
@@ -0,0 +1,397 @@
+#.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_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 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>_LIBRARIES - the libraries 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 Ice_SLICE_DIR
+#   might not be automatically detected (commonly known locations are
+#   searched).  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 for the specific Visual Studio version.
+#
+# 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.)
+
+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")
+      set(vcyear "2005")
+    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")
+      set(vcyear "2008")
+    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)
+
+  # For compatibility with ZeroC Windows builds.
+  if(vcver)
+    # Earlier Ice (3.3) builds don't use vcnnn subdirectories, but are harmless to check.
+    list(APPEND ice_binary_suffixes "bin/${vcver}${_x64}" "bin/${vcver}")
+    list(APPEND ice_library_suffixes "lib/${vcver}${_x64}" "lib/${vcver}")
+  endif(vcver)
+  # Generic 64-bit and 32-bit directories
+  list(APPEND ice_binary_suffixes "bin${_x64}" "bin")
+  list(APPEND ice_library_suffixes "${_lib64}" "lib${_x64}" "lib")
+  list(APPEND ice_include_suffixes "include")
+  list(APPEND ice_slice_suffixes "slice")
+
+  # On Windows, look in the registry for install locations.  Different
+  # versions of Ice install support different compiler versions.
+  if(vcver)
+    foreach(ice_version ${ice_versions})
+      # Ice 3.3 releases use a Visual Studio year suffix and value is
+      # enclosed in double quotes, though only the leading quote is
+      # returned by get_filename_component.
+      unset(ice_location)
+      if(vcyear)
+        get_filename_component(ice_location
+                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version} for Visual Studio ${vcyear};InstallDir]"
+                               PATH)
+        if(ice_location AND NOT ("${ice_location}" STREQUAL "/registry" OR "${ice_location}" STREQUAL "/"))
+          string(REGEX REPLACE "^\"(.*)\"?$" "\\1" ice_location "${ice_location}")
+          get_filename_component(ice_location "${ice_location}" ABSOLUTE)
+        else(ice_location AND NOT ("${ice_location}" STREQUAL "/registry" OR "${ice_location}" STREQUAL "/"))
+          unset(ice_location)
+        endif(ice_location AND NOT ("${ice_location}" STREQUAL "/registry" OR "${ice_location}" STREQUAL "/"))
+      endif(vcyear)
+      # Ice 3.4+ releases don't use a suffix
+      if(NOT ice_location OR "${ice_location}" STREQUAL "/registry")
+        get_filename_component(ice_location
+                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version};InstallDir]"
+                               ABSOLUTE)
+      endif(NOT ice_location OR "${ice_location}" STREQUAL "/registry")
+
+      if(ice_location AND NOT "${ice_location}" STREQUAL "/registry")
+        list(APPEND ice_roots "${ice_location}")
+      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_roots "/opt/Ice-${ice_version}")
+    endforeach(ice_version)
+  endif(vcver)
+
+  set(ice_programs
+      slice2cpp
+      slice2cs
+      slice2freezej
+      slice2freeze
+      slice2html
+      slice2java
+      slice2php
+      slice2py
+      slice2rb)
+
+  # Find all Ice programs
+  foreach(program ${ice_programs})
+    string(TOUPPER "${program}" program_upcase)
+    set(cache_var "ICE_${program_upcase}_EXECUTABLE")
+    set(program_var "Ice_${program_upcase}_EXECUTABLE")
+    find_program("${cache_var}" "${program}"
+      HINTS ${ice_roots}
+      PATH_SUFFIXES ${ice_binary_suffixes}
+      DOC "Ice ${program} executable")
+    mark_as_advanced(cache_var)
+    set("${program_var}" "${${cache_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_roots 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_SHORT}")
+    list(INSERT ice_roots 0 "/opt/Ice-${Ice_VERSION_SLICE2CPP_FULL}")
+  endif(NOT MSVC)
+
+  # Find include directory
+  find_path(ICE_INCLUDE_DIR
+            NAMES "Ice/Ice.h"
+            HINTS ${ice_roots}
+            PATH_SUFFIXES ${ice_include_suffixes}
+            DOC "Ice include directory")
+  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 /usr/share)
+  list(APPEND ice_slice_suffixes
+       "Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice"
+       "Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice")
+
+  # Find slice directory
+  find_path(ICE_SLICE_DIR
+            NAMES "Ice/Connection.ice"
+            HINTS ${ice_roots}
+                  ${ice_slice_paths}
+            PATH_SUFFIXES ${ice_slice_suffixes}
+            NO_DEFAULT_PATH
+            DOC "Ice slice directory")
+  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_cache "ICE_${component_upcase}_LIBRARIES")
+    set(component_lib "Ice_${component_upcase}_LIBRARIES")
+    set(component_found "${component_upcase}_FOUND")
+    find_library("${component_cache}" "${component}"
+      HINTS ${ice_roots}
+      PATH_SUFFIXES ${ice_library_suffixes}
+      DOC "Ice ${component} library")
+    mark_as_advanced("${component_cache}")
+    if("${component_cache}")
+      set("${component_found}" ON)
+      list(APPEND ICE_LIBRARIES "${${component_cache}}")
+    endif("${component_cache}")
+    mark_as_advanced("${component_found}")
+    set("${component_lib}" "${${component_cache}}" PARENT_SCOPE)
+    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_cache}}" 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_roots}")
+    message(STATUS "ICE include path search order: ${ice_roots}")
+    message(STATUS "ICE slice path search order: ${ice_roots} ${ice_slice_paths}")
+    message(STATUS "ICE library path search order: ${ice_roots}")
+    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 "Ice_${component_upcase}_LIBRARIES")
+    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