Salome HOME
Merge from V6_main 28/02/2013
[modules/kernel.git] / salome_adm / unix / config_files / check_cas.m4
1 dnl Copyright (C) 2007-2012  CEA/DEN, EDF R&D, 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.
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