Salome HOME
New version of hack_libtool utility to workaround problems on some Linux configurations
[modules/kernel.git] / salome_adm / unix / config_files / check_cas.m4
1 dnl  Copyright (C) 2007-2010  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
46 CAS_CPPFLAGS=""
47 CAS_CXXFLAGS=""
48 CAS_LDFLAGS=""
49 occ_ok=no
50 config_h=no
51
52 dnl libraries directory location
53 case $host_os in
54    linux*)
55       casdir=Linux
56       ;;
57    freebsd*)
58       casdir=Linux
59       ;;
60    irix5.*)
61       casdir=Linux
62       ;;
63    irix6.*)
64       casdir=Linux
65       ;;
66    osf*)
67       casdir=Linux
68       ;;
69    solaris2.*)
70       casdir=Linux
71       ;;
72    *)
73       casdir=Linux
74       ;;
75 esac
76
77 AC_MSG_CHECKING(for OpenCascade directories)
78
79 if test -z "$CASROOT"; then
80   AC_MSG_RESULT(CASROOT not defined)
81   for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
82     if test -f $d/libTKernel.so ; then
83       AC_MSG_RESULT(libTKernel.so detected in $d)
84       CASROOT=$d
85       CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
86       break
87     fi
88   done
89 fi
90
91 if test -d ${CASROOT}/${casdir}/lib; then
92   CAS_LDPATH="-L$CASROOT/$casdir/lib "
93   AC_MSG_RESULT(yes)
94 else
95   if test -d ${CASROOT}/lib; then
96     CAS_LDPATH="-L$CASROOT/lib "
97     AC_MSG_RESULT(yes)
98   else
99     AC_MSG_RESULT(no)
100   fi
101 fi
102
103
104 dnl were is OCC ?
105 if test -z "$CASROOT"; then
106   AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
107 else
108   occ_ok=yes
109   OCC_VERSION_MAJOR=0
110   OCC_VERSION_MINOR=0
111   OCC_VERSION_MAINTENANCE=0
112   ff=$CASROOT/inc/Standard_Version.hxx
113   if test -f $ff ; then
114     grep "define OCC_VERSION_MAJOR" $ff > /dev/null
115     if test $? = 0 ; then
116       OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
117     fi
118     grep "define OCC_VERSION_MINOR" $ff > /dev/null
119     if test $? = 0 ; then
120       OCC_VERSION_MINOR=`grep "define OCC_VERSION_MINOR" $ff | awk '{i=3 ; print $i}'`
121     fi
122     grep "define OCC_VERSION_MAINTENANCE" $ff > /dev/null
123     if test $? = 0 ; then
124       OCC_VERSION_MAINTENANCE=`grep "define OCC_VERSION_MAINTENANCE" $ff | awk '{i=3 ; print $i}'`
125     fi
126   fi
127 fi
128
129 if test "x$occ_ok" = "xyes"; then
130
131 dnl test c++ compiler flag for unsigned character
132   for opt in -funsigned-char -unsigned ; do
133     AC_CXX_OPTION($opt,CAS_CXXFLAGS,flag=yes,flag=no)
134     if test "$flag" = "yes"; then
135       break
136     fi
137   done
138   
139 dnl cascade headers
140
141   CPPFLAGS_old="$CPPFLAGS"
142 case $host_os in
143    linux*)
144       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"
145
146       OCC_VERSION_STRING="$OCC_VERSION_MAJOR.$OCC_VERSION_MINOR.$OCC_VERSION_MAINTENANCE"
147       case $OCC_VERSION_STRING in
148         [[0-5]].* | 6.0.* | 6.1.0) # catch versions < 6.1.1
149           CAS_CPPFLAGS="$CAS_CPPFLAGS -DNO_CXX_EXCEPTION"
150           ;;
151         *)
152           CAS_CPPFLAGS="$CAS_CPPFLAGS -DOCC_CONVERT_SIGNALS"
153           ;;
154       esac
155       CAS_CPPFLAGS="$CAS_CPPFLAGS -I$CASROOT/inc"
156       ;;
157    osf*)
158       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"
159       ;;
160 esac
161   CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
162
163   echo
164   echo testing config.h
165
166   AC_CHECK_HEADER(config.h, config_h=yes, [
167         echo "config.h file not found!"
168   ])
169
170   if test "x$config_h" = xno ; then
171       AC_MSG_WARN(config.h file not found)
172       dnl There is no consequence for SALOME building because
173       dnl this file is not used. SALOME uses SALOMEconfig.h instead!
174   else
175       AC_MSG_RESULT(config.h file ok)    
176   fi
177
178   AC_CHECK_HEADER(Standard_Type.hxx,occ_ok=yes ,occ_ok=no)
179
180 fi
181
182 if test "x$occ_ok" = xyes ; then
183
184   AC_MSG_CHECKING(for OpenCascade libraries)
185
186   LIBS_old="$LIBS"
187   LIBS="$LIBS $CAS_LDPATH -lTKernel"
188   
189   AC_CACHE_VAL(salome_cv_lib_occ,[
190     AC_TRY_LINK(
191 #include <TCollection_AsciiString.hxx>
192 ,    TCollection_AsciiString aStr ("toto");
193     aStr.Capitalize();, 
194     eval "salome_cv_lib_occ=yes",eval "salome_cv_lib_occ=no")
195   ])
196   occ_ok="$salome_cv_lib_occ"
197
198 fi
199 CPPFLAGS="$CPPFLAGS_old"
200 LIBS="$LIBS_old"
201
202 if test "x$occ_ok" = xno ; then
203   AC_MSG_RESULT(no)
204   AC_MSG_WARN(Opencascade libraries not found)
205 else
206   AC_MSG_RESULT(yes)
207   CAS_KERNEL="$CAS_LDPATH -lTKernel"
208   CAS_MATH="$CAS_LDPATH -lTKMath"
209
210   if test -f $CASROOT/$casdir/lib/libStdPlugin.so ; then
211     # this libraries are only for CASCADE 5.2.3
212     CAS_STDPLUGIN="StdPlugin"
213   fi
214
215   CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKernel -lTKCDF -lTKLCAF -lTKPCAF -lTKStdSchema"
216   CAS_OCAFVIS="$CAS_LDPATH -lTKCAF -lStdPlugin -lStdLPlugin -lTKPLCAF -lTKPShape -lTKStdLSchema -lTKShapeSchema"
217   
218   CAS_TKV3d="$CAS_LDPATH -lTKV3d"
219   CAS_VIEWER="$CAS_TKV3d -lTKService"
220
221   CAS_TKBRep="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep"
222
223   CAS_TKTopAlgo="$CAS_TKBRep -lTKGeomAlgo -lTKTopAlgo"
224   CAS_TKPrim="$CAS_TKTopAlgo -lTKPrim"
225   
226   CAS_MODELER="$CAS_TKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
227
228   CAS_DATAEXCHANGE="$CAS_LDPATH -lTKIGES -lTKSTEP"
229
230   CAS_LDFLAGS="$CAS_KERNEL $CAS_MATH $CAS_OCAF $CAS_OCAFVIS $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"  
231
232 fi
233
234 AC_LANG_RESTORE
235
236 ])dnl
237
238