Salome HOME
updated copyright message
[tools/configuration.git] / autotools / m4 / check_cas.m4
1 dnl Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
2 dnl
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
5 dnl
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.
10 dnl
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.
15 dnl
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
19 dnl
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 dnl
22
23 AC_DEFUN([CHECK_CAS],[
24 AC_REQUIRE([AC_PROG_CXX])dnl
25 AC_REQUIRE([AC_PROG_CXXCPP])dnl
26
27 AC_CHECKING(for OpenCascade)
28
29 AC_LANG_SAVE
30 AC_LANG_CPLUSPLUS
31
32 AC_SUBST(CAS_CPPFLAGS)
33 AC_SUBST(CAS_CXXFLAGS)
34 AC_SUBST(CAS_KERNEL)
35 AC_SUBST(CAS_MATH)
36 AC_SUBST(CAS_VIEWER)
37 AC_SUBST(CAS_TKTopAlgo)
38 AC_SUBST(CAS_MODELER)
39 AC_SUBST(CAS_OCAF)
40 AC_SUBST(CAS_OCAFVIS)
41 AC_SUBST(CAS_DATAEXCHANGE)
42 AC_SUBST(CAS_LDFLAGS)
43 AC_SUBST(CAS_LDPATH)
44 AC_SUBST(CAS_STDPLUGIN)
45 AC_SUBST(CAS_LIBDIR)
46 AC_SUBST(CAS_DATADIR)
47 AC_SUBST(CAS_VERSION_DEVELOPMENT)
48 AC_SUBST(CASROOT)
49
50 CAS_CPPFLAGS=""
51 CAS_CXXFLAGS=""
52 CAS_LDFLAGS=""
53 CAS_VERSION_DEVELOPMENT=0
54 occ_ok=no
55 config_h=no
56
57 dnl libraries directory location
58 case $host_os in
59    linux*)
60       casdir=Linux
61       ;;
62    freebsd*)
63       casdir=Linux
64       ;;
65    irix5.*)
66       casdir=Linux
67       ;;
68    irix6.*)
69       casdir=Linux
70       ;;
71    osf*)
72       casdir=Linux
73       ;;
74    solaris2.*)
75       casdir=Linux
76       ;;
77    *)
78       casdir=Linux
79       ;;
80 esac
81
82 AC_MSG_CHECKING(for OpenCascade directories)
83
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)
89       CASROOT=$d
90       CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
91       break
92     fi
93   done
94 fi
95
96 CAS_LIBDIR="$CASROOT/$casdir/lib"
97 if test -d ${CAS_LIBDIR}; then
98   AC_MSG_RESULT(yes)
99 else
100   if test -d ${CASROOT}/lib; then
101     CAS_LIBDIR="$CASROOT/lib"
102     AC_MSG_RESULT(yes)
103   else
104     AC_MSG_RESULT(no)
105   fi
106 fi
107   CAS_LDPATH="-L$CAS_LIBDIR "
108
109 dnl were is OCC ?
110 if test -z "$CASROOT"; then
111   AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
112 else
113   occ_ok=yes
114   OCC_VERSION_MAJOR=0
115   OCC_VERSION_MINOR=0
116   OCC_VERSION_MAINTENANCE=0
117   if test -f $CASROOT/inc/Standard_Version.hxx; then
118     ff=$CASROOT/inc/Standard_Version.hxx
119   else
120     ff=$CASROOT/include/opencascade/Standard_Version.hxx
121   fi
122   if test -f $ff; then
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}'`
126     fi
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}'`
130     fi
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}'`
134     fi
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
143       fi
144     fi
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)
149     else
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)
153       else
154         occ_ok=no
155         AC_MSG_RESULT(not found, check OpenCascade installation)
156       fi
157     fi
158   fi
159 fi
160
161 if test "x$occ_ok" = "xyes"; then
162
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
167       break
168     fi
169   done
170   
171 dnl cascade headers
172
173   CPPFLAGS_old="$CPPFLAGS"
174 case $host_os in
175    linux*)
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"
177
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"
182           ;;
183         *)
184           CAS_CPPFLAGS="$CAS_CPPFLAGS -DOCC_CONVERT_SIGNALS"
185           ;;
186       esac
187       CAS_CPPFLAGS="$CAS_CPPFLAGS -I$CASROOT/inc -I$CASROOT/include/opencascade"
188       ;;
189    osf*)
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"
191       ;;
192 esac
193
194   if test "$CAS_VERSION_DEVELOPMENT" = "1" ; then
195     CAS_CPPFLAGS="$CAS_CPPFLAGS -DCAS_VERSION_DEVELOPMENT"
196   fi
197
198   CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
199
200   echo
201   echo testing config.h
202
203   AC_CHECK_HEADER(config.h, config_h=yes, [
204         echo "config.h file not found!"
205   ])
206
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!
211   else
212       AC_MSG_RESULT(config.h file ok)    
213   fi
214
215   AC_CHECK_HEADER(Standard_Type.hxx,occ_ok=yes ,occ_ok=no)
216
217 fi
218
219 if test "x$occ_ok" = xyes ; then
220
221   AC_MSG_CHECKING(for OpenCascade libraries)
222
223   LIBS_old="$LIBS"
224   LIBS="$LIBS $CAS_LDPATH -lTKernel"
225   
226   AC_CACHE_VAL(salome_cv_lib_occ,[
227     AC_TRY_LINK(
228 #include <TCollection_AsciiString.hxx>
229 ,    TCollection_AsciiString aStr ("toto");
230     aStr.Capitalize();, 
231     eval "salome_cv_lib_occ=yes",eval "salome_cv_lib_occ=no")
232   ])
233   occ_ok="$salome_cv_lib_occ"
234
235 fi
236 CPPFLAGS="$CPPFLAGS_old"
237 LIBS="$LIBS_old"
238
239 if test "x$occ_ok" = xno ; then
240   AC_MSG_RESULT(no)
241   AC_MSG_WARN(Opencascade libraries not found)
242 else
243   AC_MSG_RESULT(yes)
244   CAS_KERNEL="$CAS_LDPATH -lTKernel"
245   CAS_MATH="$CAS_LDPATH -lTKMath"
246
247   CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKernel -lTKCDF -lTKLCAF -lTKPCAF -lTKStdSchema"
248   CAS_OCAFVIS="$CAS_LDPATH -lTKCAF -lTKPLCAF -lTKPShape -lTKStdLSchema -lTKShapeSchema"
249
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"
258   fi
259   
260   CAS_TKV3d="$CAS_LDPATH -lTKV3d"
261   CAS_VIEWER="$CAS_TKV3d -lTKService"
262
263   CAS_TKBRep="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep"
264
265   CAS_TKTopAlgo="$CAS_TKBRep -lTKGeomAlgo -lTKTopAlgo"
266   CAS_TKPrim="$CAS_TKTopAlgo -lTKPrim"
267   
268   CAS_MODELER="$CAS_TKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
269
270   CAS_DATAEXCHANGE="$CAS_LDPATH -lTKIGES -lTKSTEP"
271
272   CAS_LDFLAGS="$CAS_KERNEL $CAS_MATH $CAS_OCAF $CAS_OCAFVIS $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"  
273
274 fi
275
276 AC_LANG_RESTORE
277
278 ])dnl