File: FindCOIN.cmake

package info (click to toggle)
stopt 6.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,380 kB
  • sloc: cpp: 75,778; python: 6,012; makefile: 72; sh: 57
file content (140 lines) | stat: -rw-r--r-- 3,978 bytes parent folder | download
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
139
140
# modeled after FindCOIN.cmake in the lemon project

# Written by: Xavier Warin
# Last updated: 02/12/2015

# This cmake file is designed to locate coin-related
# dependencies on a filesystem. 
#
# If the coin dependencies were installed in a non-standard
# directory, e.g. installed from source perhaps, then
# the user can provide a prefix hint via the CLPOSI_ROOT_DIR
# cmake variable:
#       $> cmake ../src -DCLPOSI_ROOT_DIR=/path/to/coin/root

# To date, this install requires the following dev versions
# of the respective coin libraries:
##       * coinor-libClp-dev
#       * coinor-libcoinutils-dev
#       * coinor-libOsi-dev

#
# Get the root directory hint if provided
#
IF(NOT DEFINED COIN_ROOT_DIR)
    SET(COIN_ROOT_DIR "$ENV{COIN_ROOT_DIR}")
    MESSAGE("\tCOIN Root Dir: ${COIN_INCLUDE_DIR}")
ENDIF(NOT DEFINED COIN_ROOT_DIR)
MESSAGE(STATUS "COIN_ROOT_DIR hint is : ${COIN_ROOT_DIR}")

#
# Find the path based on a required header file 
#
MESSAGE(STATUS "Coin CLP multiple library dependency status:")
FIND_PATH(COIN_CLP_INCLUDE_DIR coin/ClpModel.hpp coin-or/ClpModel.hpp
  HINTS "${COIN_CLP_INCLUDE_DIR}"
  HINTS "${COIN_ROOT_DIR}/include"
  HINTS /usr/
  HINTS /usr/include/
  HINTS /usr/local/
  HINTS /usr/local/include/
  HINTS /usr/coin/
  HINTS /usr/local/coin/
)
IF (WIN32)
  set(COIN_CLP_INCLUDE_DIR ${COIN_CLP_INCLUDE_DIR}/coin-or)
ELSE()
  set(COIN_CLP_INCLUDE_DIR ${COIN_CLP_INCLUDE_DIR}/coin)
ENDIF()

MESSAGE("\tCLP Include Dir: ${COIN_CLP_INCLUDE_DIR}")

MESSAGE(STATUS "Coin UTILS multiple library dependency status:")
FIND_PATH(COIN_UTILS_INCLUDE_DIR coin/CoinModel.hpp coin-or/CoinModel.hpp
  HINTS "${COIN_UTILS_INCLUDE_DIR}"
  HINTS "${COIN_ROOT_DIR}/include"
  HINTS /usr/
  HINTS /usr/include/
  HINTS /usr/local/
  HINTS /usr/local/include/
  HINTS /usr/coin/
  HINTS /usr/local/coin/
  )
IF (WIN32)
  set(COIN_UTILS_INCLUDE_DIR ${COIN_UTILS_INCLUDE_DIR}/coin-or)
ELSE()
  set(COIN_UTILS_INCLUDE_DIR ${COIN_UTILS_INCLUDE_DIR}/coin)
ENDIF()

MESSAGE("\tUTILS Include Dir: ${COIN_UTILS_INCLUDE_DIR}")

MESSAGE(STATUS "Coin OSI multiple library dependency status:")
FIND_PATH(COIN_OSI_INCLUDE_DIR coin/OsiCuts.hpp coin-or/OsiCuts.hpp
  HINTS "${COIN_OSI_INCLUDE_DIR}"
  HINTS "${COIN_ROOT_DIR}/include"
  HINTS /usr/
  HINTS /usr/include/
  HINTS /usr/local/
  HINTS /usr/local/include/
  HINTS /usr/coin/
  HINTS /usr/local/coin/
)
IF (WIN32)
  set(COIN_OSI_INCLUDE_DIR ${COIN_OSI_INCLUDE_DIR}/coin-or)
ELSE()
  set(COIN_OSI_INCLUDE_DIR ${COIN_OSI_INCLUDE_DIR}/coin)
ENDIF()
MESSAGE("\tOSI Include Dir: ${COIN_OSI_INCLUDE_DIR}")

#
# Find all coin library dependencies
#
FIND_LIBRARY(COIN_CLP_LIBRARY
  NAMES Clp libClp #libClp.so.0
  HINTS ${COIN_CLP_INCLUDE_DIR}/../../lib/
  HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN CLP: ${COIN_CLP_LIBRARY}")

FIND_LIBRARY(COIN_UTILS_LIBRARY
  NAMES CoinUtils libCoinUtils #libCoinUtils.so.0
  HINTS ${COIN_UTILS_INCLUDE_DIR}/../../lib/
  HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN UTILS: ${COIN_UTILS_LIBRARY}")

FIND_LIBRARY(COIN_OSI_LIBRARY
  NAMES  Osi libOsi #libOsiClp.so.0
  HINTS ${COIN_OSI_INCLUDE_DIR}/../../lib/
  HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN OSI CLP: ${COIN_OSI_LIBRARY}")


INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(COIN DEFAULT_MSG
  COIN_CLP_INCLUDE_DIR
  COIN_UTILS_INCLUDE_DIR
  COIN_OSI_INCLUDE_DIR
  COIN_CLP_LIBRARY
  COIN_OSI_LIBRARY
  COIN_UTILS_LIBRARY
)

#
# Set all required cmake variables based on our findings
#
IF(COIN_FOUND)
  SET(COIN_INCLUDE_DIRS "${COIN_CLP_INCLUDE_DIR};${COIN_UTILS_INCLUDE_DIR};${COIN_OSI_INCLUDE_DIR}")
  SET(COIN_LIBRARIES "${COIN_UTILS_LIBRARY};${COIN_CLP_LIBRARY};${COIN_OSI_LIBRARY}")
ENDIF(COIN_FOUND)

#
# Report a synopsis of our findings
#
IF(COIN_INCLUDE_DIRS)
  MESSAGE(STATUS "Found COIN Include Dirs: ${COIN_INCLUDE_DIRS}")
  MESSAGE(STATUS "Found COIN libs : ${COIN_LIBRARIES}")
ELSE(COIN_INCLUDE_DIRS)
  MESSAGE(STATUS "COIN Include Dirs NOT FOUND")
ENDIF(COIN_INCLUDE_DIRS)