Salome HOME
HAVE_NETGEN (#define) to remove an unresolved symbol when building without netgen
[modules/smesh.git] / adm_local / unix / config_files / check_Netgen.m4
1 AC_DEFUN([CHECK_NETGEN],[
2
3 AC_REQUIRE([AC_PROG_CXX])dnl
4 AC_REQUIRE([AC_PROG_CXXCPP])dnl
5
6 AC_CHECKING(for Netgen Libraries)
7
8 AC_LANG_SAVE
9 AC_LANG_CPLUSPLUS
10
11 AC_ARG_WITH(netgen,
12             [  --with-netgen=DIR root directory path of NETGEN installation],
13             WITHNETGEN="yes",WITHNETGEN="no")
14
15 NETGEN_INCLUDES=""
16 NETGEN_LIBS=""
17
18 Netgen_ok=no
19
20 if test "$WITHNETGEN" = yes; then
21
22   echo
23   echo
24   echo -------------------------------------------------
25   echo You are about to choose to use somehow the
26   echo Netgen Library to generate Tetrahedric mesh.
27   echo
28   echo WARNING
29   echo ----------------------------------------------------------
30   echo ----------------------------------------------------------
31   echo You are strongly advised to consult the file
32   echo SMESH_SRC/src/NETGEN/ReadMeForNgUsers, particularly about
33   echo assumptions made on the installation of the Netgen
34   echo application and libraries.
35   echo Ask your system administrator for those details.
36   echo ----------------------------------------------------------
37   echo ----------------------------------------------------------
38   echo 
39   echo
40
41   NETGEN_HOME=$withval
42
43   if test "$NETGEN_HOME"; then
44     NETGEN_INCLUDES="-I$NETGEN_HOME/include"
45     NETGEN_LIBS_DIR="$NETGEN_HOME/lib/LINUX"
46     NETGEN_LIBS="-L$NETGEN_LIBS_DIR"
47   fi
48
49   CPPFLAGS_old="$CPPFLAGS"
50   CPPFLAGS="$NETGEN_INCLUDES $CPPFLAGS"
51   CXXFLAGS_old="$CXXFLAGS"
52   CXXFLAGS="$NETGEN_INCLUDES $CXXFLAGS"
53
54   AC_MSG_CHECKING(for Netgen header file)
55
56   AC_CHECK_HEADER(nglib.h,Netgen_ok=yes,Netgen_ok=no)
57   CPPFLAGS="$CPPFLAGS_old"
58   CXXFLAGS="$CXXFLAGS_old"
59
60   if test "$WITHNETGEN" = "yes";then
61     NETGEN_LIBS="-L. -lNETGEN"
62
63     AC_MSG_CHECKING(for Netgen libraries)
64
65     CPPFLAGS_old="$CPPFLAGS"
66     CPPFLAGS="$NETGEN_INCLUDES $CPPFLAGS"
67     CXXFLAGS_old="$CXXFLAGS"
68     CXXFLAGS="$NETGEN_INCLUDES $CXXFLAGS"
69
70     LDFLAGS_old="$LDFLAGS"
71     LDFLAGS="$NETGEN_LIBS $LDFLAGS"
72
73     AC_TRY_COMPILE(#include <iostream.h>
74 #include <fstream.h>
75 #include "nglib.h"
76 ,Ng_Init();
77  Ng_Exit();,Netgen_ok=yes;ar x "$NETGEN_LIBS_DIR"/libnginterface.a;
78             ar x "$NETGEN_LIBS_DIR"/libcsg.a;
79             ar x "$NETGEN_LIBS_DIR"/libgprim.a;
80             ar x "$NETGEN_LIBS_DIR"/libmesh.a;
81             ar x "$NETGEN_LIBS_DIR"/libopti.a;
82             ar x "$NETGEN_LIBS_DIR"/libgen.a;
83             ar x "$NETGEN_LIBS_DIR"/libla.a;
84             ar x "$NETGEN_LIBS_DIR"/libstlgeom.a;
85             ar x "$NETGEN_LIBS_DIR"/libgeom2d.a;
86             "$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 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.o clusters.o zrefine.o ngexception.o geomtest3d.o geom2d.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 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 spline2d.o splinegeometry2.o ngnewdelete.o nglib.o -o libNETGEN.so;
87             rm -rf adfront2.o adfront3.o adtree.o algprim.o array.o basemat.o bfgs.o bisect.o bitarray.o boundarylayer.o brick.o bspline2d.o clusters.o csgeom.o csgparser.o curve2d.o curvedelems.o delaunay.o densemat.o dynamicmem.o edgeflw.o explicitcurve2d.o extrusion.o flags.o gencyl.o genmesh.o geom2dmesh.o geom2d.o geom3d.o geomfuncs.o geomsearch.o geomtest3d.o global.o hashtabl.o hprefinement.o identify.o importsolution.o improve2gen.o improve2.o improve3.o linopt.o linsearch.o localh.o manifold.o meshclass.o meshfunc2d.o meshfunc.o meshing2.o meshing3.o meshstlsurface.o meshsurf.o meshtool.o meshtype.o moveablemem.o msghandler.o mystring.o netrule2.o netrule3.o ngexception.o nglib.o ngnewdelete.o optmem.o parser2.o parser3.o parthreads.o polyhedra.o polynomial.o prism2rls.o pyramid2rls.o pyramidrls.o quadrls.o readuser.o refine.o revolution.o ruler2.o ruler3.o secondorder.o seti.o singularref.o smoothing2.o smoothing3.o solid.o sort.o sparsmat.o spbita2d.o specials.o specpoin.o spline2d.o spline3d.o splinegeometry2.o stlgeomchart.o stlgeommesh.o stlgeom.o stlline.o stltool.o stltopology.o surface.o symbolta.o table.o tetrarls.o topology.o transform3d.o triapprox.o triarls.o vector.o writeabaqus.o writediffpack.o writefeap.o writefluent.o writepermas.o writetecplot.o writetochnog.o writeuser.o wuchemnitz.o zrefine.o,
88             Netgen_ok=no)
89
90     AC_CACHE_VAL(salome_netgen_lib,[
91                  AC_TRY_LINK(
92 #include <iostream.h>
93 #include <fstream.h>
94 #include "nglib.h"
95 ,Ng_Init();
96  Ng_Exit();,
97     eval "salome_netgen_lib=yes";rm -rf libNETGEN.so,eval "salome_netgen_lib=no";rm -rf libNETGEN.so)
98   ])
99   Netgen_ok="$salome_netgen_lib"
100
101
102     LDFLAGS="$LDFLAGS_old"
103     CPPFLAGS="$CPPFLAGS_old"
104     CXXFLAGS="$CXXFLAGS_old"
105   fi
106
107
108 if test "x$Netgen_ok" = xno ; then
109   AC_MSG_RESULT(no)
110   AC_MSG_WARN(Netgen libraries not found or not properly installed)
111 else
112   AC_MSG_RESULT(yes)
113   NETGEN_LIBS="-lNETGEN"
114   CPPFLAGS="${CPPFLAGS} -DHAVE_NETGEN"
115 fi
116 fi
117 AC_SUBST(NETGEN_INCLUDES)
118 AC_SUBST(NETGEN_LIBS)
119 AC_SUBST(NETGEN_LIBS_DIR)
120 AC_SUBST(WITHNETGEN)
121
122 AC_LANG_RESTORE
123
124 ])dnl