Salome HOME
Merge from V6_main 28/02/2013
[modules/kernel.git] / salome_adm / unix / config_files / check_cas.m4
index 85d8f0c73e3b111c8b5c375b19daa9e226d19499..261c7437f1c9372431edfb84da953e0e7cfecd39 100644 (file)
@@ -1,24 +1,25 @@
-dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-dnl 
-dnl  This library is free software; you can redistribute it and/or 
-dnl  modify it under the terms of the GNU Lesser General Public 
-dnl  License as published by the Free Software Foundation; either 
-dnl  version 2.1 of the License. 
-dnl 
-dnl  This library is distributed in the hope that it will be useful, 
-dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-dnl  Lesser General Public License for more details. 
-dnl 
-dnl  You should have received a copy of the GNU Lesser General Public 
-dnl  License along with this library; if not, write to the Free Software 
-dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-dnl 
-dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 dnl
+dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License.
 dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+dnl
+dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+dnl
+
 AC_DEFUN([CHECK_CAS],[
 AC_REQUIRE([AC_PROG_CXX])dnl
 AC_REQUIRE([AC_PROG_CXXCPP])dnl
@@ -31,22 +32,27 @@ AC_LANG_CPLUSPLUS
 AC_SUBST(CAS_CPPFLAGS)
 AC_SUBST(CAS_CXXFLAGS)
 AC_SUBST(CAS_KERNEL)
+AC_SUBST(CAS_MATH)
 AC_SUBST(CAS_VIEWER)
+AC_SUBST(CAS_TKTopAlgo)
 AC_SUBST(CAS_MODELER)
 AC_SUBST(CAS_OCAF)
+AC_SUBST(CAS_OCAFVIS)
 AC_SUBST(CAS_DATAEXCHANGE)
 AC_SUBST(CAS_LDFLAGS)
-
 AC_SUBST(CAS_LDPATH)
-
-OWN_CONFIG_H=no
+AC_SUBST(CAS_STDPLUGIN)
+AC_SUBST(CAS_LIBDIR)
+AC_SUBST(CAS_DATADIR)
+AC_SUBST(CAS_VERSION_DEVELOPMENT)
+AC_SUBST(CASROOT)
 
 CAS_CPPFLAGS=""
 CAS_CXXFLAGS=""
 CAS_LDFLAGS=""
+CAS_VERSION_DEVELOPMENT=0
 occ_ok=no
-own_config_h=no
-
+config_h=no
 
 dnl libraries directory location
 case $host_os in
@@ -62,7 +68,7 @@ case $host_os in
    irix6.*)
       casdir=Linux
       ;;
-   osf4.*)
+   osf*)
       casdir=Linux
       ;;
    solaris2.*)
@@ -73,119 +79,200 @@ case $host_os in
       ;;
 esac
 
+AC_MSG_CHECKING(for OpenCascade directories)
+
+if test -z "$CASROOT"; then
+  AC_MSG_RESULT(CASROOT not defined)
+  for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
+    if test -f $d/libTKernel.so ; then
+      AC_MSG_RESULT(libTKernel.so detected in $d)
+      CASROOT=$d
+      CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+      break
+    fi
+  done
+fi
+
+CAS_LIBDIR="$CASROOT/$casdir/lib"
+if test -d ${CAS_LIBDIR}; then
+  AC_MSG_RESULT(yes)
+else
+  if test -d ${CASROOT}/lib; then
+    CAS_LIBDIR="$CASROOT/lib"
+    AC_MSG_RESULT(yes)
+  else
+    AC_MSG_RESULT(no)
+  fi
+fi
+  CAS_LDPATH="-L$CAS_LIBDIR "
+
 dnl were is OCC ?
-if test -z $CASROOT; then
+if test -z "$CASROOT"; then
   AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
 else
   occ_ok=yes
   OCC_VERSION_MAJOR=0
-  ff=$CASROOT/inc/Standard_Version.hxx
-  if test -f $ff ; then
+  OCC_VERSION_MINOR=0
+  OCC_VERSION_MAINTENANCE=0
+  if test -f $CASROOT/inc/Standard_Version.hxx; then
+    ff=$CASROOT/inc/Standard_Version.hxx
+  else
+    ff=$CASROOT/include/opencascade/Standard_Version.hxx
+  fi
+  if test -f $ff; then
     grep "define OCC_VERSION_MAJOR" $ff > /dev/null
     if test $? = 0 ; then
       OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
     fi
+    grep "define OCC_VERSION_MINOR" $ff > /dev/null
+    if test $? = 0 ; then
+      OCC_VERSION_MINOR=`grep "define OCC_VERSION_MINOR" $ff | awk '{i=3 ; print $i}'`
+    fi
+    grep "define OCC_VERSION_MAINTENANCE" $ff > /dev/null
+    if test $? = 0 ; then
+      OCC_VERSION_MAINTENANCE=`grep "define OCC_VERSION_MAINTENANCE" $ff | awk '{i=3 ; print $i}'`
+    fi
+    grep "define OCC_VERSION_DEVELOPMENT" $ff > /dev/null
+    if test $? = 0 ; then
+      CAS_VERSION_DEVELOPMENT_STR=`grep "define OCC_VERSION_DEVELOPMENT" $ff | awk '{i=3 ; print $i}'`
+      CAS_VERSION_DEVELOPMENT_FLAG=`grep "define OCC_VERSION_DEVELOPMENT" $ff | awk '{i=1 ; print $i}'`
+      if test "${CAS_VERSION_DEVELOPMENT_FLAG}" = "#define" -a "${CAS_VERSION_DEVELOPMENT_STR}" = "\"dev\"" ; then
+        # version is development if OCC_VERSION_DEVELOPMENT is defined (not commented) in Standard_Version.hxx
+       # and equal to "dev"; such values as "beta1", "rc1", etc are considered as non-development version
+        CAS_VERSION_DEVELOPMENT=1
+      fi
+    fi
+    AC_MSG_CHECKING(for OpenCascade data files)
+    if test -f ${CASROOT}/src/UnitsAPI/Lexi_Expr.dat; then
+      CAS_DATADIR=${CASROOT}
+      AC_MSG_RESULT(found in $CAS_DATADIR/src)
+    else
+      if test -f ${CASROOT}/share/opencascade/${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}/src/UnitsAPI/Lexi_Expr.dat; then
+        CAS_DATADIR=${CASROOT}/share/opencascade/${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}
+        AC_MSG_RESULT(found in $CAS_DATADIR/src)
+      else
+        occ_ok=no
+       AC_MSG_RESULT(not found, check OpenCascade installation)
+      fi
+    fi
   fi
 fi
 
 if test "x$occ_ok" = "xyes"; then
 
+dnl test c++ compiler flag for unsigned character
+  for opt in -funsigned-char -unsigned ; do
+    AC_CXX_OPTION($opt,CAS_CXXFLAGS,flag=yes,flag=no)
+    if test "$flag" = "yes"; then
+      break
+    fi
+  done
+  
 dnl cascade headers
 
   CPPFLAGS_old="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -I$CASROOT/inc -I$CASROOT -I$KERNEL_ROOT_DIR/include/salome -Wno-deprecated -DHAVE_WOK_CONFIG_H"
-  CXXFLAGS_old="$CXXFLAGS"
-  CXXFLAGS="$CXXFLAGS -funsigned-char"
+case $host_os in
+   linux*)
+      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"
 
+      OCC_VERSION_STRING="$OCC_VERSION_MAJOR.$OCC_VERSION_MINOR.$OCC_VERSION_MAINTENANCE"
+      case $OCC_VERSION_STRING in
+        [[0-5]].* | 6.0.* | 6.1.0) # catch versions < 6.1.1
+          CAS_CPPFLAGS="$CAS_CPPFLAGS -DNO_CXX_EXCEPTION"
+          ;;
+        *)
+          CAS_CPPFLAGS="$CAS_CPPFLAGS -DOCC_CONVERT_SIGNALS"
+          ;;
+      esac
+      CAS_CPPFLAGS="$CAS_CPPFLAGS -I$CASROOT/inc -I$CASROOT/include/opencascade"
+      ;;
+   osf*)
+      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"
+      ;;
+esac
+
+  if test "$CAS_VERSION_DEVELOPMENT" = "1" ; then
+    CAS_CPPFLAGS="$CAS_CPPFLAGS -DCAS_VERSION_DEVELOPMENT"
+  fi
+
+  CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
 
-  echo
   echo
   echo testing config.h
-  echo
-  echo
 
-  AC_CHECK_HEADER(config.h, own_config_h=no, [
-       echo
-       echo
-       echo "config.h file not found! Generating it..."
-       echo
-       echo
-       mv confdefs.h backup_confdefs.h
-       ${ROOT_SRCDIR}/make_config
-       rm -rf ${ROOT_BUILDDIR}/*.log
-       rm -rf ${ROOT_BUILDDIR}/*.status
-       mv backup_confdefs.h confdefs.h
-       rm -f backup_confdefs.h
-       own_config_h=yes
-       echo
-       echo
+  AC_CHECK_HEADER(config.h, config_h=yes, [
+       echo "config.h file not found!"
   ])
 
-  if test "x$own_config_h" = xyes ; then
-    OWN_CONFIG_H=yes
+  if test "x$config_h" = xno ; then
+      AC_MSG_WARN(config.h file not found)
+      dnl There is no consequence for SALOME building because
+      dnl this file is not used. SALOME uses SALOMEconfig.h instead!
+  else
+      AC_MSG_RESULT(config.h file ok)    
   fi
 
-  CPPFLAGS="$CPPFLAGS -I$ROOT_BUILDDIR/salome_adm/unix"
-  
   AC_CHECK_HEADER(Standard_Type.hxx,occ_ok=yes ,occ_ok=no)
 
-  CPPFLAGS="$CPPFLAGS_old"
-  CXXFLAGS="$CXXFLAGS_old"
 fi
 
-AC_SUBST(OWN_CONFIG_H)
-
 if test "x$occ_ok" = xyes ; then
 
-  CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -I$CASROOT/inc -I$CASROOT -DHAVE_WOK_CONFIG_H"
-  CAS_CXXFLAGS="-funsigned-char"
-
   AC_MSG_CHECKING(for OpenCascade libraries)
 
-  CPPFLAGS_old="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS -I$KERNEL_ROOT_DIR/include/salome -I$ROOT_BUILDDIR/salome_adm/unix -Wno-deprecated"
-  CXXFLAGS_old="$CXXFLAGS"
-  CXXFLAGS="$CXXFLAGS $CAS_CXXFLAGS"
   LIBS_old="$LIBS"
-  LIBS="$LIBS -L$CASROOT/$casdir/lib -lTKernel"
+  LIBS="$LIBS $CAS_LDPATH -lTKernel"
+  
   AC_CACHE_VAL(salome_cv_lib_occ,[
     AC_TRY_LINK(
-using namespace std;
-#include <Standard_Type.hxx>
-,   size_t size;
-    const Standard_CString aName="toto";
-    Standard_Type myST(aName) ; 
-    myST.Find(aName);,
+#include <TCollection_AsciiString.hxx>
+,    TCollection_AsciiString aStr ("toto");
+    aStr.Capitalize();, 
     eval "salome_cv_lib_occ=yes",eval "salome_cv_lib_occ=no")
   ])
   occ_ok="$salome_cv_lib_occ"
 
-  CPPFLAGS="$CPPFLAGS_old"
-  CXXFLAGS="$CXXFLAGS_old"
-  LIBS="$LIBS_old"
 fi
+CPPFLAGS="$CPPFLAGS_old"
+LIBS="$LIBS_old"
 
 if test "x$occ_ok" = xno ; then
   AC_MSG_RESULT(no)
   AC_MSG_WARN(Opencascade libraries not found)
 else
   AC_MSG_RESULT(yes)
-  CAS_LDPATH="-L$CASROOT/$casdir/lib "
-  CAS_KERNEL="$CAS_LDPATH -lTKernel -lTKMath"
-  CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKCAF -lFWOSPlugin -lTKPShape -lTKPCAF -lTKStdSchema -lTKShapeSchema -lPAppStdPlugin -lTKPAppStd -lTKCDF"
-dnl  CAS_VIEWER="-L$CASROOT/$casdir/lib -lTKOpenGl -lTKV3d -lTKV2d -lTKService"
-  CAS_VIEWER="$CAS_LDPATH -lTKOpenGl -lTKV3d -lTKService"
-#  CAS_MODELER="-L$CASROOT/$casdir/lib -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKFeat -lTKOffset"
-  CAS_MODELER="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKOffset"
-dnl  CAS_DATAEXCHANGE="-L$CASROOT/$casdir/lib -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing -lTKShHealingStd -lTKSTL -lTKVRML "
-  CAS_DATAEXCHANGE="$CAS_LDPATH -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing -lTKShHealingStd"
-  CAS_LDFLAGS="$CAS_KERNEL $CAS_OCAF $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"  
+  CAS_KERNEL="$CAS_LDPATH -lTKernel"
+  CAS_MATH="$CAS_LDPATH -lTKMath"
+
+  CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKernel -lTKCDF -lTKLCAF -lTKPCAF -lTKStdSchema"
+  CAS_OCAFVIS="$CAS_LDPATH -lTKCAF -lTKPLCAF -lTKPShape -lTKStdLSchema -lTKShapeSchema"
+
+  if test -f ${CAS_LIBDIR}/libStdPlugin.so ; then
+    # standard plugin library libStdPlugin has been added in CASCADE 5.2.3
+    CAS_STDPLUGIN="StdPlugin"
+    CAS_OCAFVIS="$CAS_OCAFVIS -lStdPlugin -lStdLPlugin"
+  elif test -f ${CAS_LIBDIR}/libTKStdSchema.so ; then
+    # standard plugin has been renamed in CASCADE 6.5
+    CAS_STDPLUGIN=TKStdSchema
+    CAS_OCAFVIS="$CAS_OCAFVIS -lTKStdSchema -lTKStdLSchema"
+  fi
   
+  CAS_TKV3d="$CAS_LDPATH -lTKV3d"
+  CAS_VIEWER="$CAS_TKV3d -lTKService"
+
+  CAS_TKBRep="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep"
+
+  CAS_TKTopAlgo="$CAS_TKBRep -lTKGeomAlgo -lTKTopAlgo"
+  CAS_TKPrim="$CAS_TKTopAlgo -lTKPrim"
   
+  CAS_MODELER="$CAS_TKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
+
+  CAS_DATAEXCHANGE="$CAS_LDPATH -lTKIGES -lTKSTEP"
+
+  CAS_LDFLAGS="$CAS_KERNEL $CAS_MATH $CAS_OCAF $CAS_OCAFVIS $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"  
+
 fi
 
 AC_LANG_RESTORE
 
 ])dnl
-
-