Salome HOME
Copyright update 2020
[tools/configuration.git] / cmake / FindCAS.cmake
1 # Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 IF(NOT CAS_FIND_QUIETLY)
21     MESSAGE(STATUS "Looking for Open CASCADE Technology ...")
22 ENDIF()
23
24 SET(_CAS_VERSION_FILE_NAME Standard_Version.hxx)
25
26 # Include directories:
27 FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATH_SUFFIXES include/opencascade)
28 FIND_FILE(CAS_VERSION_FILE ${_CAS_VERSION_FILE_NAME} PATH_SUFFIXES include/opencascade)
29 IF(CAS_INCLUDE_DIRS)
30   SET(CAS_UPCOUNT 2)
31 ELSE()
32   FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATH_SUFFIXES include inc)
33   FIND_FILE(CAS_VERSION_FILE ${_CAS_VERSION_FILE_NAME} PATH_SUFFIXES include inc)
34 ENDIF()
35 MARK_AS_ADVANCED(CAS_VERSION_FILE)
36
37 SET(CAS_VERSION_DEVELOPMENT 0)
38 IF(CAS_VERSION_FILE)
39   # Check if this is a development version:
40   FILE(STRINGS ${CAS_VERSION_FILE} CAS_VERSION_DEVELOPMENT_STR
41       REGEX "^ *#define OCC_VERSION_DEVELOPMENT")
42   IF(CAS_VERSION_DEVELOPMENT_STR)
43     SET(CAS_VERSION_DEVELOPMENT 1)
44   ENDIF(CAS_VERSION_DEVELOPMENT_STR)
45   
46   # Extract actual version number:
47   FILE(STRINGS ${CAS_VERSION_FILE} _tmp
48       REGEX "^ *#define OCC_VERSION_COMPLETE *\"[^\"]*\".*$")
49   STRING(REGEX REPLACE ".*\"([^\"]*)\".*" "\\1" CAS_VERSION_STR "${_tmp}")
50 ENDIF()
51
52 # Win specific stuff:
53 IF(WIN32)
54   IF(CMAKE_BUILD_TYPE STREQUAL Debug)
55     SET(CMAKE_LIBRARY_PATH ${CAS_ROOT_DIR}/win32/libd ${CAS_ROOT_DIR}/win64/lib/vc10)
56   ELSE()
57     SET(CMAKE_LIBRARY_PATH ${CAS_ROOT_DIR}/win32/lib ${CAS_ROOT_DIR}/win64/lib/vc10)
58   ENDIF()
59 ENDIF()
60
61 # Definitions:
62 SET(CAS_DEFINITIONS "-DLIN -DLINTEL -DCSFDB")
63 SET(CAS_DEFINITIONS "${CAS_DEFINITIONS} -DNo_exception")
64
65 # Check config.h file
66 FIND_FILE(CAS_CONFIG_H config.h PATHS ${CAS_INCLUDE_DIRS} NO_DEFAULT_PATH)
67 IF(CAS_CONFIG_H)
68  SET(CAS_DEFINITIONS "${CAS_DEFINITIONS} -DHAVE_CONFIG_H")
69 ENDIF()
70
71 SET(CAS_DEFINITIONS "${CAS_DEFINITIONS} -DOCC_CONVERT_SIGNALS")
72
73 # Test for 64 bit machine:
74 IF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
75   SET(CAS_DEFINITIONS "${CAS_DEFINITIONS} -D_OCC64")
76 ENDIF()
77
78 # Find Xmu library (X11 widgets?)
79 IF(NOT WIN32)
80   FIND_LIBRARY(CAS_Xmu Xmu)
81   IF(Xmu)
82     SET(CAS_LDPATH ${Xmu})
83   ENDIF()
84 ENDIF()
85
86 IF(CAS_VERSION_STR VERSION_LESS "7.0.1")
87   FIND_LIBRARY(CAS_FWOSPlugin FWOSPlugin PATH_SUFFIXES lib lin64/gcc/lib bin)
88 ELSE()
89   FIND_LIBRARY(CAS_TKStd TKStd PATH_SUFFIXES lib lin64/gcc/lib bin)
90   FIND_LIBRARY(CAS_TKStdL TKStdL PATH_SUFFIXES lib lin64/gcc/lib bin)
91 ENDIF()
92 FIND_LIBRARY(CAS_TKBin TKBin PATH_SUFFIXES lib lin64/gcc/lib bin)
93 FIND_LIBRARY(CAS_TKBinL TKBinL PATH_SUFFIXES lib lin64/gcc/lib bin)
94 FIND_LIBRARY(CAS_TKBinTObj TKBinTObj PATH_SUFFIXES lib lin64/gcc/lib bin)
95 FIND_LIBRARY(CAS_TKBinXCAF TKBinXCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
96 FIND_LIBRARY(CAS_TKBO TKBO PATH_SUFFIXES lib lin64/gcc/lib bin)
97 FIND_LIBRARY(CAS_TKBool TKBool PATH_SUFFIXES lib lin64/gcc/lib bin)
98 FIND_LIBRARY(CAS_TKBRep TKBRep PATH_SUFFIXES lib lin64/gcc/lib bin)
99 FIND_LIBRARY(CAS_TKCAF TKCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
100 FIND_LIBRARY(CAS_TKCDF TKCDF PATH_SUFFIXES lib lin64/gcc/lib bin)
101 FIND_LIBRARY(CAS_TKernel TKernel PATH_SUFFIXES lib lin64/gcc/lib bin)
102 FIND_LIBRARY(CAS_TKFeat TKFeat PATH_SUFFIXES lib lin64/gcc/lib bin)
103 FIND_LIBRARY(CAS_TKFillet TKFillet PATH_SUFFIXES lib lin64/gcc/lib bin)
104 FIND_LIBRARY(CAS_TKG2d TKG2d PATH_SUFFIXES lib lin64/gcc/lib bin)
105 FIND_LIBRARY(CAS_TKG3d TKG3d PATH_SUFFIXES lib lin64/gcc/lib bin)
106 FIND_LIBRARY(CAS_TKGeomAlgo TKGeomAlgo PATH_SUFFIXES lib lin64/gcc/lib bin)
107 FIND_LIBRARY(CAS_TKGeomBase TKGeomBase PATH_SUFFIXES lib lin64/gcc/lib bin)
108 FIND_LIBRARY(CAS_TKHLR TKHLR PATH_SUFFIXES lib lin64/gcc/lib bin)
109 FIND_LIBRARY(CAS_TKIGES TKIGES PATH_SUFFIXES lib lin64/gcc/lib bin)
110 FIND_LIBRARY(CAS_TKLCAF TKLCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
111 FIND_LIBRARY(CAS_TKMath TKMath PATH_SUFFIXES lib lin64/gcc/lib bin)
112 FIND_LIBRARY(CAS_TKMesh TKMesh PATH_SUFFIXES lib lin64/gcc/lib bin)
113 FIND_LIBRARY(CAS_TKMeshVS TKMeshVS PATH_SUFFIXES lib lin64/gcc/lib bin)
114 IF(CAS_VERSION_STR VERSION_LESS "6.9.1")
115   FIND_LIBRARY(CAS_TKNIS TKNIS PATH_SUFFIXES lib lin64/gcc/lib bin)
116 ENDIF()
117 FIND_LIBRARY(CAS_TKOffset TKOffset PATH_SUFFIXES lib lin64/gcc/lib bin)
118 FIND_LIBRARY(CAS_TKOpenGl TKOpenGl PATH_SUFFIXES lib lin64/gcc/lib bin)
119 FIND_LIBRARY(CAS_TKPrim TKPrim PATH_SUFFIXES lib lin64/gcc/lib bin)
120 FIND_LIBRARY(CAS_TKService TKService PATH_SUFFIXES lib lin64/gcc/lib bin)
121 FIND_LIBRARY(CAS_TKShHealing TKShHealing PATH_SUFFIXES lib lin64/gcc/lib bin)
122 FIND_LIBRARY(CAS_TKSTEP TKSTEP PATH_SUFFIXES lib lin64/gcc/lib bin)
123 FIND_LIBRARY(CAS_TKSTEP209 TKSTEP209 PATH_SUFFIXES lib lin64/gcc/lib bin)
124 FIND_LIBRARY(CAS_TKSTEPAttr TKSTEPAttr PATH_SUFFIXES lib lin64/gcc/lib bin)
125 FIND_LIBRARY(CAS_TKSTEPBase TKSTEPBase PATH_SUFFIXES lib lin64/gcc/lib bin)
126 FIND_LIBRARY(CAS_TKSTL TKSTL PATH_SUFFIXES lib lin64/gcc/lib bin)
127 FIND_LIBRARY(CAS_TKTObj TKTObj PATH_SUFFIXES lib lin64/gcc/lib bin)
128 FIND_LIBRARY(CAS_TKTopAlgo TKTopAlgo PATH_SUFFIXES lib lin64/gcc/lib bin)
129 FIND_LIBRARY(CAS_TKV3d TKV3d PATH_SUFFIXES lib lin64/gcc/lib bin)
130 FIND_LIBRARY(CAS_TKVRML TKVRML PATH_SUFFIXES lib lin64/gcc/lib bin)
131 FIND_LIBRARY(CAS_TKXCAF TKXCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
132 FIND_LIBRARY(CAS_TKXDEIGES TKXDEIGES PATH_SUFFIXES lib lin64/gcc/lib bin)
133 FIND_LIBRARY(CAS_TKXDESTEP TKXDESTEP PATH_SUFFIXES lib lin64/gcc/lib bin)
134 FIND_LIBRARY(CAS_TKXMesh TKXMesh PATH_SUFFIXES lib lin64/gcc/lib bin)
135 FIND_LIBRARY(CAS_TKXml TKXml PATH_SUFFIXES lib lin64/gcc/lib bin)
136 FIND_LIBRARY(CAS_TKXmlL TKXmlL PATH_SUFFIXES lib lin64/gcc/lib bin)
137 FIND_LIBRARY(CAS_TKXmlTObj TKXmlTObj PATH_SUFFIXES lib lin64/gcc/lib bin)
138 FIND_LIBRARY(CAS_TKXmlXCAF TKXmlXCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
139 FIND_LIBRARY(CAS_TKXSBase TKXSBase PATH_SUFFIXES lib lin64/gcc/lib bin)
140
141 IF(CAS_VERSION_STR VERSION_LESS "7.0")
142   FIND_LIBRARY(CAS_PTKernel PTKernel PATH_SUFFIXES lib lin64/gcc/lib bin)
143   FIND_LIBRARY(CAS_TKPCAF TKPCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
144   FIND_LIBRARY(CAS_TKPLCAF TKPLCAF PATH_SUFFIXES lib lin64/gcc/lib bin)
145   FIND_LIBRARY(CAS_TKPShape TKPShape PATH_SUFFIXES lib lin64/gcc/lib bin)
146   FIND_LIBRARY(CAS_TKShapeSchema TKShapeSchema PATH_SUFFIXES lib lin64/gcc/lib bin)
147   FIND_LIBRARY(CAS_TKStdLSchema TKStdLSchema PATH_SUFFIXES lib lin64/gcc/lib bin)
148   FIND_LIBRARY(CAS_TKStdSchema TKStdSchema PATH_SUFFIXES lib lin64/gcc/lib bin)
149   FIND_LIBRARY(CAS_TKXCAFSchema TKXCAFSchema PATH_SUFFIXES lib lin64/gcc/lib bin)
150 ENDIF()
151
152 SET(CAS_KERNEL ${CAS_TKernel} ${CAS_TKMath})
153 SET(CAS_OCAF ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKCDF} ${CAS_TKLCAF})
154 SET(CAS_VIEWER ${CAS_TKService} ${CAS_TKV3d} ${CAS_TKG3d} ${CAS_TKGeomBase} ${CAS_TKBRep})
155 SET(CAS_OCAFVIS ${CAS_TKCAF} ${CAS_TKBRep} ${CAS_TKG2d})
156 SET(CAS_MODELER ${CAS_TKG3d} ${CAS_TKGeomBase} ${CAS_TKGeomAlgo} ${CAS_TKBRep} ${CAS_TKTopAlgo} ${CAS_TKG2d})
157
158 SET(CAS_TKV3d_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKV3d})
159 SET(CAS_TKBool_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKBRep} ${CAS_TKG2d} ${CAS_TKG3d} ${CAS_TKGeomBase} ${CAS_TKGeomAlgo} ${CAS_TKTopAlgo} ${CAS_TKBool})
160 SET(CAS_TKBRep_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKBRep})
161 SET(CAS_TKIGES_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKXSBase} ${CAS_TKBRep} ${CAS_TKIGES})
162 SET(CAS_TKSTEP_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKXSBase} ${CAS_TKBRep} ${CAS_TKSTEP})
163 SET(CAS_TKSTL_EA ${CAS_TKernel} ${CAS_TKMath} ${CAS_TKSTL})
164 SET(CAS_TKCAF_EA ${CAS_TKPrim} ${CAS_TKCAF})
165
166 SET(CAS_TKV3d ${CAS_TKV3d_EA})
167 SET(CAS_TKBool ${CAS_TKBool_EA})
168 SET(CAS_TKBRep ${CAS_TKBRep_EA})
169 SET(CAS_TKIGES ${CAS_TKIGES_EA})
170 SET(CAS_TKSTEP ${CAS_TKSTEP_EA})
171 SET(CAS_TKSTL ${CAS_TKSTL_EA})
172 SET(CAS_TKCAF ${CAS_TKCAF_EA})
173
174 SET(_libs
175   CAS_TKBin
176   CAS_TKBinL
177   CAS_TKBinTObj
178   CAS_TKBinXCAF
179   CAS_TKBO
180   CAS_TKBool
181   CAS_TKBRep
182   CAS_TKCAF
183   CAS_TKCDF
184   CAS_TKernel
185   CAS_TKFeat
186   CAS_TKFillet
187   CAS_TKG2d
188   CAS_TKG3d
189   CAS_TKGeomAlgo
190   CAS_TKGeomBase
191   CAS_TKHLR
192   CAS_TKIGES
193   CAS_TKLCAF
194   CAS_TKMath
195   CAS_TKMesh
196   CAS_TKMeshVS
197   CAS_TKOffset
198   CAS_TKOpenGl
199   CAS_TKPrim
200   CAS_TKService
201   CAS_TKShHealing
202   CAS_TKSTEP
203   CAS_TKSTEP209
204   CAS_TKSTEPAttr
205   CAS_TKSTEPBase
206   CAS_TKSTL
207   CAS_TKTObj
208   CAS_TKTopAlgo
209   CAS_TKV3d
210   CAS_TKVRML
211   CAS_TKXCAF
212   CAS_TKXDEIGES
213   CAS_TKXDESTEP
214   CAS_TKXMesh
215   CAS_TKXml
216   CAS_TKXmlL
217   CAS_TKXmlTObj
218   CAS_TKXmlXCAF
219   CAS_TKXSBase
220 )
221
222 IF(CAS_VERSION_STR VERSION_LESS "7.0.1")
223   LIST(APPEND _libs CAS_FWOSPlugin)
224 ELSE()
225   LIST(APPEND _libs CAS_TKStd)
226   LIST(APPEND _libs CAS_TKStdL)
227 ENDIF()
228
229 IF(CAS_VERSION_STR VERSION_LESS "6.9.1")
230   LIST(APPEND _libs CAS_TKNIS)
231 ENDIF()
232
233 IF(CAS_VERSION_STR VERSION_LESS "7.0")
234   LIST(APPEND _libs
235     CAS_PTKernel
236     CAS_TKPCAF
237     CAS_TKPLCAF
238     CAS_TKPShape
239     CAS_TKShapeSchema
240     CAS_TKStdLSchema
241     CAS_TKStdSchema
242     CAS_TKXCAFSchema
243     )
244 ENDIF()
245
246
247 INCLUDE(FindPackageHandleStandardArgs)
248 FIND_PACKAGE_HANDLE_STANDARD_ARGS(CAS REQUIRED_VARS CAS_INCLUDE_DIRS ${_libs})
249
250 IF(CAS_FOUND AND NOT CAS_FIND_QUIETLY)
251   IF(CAS_VERSION_DEVELOPMENT)
252     MESSAGE(STATUS "Found OpenCascade version: ${CAS_VERSION_STR} (development)")
253   ELSE(CAS_VERSION_DEVELOPMENT)
254     MESSAGE(STATUS "Found OpenCascade version: ${CAS_VERSION_STR}")
255   ENDIF(CAS_VERSION_DEVELOPMENT)
256 ENDIF()