From d3e4dd8e4ac1212a714bebbedab1bdc655d3d24a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 15 Nov 2006 15:06:45 +0000
Subject: [PATCH] more occ work

---
 Common/CommandLine.cpp |   8 +++-
 Geo/GModelIO_OCC.cpp   |   5 +-
 Geo/OCCEdge.cpp        |   4 +-
 Geo/OCCFace.cpp        |   4 +-
 Geo/OCCRegion.cpp      |   4 +-
 configure              | 101 +++++++++++++++++++++++++++++++++++++++++
 configure.in           |  35 +++++++++++++-
 7 files changed, 151 insertions(+), 10 deletions(-)

diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index ea1a81e51e..20c72a27ae 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.81 2006-09-24 05:59:13 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.82 2006-11-15 15:06:45 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -158,6 +158,12 @@ char *Get_BuildOptions(void)
 #endif
 #if defined(HAVE_ANN_)
     strcat(opt, "ANN ");
+#endif
+#if defined(HAVE_CGNS)
+    strcat(opt, "CGNS ");
+#endif
+#if defined(HAVE_OCC)
+    strcat(opt, "OCC ");
 #endif
     first = 0;
   }
diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index 32055b81cf..4c1e3f8543 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1,4 +1,4 @@
-  // $Id: GModelIO_OCC.cpp,v 1.2 2006-11-15 14:35:03 remacle Exp $
+  // $Id: GModelIO_OCC.cpp,v 1.3 2006-11-15 15:06:45 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -21,7 +21,8 @@
 
 #include "GModel.h"
 #include "Message.h"
-#ifdef _HAVE_OCC_
+
+#if defined(HAVE_OCC)
 #include "OCCIncludes.h"
 #include "OCCVertex.h"
 #include "OCCEdge.h"
diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp
index 16b5003d2a..611635c2ea 100644
--- a/Geo/OCCEdge.cpp
+++ b/Geo/OCCEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCEdge.cpp,v 1.2 2006-11-14 20:20:18 remacle Exp $
+// $Id: OCCEdge.cpp,v 1.3 2006-11-15 15:06:45 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,7 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
-#ifdef _HAVE_OCC_
+#if defined(HAVE_OCC)
 #include "GModel.h"
 #include "OCCEdge.h"
 
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 3fd9dbe05b..3978cab58f 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCFace.cpp,v 1.3 2006-11-15 14:35:03 remacle Exp $
+// $Id: OCCFace.cpp,v 1.4 2006-11-15 15:06:45 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,7 @@
 // 
 // Please report all bugs and problems to <OCC@geuz.org>.
 
-#ifdef _HAVE_OCC_
+#if defined(HAVE_OCC)
 #include "GModel.h"
 #include "OCCVertex.h"
 #include "OCCEdge.h"
diff --git a/Geo/OCCRegion.cpp b/Geo/OCCRegion.cpp
index bfaa45a2c1..458c5288ac 100644
--- a/Geo/OCCRegion.cpp
+++ b/Geo/OCCRegion.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCRegion.cpp,v 1.1 2006-11-15 14:36:39 remacle Exp $
+// $Id: OCCRegion.cpp,v 1.2 2006-11-15 15:06:45 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,7 @@
 // 
 // Please report all bugs and problems to <OCC@geuz.org>.
 
-#ifdef _HAVE_OCC_
+#if defined(HAVE_OCC)
 #include "GModel.h"
 #include "OCCVertex.h"
 #include "OCCEdge.h"
diff --git a/configure b/configure
index cec80e4a04..d32894c552 100755
--- a/configure
+++ b/configure
@@ -864,6 +864,7 @@ Optional Features:
   --enable-matheval       compile MathEval if available (default=yes)
   --enable-osmesa         use OSMesa for offscreen rendering (default=no)
   --enable-cgns           enable CGNS output (default=no)
+  --enable-occ            enable OpenCascade support (default=no)
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -879,6 +880,7 @@ Optional Packages:
   --with-osmesa-prefix=PFX
                           prefix where OSMesa is installed
   --with-cgns-prefix=PFX  prefix where CGNS is installed
+  --with-occ-prefix=PFX   prefix where OpenCascade is installed
 
 Some influential environment variables:
   CC          C compiler command
@@ -1373,6 +1375,12 @@ if test "${with_cgns_prefix+set}" = set; then
   CGNS_PREFIX=$withval
 fi;
 
+# Check whether --with-occ-prefix or --without-occ-prefix was given.
+if test "${with_occ_prefix+set}" = set; then
+  withval="$with_occ_prefix"
+  OCC_PREFIX=$withval
+fi;
+
 # Check whether --enable-gsl or --disable-gsl was given.
 if test "${enable_gsl+set}" = set; then
   enableval="$enable_gsl"
@@ -1452,6 +1460,11 @@ fi;
 if test "${enable_cgns+set}" = set; then
   enableval="$enable_cgns"
 
+fi;
+# Check whether --enable-occ or --disable-occ was given.
+if test "${enable_occ+set}" = set; then
+  enableval="$enable_occ"
+
 fi;
 
 UNAME=`uname`
@@ -4490,6 +4503,94 @@ fi
   fi
 fi
 
+if test "x${OCC_PREFIX}" != "x"; then
+  enable_occ="yes"
+fi
+if test "x$enable_occ" = "xyes"; then
+  if test "x${OCC_PREFIX}" != "x"; then
+    LDFLAGS="-L${OCC_PREFIX}/lib ${LDFLAGS}"
+  fi
+  echo "$as_me:$LINENO: checking for main in -lTKernel" >&5
+echo $ECHO_N "checking for main in -lTKernel... $ECHO_C" >&6
+if test "${ac_cv_lib_TKernel_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lTKernel  $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_TKernel_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_TKernel_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_TKernel_main" >&5
+echo "${ECHO_T}$ac_cv_lib_TKernel_main" >&6
+if test $ac_cv_lib_TKernel_main = yes; then
+  OCC="yes"
+else
+  OCC="no"
+fi
+
+  if test "x${OCC}" = "xyes"; then
+    OCC_LIBS="-lTKIGES -lTKPrim  -lTKTopAlgo -lTKXDESTEP -lTKStdSchema"
+    OCC_LIBS="${OCC_LIBS} -lTKGeomAlgo -lTKSTEP -lTKStdLSchema -lTKV3d -lTKBRep"
+    OCC_LIBS="${OCC_LIBS} -lTKBool -lTKXDEIGES  -lTKV2d -lTKGeomBase -lTKSTEP209"
+    OCC_LIBS="${OCC_LIBS} -lTKG3d -lTKSTEPAttr -lTKG2d -lTKIGES -lTKSTEPBase"
+    OCC_LIBS="${OCC_LIBS} -lTKMath -lTKernel -lTKShHealing -lTKMesh -lTKXSBase"
+    OCC_LIBS="${OCC_LIBS} -lTKXDESTEP -lTKSTEP"
+    if test "x${OCC_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} ${OCC_LIBS}"
+      FLAGS="${FLAGS} -DHAVE_OCC"
+    else
+      GMSH_LIBS="${GMSH_LIBS} -L${OCC_PREFIX}/lib ${OCC_LIBS}"
+      FLAGS="${FLAGS} -DHAVE_OCC -I${OCC_PREFIX}/include -I${OCC_PREFIX}/inc"
+    fi
+  fi
+fi
+
 if test "x$enable_parallel" = "xyes"; then
   FLAGS="-DHAVE_PARALLEL ${FLAGS}"
 fi
diff --git a/configure.in b/configure.in
index d9a0be7ba5..0eaff18da4 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.105 2006-10-10 14:04:12 geuzaine Exp $
+dnl $Id: configure.in,v 1.106 2006-11-15 15:06:45 geuzaine Exp $
 dnl
 dnl Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 dnl
@@ -57,6 +57,10 @@ AC_ARG_WITH(cgns-prefix,
             AC_HELP_STRING([--with-cgns-prefix=PFX],
                            [prefix where CGNS is installed]),
             [CGNS_PREFIX=$withval])
+AC_ARG_WITH(occ-prefix,
+            AC_HELP_STRING([--with-occ-prefix=PFX],
+                           [prefix where OpenCascade is installed]),
+            [OCC_PREFIX=$withval])
 
 dnl Parse '--enable' command line options
 AC_ARG_ENABLE(gsl,
@@ -107,6 +111,9 @@ AC_ARG_ENABLE(osmesa,
 AC_ARG_ENABLE(cgns,
               AC_HELP_STRING([--enable-cgns],
                              [enable CGNS output (default=no)]))
+AC_ARG_ENABLE(occ,
+              AC_HELP_STRING([--enable-occ],
+                             [enable OpenCascade support (default=no)]))
 
 dnl Get the operating system name
 UNAME=`uname`
@@ -540,6 +547,32 @@ if test "x$enable_cgns" = "xyes"; then
   fi
 fi
 
+dnl Check for OpenCascade
+if test "x${OCC_PREFIX}" != "x"; then
+  enable_occ="yes"
+fi
+if test "x$enable_occ" = "xyes"; then
+  if test "x${OCC_PREFIX}" != "x"; then
+    LDFLAGS="-L${OCC_PREFIX}/lib ${LDFLAGS}"
+  fi
+  AC_CHECK_LIB(TKernel,main,OCC="yes",OCC="no")
+  if test "x${OCC}" = "xyes"; then
+    OCC_LIBS="-lTKIGES -lTKPrim  -lTKTopAlgo -lTKXDESTEP -lTKStdSchema"
+    OCC_LIBS="${OCC_LIBS} -lTKGeomAlgo -lTKSTEP -lTKStdLSchema -lTKV3d -lTKBRep"
+    OCC_LIBS="${OCC_LIBS} -lTKBool -lTKXDEIGES  -lTKV2d -lTKGeomBase -lTKSTEP209"
+    OCC_LIBS="${OCC_LIBS} -lTKG3d -lTKSTEPAttr -lTKG2d -lTKIGES -lTKSTEPBase"
+    OCC_LIBS="${OCC_LIBS} -lTKMath -lTKernel -lTKShHealing -lTKMesh -lTKXSBase"
+    OCC_LIBS="${OCC_LIBS} -lTKXDESTEP -lTKSTEP"
+    if test "x${OCC_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} ${OCC_LIBS}"
+      FLAGS="${FLAGS} -DHAVE_OCC"
+    else
+      GMSH_LIBS="${GMSH_LIBS} -L${OCC_PREFIX}/lib ${OCC_LIBS}"
+      FLAGS="${FLAGS} -DHAVE_OCC -I${OCC_PREFIX}/include -I${OCC_PREFIX}/inc"
+    fi
+  fi
+fi
+
 dnl Check if we should build the parallel version
 if test "x$enable_parallel" = "xyes"; then
   FLAGS="-DHAVE_PARALLEL ${FLAGS}"
-- 
GitLab