[postgis-commits] svn - r2743 - in trunk: . lwgeom
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Fri Mar 28 12:25:16 PDT 2008
Author: pramsey
Date: 2008-03-28 12:25:16 -0700 (Fri, 28 Mar 2008)
New Revision: 2743
Modified:
trunk/ChangeLog
trunk/Makefile.config.in
trunk/configure.in
trunk/lwgeom/Makefile
trunk/lwgeom/lwgeom_geos_c.c
trunk/lwgeom/lwpostgis.sql.in
Log:
Added GEOS_VERNUM macro and protected GEOS 3.0/3.1 functionality behind it.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/ChangeLog 2008-03-28 19:25:16 UTC (rev 2743)
@@ -1,3 +1,13 @@
+2008-03-28 Paul Ramsey <pramsey at cleverelephant.ca>
+
+ * Makefile.config.in, configure.in, lwgeom/Makefile,
+ lwgeom/lwpostgis.sql.in, lwgeom/lwgeom_geos_c.c
+ Changed GEOS version checking to use geos-config, and
+ set a GEOS_VERNUM macro that compresses the version string
+ into an integer: 2.2.1 = 22, 3.1.1 = 31, etc.
+ * Placed GEOS 3.0 and 3.1 dependent functions into
+ appropriate macro blocks.
+
2008-02-12 Paul Ramsey <pramsey at cleverelephant.ca>
* lwgeom/lwgeom_geos_c.c, lwgeom/lwpostgis.sql.in: Add in hook to
Modified: trunk/Makefile.config.in
===================================================================
--- trunk/Makefile.config.in 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/Makefile.config.in 2008-03-28 19:25:16 UTC (rev 2743)
@@ -36,6 +36,7 @@
USE_GEOS=@USE_GEOS@
GEOS_DIR=@GEOS_DIR@
GEOS_LDFLAGS=@GEOS_LDFLAGS@
+GEOS_VERNUM=@GEOS_VERNUM@
#
# Set USE_JTS to 1 if you have libjts installed.
@@ -156,36 +157,11 @@
#---------------------------------------------------------------
# Test the version string and set the USE_VERSION macro
-# appropriately.
+# appropriately. eg:
+#
+# pg_config --version => PostgreSQL 8.3.1
#
-VERSION=$(shell $(PGCONFIG) --version)
-ifneq ($(findstring 7.1,$(VERSION)),)
- USE_VERSION=71
-else
- ifneq ($(findstring 7.2,$(VERSION)),)
- USE_VERSION=72
- else
- ifneq ($(findstring 7.3,$(VERSION)),)
- USE_VERSION=73
- else
- ifneq ($(findstring 7.4,$(VERSION)),)
- USE_VERSION=74
- else
- ifneq ($(findstring 8.0,$(VERSION)),)
- USE_VERSION=80
- else
- ifneq ($(findstring 8.1,$(VERSION)),)
- USE_VERSION=81
- else
- ifneq ($(findstring 8.2,$(VERSION)),)
- USE_VERSION=82
- else
- USE_VERSION=83
- endif
- endif
- endif
- endif
- endif
- endif
-endif
+PG_VERSION_MAJOR=$(shell $(PGCONFIG) --version | cut -f2 -d' ' | cut -f1 -d.)
+PG_VERSION_MINOR=$(shell $(PGCONFIG) --version | cut -f2 -d' ' | cut -f2 -d.)
+USE_VERSION=$(PG_VERSION_MAJOR)$(PG_VERSION_MINOR)
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/configure.in 2008-03-28 19:25:16 UTC (rev 2743)
@@ -117,9 +117,11 @@
AC_SUBST(USE_GEOS)
AC_SUBST(GEOS_DIR)
AC_SUBST(GEOS_LDFLAGS)
+AC_SUBST(GEOS_VERNUM)
USE_GEOS=0
GEOS_DIR=
GEOS_LDFLAGS=
+GEOS_VERNUM=10
AC_PATH_PROG([GEOSCONFIG], [geos-config])
if test -n "$GEOSCONFIG"; then
@@ -145,9 +147,10 @@
)
if test $USE_GEOS -gt 0; then
- GEOS_DIR=`$GEOSCONFIG --prefix`
+ GEOS_DIR=`$GEOSCONFIG --prefix`
GEOS_LDFLAGS=`$GEOSCONFIG --ldflags 2> /dev/null`
+
if test x"$GEOS_LDFLAGS" = "x"; then
# older geos-config versions did not
# support the --ldflags switch, we'll
@@ -157,42 +160,18 @@
fi
GEOS_MAJOR=`$GEOSCONFIG --version | cut -d. -f1`
- if test "$GEOS_MAJOR" = "@GEOS_VERSION@"; then
- GEOS_MAJOR=1
- GEOS_MINOR=0
- else
- GEOS_MINOR=`$GEOSCONFIG --version | cut -d. -f2`
+ GEOS_MINOR=`$GEOSCONFIG --version | cut -d. -f2`
+ GEOS_VERNUM=`expr $GEOS_MAJOR "*" 10`
+ GEOS_VERNUM=`expr $GEOS_VERNUM "+" $GEOS_MINOR`
+
+ # GEOS >= 3.0.0 always has CAPI, however only GEOS >= 2.2.0 has CAPI support
+ # so abort if CAPI support is not available.
+ if test $GEOS_VERNUM -lt 22; then
+ AC_MSG_ERROR([PostGIS version >= 1.2.0 requires GEOS version >= 2.2.0])
fi
- # GEOS >= 3.0.0 always has CAPI, however only GEOS >= 2.2.0 has CAPI support
- # so abort if CAPI support is not available.
- if test $GEOS_MAJOR -lt 3; then
- if test $GEOS_MAJOR -eq 2 -a $GEOS_MINOR -lt 2; then
- AC_MSG_ERROR([PostGIS version >= 1.2.0 requires GEOS version >= 2.2.0])
- else
- # Make sure we abort for all other versions of GEOS
- if test $GEOS_MAJOR -lt 2; then
- AC_MSG_ERROR([PostGIS version >= 1.2.0 requires GEOS version >= 2.2.0])
- fi
- fi
- fi
fi
-AC_ARG_WITH(geos-libdir,
-[ --with-geos-libdir=PATH path to GEOS libdir
- [[taken from geos-config by default]]],
-[
-case "$with_geos_libdir" in
- no|yes)
- AC_MSG_ERROR([Invalid argument to --with-geos-libdir])
- ;;
- *)
- GEOS_LDFLAGS=-L${with_geos_libdir}
- ;;
-esac
-], with_geos_libdir=no)
-
-
AC_SUBST(USE_PROJ)
AC_SUBST(PROJ_DIR)
AC_SUBST(PROJ_LIBDIR)
Modified: trunk/lwgeom/Makefile
===================================================================
--- trunk/lwgeom/Makefile 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/lwgeom/Makefile 2008-03-28 19:25:16 UTC (rev 2743)
@@ -38,6 +38,7 @@
JTS_OBJ=lwgeom_nojts.o
ifeq ($(USE_GEOS),1)
CSTAR_FLAGS += -DUSE_GEOS
+ CSTAR_FLAGS += -DGEOS_VERNUM=$(GEOS_VERNUM)
GEOS_RULES=
CSTAR_FLAGS += -I$(GEOS_DIR)/include
GEOS_WRAPPER=
Modified: trunk/lwgeom/lwgeom_geos_c.c
===================================================================
--- trunk/lwgeom/lwgeom_geos_c.c 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/lwgeom/lwgeom_geos_c.c 2008-03-28 19:25:16 UTC (rev 2743)
@@ -752,6 +752,8 @@
}
+#if GEOS_VERNUM >= 30
+
PG_FUNCTION_INFO_V1(topologypreservesimplify);
Datum topologypreservesimplify(PG_FUNCTION_ARGS)
{
@@ -828,6 +830,7 @@
PG_RETURN_POINTER(result);
}
+#endif
PG_FUNCTION_INFO_V1(buffer);
Datum buffer(PG_FUNCTION_ARGS)
@@ -3673,8 +3676,7 @@
/*
* GEOS prepared geometry is only available from GEOS 3.1 onwards
*/
-#if ( GEOS_VERSION_MAJOR > 3 || (GEOS_VERSION_MAJOR == 3 && GEOS_VERSION_MINOR >= 1) )
-/* #if ( GEOS_CAPI_VERSION_MAJOR > 1 || (GEOS_CAPI_VERSION_MAJOR == 1 && GEOS_CAPI_VERSION_MINOR >= 5) ) */
+#if GEOS_VERNUM >= 31
#define PREPARED_GEOM 1
#endif
Modified: trunk/lwgeom/lwpostgis.sql.in
===================================================================
--- trunk/lwgeom/lwpostgis.sql.in 2008-03-28 18:55:17 UTC (rev 2742)
+++ trunk/lwgeom/lwpostgis.sql.in 2008-03-28 19:25:16 UTC (rev 2743)
@@ -4073,13 +4073,13 @@
---------------------------------------------------------------
-- Deprecation in 1.2.3
-CREATEFUNCTION simplify(geometry, float8)
+CREATEFUNCTION Simplify(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-- Availability: 1.2.2
-CREATEFUNCTION ST_simplify(geometry, float8)
+CREATEFUNCTION ST_Simplify(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
@@ -4137,13 +4137,13 @@
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-- Deprecation in 1.2.3
-CREATEFUNCTION segmentize(geometry, float8)
+CREATEFUNCTION Segmentize(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-- Availability: 1.2.2
-CREATEFUNCTION ST_segmentize(geometry, float8)
+CREATEFUNCTION ST_Segmentize(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
@@ -4264,11 +4264,14 @@
AS '@MODULE_FILENAME@','convexhull'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+#if GEOS_VERNUM >= 30
+-- Requires GEOS >= 3.0.0
-- Availability: 1.3.3
CREATEFUNCTION ST_SimplifyPreserveTopology(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@','topologypreservesimplify'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+#endif
-- Deprecation in 1.2.3
CREATEFUNCTION difference(geometry,geometry)
@@ -4490,7 +4493,7 @@
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-- Deprecation in 1.2.3
-CREATEFUNCTION contains(geometry,geometry)
+CREATEFUNCTION Contains(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
@@ -4508,6 +4511,7 @@
AS 'SELECT $1 && $2 AND _ST_Contains($1,$2)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+#if GEOS_VERNUM >= 30
-- Availability: 1.2.2
CREATEFUNCTION _ST_CoveredBy(geometry,geometry)
RETURNS boolean
@@ -4532,6 +4536,7 @@
RETURNS boolean
AS 'SELECT $1 && $2 AND _ST_Covers($1,$2)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+#endif
-- Deprecation in 1.2.3
CREATEFUNCTION overlaps(geometry,geometry)
@@ -4642,65 +4647,69 @@
-- requires GEOS 3.1.0-CAPI-1.5.0 or better
-----------------------------------------------------------------------
+#if GEOS_VERNUM >= 31
+
+-- Availability: 1.4.0
CREATEFUNCTION _ST_ContainsPrepared(geometry,geometry,integer)
RETURNS boolean
AS '@MODULE_FILENAME@','containsPrepared'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
--- Availability: 1.3.3
+-- Availability: 1.4.0
-- Inlines index magic
CREATEFUNCTION ST_Contains(geometry,geometry,integer)
RETURNS boolean
AS 'SELECT $1 && $2 AND _ST_ContainsPrepared($1,$2,$3)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
+-- Availability: 1.4.0
CREATEFUNCTION _ST_ContainsProperlyPrepared(geometry,geometry,integer)
RETURNS boolean
AS '@MODULE_FILENAME@','containsProperlyPrepared'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
--- Availability: 1.3.3
+-- Availability: 1.4.0
-- Inlines index magic
CREATEFUNCTION ST_ContainsProperly(geometry,geometry,integer)
RETURNS boolean
AS 'SELECT $1 && $2 AND _ST_ContainsProperlyPrepared($1,$2,$3)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Availability: 1.3.3
+-- Availability: 1.4.0
-- Added for completeness, and to make testing ST_ContainsProperlyPrepared easier
CREATE OR REPLACE FUNCTION ST_ContainsProperly(geometry,geometry)
RETURNS boolean
AS 'SELECT $1 && $2 AND ST_relate($1,$2,''T**FF*FF*'')'
LANGUAGE 'SQL' IMMUTABLE;
-
+-- Availability: 1.4.0
CREATEFUNCTION _ST_CoversPrepared(geometry,geometry,integer)
RETURNS boolean
AS '@MODULE_FILENAME@','coversPrepared'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.3.3
+
+-- Availability: 1.4.0
-- Inlines index magic
CREATEFUNCTION ST_Covers(geometry,geometry,integer)
RETURNS boolean
AS 'SELECT $1 && $2 AND _ST_CoversPrepared($1,$2,$3)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
+Availability: 1.4.0
CREATEFUNCTION _ST_IntersectsPrepared(geometry,geometry,integer)
RETURNS boolean
AS '@MODULE_FILENAME@','intersectsPrepared'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.3.3
+
+-- Availability: 1.4.0
-- Inlines index magic
CREATEFUNCTION ST_Intersects(geometry,geometry,integer)
RETURNS boolean
AS 'SELECT $1 && $2 AND _ST_IntersectsPrepared($1,$2,$3)'
LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+#endif
+
-----------------------------------------------------------------------
-- SVG OUTPUT
-----------------------------------------------------------------------
More information about the postgis-commits
mailing list