summaryrefslogtreecommitdiff
path: root/cmake/Modules/FindICE.cmake
blob: 86a812de544b36fe11c3047c8986fbf5b2faccf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# Override the search path for ICE; useful for manually installed libs.
#    set(ICE_MANUAL_INSTALL_PATH /opt/Ice-3.4.2/)

FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_ICE Ice-3.4 QUIET)

if(NOT ICE_FOUND)
  # Maybe we don't have a .pc file for Ice. Check for Config.h. If
  # that exists, get the version string and parse it for the proper
  # version.
  FIND_PATH(
    ICE_CONFIG_INCLUDE_DIR 
    NAMES IceUtil/Config.h
    HINTS ${CMAKE_INSTALL_PREFIX}/${HEADER_DIR} ${ICE_MANUAL_INSTALL_PATH}/include/
    )
  if(ICE_CONFIG_INCLUDE_DIR)
    file(STRINGS "${ICE_CONFIG_INCLUDE_DIR}/IceUtil/Config.h"
      ICE_STRING_VERSION REGEX "ICE_STRING_VERSION")
    string(REGEX MATCH "3.4" ICE_FOUND ${ICE_STRING_VERSION})
    if(ICE_FOUND)
      set(ICE_FOUND TRUE)
    endif(ICE_FOUND)
  endif(ICE_CONFIG_INCLUDE_DIR)
endif(NOT ICE_FOUND)

if(NOT ICE_FOUND)
  message(STATUS "  package 'Ice-3.4' not found")
endif(NOT ICE_FOUND)


# Recheck if we found the right version of ICE and proceed if true.
if(ICE_FOUND)

FIND_PATH(
    ICE_INCLUDE_DIR 
    NAMES IceUtil/IceUtil.h Ice/Ice.h IceStorm/IceStorm.h icestorm_publisher_template.h 
    HINTS ${CMAKE_INSTALL_PREFIX}/${HEADER_DIR} ${ICE_MANUAL_INSTALL_PATH}/include/
)

set(ICE_LIBRARY )

FIND_LIBRARY(
    ICE_ICESTORM IceStorm 
    PATHS ENV LD_LIBRARY_PATH 
    HINTS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
          ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
)

FIND_LIBRARY(
  ICE_ICESTORM IceStorm
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
        ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
  ENV LD_LIBRARY_PATH
)
FIND_LIBRARY(
  ICE_ICE Ice
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
        ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
  ENV LD_LIBRARY_PATH
)
FIND_LIBRARY(
  ICE_ICEGRID IceGrid
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
        ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
  ENV LD_LIBRARY_PATH
)
FIND_LIBRARY(
  ICE_ICEUTIL IceUtil
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
        ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
  ENV LD_LIBRARY_PATH
)
FIND_LIBRARY(
  ICE_GLACIER2 Glacier2
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
        ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
  ENV LD_LIBRARY_PATH
)

if(APPLE)
  FIND_LIBRARY(
    ICE_ZEROCICE ZeroCIce
    PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
    PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS}
          ${ICE_MANUAL_INSTALL_PATH}/lib64/ ${ICE_MANUAL_INSTALL_PATH}/lib/
    ENV LD_LIBRARY_PATH
    )
endif(APPLE)

FIND_LIBRARY(
  ICE_PTHREAD NAMES pthread pthread-2.13
  PATHS HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/
  PATHS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS} /lib/i386-linux-gnu
        /lib/x86_64-linux-gnu /usr/lib /lib /lib64
  ENV LD_LIBRARY_PATH
)

set(ICE_FOUND FALSE)

if(ICE_ICE OR ICE_ZEROCICE)
  if(ICE_ICEUTIL)

    list(APPEND ICE_LIBRARY
      ${ICE_ICE}
      ${ICE_ZEROCICE}
      ${ICE_ICEUTIL}
      )

    FIND_PROGRAM(ICE_SLICE2CPP slice2cpp
      HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/)
    FIND_PROGRAM(ICE_SLICE2PY slice2py
      HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/)

    # Check that the ICE Python package is installed
    GR_PYTHON_CHECK_MODULE("Ice >= 3.4" Ice "Ice.stringVersion() >= '3.4.0'" PYTHON_ICE_FOUND)
    if(PYTHON_ICE_FOUND)
      set(ICE_FOUND TRUE)
    endif(PYTHON_ICE_FOUND)

    if(ICE_FOUND)
      message(STATUS "Ice-3.4 found")

      set(ICE_LIBRARIES ${ICE_LIBRARY})
      set(ICE_INCLUDE_DIRS ${ICE_INCLUDE_DIR})

      include(FindPackageHandleStandardArgs)
      find_package_handle_standard_args(ICE DEFAULT_MSG ICE_LIBRARY ICE_INCLUDE_DIR)
      mark_as_advanced(ICE_INCLUDE_DIR ICE_LIBRARY)
    endif(ICE_FOUND)
  endif(ICE_ICEUTIL)
endif(ICE_ICE OR ICE_ZEROCICE)

endif(ICE_FOUND)