From f239b970072a4a2628ea2cae9e9d6e20211c786a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 29 Jan 2007 17:16:03 +0000
Subject: [PATCH] better configure for MED

---
 Common/CommandLine.cpp |   5 +-
 Fltk/Callbacks.cpp     |   4 +-
 Geo/GModelIO_MED.cpp   |  16 +++---
 Geo/GModelIO_MED.h     |   2 +-
 Geo/Makefile           |   8 ++-
 configure              | 127 ++++++++++++++++++++++++++++++++---------
 configure.in           |  77 ++++++++++++++-----------
 doc/CREDITS            |   7 ++-
 doc/TODO               |   7 ++-
 9 files changed, 176 insertions(+), 77 deletions(-)

diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 88853f1a62..ca9c9a1e91 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.92 2007-01-18 09:12:44 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.93 2007-01-29 17:16:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -160,6 +160,9 @@ char *Get_BuildOptions(void)
 #endif
 #if defined(HAVE_OCC)
     strcat(opt, "OCC ");
+#endif
+#if defined(HAVE_MED)
+    strcat(opt, "MED ");
 #endif
     first = 0;
   }
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index fcdcdc35cc..ab78ea68bc 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.511 2007-01-29 14:52:57 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.512 2007-01-29 17:16:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -720,7 +720,7 @@ void file_save_as_cb(CALLBACK_ARGS)
 #if defined(HAVE_LIBCGNS)
     {"CGNS (*.cgns)", _save_cgns},
 #endif
-#if defined(HAVE_LIBMED)
+#if defined(HAVE_MED)
     {"MED (*.med)", _save_med},
 #endif
     {"Encapsulated PostScript (*.eps)", _save_eps},
diff --git a/Geo/GModelIO_MED.cpp b/Geo/GModelIO_MED.cpp
index 30296cd579..963cc5f54b 100644
--- a/Geo/GModelIO_MED.cpp
+++ b/Geo/GModelIO_MED.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_MED.cpp,v 1.1 2007-01-29 14:52:57 geuzaine Exp $
+// $Id: GModelIO_MED.cpp,v 1.2 2007-01-29 17:16:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,19 +19,19 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
-#include "GModel.h"
-#include "MVertex.h"
-#include "MEdge.h"
-#include "Message.h"
-
-#if defined(HAVE_LIBMED)
-
 #include <map>
 #include <string>
 #include <vector>
 #include <iostream>
 #include <sstream>
+
+#include "GModel.h"
 #include "GModelIO_MED.h"
+#include "MVertex.h"
+#include "MEdge.h"
+#include "Message.h"
+
+#if defined(HAVE_MED)
 
 extern "C" {
 #include "med.h"
diff --git a/Geo/GModelIO_MED.h b/Geo/GModelIO_MED.h
index b7cd334163..b740806888 100644
--- a/Geo/GModelIO_MED.h
+++ b/Geo/GModelIO_MED.h
@@ -13,7 +13,7 @@
 #include "GFace.h"
 #include "Message.h"
 
-#if defined(HAVE_LIBMED)
+#if defined(HAVE_MED)
 
 extern "C"
 {
diff --git a/Geo/Makefile b/Geo/Makefile
index cecdcdfb43..77f82a3031 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.126 2007-01-29 14:52:57 geuzaine Exp $
+# $Id: Makefile,v 1.127 2007-01-29 17:16:02 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -210,6 +210,12 @@ GModelIO_CGNS.o: GModelIO_CGNS.cpp GModel.h GVertex.h GEntity.h Range.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \
   ../Common/SmoothNormals.h ../Common/Message.h MNeighbour.h
+GModelIO_MED.o: GModelIO_MED.cpp GModel.h GVertex.h GEntity.h Range.h \
+  SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
+  SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
+  MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ExtrudeParams.h GFace.h GEdgeLoop.h Pair.h GRegion.h \
+  ../Common/SmoothNormals.h GModelIO_MED.h ../Common/Message.h
 ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/configure b/configure
index 5d02aecd1f..68f3749c72 100755
--- a/configure
+++ b/configure
@@ -3593,26 +3593,83 @@ fi
     fi
   fi
 
-    if test "x${ZLIB}" = "xyes"; then
-        if test "x${FL_ZLIB}" = "xyes"; then
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-    else
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-      if test "x${ZLIB_PREFIX}" = "x"; then
-        GMSH_LIBS="${GMSH_LIBS} -lz"
-      else
-                GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz"
-        FLAGS="${FLAGS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include"
-      fi
-    fi
-  fi
-
 else
 
   GMSH_DIRS="${GMSH_DIRS} Box"
   GMSH_LIBS="-Llib Box/Main.o -lGmshBox -lGmshParser -lGmshMesh -lGmshGeo -lGmshPlugin"
   GMSH_LIBS="${GMSH_LIBS} -lGmshCommon -lGmshDataStr -lGmshNumeric -lGmshParallel"
 
+    ZLIB=""
+  if test "x$enable_zlib" != "xno"; then
+    if test "x${ZLIB_PREFIX}" != "x"; then
+      LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}"
+    fi
+    echo "$as_me:$LINENO: checking for main in -lz" >&5
+echo $ECHO_N "checking for main in -lz... $ECHO_C" >&6
+if test "${ac_cv_lib_z_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_z_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_z_main=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_z_main" >&5
+echo "${ECHO_T}$ac_cv_lib_z_main" >&6
+if test $ac_cv_lib_z_main = yes; then
+  ZLIB="yes"
+else
+  ZLIB="no"
+fi
+
+  fi
+
 fi
 
 
@@ -4619,11 +4676,12 @@ fi
   fi
 fi
 
-if test "x$enable_med" != "xno"; then
-  if test "x${HDF5_PREFIX}" != "x"; then
-    LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
-  fi
-  echo "$as_me:$LINENO: checking for main in -lhdf5" >&5
+if test "x${ZLIB}" = "xyes"; then
+  if test "x$enable_med" != "xno"; then
+    if test "x${HDF5_PREFIX}" != "x"; then
+      LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
+    fi
+    echo "$as_me:$LINENO: checking for main in -lhdf5" >&5
 echo $ECHO_N "checking for main in -lhdf5... $ECHO_C" >&6
 if test "${ac_cv_lib_hdf5_main+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4687,12 +4745,13 @@ else
   HDF5="no"
 fi
 
-  if test "x${HDF5}" = "xyes"; then
-    if test "x${HDF5_PREFIX}" = "x"; then
-      GMSH_LIBS="${GMSH_LIBS} -lhdf5"
-    else
-      GMSH_LIBS="${GMSH_LIBS} -L${HDF5_PREFIX}/lib -lhdf5"
-      FLAGS="${FLAGS} -I${HDF5_PREFIX}/include"
+    if test "x${HDF5}" = "xyes"; then
+      if test "x${HDF5_PREFIX}" = "x"; then
+        GMSH_LIBS="${GMSH_LIBS} -lhdf5"
+      else
+        GMSH_LIBS="${GMSH_LIBS} -L${HDF5_PREFIX}/lib -lhdf5"
+        FLAGS="${FLAGS} -I${HDF5_PREFIX}/include"
+      fi
     fi
   fi
 fi
@@ -4769,15 +4828,29 @@ fi
     if test "x${MED}" = "xyes"; then
       if test "x${MED_PREFIX}" = "x"; then
         GMSH_LIBS="${GMSH_LIBS} -lmed"
-        FLAGS="${FLAGS} -DHAVE_LIBMED"
+        FLAGS="${FLAGS} -DHAVE_MED"
       else
         GMSH_LIBS="${GMSH_LIBS} -L${MED_PREFIX}/lib -lmed"
-        FLAGS="${FLAGS} -DHAVE_LIBMED -I${MED_PREFIX}/include"
+        FLAGS="${FLAGS} -DHAVE_MED -I${MED_PREFIX}/include"
       fi
     fi
   fi
 fi
 
+if test "x${ZLIB}" = "xyes"; then
+    if test "x${FL_ZLIB}" = "xyes"; then
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+  else
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+    if test "x${ZLIB_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} -lz"
+    else
+            GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz"
+      FLAGS="${FLAGS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include"
+    fi
+  fi
+fi
+
 if test "x$enable_parallel" = "xyes"; then
   FLAGS="-DHAVE_PARALLEL ${FLAGS}"
 fi
diff --git a/configure.in b/configure.in
index 9fa6e6d3c6..f471caffef 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.118 2007-01-29 14:52:57 geuzaine Exp $
+dnl $Id: configure.in,v 1.119 2007-01-29 17:16:01 geuzaine Exp $
 dnl
 dnl Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 dnl
@@ -281,29 +281,21 @@ if test "x$enable_gui" != "xno"; then
     fi 
   fi
 
-  dnl Complete zlib link line (zlib must be linked in after libpng)
-  if test "x${ZLIB}" = "xyes"; then
-    dnl If provided by FLTK, use that one; otherwise, look for it
-    if test "x${FL_ZLIB}" = "xyes"; then
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-    else
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-      if test "x${ZLIB_PREFIX}" = "x"; then
-        GMSH_LIBS="${GMSH_LIBS} -lz"
-      else
-        dnl Find the libs/includes even if libz is _not_ properly installed (ugly hack!)
-        GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz"
-        FLAGS="${FLAGS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include"
-      fi
-    fi
-  fi 
-
 else
 
   GMSH_DIRS="${GMSH_DIRS} Box"
   GMSH_LIBS="-Llib Box/Main.o -lGmshBox -lGmshParser -lGmshMesh -lGmshGeo -lGmshPlugin"
   GMSH_LIBS="${GMSH_LIBS} -lGmshCommon -lGmshDataStr -lGmshNumeric -lGmshParallel"
 
+  dnl Check for libz
+  ZLIB=""
+  if test "x$enable_zlib" != "xno"; then
+    if test "x${ZLIB_PREFIX}" != "x"; then
+      LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}"
+    fi
+    AC_CHECK_LIB(z,main,ZLIB="yes",ZLIB="no")
+  fi
+
 fi
 
 dnl Check for standard math library
@@ -592,23 +584,25 @@ if test "x$enable_occ" = "xyes"; then
   fi
 fi
 
-dnl Check for HDF5 (required by MED)
-if test "x$enable_med" != "xno"; then
-  if test "x${HDF5_PREFIX}" != "x"; then
-    LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
-  fi
-  AC_CHECK_LIB(hdf5,main,HDF5="yes",HDF5="no")
-  if test "x${HDF5}" = "xyes"; then
-    if test "x${HDF5_PREFIX}" = "x"; then
-      GMSH_LIBS="${GMSH_LIBS} -lhdf5"
-    else
-      GMSH_LIBS="${GMSH_LIBS} -L${HDF5_PREFIX}/lib -lhdf5"
-      FLAGS="${FLAGS} -I${HDF5_PREFIX}/include"
+dnl Check for HDF5 (required by MED, needs zlib)
+if test "x${ZLIB}" = "xyes"; then
+  if test "x$enable_med" != "xno"; then
+    if test "x${HDF5_PREFIX}" != "x"; then
+      LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
+    fi
+    AC_CHECK_LIB(hdf5,main,HDF5="yes",HDF5="no")
+    if test "x${HDF5}" = "xyes"; then
+      if test "x${HDF5_PREFIX}" = "x"; then
+        GMSH_LIBS="${GMSH_LIBS} -lhdf5"
+      else
+        GMSH_LIBS="${GMSH_LIBS} -L${HDF5_PREFIX}/lib -lhdf5"
+        FLAGS="${FLAGS} -I${HDF5_PREFIX}/include"
+      fi
     fi
   fi
 fi
 
-dnl Check for MED
+dnl Check for MED (needs hdf5)
 if test "x${HDF5}" = "xyes"; then
   if test "x$enable_med" != "xno"; then
     if test "x${MED_PREFIX}" != "x"; then
@@ -618,15 +612,32 @@ if test "x${HDF5}" = "xyes"; then
     if test "x${MED}" = "xyes"; then
       if test "x${MED_PREFIX}" = "x"; then
         GMSH_LIBS="${GMSH_LIBS} -lmed"
-        FLAGS="${FLAGS} -DHAVE_LIBMED"
+        FLAGS="${FLAGS} -DHAVE_MED"
       else
         GMSH_LIBS="${GMSH_LIBS} -L${MED_PREFIX}/lib -lmed"
-        FLAGS="${FLAGS} -DHAVE_LIBMED -I${MED_PREFIX}/include"
+        FLAGS="${FLAGS} -DHAVE_MED -I${MED_PREFIX}/include"
       fi
     fi
   fi
 fi
 
+dnl Complete zlib link line (zlib must be linked in after libpng and libhdf5)
+if test "x${ZLIB}" = "xyes"; then
+  dnl If provided by FLTK, use that one; otherwise, look for it
+  if test "x${FL_ZLIB}" = "xyes"; then
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+  else
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+    if test "x${ZLIB_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} -lz"
+    else
+      dnl Find the libs/includes even if libz is _not_ properly installed (ugly hack!)
+      GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz"
+      FLAGS="${FLAGS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include"
+    fi
+  fi
+fi 
+
 dnl Check if we should build the parallel version
 if test "x$enable_parallel" = "xyes"; then
   FLAGS="-DHAVE_PARALLEL ${FLAGS}"
diff --git a/doc/CREDITS b/doc/CREDITS
index a782b64205..9981efabb6 100644
--- a/doc/CREDITS
+++ b/doc/CREDITS
@@ -1,4 +1,4 @@
-$Id: CREDITS,v 1.42 2007-01-18 09:12:45 geuzaine Exp $
+$Id: CREDITS,v 1.43 2007-01-29 17:16:03 geuzaine Exp $
 
              Gmsh is copyright (C) 1997-2007
 
@@ -12,8 +12,9 @@ $Id: CREDITS,v 1.42 2007-01-18 09:12:45 geuzaine Exp $
 
 Major code contributions to Gmsh have been provided by Nicolas Tardieu
 <ntardieu at giref.ulaval.ca> (help with the GSL integration, new "STL
-to elementary geometry" interface, Netgen integration) and Stephen
-Guzik <sguzik at utias.utoronto.ca> (CGNS integration).
+to elementary geometry" interface, Netgen integration), Stephen Guzik
+<sguzik at utias.utoronto.ca> (CGNS integration) and Pascale Noyret
+(MED integration).
 
 Other code contributors include: David Colignon <David.Colignon at
 ulg.ac.be> for new colormaps; Patrick Dular <patrick.dular at
diff --git a/doc/TODO b/doc/TODO
index 2365135185..0d6cc4f76f 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,4 +1,4 @@
-$Id: TODO,v 1.41 2007-01-26 17:52:26 geuzaine Exp $
+$Id: TODO,v 1.42 2007-01-29 17:16:03 geuzaine Exp $
 
 ********************************************************************
 
@@ -6,6 +6,11 @@ introduce Right/Left/Alternate for extruded meshes
 
 ********************************************************************
 
+make sure to check for zlib in configure for med (even in non-gui
+case)
+
+********************************************************************
+
 fix second order mesh for periodic surfaces
 
 ********************************************************************
-- 
GitLab