Salome HOME
Merge from V6_main_20120808 08Aug12
[plugins/netgenplugin.git] / adm_local / unix / config_files / check_NETGEN.m4
1 dnl Copyright (C) 2007-2012  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_NETGEN],[
24
25 AC_REQUIRE([AC_PROG_CXX])dnl
26 AC_REQUIRE([AC_PROG_CXXCPP])dnl
27
28 AC_CHECKING(for Netgen 4.5 and higher Libraries)
29
30 AC_LANG_SAVE
31 AC_LANG_CPLUSPLUS
32
33 AC_ARG_WITH(netgen,
34             [  --with-netgen=DIR root directory path of NETGEN installation],
35             NETGEN_HOME=$withval,NETGEN_HOME="")
36
37 NETGEN_INCLUDES=""
38 NETGEN_LIBS_DIR=""
39 NETGEN_LIBS=""
40 NETGEN_NEW=no
41
42 Netgen_ok=no
43
44 if test "x$NETGEN_HOME" == "x" ; then
45
46 # no --with-netgen option used
47    if test "x$NETGENHOME" != "x" ; then
48
49     # NETGENHOME environment variable defined
50       NETGEN_HOME=$NETGENHOME
51
52    fi
53
54 fi
55
56 if test "x$NETGEN_HOME" != "x"; then
57
58   if test -f ${NETGEN_HOME}/lib/libnglib.so ; then
59     NETGEN_NEW=yes  
60   fi
61
62   echo ----------------------------------------------------------
63   echo ----------------------------------------------------------
64   echo You are about to choose to use somehow the
65   echo Netgen Library to generate Tetrahedric mesh.
66   echo ----------------------------------------------------------
67   echo ----------------------------------------------------------
68   echo You are strongly advised to consult the file
69   echo NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers, particularly
70   echo about assumptions made on the installation of the Netgen
71   echo application and libraries.
72   echo ----------------------------------------------------------
73   echo ----------------------------------------------------------
74
75   NETGEN_INCLUDES="-I${NETGEN_HOME}/include"
76
77   if test "$NETGEN_NEW" = "yes" ; then
78     NETGEN_INCLUDES="${NETGEN_INCLUDES} -DNETGEN_NEW -I${NETGEN_HOME}/share/netgen/include"
79   fi
80
81   # check ${NETGEN_HOME}/lib/LINUX directory for libraries
82   if test -f ${NETGEN_HOME}/lib/LINUX/libcsg.a ; then
83         NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX"
84   else
85         # check ${NETGEN_HOME}/lib/LINUX64 directory for libraries
86         if test -f ${NETGEN_HOME}/lib/LINUX64/libcsg.a ; then
87                 NETGEN_LIBS_DIR="${NETGEN_HOME}/lib/LINUX64"
88         else
89                 NETGEN_LIBS_DIR="${NETGEN_HOME}/lib"
90         fi
91   fi
92
93   echo "NETGEN_LIBS_DIR = $NETGEN_LIBS_DIR"
94   
95   CPPFLAGS_old="$CPPFLAGS"
96   CXXFLAGS_old="$CXXFLAGS"
97   CPPFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CPPFLAGS"
98   CXXFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CXXFLAGS"
99
100   AC_MSG_CHECKING(for Netgen header file)
101
102   AC_CHECK_HEADER(nglib.h,Netgen_ok=yes,Netgen_ok=no)
103   if test "x$Netgen_ok" == "xyes"; then
104
105     if test "$NETGEN_NEW" = "no" ; then
106
107     AC_MSG_CHECKING(for Netgen libraries)
108
109     LIBS_old="$LIBS"
110     LIBS="-L. -lNETGEN $CAS_LDPATH -lTKernel -lTKMath -lTKG3d -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo $LIBS"
111
112     AC_TRY_COMPILE(#include <iostream>
113 #include <fstream>
114 namespace nglib {
115 #include "nglib.h"
116 }
117 #define OCCGEOMETRY
118 #include <occgeom.hpp>
119 ,nglib::Ng_Init();
120  netgen::OCCGeometry occgeo;
121  nglib::Ng_Exit();,Netgen_ok=yes;ar x "$NETGEN_LIBS_DIR/libnginterface.a";
122             ar x "$NETGEN_LIBS_DIR/libocc.a";
123             ar x "$NETGEN_LIBS_DIR/libcsg.a";
124             ar x "$NETGEN_LIBS_DIR/libgprim.a";
125             ar x "$NETGEN_LIBS_DIR/libmesh.a";
126             ar x "$NETGEN_LIBS_DIR/libopti.a";
127             ar x "$NETGEN_LIBS_DIR/libgen.a";
128             ar x "$NETGEN_LIBS_DIR/libla.a";
129             ar x "$NETGEN_LIBS_DIR/libstlgeom.a";
130             ar x "$NETGEN_LIBS_DIR/libgeom2d.a";
131             $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;
132             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,
133             Netgen_ok=no)
134
135     AC_CACHE_VAL(salome_cv_netgen_lib,[
136                  AC_TRY_LINK([
137                      #include <iostream>
138                      #include <fstream>
139                      namespace nglib {
140                      #include "nglib.h"
141                      }
142                      #define OCCGEOMETRY
143                      #include <occgeom.hpp>
144                   ],[
145                      nglib::Ng_Init();
146                      netgen::OCCGeometry occgeo;
147                      nglib::Ng_Exit();
148                   ],
149                   [eval "salome_cv_netgen_lib=yes";rm -rf libNETGEN.so],
150                   [eval "salome_cv_netgen_lib=no";rm -rf libNETGEN.so])
151     ])
152     Netgen_ok="$salome_cv_netgen_lib"
153
154     else
155
156       LIBS_old="$LIBS"
157       LIBS="-L${NETGEN_LIBS_DIR} -lnglib $CAS_LDPATH -lTKernel -lTKMath -lTKG3d -lTKBRep -lTKShHealing -lTKSTEP -lTKXSBase -lTKIGES -lTKSTL -lTKTopAlgo -lTKGeomBase $LIBS"
158
159       AC_MSG_CHECKING(for official Netgen libraries)
160       AC_CACHE_VAL(salome_cv_netgen_lib,[
161       AC_TRY_LINK([
162       #include <iostream>
163       #include <fstream>
164       namespace nglib {
165       #include "nglib.h"
166       }
167       ],[
168       nglib::Ng_Init();
169       nglib::Ng_Exit();
170       ],
171       [eval "salome_cv_netgen_lib=yes"],
172       [eval "salome_cv_netgen_lib=no"])
173       ])
174       Netgen_ok="$salome_cv_netgen_lib"
175
176       if test "$Netgen_ok" = "yes" ; then
177       AC_MSG_RESULT(yes)
178       AC_MSG_CHECKING(for occ support in Netgen libraries)
179       AC_CACHE_VAL(salome_cv_netgen_occ_lib,[
180       AC_TRY_LINK([
181       #include <iostream>
182       #include <fstream>
183       #define OCCGEOMETRY
184       namespace nglib {
185       #include "nglib.h"
186       }
187       ],[
188       nglib::Ng_Init();
189       nglib::Ng_OCC_Geometry * ng_occ_geom = nglib::Ng_OCC_NewGeometry();
190       nglib::Ng_Exit();
191       ],
192       [eval "salome_cv_netgen_occ_lib=yes"],
193       [eval "salome_cv_netgen_occ_lib=no"])
194       ])
195       Netgen_ok="$salome_cv_netgen_occ_lib"
196       fi
197
198       if test "$Netgen_ok" = "yes" ; then
199       AC_MSG_RESULT(yes)
200       AC_MSG_CHECKING(for salome patch in Netgen installation)
201       AC_CACHE_VAL(salome_cv_netgen_salome_patch_lib,[
202       AC_TRY_LINK([
203       #include <iostream>
204       #include <fstream>
205       #define OCCGEOMETRY
206       namespace nglib {
207       #include "nglib.h"
208       }
209       #include <occgeom.hpp>
210       ],[
211       nglib::Ng_Init();
212       netgen::OCCGeometry occgeo;
213       nglib::Ng_Exit();
214       ],
215       [eval "salome_cv_netgen_salome_patch_lib=yes"],
216       [eval "salome_cv_netgen_salome_patch_lib=no"])
217       ])
218       Netgen_ok="$salome_cv_netgen_salome_patch_lib"
219       fi
220
221       if test "x$Netgen_ok" == xno ; then
222       AC_MSG_RESULT(no)
223       AC_MSG_ERROR(Netgen is not properly installed. Read NETGENPLUGIN_SRC/src/NETGEN/ReadMeForNgUsers for details.)
224       fi
225
226       NETGEN_LIBS="-L${NETGEN_LIBS_DIR} -lnglib"
227
228     fi
229
230     LIBS="$LIBS_old"
231   fi
232
233   CPPFLAGS="$CPPFLAGS_old"
234   CXXFLAGS="$CXXFLAGS_old"
235
236   if test "x$Netgen_ok" == xno ; then
237     AC_MSG_RESULT(no)
238     AC_MSG_ERROR(Netgen libraries not found or not properly installed)
239   else
240     AC_MSG_RESULT(yes)
241   fi
242
243 else
244
245     AC_MSG_ERROR(Netgen libraries not found. Please define NETGENHOME or use --with-netgen option)
246
247 fi
248
249 AC_SUBST(NETGEN_INCLUDES)
250 AC_SUBST(NETGEN_LIBS_DIR)
251 AC_SUBST(NETGEN_LIBS)
252 AM_CONDITIONAL(NETGEN_NEW, [test x"$NETGEN_NEW" = x"yes"])
253
254 AC_LANG_RESTORE
255
256 ])dnl