Changeset: aedb27571816 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aedb27571816
Added Files:
        geom/monetdb5/31_sfcgal.mal
        geom/monetdb5/sfcgal.c
        geom/monetdb5/sfcgal.h
        geom/monetdb5/sfcgal.mal
        geom/sql/41_sfcgal.sql
Modified Files:
        NT/rules.msc
        clients/Tests/All
        configure.ag
        geom/monetdb5/Makefile.ag
        geom/sql/Makefile.ag
        sql/test/Tests/All
        sql/test/leaks/Tests/All
        testing/Mtest.py.in
Branch: sfcgal
Log Message:

Added a minimal extension of the geom module that utilizes the SFCGAL library


diffs (truncated from 339 to 300 lines):

diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -371,6 +371,11 @@ create_winconfig_conds_new_py:
 !ELSE
        $(ECHO) HAVE_SHP_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
 !ENDIF
+!IFDEF HAVE_SFCGAL
+       $(ECHO) HAVE_SFCGAL_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ELSE
+       $(ECHO) HAVE_SFCGAL_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ENDIF
 !IFDEF HAVE_MONETDB5
        $(ECHO) HAVE_MONETDB5_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py"
 !ELSE
diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,4 +1,4 @@
 exports
-HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBR&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS&!HAVE_SHP&HAVE_SPHINXCLIENT?MAL-signatures
-!BITS32&!BITS64OID32&HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&HAVE_NETCDF&HAVE_PCRE&!HAVE_SHP&HAVE_SAMTOOLS?SQL-dump
+HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBR&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS&!HAVE_SHP&HAVE_SFCGAL&HAVE_SPHINXCLIENT?MAL-signatures
+!BITS32&!BITS64OID32&HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&HAVE_NETCDF&HAVE_PCRE&!HAVE_SHP&HAVE_SFCGAL&HAVE_SAMTOOLS?SQL-dump
 MERCURIAL?malcheck
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -218,6 +218,22 @@ no-auto)
        ;;
 esac
 
+dft_sfcgal=auto
+AC_ARG_ENABLE(sfcgal,
+       AS_HELP_STRING([--enable-sfcgal],
+               [enable support for SFCGAL based functionality (default=auto)]),
+       have_sfcgal=$enableval,
+       have_sfcgal=$dft_sfcgal)
+case "$enable_geom-$have_sfcgal" in
+no-yes)
+       AC_MSG_ERROR([SFCGAL-based functionality requires the geom module])
+       ;;
+no-auto)
+       have_sfcgal=no
+       disable_sfcgal="(SFCGAL based functionality requires the geom module)"
+       ;;
+esac
+
 dft_embedded=no
 AC_ARG_ENABLE(embedded,
        AS_HELP_STRING([--enable-embedded],
@@ -2764,6 +2780,56 @@ if test "x$have_gdal" = xno; then
 fi
 AM_CONDITIONAL(HAVE_SHP, test x"$have_shp" != xno )
 
+
+org_have_sfcgallib=auto
+have_sfcgallib=$org_have_sfcgallib
+SFCGAL_INCS=''
+SFCGAL_LIBS=''
+AC_ARG_WITH(sfcgal,
+       AS_HELP_STRING([--with-sfcgal=DIR],
+                                  [SFCGAL library is installed in DIR]),
+                                  have_sfcgallib="$withval")
+case "$have_sfcgal" in
+yes|auto)
+       if test "x$have_sfcgallib" != xno; then
+               case "$have_sfcgallib" in
+               yes|auto)
+                       XPATH="$PATH"
+                               ;;
+               *)
+                       XPATH="$have_sfcgallib/bin"
+                       have_sfcgallib=yes
+                       ;;
+               esac
+               AC_PATH_PROG(SFCGAL_CONFIG,sfcgal-config,,$XPATH)
+               if test "x$SFCGAL_CONFIG" = x; then
+                       if test "x$have_sfcgallib" = "xyes" ; then
+                               AC_MSG_ERROR([sfcgal-config not found in 
$XPATH])
+                       else
+                               have_sfcgallib=no
+                               why_have_sfcgal="(sfcgal-config not found)"
+                       fi
+               fi
+       fi
+       if test "x$have_sfcgallib" != xno; then
+               SFCGAL_INCS="`$SFCGAL_CONFIG --cflags`"
+               SFCGAL_LIBS="`$SFCGAL_CONFIG --libs`"
+       fi
+       if test "x$have_sfcgallib" = xno; then
+               if test "x$enable_sfcgal" = xyes; then
+                       AC_MSG_ERROR([SFCGAL library required for SFCGAL-based 
functionality])
+               fi
+               # no sfcgal library, so don't compile sfcgal-based functionality
+               have_sfcgal=no
+               disable_sfcgal=${why_have_sfcgal:-"(SFCGAL library required)"}
+       fi
+       ;;
+esac
+AM_CONDITIONAL(HAVE_SFCGAL, test x"$have_sfcgal" != xno )
+AC_SUBST(SFCGAL_INCS)
+AC_SUBST(SFCGAL_LIBS)
+
+
 PKG_CHECK_MODULES([atomic_ops], [atomic_ops], [have_atomic_ops="yes"],
        [have_atomic_ops="no"; why_have_atomic_ops="(atomic_ops library not 
found)"])
 if test x"$have_atomic_ops" = x"yes" ; then
@@ -3613,6 +3679,7 @@ for comp in \
        'python3      ' \
        'readline     ' \
        'samtools     ' \
+       'sfcgal       ' \
        'shp          ' \
        'sphinxclient ' \
        'unixodbc     ' \
diff --git a/geom/monetdb5/31_sfcgal.mal b/geom/monetdb5/31_sfcgal.mal
new file mode 100644
--- /dev/null
+++ b/geom/monetdb5/31_sfcgal.mal
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+
+# This loads the SFCGAL module
+library sfcgal;
+include sfcgal;
diff --git a/geom/monetdb5/Makefile.ag b/geom/monetdb5/Makefile.ag
--- a/geom/monetdb5/Makefile.ag
+++ b/geom/monetdb5/Makefile.ag
@@ -10,7 +10,8 @@ INCLUDES = ../lib \
            ../../common/stream \
            ../../common/options \
            ../../monetdb5/mal \
-           $(GEOS_INCS) $(PROJ_INCS)
+           $(GEOS_INCS) $(PROJ_INCS) \
+           $(SFCGAL_INCS)
 
 lib__geom = {
        MODULE
@@ -35,4 +36,30 @@ headers_autoload = {
        SOURCES = 30_geom.mal
 }
 
-EXTRA_DIST = 30_geom.mal geom.mal
+lib__sfcgal = {
+       COND = HAVE_SFCGAL
+       MODULE
+       DIR = libdir/monetdb5
+       SOURCES = sfcgal.h sfcgal.c
+       LIBS = ../lib/libgeom \
+                  ../../gdk/libbat \
+              ../../common/stream/libstream \
+              ../../monetdb5/tools/libmonetdb5 \
+              $(SFCGAL_LIBS)
+}
+
+headers_mal_sfcgal = {
+       COND = HAVE_SFCGAL
+       HEADERS = mal
+       DIR = libdir/monetdb5
+       SOURCES = sfcgal.mal
+}
+
+headers_autoload_sfcgal = {
+       COND = HAVE_SFCGAL
+       HEADERS = mal
+       DIR = libdir/monetdb5/autoload
+       SOURCES = 31_sfcgal.mal
+}
+
+EXTRA_DIST = 30_geom.mal 31_geom.mal geom.mal
diff --git a/geom/monetdb5/sfcgal.c b/geom/monetdb5/sfcgal.c
new file mode 100644
--- /dev/null
+++ b/geom/monetdb5/sfcgal.c
@@ -0,0 +1,22 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+ */
+
+/*
+ * @a Kostis Kyzirakos
+ * @* SFCGAL-based functionality for the geom module
+ */
+
+#include "sfcgal.h"
+
+char *
+msfcgal_version(char **ret)
+{
+       *ret = GDKstrdup(sfcgal_version());
+
+       return MAL_SUCCEED;
+}
diff --git a/geom/monetdb5/sfcgal.h b/geom/monetdb5/sfcgal.h
new file mode 100644
--- /dev/null
+++ b/geom/monetdb5/sfcgal.h
@@ -0,0 +1,41 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+ */
+
+/*
+ * @a Kostis Kyzirakos
+ */
+
+#include <monetdb_config.h>
+#include "libgeom.h"
+#include "geom.h"
+
+#include <mal.h>
+#include <mal_atom.h>
+#include <mal_exception.h>
+#include <mal_client.h>
+#include <stream.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <time.h>
+
+#include <SFCGAL/capi/sfcgal_c.h>
+
+#ifdef WIN32
+#ifndef LIBGEOM
+#define geom_export extern __declspec(dllimport)
+#else
+#define geom_export extern __declspec(dllexport)
+#endif
+#else
+#define geom_export extern
+#endif
+
+geom_export char * msfcgal_version(char **ret);
diff --git a/geom/monetdb5/sfcgal.mal b/geom/monetdb5/sfcgal.mal
new file mode 100644
--- /dev/null
+++ b/geom/monetdb5/sfcgal.mal
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+
+module sfcgal;
+
+command version() :str address msfcgal_version
+comment "Returns the version number of the SFCGAL library";
+
diff --git a/geom/sql/41_sfcgal.sql b/geom/sql/41_sfcgal.sql
new file mode 100644
--- /dev/null
+++ b/geom/sql/41_sfcgal.sql
@@ -0,0 +1,7 @@
+-- This Source Code Form is subject to the terms of the Mozilla Public
+-- License, v. 2.0.  If a copy of the MPL was not distributed with this
+-- file, You can obtain one at http://mozilla.org/MPL/2.0/.
+--
+-- Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+
+CREATE FUNCTION SFCGAL_VERSION() RETURNS string EXTERNAL NAME sfcgal."version";
diff --git a/geom/sql/Makefile.ag b/geom/sql/Makefile.ag
--- a/geom/sql/Makefile.ag
+++ b/geom/sql/Makefile.ag
@@ -10,4 +10,11 @@ headers_sql = {
        SOURCES = 40_geom.sql
 }
 
+headers_sql_sfcgal = {
+       COND = HAVE_SFCGAL
+       HEADERS = sql
+       DIR = libdir/monetdb5/createdb
+       SOURCES = 41_sfcgal.sql
+}
+
 EXTRA_DIST_DIR = Tests
diff --git a/sql/test/Tests/All b/sql/test/Tests/All
--- a/sql/test/Tests/All
+++ b/sql/test/Tests/All
@@ -1,4 +1,4 @@
-HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&!HAVE_SHP&HAVE_NETCDF&HAVE_SAMTOOLS?systemfunctions
+HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&!HAVE_SHP&!HAVE_SFCGAL&HAVE_NETCDF&HAVE_SAMTOOLS?systemfunctions
 example
 example-queries
 example-drop
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to