Salome HOME
Merge from V6_main_20120808 08Aug12
[plugins/netgenplugin.git] / adm_local / unix / config_files / check_NETGEN.m4
index c33735f8cf72c79da484b224043cb274aaeb0896..2738aeb54cf8582f547117bfdb350d725368ce9e 100644 (file)
@@ -1,24 +1,25 @@
-dnl  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+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 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 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 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 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 See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 dnl
+
 AC_DEFUN([CHECK_NETGEN],[
 
 AC_REQUIRE([AC_PROG_CXX])dnl
@@ -35,6 +36,8 @@ AC_ARG_WITH(netgen,
 
 NETGEN_INCLUDES=""
 NETGEN_LIBS_DIR=""
+NETGEN_LIBS=""
+NETGEN_NEW=no
 
 Netgen_ok=no
 
@@ -52,29 +55,29 @@ fi
 
 if test "x$NETGEN_HOME" != "x"; then
 
-  echo
-  echo
-  echo -------------------------------------------------
+  if test -f ${NETGEN_HOME}/lib/libnglib.so ; then
+    NETGEN_NEW=yes  
+  fi
+
+  echo ----------------------------------------------------------
+  echo ----------------------------------------------------------
   echo You are about to choose to use somehow the
   echo Netgen Library to generate Tetrahedric mesh.
-  echo
-  echo WARNING
   echo ----------------------------------------------------------
   echo ----------------------------------------------------------
   echo You are strongly advised to consult the file
-  echo NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers, particularly about
-  echo assumptions made on the installation of the Netgen
+  echo NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers, particularly
+  echo about assumptions made on the installation of the Netgen
   echo application and libraries.
-  echo Ask your system administrator for those details.
   echo ----------------------------------------------------------
   echo ----------------------------------------------------------
-  echo 
-  echo
-
-  
 
   NETGEN_INCLUDES="-I${NETGEN_HOME}/include"
-  
+
+  if test "$NETGEN_NEW" = "yes" ; then
+    NETGEN_INCLUDES="${NETGEN_INCLUDES} -DNETGEN_NEW -I${NETGEN_HOME}/share/netgen/include"
+  fi
+
   # check ${NETGEN_HOME}/lib/LINUX directory for libraries
   if test -f ${NETGEN_HOME}/lib/LINUX/libcsg.a ; then
        NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX"
@@ -91,18 +94,20 @@ if test "x$NETGEN_HOME" != "x"; then
   
   CPPFLAGS_old="$CPPFLAGS"
   CXXFLAGS_old="$CXXFLAGS"
-  CPPFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CPPFLAGS"
-  CXXFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CXXFLAGS"
+  CPPFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CPPFLAGS"
+  CXXFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CXXFLAGS"
 
   AC_MSG_CHECKING(for Netgen header file)
 
   AC_CHECK_HEADER(nglib.h,Netgen_ok=yes,Netgen_ok=no)
   if test "x$Netgen_ok" == "xyes"; then
 
+    if test "$NETGEN_NEW" = "no" ; then
+
     AC_MSG_CHECKING(for Netgen libraries)
 
-    LDFLAGS_old="$LDFLAGS"
-    LDFLAGS="-L. -lNETGEN $CAS_LDPATH -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo $LDFLAGS"
+    LIBS_old="$LIBS"
+    LIBS="-L. -lNETGEN $CAS_LDPATH -lTKernel -lTKMath -lTKG3d -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo $LIBS"
 
     AC_TRY_COMPILE(#include <iostream>
 #include <fstream>
@@ -127,24 +132,102 @@ namespace nglib {
             rm -rf linopt.o bfgs.o linsearch.o global.o bisect.o meshtool.o refine.o ruler3.o improve3.o adfront3.o tetrarls.o prism2rls.o profiler.o pyramidrls.o pyramid2rls.o netrule3.o ruler2.o meshclass.o improve2.o adfront2.o netrule2.o triarls.o geomsearch.o secondorder.o meshtype.o parser3.o quadrls.o specials.o parser2.o meshing2.o meshing3.o meshfunc.o localh.o improve2gen.o delaunay.o boundarylayer.o msghandler.o meshfunc2d.o smoothing2.o smoothing3.o topology.o curvedelems_new.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.o geom2dmesh.o geom3d.o adtree.o transform3d.o geomfuncs.o polynomial.o densemat.o vector.o basemat.o sparsmat.o algprim.o brick.o manifold.o bspline2d.o meshsurf.o csgeom.o polyhedra.o curve2d.o singularref.o edgeflw.o solid.o explicitcurve2d.o specpoin.o gencyl.o revolution.o genmesh.o genmesh2d.o spline3d.o surface.o identify.o triapprox.o meshstlsurface.o stlline.o stltopology.o stltool.o stlgeom.o stlgeomchart.o stlgeommesh.o table.o optmem.o spbita2d.o hashtabl.o sort.o flags.o seti.o bitarray.o array.o symbolta.o mystring.o moveablemem.o spline.o splinegeometry.o ngnewdelete.o nglib.o hprefinement.o Partition_Inter2d.o Partition_Loop.o Partition_Loop3d.o Partition_Inter3d.o Partition_Loop2d.o Partition_Spliter.o occgeom.o occgenmesh.o occmeshsurf.o csgparser.o dynamicmem.o extrusion.o occconstruction.o parthreads.o readuser.o writeabaqus.o writediffpack.o writeelmer.o writefeap.o writefluent.o writegmsh.o writejcm.o writepermas.o writetecplot.o writetochnog.o writeuser.o wuchemnitz.o,
             Netgen_ok=no)
 
-    AC_CACHE_VAL(salome_netgen_lib,[
-                 AC_TRY_LINK(
-#include <iostream>
-#include <fstream>
-namespace nglib {
-#include "nglib.h"
-}
-#define OCCGEOMETRY
-#include <occgeom.hpp>
-,nglib::Ng_Init();
- netgen::OCCGeometry occgeo;
- nglib::Ng_Exit();,
-    eval "salome_netgen_lib=yes";rm -rf libNETGEN.so,eval "salome_netgen_lib=no";rm -rf libNETGEN.so)
-  ])
-    Netgen_ok="$salome_netgen_lib"
+    AC_CACHE_VAL(salome_cv_netgen_lib,[
+                 AC_TRY_LINK([
+                     #include <iostream>
+                     #include <fstream>
+                     namespace nglib {
+                     #include "nglib.h"
+                     }
+                     #define OCCGEOMETRY
+                     #include <occgeom.hpp>
+                  ],[
+                     nglib::Ng_Init();
+                     netgen::OCCGeometry occgeo;
+                     nglib::Ng_Exit();
+                  ],
+                  [eval "salome_cv_netgen_lib=yes";rm -rf libNETGEN.so],
+                  [eval "salome_cv_netgen_lib=no";rm -rf libNETGEN.so])
+    ])
+    Netgen_ok="$salome_cv_netgen_lib"
+
+    else
+
+      LIBS_old="$LIBS"
+      LIBS="-L${NETGEN_LIBS_DIR} -lnglib $CAS_LDPATH -lTKernel -lTKMath -lTKG3d -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo -lTKGeomBase $LIBS"
+
+      AC_MSG_CHECKING(for official Netgen libraries)
+      AC_CACHE_VAL(salome_cv_netgen_lib,[
+      AC_TRY_LINK([
+      #include <iostream>
+      #include <fstream>
+      namespace nglib {
+      #include "nglib.h"
+      }
+      ],[
+      nglib::Ng_Init();
+      nglib::Ng_Exit();
+      ],
+      [eval "salome_cv_netgen_lib=yes"],
+      [eval "salome_cv_netgen_lib=no"])
+      ])
+      Netgen_ok="$salome_cv_netgen_lib"
 
+      if test "$Netgen_ok" = "yes" ; then
+      AC_MSG_RESULT(yes)
+      AC_MSG_CHECKING(for occ support in Netgen libraries)
+      AC_CACHE_VAL(salome_cv_netgen_occ_lib,[
+      AC_TRY_LINK([
+      #include <iostream>
+      #include <fstream>
+      #define OCCGEOMETRY
+      namespace nglib {
+      #include "nglib.h"
+      }
+      ],[
+      nglib::Ng_Init();
+      nglib::Ng_OCC_Geometry * ng_occ_geom = nglib::Ng_OCC_NewGeometry();
+      nglib::Ng_Exit();
+      ],
+      [eval "salome_cv_netgen_occ_lib=yes"],
+      [eval "salome_cv_netgen_occ_lib=no"])
+      ])
+      Netgen_ok="$salome_cv_netgen_occ_lib"
+      fi
 
-    LDFLAGS="$LDFLAGS_old"
+      if test "$Netgen_ok" = "yes" ; then
+      AC_MSG_RESULT(yes)
+      AC_MSG_CHECKING(for salome patch in Netgen installation)
+      AC_CACHE_VAL(salome_cv_netgen_salome_patch_lib,[
+      AC_TRY_LINK([
+      #include <iostream>
+      #include <fstream>
+      #define OCCGEOMETRY
+      namespace nglib {
+      #include "nglib.h"
+      }
+      #include <occgeom.hpp>
+      ],[
+      nglib::Ng_Init();
+      netgen::OCCGeometry occgeo;
+      nglib::Ng_Exit();
+      ],
+      [eval "salome_cv_netgen_salome_patch_lib=yes"],
+      [eval "salome_cv_netgen_salome_patch_lib=no"])
+      ])
+      Netgen_ok="$salome_cv_netgen_salome_patch_lib"
+      fi
+
+      if test "x$Netgen_ok" == xno ; then
+      AC_MSG_RESULT(no)
+      AC_MSG_ERROR(Netgen is not properly installed. Read NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers for details.)
+      fi
+
+      NETGEN_LIBS="-L${NETGEN_LIBS_DIR} -lnglib"
+
+    fi
+
+    LIBS="$LIBS_old"
   fi
 
   CPPFLAGS="$CPPFLAGS_old"
@@ -152,14 +235,21 @@ namespace nglib {
 
   if test "x$Netgen_ok" == xno ; then
     AC_MSG_RESULT(no)
-    AC_MSG_WARN(Netgen libraries not found or not properly installed)
+    AC_MSG_ERROR(Netgen libraries not found or not properly installed)
   else
     AC_MSG_RESULT(yes)
   fi
+
+else
+
+    AC_MSG_ERROR(Netgen libraries not found. Please define NETGENHOME or use --with-netgen option)
+
 fi
 
 AC_SUBST(NETGEN_INCLUDES)
 AC_SUBST(NETGEN_LIBS_DIR)
+AC_SUBST(NETGEN_LIBS)
+AM_CONDITIONAL(NETGEN_NEW, [test x"$NETGEN_NEW" = x"yes"])
 
 AC_LANG_RESTORE