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