| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| # file Copyright.txt or https://cmake.org/licensing for details. |
| |
| #[=======================================================================[.rst: |
| FindIce |
| ------- |
| |
| .. versionadded:: 3.1 |
| |
| Find the ZeroC Internet Communication Engine (ICE) programs, |
| libraries and datafiles. |
| |
| This module supports multiple components. |
| Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``, |
| ``IceBox``, ``IceDB``, ``IceDiscovery``, ``IceGrid``, |
| ``IceLocatorDiscovery``, ``IcePatch``, ``IceSSL``, ``IceStorm``, |
| ``IceUtil``, ``IceXML``, or ``Slice``. |
| |
| Ice 3.7 and later also include C++11-specific components: |
| ``Glacier2++11``, ``Ice++11``, ``IceBox++11``, ``IceDiscovery++11`` |
| ``IceGrid``, ``IceLocatorDiscovery++11``, ``IceSSL++11``, |
| ``IceStorm++11`` |
| |
| Note that the set of supported components is Ice version-specific. |
| |
| .. versionadded:: 3.4 |
| Imported targets for components and most ``EXECUTABLE`` variables. |
| |
| .. versionadded:: 3.7 |
| Debug and Release variants are found separately. |
| |
| .. versionadded:: 3.10 |
| Ice 3.7 support, including new components, programs and the Nuget package. |
| |
| 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 |
| |
| Imported targets:: |
| |
| Ice::<C> |
| |
| Where ``<C>`` is the name of an Ice component, for example |
| ``Ice::Glacier2`` or ``Ice++11``. |
| |
| Ice slice programs are reported in:: |
| |
| Ice_SLICE2CONFLUENCE_EXECUTABLE - path to slice2confluence executable |
| 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_SLICE2JS_EXECUTABLE - path to slice2js executable |
| Ice_SLICE2MATLAB_EXECUTABLE - path to slice2matlab executable |
| Ice_SLICE2OBJC_EXECUTABLE - path to slice2objc executable |
| Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable |
| Ice_SLICE2PY_EXECUTABLE - path to slice2py executable |
| Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable |
| |
| .. versionadded:: 3.14 |
| Variables for ``slice2confluence`` and ``slice2matlab``. |
| |
| Ice programs are reported in:: |
| |
| Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable |
| Ice_ICEBOX_EXECUTABLE - path to icebox executable |
| Ice_ICEBOXXX11_EXECUTABLE - path to icebox++11 executable |
| Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable |
| Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable |
| Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable |
| Ice_ICEBRIDGE_EXECUTABLE - path to icebridge executable |
| Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable |
| Ice_ICEGRIDDB_EXECUTABLE - path to icegriddb executable |
| Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable |
| Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable |
| Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable |
| Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable |
| Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable |
| Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable |
| Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable |
| Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable |
| Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable |
| Ice_ICESTORMDB_EXECUTABLE - path to icestormdb executable |
| Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable |
| |
| Ice db programs (Windows only; standard system versions on all other |
| platforms) are reported in:: |
| |
| Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable |
| Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable |
| Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable |
| Ice_DB_DUMP_EXECUTABLE - path to db_dump executable |
| Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable |
| Ice_DB_LOAD_EXECUTABLE - path to db_load executable |
| Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable |
| Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable |
| Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable |
| Ice_DB_STAT_EXECUTABLE - path to db_stat executable |
| Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable |
| Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable |
| Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable |
| Ice_DUMPDB_EXECUTABLE - path to dumpdb executable |
| Ice_TRANSFORMDB_EXECUTABLE - path to transformdb 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 ``ICE_HOME`` may also be used; the |
| Ice_HOME variable takes precedence. |
| |
| .. note:: |
| On Windows, Ice 3.7.0 and later provide libraries via the NuGet |
| package manager. Appropriate NuGet packages will be searched for |
| using ``CMAKE_PREFIX_PATH``, or alternatively ``Ice_HOME`` may be |
| set to the location of a specific NuGet package to restrict the |
| search. |
| |
| 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 Ice_SLICE_DIRS |
| 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 <rleigh@codelibre.net> |
| |
| set(_Ice_db_programs |
| db_archive |
| db_checkpoint |
| db_deadlock |
| db_dump |
| db_hotbackup |
| db_load |
| db_log_verify |
| db_printlog |
| db_recover |
| db_stat |
| db_tuner |
| db_upgrade |
| db_verify |
| dumpdb |
| transformdb) |
| |
| set(_Ice_programs |
| glacier2router |
| icebox |
| icebox++11 |
| iceboxadmin |
| iceboxd |
| iceboxnet |
| icebridge |
| icegridadmin |
| icegriddb |
| icegridnode |
| icegridnoded |
| icegridregistry |
| icegridregistryd |
| icepatch2calc |
| icepatch2client |
| icepatch2server |
| iceserviceinstall |
| icestormadmin |
| icestormdb |
| icestormmigrate) |
| |
| set(_Ice_slice_programs |
| slice2confluence |
| slice2cpp |
| slice2cs |
| slice2freezej |
| slice2freeze |
| slice2html |
| slice2java |
| slice2js |
| slice2matlab |
| slice2objc |
| slice2php |
| slice2py |
| slice2rb) |
| |
| |
| # The Ice checks are contained in a function due to the large number |
| # of temporary variables needed. |
| function(_Ice_FIND) |
| # Released versions of Ice, including generic short forms |
| set(ice_versions |
| 3 |
| 3.7 |
| 3.7.0 |
| 3.6 |
| 3.6.3 |
| 3.6.2 |
| 3.6.1 |
| 3.6.0 |
| 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) |
| |
| foreach(ver ${ice_versions}) |
| string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\$" two_digit_version_match "${ver}") |
| if(two_digit_version_match) |
| string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\$" "\\1\\2" two_digit_version "${ver}") |
| list(APPEND ice_suffix_versions "${two_digit_version}") |
| endif() |
| endforeach() |
| |
| # 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() |
| if(NOT "$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() |
| endif() |
| |
| set(_bin "bin/Win32") |
| set(_lib "lib/Win32") |
| if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| set(_bin "bin/x64") |
| set(_lib "lib/x64") |
| # 64-bit path suffix |
| set(_x64 "/x64") |
| # 64-bit library directory |
| set(_lib64 "lib64") |
| endif() |
| |
| unset(vcvers) |
| if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC") |
| if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141) |
| set(vcvers "141;140") |
| elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 100) |
| set(vcvers "${MSVC_TOOLSET_VERSION}") |
| elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 90) |
| set(vcvers "${MSVC_TOOLSET_VERSION}") |
| set(vcyear "2008") |
| elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80) |
| set(vcvers "${MSVC_TOOLSET_VERSION}") |
| set(vcyear "2005") |
| else() # Unknown version |
| set(vcvers Unknown) |
| endif() |
| endif() |
| |
| # For compatibility with ZeroC Windows builds. |
| if(vcvers) |
| list(APPEND ice_binary_suffixes "build/native/${_bin}/Release" "tools") |
| list(APPEND ice_debug_library_suffixes "build/native/${_lib}/Debug") |
| list(APPEND ice_release_library_suffixes "build/native/${_lib}/Release") |
| foreach(vcver IN LISTS vcvers) |
| # Earlier Ice (3.3) builds don't use vcnnn subdirectories, but are harmless to check. |
| list(APPEND ice_binary_suffixes "bin/vc${vcver}${_x64}" "bin/vc${vcver}") |
| list(APPEND ice_debug_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}") |
| list(APPEND ice_release_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}") |
| endforeach() |
| endif() |
| # Generic 64-bit and 32-bit directories |
| list(APPEND ice_binary_suffixes "bin${_x64}" "bin") |
| list(APPEND ice_debug_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib") |
| list(APPEND ice_release_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib") |
| if(vcvers) |
| list(APPEND ice_include_suffixes "build/native/include") |
| endif() |
| 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(vcvers) |
| foreach(ice_version ${ice_versions}) |
| foreach(vcver IN LISTS vcvers) |
| list(APPEND ice_nuget_dirs "zeroc.ice.v${vcver}.${ice_version}") |
| list(APPEND freeze_nuget_dirs "zeroc.freeze.v${vcver}.${ice_version}") |
| endforeach() |
| endforeach() |
| find_path(Ice_NUGET_DIR |
| NAMES "tools/slice2cpp.exe" |
| PATH_SUFFIXES ${ice_nuget_dirs} |
| DOC "Ice NuGet directory") |
| if(Ice_NUGET_DIR) |
| list(APPEND ice_roots "${Ice_NUGET_DIR}") |
| endif() |
| find_path(Freeze_NUGET_DIR |
| NAMES "tools/slice2freeze.exe" |
| PATH_SUFFIXES ${freeze_nuget_dirs} |
| DOC "Freeze NuGet directory") |
| if(Freeze_NUGET_DIR) |
| list(APPEND ice_roots "${Freeze_NUGET_DIR}") |
| endif() |
| 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() |
| unset(ice_location) |
| endif() |
| endif() |
| # 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() |
| |
| if(ice_location AND NOT "${ice_location}" STREQUAL "/registry") |
| list(APPEND ice_roots "${ice_location}") |
| endif() |
| endforeach() |
| else() |
| 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() |
| endif() |
| |
| # Find all Ice programs |
| foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_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) |
| endforeach() |
| |
| # 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() |
| |
| if(NOT Ice_FIND_QUIETLY) |
| message(STATUS "Ice version: ${Ice_VERSION_SLICE2CPP_FULL}") |
| endif() |
| |
| # 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) |
| |
| find_path(Freeze_INCLUDE_DIR |
| NAMES "Freeze/Freeze.h" |
| HINTS ${ice_roots} |
| PATH_SUFFIXES ${ice_include_suffixes} |
| DOC "Freeze include directory") |
| set(Freeze_INCLUDE_DIR "${Freeze_INCLUDE_DIR}" PARENT_SCOPE) |
| |
| # In common use on Linux, MacOS X (homebrew) and FreeBSD; 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" |
| "ice/slice" |
| Ice) |
| |
| # 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_REQUIRED_LIBS_FOUND ON) |
| foreach(component ${Ice_FIND_COMPONENTS}) |
| string(TOUPPER "${component}" component_upcase) |
| set(component_cache "Ice_${component_upcase}_LIBRARY") |
| set(component_cache_release "${component_cache}_RELEASE") |
| set(component_cache_debug "${component_cache}_DEBUG") |
| set(component_found "${component_upcase}_FOUND") |
| set(component_library "${component}") |
| unset(component_library_release_names) |
| unset(component_library_debug_names) |
| if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC") |
| string(REGEX MATCH ".+\\+\\+11$" component_library_cpp11 "${component_library}") |
| if(component_library_cpp11) |
| string(REGEX REPLACE "^(.+)(\\+\\+11)$" "\\1" component_library "${component_library}") |
| endif() |
| foreach(suffix_ver ${ice_suffix_versions}) |
| set(_name "${component_library}${suffix_ver}") |
| if(component_library_cpp11) |
| string(APPEND _name "++11") |
| endif() |
| list(APPEND component_library_debug_names "${_name}d") |
| list(APPEND component_library_release_names "${_name}") |
| endforeach() |
| set(_name "${component_library}") |
| if(component_library_cpp11) |
| string(APPEND _name "++11") |
| endif() |
| list(APPEND component_library_debug_names "${_name}d") |
| list(APPEND component_library_release_names "${_name}") |
| else() |
| list(APPEND component_library_debug_names "${component_library}d") |
| list(APPEND component_library_release_names "${component_library}") |
| endif() |
| find_library("${component_cache_release}" ${component_library_release_names} |
| HINTS ${ice_roots} |
| PATH_SUFFIXES ${ice_release_library_suffixes} |
| DOC "Ice ${component} library (release)") |
| find_library("${component_cache_debug}" ${component_library_debug_names} |
| HINTS ${ice_roots} |
| PATH_SUFFIXES ${ice_debug_library_suffixes} |
| DOC "Ice ${component} library (debug)") |
| include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) |
| select_library_configurations(Ice_${component_upcase}) |
| mark_as_advanced("${component_cache_release}" "${component_cache_debug}") |
| if(${component_cache}) |
| set("${component_found}" ON) |
| list(APPEND Ice_LIBRARY "${${component_cache}}") |
| endif() |
| mark_as_advanced("${component_found}") |
| set("${component_cache}" "${${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() |
| list(APPEND Ice_LIBS_FOUND "${component} (optional)") |
| endif() |
| else() |
| if (Ice_FIND_REQUIRED_${component}) |
| set(Ice_REQUIRED_LIBS_FOUND OFF) |
| list(APPEND Ice_LIBS_NOTFOUND "${component} (required)") |
| else() |
| list(APPEND Ice_LIBS_NOTFOUND "${component} (optional)") |
| endif() |
| endif() |
| endforeach() |
| set(_Ice_REQUIRED_LIBS_FOUND "${Ice_REQUIRED_LIBS_FOUND}" PARENT_SCOPE) |
| set(Ice_LIBRARY "${Ice_LIBRARY}" PARENT_SCOPE) |
| |
| if(NOT Ice_FIND_QUIETLY) |
| if(Ice_LIBS_FOUND) |
| message(STATUS "Found the following Ice libraries:") |
| foreach(found ${Ice_LIBS_FOUND}) |
| message(STATUS " ${found}") |
| endforeach() |
| endif() |
| if(Ice_LIBS_NOTFOUND) |
| message(STATUS "The following Ice libraries were not found:") |
| foreach(notfound ${Ice_LIBS_NOTFOUND}) |
| message(STATUS " ${notfound}") |
| endforeach() |
| endif() |
| endif() |
| |
| if(Ice_DEBUG) |
| message(STATUS "--------FindIce.cmake search debug--------") |
| message(STATUS "ICE binary path search order: ${ice_roots}") |
| message(STATUS "ICE binary suffixes: ${ice_binary_suffixes}") |
| message(STATUS "ICE include path search order: ${ice_roots}") |
| message(STATUS "ICE include suffixes: ${ice_include_suffixes}") |
| message(STATUS "ICE slice path search order: ${ice_roots} ${ice_slice_paths}") |
| message(STATUS "ICE slice suffixes: ${ice_slice_suffixes}") |
| message(STATUS "ICE library path search order: ${ice_roots}") |
| message(STATUS "ICE debug library suffixes: ${ice_debug_library_suffixes}") |
| message(STATUS "ICE release library suffixes: ${ice_release_library_suffixes}") |
| message(STATUS "----------------") |
| endif() |
| endfunction() |
| |
| _Ice_FIND() |
| |
| include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) |
| FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ice |
| FOUND_VAR Ice_FOUND |
| REQUIRED_VARS Ice_SLICE2CPP_EXECUTABLE |
| Ice_INCLUDE_DIR |
| Ice_SLICE_DIR |
| Ice_LIBRARY |
| _Ice_REQUIRED_LIBS_FOUND |
| VERSION_VAR Ice_VERSION |
| FAIL_MESSAGE "Failed to find all Ice components") |
| |
| unset(_Ice_REQUIRED_LIBS_FOUND) |
| |
| if(Ice_FOUND) |
| set(Ice_INCLUDE_DIRS "${Ice_INCLUDE_DIR}") |
| if (Freeze_INCLUDE_DIR) |
| list(APPEND Ice_INCLUDE_DIRS "${Freeze_INCLUDE_DIR}") |
| endif() |
| set(Ice_SLICE_DIRS "${Ice_SLICE_DIR}") |
| set(Ice_LIBRARIES "${Ice_LIBRARY}") |
| foreach(_Ice_component ${Ice_FIND_COMPONENTS}) |
| string(TOUPPER "${_Ice_component}" _Ice_component_upcase) |
| set(_Ice_component_cache "Ice_${_Ice_component_upcase}_LIBRARY") |
| set(_Ice_component_cache_release "Ice_${_Ice_component_upcase}_LIBRARY_RELEASE") |
| set(_Ice_component_cache_debug "Ice_${_Ice_component_upcase}_LIBRARY_DEBUG") |
| set(_Ice_component_lib "Ice_${_Ice_component_upcase}_LIBRARIES") |
| set(_Ice_component_found "${_Ice_component_upcase}_FOUND") |
| set(_Ice_imported_target "Ice::${_Ice_component}") |
| if(${_Ice_component_found}) |
| set("${_Ice_component_lib}" "${${_Ice_component_cache}}") |
| if(NOT TARGET ${_Ice_imported_target}) |
| add_library(${_Ice_imported_target} UNKNOWN IMPORTED) |
| set_target_properties(${_Ice_imported_target} PROPERTIES |
| INTERFACE_INCLUDE_DIRECTORIES "${Ice_INCLUDE_DIRS}") |
| if(EXISTS "${${_Ice_component_cache}}") |
| set_target_properties(${_Ice_imported_target} PROPERTIES |
| IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |
| IMPORTED_LOCATION "${${_Ice_component_cache}}") |
| endif() |
| if(EXISTS "${${_Ice_component_cache_release}}") |
| set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY |
| IMPORTED_CONFIGURATIONS RELEASE) |
| set_target_properties(${_Ice_imported_target} PROPERTIES |
| IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" |
| IMPORTED_LOCATION_RELEASE "${${_Ice_component_cache_release}}") |
| endif() |
| if(EXISTS "${${_Ice_component_cache_debug}}") |
| set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY |
| IMPORTED_CONFIGURATIONS DEBUG) |
| set_target_properties(${_Ice_imported_target} PROPERTIES |
| IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" |
| IMPORTED_LOCATION_DEBUG "${${_Ice_component_cache_debug}}") |
| endif() |
| endif() |
| endif() |
| unset(_Ice_component_upcase) |
| unset(_Ice_component_cache) |
| unset(_Ice_component_lib) |
| unset(_Ice_component_found) |
| unset(_Ice_imported_target) |
| endforeach() |
| endif() |
| |
| 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_INCLUDE_DIR directory: ${Ice_INCLUDE_DIR}") |
| message(STATUS "Ice_SLICE_DIR directory: ${Ice_SLICE_DIR}") |
| message(STATUS "Ice_LIBRARIES: ${Ice_LIBRARIES}") |
| message(STATUS "Freeze_INCLUDE_DIR directory: ${Freeze_INCLUDE_DIR}") |
| message(STATUS "Ice_INCLUDE_DIRS directory: ${Ice_INCLUDE_DIRS}") |
| |
| foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_programs}) |
| string(TOUPPER "${program}" program_upcase) |
| message(STATUS "${program} executable: ${Ice_${program_upcase}_EXECUTABLE}") |
| endforeach() |
| |
| 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() |
| message(STATUS "----------------") |
| endif() |
| |
| unset(_Ice_db_programs) |
| unset(_Ice_programs) |
| unset(_Ice_slice_programs) |