1 dnl Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
3 dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 dnl This library is free software; you can redistribute it and/or
7 dnl modify it under the terms of the GNU Lesser General Public
8 dnl License as published by the Free Software Foundation; either
9 dnl version 2.1 of the License, or (at your option) any later version.
11 dnl This library is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 dnl Lesser General Public License for more details.
16 dnl You should have received a copy of the GNU Lesser General Public
17 dnl License along with this library; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 AC_DEFUN([CHECK_CAS],[
24 AC_REQUIRE([AC_PROG_CXX])dnl
25 AC_REQUIRE([AC_PROG_CXXCPP])dnl
27 AC_CHECKING(for OpenCascade)
32 AC_SUBST(CAS_CPPFLAGS)
33 AC_SUBST(CAS_CXXFLAGS)
37 AC_SUBST(CAS_TKTopAlgo)
41 AC_SUBST(CAS_DATAEXCHANGE)
44 AC_SUBST(CAS_STDPLUGIN)
47 AC_SUBST(CAS_VERSION_DEVELOPMENT)
53 CAS_VERSION_DEVELOPMENT=0
57 dnl libraries directory location
82 AC_MSG_CHECKING(for OpenCascade directories)
84 if test -z "$CASROOT"; then
85 AC_MSG_RESULT(CASROOT not defined)
86 for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
87 if test -f $d/libTKernel.so ; then
88 AC_MSG_RESULT(libTKernel.so detected in $d)
90 CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
96 CAS_LIBDIR="$CASROOT/$casdir/lib"
97 if test -d ${CAS_LIBDIR}; then
100 if test -d ${CASROOT}/lib; then
101 CAS_LIBDIR="$CASROOT/lib"
107 CAS_LDPATH="-L$CAS_LIBDIR "
110 if test -z "$CASROOT"; then
111 AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
116 OCC_VERSION_MAINTENANCE=0
117 if test -f $CASROOT/inc/Standard_Version.hxx; then
118 ff=$CASROOT/inc/Standard_Version.hxx
120 ff=$CASROOT/include/opencascade/Standard_Version.hxx
123 grep "define OCC_VERSION_MAJOR" $ff > /dev/null
124 if test $? = 0 ; then
125 OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
127 grep "define OCC_VERSION_MINOR" $ff > /dev/null
128 if test $? = 0 ; then
129 OCC_VERSION_MINOR=`grep "define OCC_VERSION_MINOR" $ff | awk '{i=3 ; print $i}'`
131 grep "define OCC_VERSION_MAINTENANCE" $ff > /dev/null
132 if test $? = 0 ; then
133 OCC_VERSION_MAINTENANCE=`grep "define OCC_VERSION_MAINTENANCE" $ff | awk '{i=3 ; print $i}'`
135 grep "define OCC_VERSION_DEVELOPMENT" $ff > /dev/null
136 if test $? = 0 ; then
137 CAS_VERSION_DEVELOPMENT_STR=`grep "define OCC_VERSION_DEVELOPMENT" $ff | awk '{i=3 ; print $i}'`
138 CAS_VERSION_DEVELOPMENT_FLAG=`grep "define OCC_VERSION_DEVELOPMENT" $ff | awk '{i=1 ; print $i}'`
139 if test "${CAS_VERSION_DEVELOPMENT_FLAG}" = "#define" -a "${CAS_VERSION_DEVELOPMENT_STR}" = "\"dev\"" ; then
140 # version is development if OCC_VERSION_DEVELOPMENT is defined (not commented) in Standard_Version.hxx
141 # and equal to "dev"; such values as "beta1", "rc1", etc are considered as non-development version
142 CAS_VERSION_DEVELOPMENT=1
145 AC_MSG_CHECKING(for OpenCascade data files)
146 if test -f ${CASROOT}/src/UnitsAPI/Lexi_Expr.dat; then
147 CAS_DATADIR=${CASROOT}
148 AC_MSG_RESULT(found in $CAS_DATADIR/src)
150 if test -f ${CASROOT}/share/opencascade/${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}/src/UnitsAPI/Lexi_Expr.dat; then
151 CAS_DATADIR=${CASROOT}/share/opencascade/${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}
152 AC_MSG_RESULT(found in $CAS_DATADIR/src)
155 AC_MSG_RESULT(not found, check OpenCascade installation)
161 if test "x$occ_ok" = "xyes"; then
163 dnl test c++ compiler flag for unsigned character
164 for opt in -funsigned-char -unsigned ; do
165 AC_CXX_OPTION($opt,CAS_CXXFLAGS,flag=yes,flag=no)
166 if test "$flag" = "yes"; then
173 CPPFLAGS_old="$CPPFLAGS"
176 CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DOCC_VERSION_MINOR=$OCC_VERSION_MINOR -DOCC_VERSION_MAINTENANCE=$OCC_VERSION_MAINTENANCE -DLIN -DLINTEL -DCSFDB -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H"
178 OCC_VERSION_STRING="$OCC_VERSION_MAJOR.$OCC_VERSION_MINOR.$OCC_VERSION_MAINTENANCE"
179 case $OCC_VERSION_STRING in
180 [[0-5]].* | 6.0.* | 6.1.0) # catch versions < 6.1.1
181 CAS_CPPFLAGS="$CAS_CPPFLAGS -DNO_CXX_EXCEPTION"
184 CAS_CPPFLAGS="$CAS_CPPFLAGS -DOCC_CONVERT_SIGNALS"
187 CAS_CPPFLAGS="$CAS_CPPFLAGS -I$CASROOT/inc -I$CASROOT/include/opencascade"
190 CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DOCC_VERSION_MINOR=$OCC_VERSION_MINOR -DOCC_VERSION_MAINTENANCE=$OCC_VERSION_MAINTENANCE -DLIN -DLINTEL -DCSFDB -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
194 if test "$CAS_VERSION_DEVELOPMENT" = "1" ; then
195 CAS_CPPFLAGS="$CAS_CPPFLAGS -DCAS_VERSION_DEVELOPMENT"
198 CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
201 echo testing config.h
203 AC_CHECK_HEADER(config.h, config_h=yes, [
204 echo "config.h file not found!"
207 if test "x$config_h" = xno ; then
208 AC_MSG_WARN(config.h file not found)
209 dnl There is no consequence for SALOME building because
210 dnl this file is not used. SALOME uses SALOMEconfig.h instead!
212 AC_MSG_RESULT(config.h file ok)
215 AC_CHECK_HEADER(Standard_Type.hxx,occ_ok=yes ,occ_ok=no)
219 if test "x$occ_ok" = xyes ; then
221 AC_MSG_CHECKING(for OpenCascade libraries)
224 LIBS="$LIBS $CAS_LDPATH -lTKernel"
226 AC_CACHE_VAL(salome_cv_lib_occ,[
228 #include <TCollection_AsciiString.hxx>
229 , TCollection_AsciiString aStr ("toto");
231 eval "salome_cv_lib_occ=yes",eval "salome_cv_lib_occ=no")
233 occ_ok="$salome_cv_lib_occ"
236 CPPFLAGS="$CPPFLAGS_old"
239 if test "x$occ_ok" = xno ; then
241 AC_MSG_WARN(Opencascade libraries not found)
244 CAS_KERNEL="$CAS_LDPATH -lTKernel"
245 CAS_MATH="$CAS_LDPATH -lTKMath"
247 CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKernel -lTKCDF -lTKLCAF -lTKPCAF -lTKStdSchema"
248 CAS_OCAFVIS="$CAS_LDPATH -lTKCAF -lTKPLCAF -lTKPShape -lTKStdLSchema -lTKShapeSchema"
250 if test -f ${CAS_LIBDIR}/libStdPlugin.so ; then
251 # standard plugin library libStdPlugin has been added in CASCADE 5.2.3
252 CAS_STDPLUGIN="StdPlugin"
253 CAS_OCAFVIS="$CAS_OCAFVIS -lStdPlugin -lStdLPlugin"
254 elif test -f ${CAS_LIBDIR}/libTKStdSchema.so ; then
255 # standard plugin has been renamed in CASCADE 6.5
256 CAS_STDPLUGIN=TKStdSchema
257 CAS_OCAFVIS="$CAS_OCAFVIS -lTKStdSchema -lTKStdLSchema"
260 CAS_TKV3d="$CAS_LDPATH -lTKV3d"
261 CAS_VIEWER="$CAS_TKV3d -lTKService"
263 CAS_TKBRep="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep"
265 CAS_TKTopAlgo="$CAS_TKBRep -lTKGeomAlgo -lTKTopAlgo"
266 CAS_TKPrim="$CAS_TKTopAlgo -lTKPrim"
268 CAS_MODELER="$CAS_TKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
270 CAS_DATAEXCHANGE="$CAS_LDPATH -lTKIGES -lTKSTEP"
272 CAS_LDFLAGS="$CAS_KERNEL $CAS_MATH $CAS_OCAF $CAS_OCAFVIS $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"