AC_REQUIRE([AC_PROG_CXX])dnl
AC_REQUIRE([AC_PROG_CXXCPP])dnl
+AC_REQUIRE([CHECK_CAS])dnl
-AC_CHECKING(for Netgen 4.5 and higher Libraries)
+AC_CHECKING([for Netgen])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
-AC_ARG_WITH(netgen,
- [ --with-netgen=DIR root directory path of NETGEN installation],
- NETGEN_HOME=$withval,NETGEN_HOME="")
+AC_ARG_WITH([netgen],
+ [AC_HELP_STRING([--with-netgen=DIR], [root directory path to NETGEN library installation])],
+ [NETGEN_HOME=$withval],[NETGEN_HOME=yes])
NETGEN_INCLUDES=""
-NETGEN_LIBS_DIR=""
NETGEN_LIBS=""
-NETGEN_NEW=no
+NETGEN_V5=no
-Netgen_ok=no
-
-if test "x$NETGEN_HOME" == "x" ; then
+AC_SUBST(NETGEN_INCLUDES)
+AC_SUBST(NETGEN_LIBS)
-# no --with-netgen option used
- if test "x$NETGENHOME" != "x" ; then
+Netgen_ok=no
- # NETGENHOME environment variable defined
- NETGEN_HOME=$NETGENHOME
+if test "x$NETGEN_HOME" = "x" -o "x$NETGEN_HOME" = "xyes" -o "x$NETGEN_HOME" = "xauto" ; then
+ # auto-detection
- fi
-#
+ if test "x$NETGENHOME" != "x" ; then
+ # - by environment variable NETGENHOME
+ NETGEN_HOME=$NETGENHOME
+ else
+ # - by searching NETGEN executables
+ AC_PATH_PROG([TEMP], [ng_stl])
+ if test "x$TEMP" != "x" ; then
+ NETGEN_BIN_DIR=`dirname $TEMP`
+ NETGEN_HOME=`dirname $NETGEN_BIN_DIR`
+ else
+ NETGEN_HOME=""
+ fi
+ fi
fi
-if test "x$NETGEN_HOME" != "x"; then
+echo NETGEN_HOME=$NETGEN_HOME
- if test -f ${NETGEN_HOME}/lib/libnglib.so ; then
- NETGEN_NEW=yes
- fi
+if test "x$NETGEN_HOME" != "x"; then
- echo ----------------------------------------------------------
echo ----------------------------------------------------------
echo You are about to choose to use somehow the
echo Netgen Library to generate Tetrahedric mesh.
- echo ----------------------------------------------------------
- echo ----------------------------------------------------------
+ echo
echo You are strongly advised to consult the file
echo NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers, particularly
echo about assumptions made on the installation of the Netgen
echo application and libraries.
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"
- else
- # check ${NETGEN_HOME}/lib/LINUX64 directory for libraries
- if test -f ${NETGEN_HOME}/lib/LINUX64/libcsg.a ; then
- NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX64"
- else
- NETGEN_LIBS_DIR="${NETGEN_HOME}/lib"
- fi
- fi
-
- echo "NETGEN_LIBS_DIR = $NETGEN_LIBS_DIR"
+ NETGEN_INCLUDES="-I${NETGEN_HOME}/include -I${NETGEN_HOME}/share/netgen/include"
+ NETGEN_LIBS="-L${NETGEN_HOME}/lib -lnglib"
+ dnl check Netgen headers availability
+
CPPFLAGS_old="$CPPFLAGS"
CXXFLAGS_old="$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)
-
- 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>
-namespace nglib {
-#include "nglib.h"
-}
-#define OCCGEOMETRY
-#include <occgeom.hpp>
-,nglib::Ng_Init();
- netgen::OCCGeometry occgeo;
- nglib::Ng_Exit();,Netgen_ok=yes;ar x "$NETGEN_LIBS_DIR/libnginterface.a";
- ar x "$NETGEN_LIBS_DIR/libocc.a";
- ar x "$NETGEN_LIBS_DIR/libcsg.a";
- ar x "$NETGEN_LIBS_DIR/libgprim.a";
- ar x "$NETGEN_LIBS_DIR/libmesh.a";
- ar x "$NETGEN_LIBS_DIR/libopti.a";
- ar x "$NETGEN_LIBS_DIR/libgen.a";
- ar x "$NETGEN_LIBS_DIR/libla.a";
- ar x "$NETGEN_LIBS_DIR/libstlgeom.a";
- ar x "$NETGEN_LIBS_DIR/libgeom2d.a";
- $CXX -shared 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 -o libNETGEN.so;
- 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_cv_netgen_lib,[
- AC_TRY_LINK([
+ CXXFLAGS="$CAS_CXXFLAGS $NETGEN_INCLUDES $CXXFLAGS"
+
+ AC_MSG_CHECKING([for Netgen header file])
+
+ AC_CHECK_HEADER([nglib.h], [Netgen_ok=yes], [Netgen_ok=no])
+
+ dnl check Netgen libraries
+
+ LIBS_old="$LIBS"
+ LIBS="$NETGEN_LIBS $CAS_LDPATH -lTKernel -lTKMath -lTKG3d -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo -lTKGeomBase $LIBS"
+
+ if test "x$Netgen_ok" = "xyes"; then
+
+ AC_MSG_CHECKING([for Netgen libraries])
+
+ 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])
- ])
+ ],
+ [eval "salome_cv_netgen_lib=yes"],
+ [eval "salome_cv_netgen_lib=no"])
+ ])
+
Netgen_ok="$salome_cv_netgen_lib"
- else
+ fi
+
+ dnl check if Netgen of v5 or v4
- 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
-
- 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"
+ if test "$Netgen_ok" = "yes" ; then
+ AC_MSG_RESULT([yes])
+
+ AC_MSG_CHECKING([Netgen version])
+
+ AC_CACHE_VAL([salome_cv_netgen_v5_lib],
+ [AC_TRY_LINK(
+ [
+ #include <iostream>
+ #include <fstream>
+ #define OCCGEOMETRY
+ namespace nglib {
+ #include "nglib.h"
+ }
+ #include <occgeom.hpp>
+ ],
+ [
+ nglib::Ng_Init();
+ netgen::Mesh* ngMesh;
+ ngMesh->CalcLocalH(1.0);
+ nglib::Ng_Exit();
+ ],
+ [eval "salome_cv_netgen_v5_lib=yes"],
+ [eval "salome_cv_netgen_v5_lib=no"])
+ ])
+
+ if test "x$salome_cv_netgen_v5_lib" = "xyes" ; then
+ NETGEN_V5=yes
fi
+ fi
+
+ dnl check OCCT support in Netgen
+
+ if test "$Netgen_ok" = "yes" ; then
+
+ AC_MSG_RESULT([yes])
+
+ AC_MSG_CHECKING([for OCCT support in Netgen library])
+
+ 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"
- LIBS="$LIBS_old"
fi
+ dnl check SALOME patch in Netgen
+
+ if test "$Netgen_ok" = "yes" ; then
+
+ AC_MSG_RESULT([yes])
+
+ AC_MSG_CHECKING([for SALOME patch in Netgen library])
+
+ 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
+
+ LIBS="$LIBS_old"
CPPFLAGS="$CPPFLAGS_old"
CXXFLAGS="$CXXFLAGS_old"
- if test "x$Netgen_ok" == xno ; then
- AC_MSG_RESULT(no)
- AC_MSG_ERROR(Netgen libraries not found or not properly installed)
+fi
+
+if test "x$Netgen_ok" = xyes ; then
+
+ AC_MSG_RESULT([yes])
+
+ if test "x$NETGEN_V5" = "xyes" ; then
+ AC_MSG_RESULT([Netgen is of version 5.0 or newer])
+ NETGEN_INCLUDES="$NETGEN_INCLUDES -DNETGEN_V5"
else
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([Netgen is of version 4.9.13 or older])
fi
else
- AC_MSG_ERROR(Netgen libraries not found. Please define NETGENHOME or use --with-netgen option)
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Netgen is not properly installed. Read NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers for more details.])
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
])dnl