rgeo 3.0.0.pre.rc.2 → 3.0.0.pre.rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/geos_c_impl/analysis.c +26 -23
  4. data/ext/geos_c_impl/analysis.h +8 -5
  5. data/ext/geos_c_impl/coordinates.c +27 -21
  6. data/ext/geos_c_impl/coordinates.h +5 -2
  7. data/ext/geos_c_impl/errors.c +15 -8
  8. data/ext/geos_c_impl/errors.h +4 -1
  9. data/ext/geos_c_impl/extconf.rb +40 -30
  10. data/ext/geos_c_impl/factory.c +367 -387
  11. data/ext/geos_c_impl/factory.h +59 -48
  12. data/ext/geos_c_impl/geometry.c +368 -320
  13. data/ext/geos_c_impl/geometry.h +5 -5
  14. data/ext/geos_c_impl/geometry_collection.c +256 -183
  15. data/ext/geos_c_impl/geometry_collection.h +6 -7
  16. data/ext/geos_c_impl/globals.c +99 -21
  17. data/ext/geos_c_impl/globals.h +3 -2
  18. data/ext/geos_c_impl/line_string.c +229 -198
  19. data/ext/geos_c_impl/line_string.h +5 -6
  20. data/ext/geos_c_impl/main.c +8 -9
  21. data/ext/geos_c_impl/point.c +62 -63
  22. data/ext/geos_c_impl/point.h +4 -5
  23. data/ext/geos_c_impl/polygon.c +116 -84
  24. data/ext/geos_c_impl/polygon.h +10 -8
  25. data/ext/geos_c_impl/preface.h +4 -13
  26. data/ext/geos_c_impl/ruby_more.c +35 -40
  27. data/ext/geos_c_impl/ruby_more.h +3 -2
  28. data/lib/rgeo/cartesian/bounding_box.rb +1 -1
  29. data/lib/rgeo/cartesian/factory.rb +8 -43
  30. data/lib/rgeo/cartesian/feature_methods.rb +0 -5
  31. data/lib/rgeo/cartesian/interface.rb +6 -5
  32. data/lib/rgeo/coord_sys/cs/entities.rb +214 -0
  33. data/lib/rgeo/coord_sys/cs/wkt_parser.rb +15 -8
  34. data/lib/rgeo/coord_sys.rb +1 -9
  35. data/lib/rgeo/feature/curve.rb +0 -10
  36. data/lib/rgeo/feature/factory.rb +1 -9
  37. data/lib/rgeo/feature/factory_generator.rb +3 -7
  38. data/lib/rgeo/feature/geometry.rb +0 -10
  39. data/lib/rgeo/feature/multi_curve.rb +0 -5
  40. data/lib/rgeo/feature/types.rb +5 -5
  41. data/lib/rgeo/geographic/factory.rb +9 -42
  42. data/lib/rgeo/geographic/interface.rb +28 -99
  43. data/lib/rgeo/geographic/projected_feature_methods.rb +0 -10
  44. data/lib/rgeo/geographic/projected_window.rb +1 -1
  45. data/lib/rgeo/geographic/{proj4_projector.rb → projector.rb} +3 -3
  46. data/lib/rgeo/geographic/simple_mercator_projector.rb +1 -10
  47. data/lib/rgeo/geographic/spherical_feature_methods.rb +0 -5
  48. data/lib/rgeo/geographic.rb +1 -1
  49. data/lib/rgeo/geos/capi_factory.rb +37 -91
  50. data/lib/rgeo/geos/capi_feature_classes.rb +0 -29
  51. data/lib/rgeo/geos/ffi_factory.rb +52 -92
  52. data/lib/rgeo/geos/ffi_feature_methods.rb +1 -31
  53. data/lib/rgeo/geos/interface.rb +5 -20
  54. data/lib/rgeo/geos/zm_factory.rb +5 -36
  55. data/lib/rgeo/geos/zm_feature_methods.rb +1 -26
  56. data/lib/rgeo/geos.rb +2 -5
  57. data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +1 -14
  58. data/lib/rgeo/impl_helper/basic_line_string_methods.rb +1 -19
  59. data/lib/rgeo/impl_helper/basic_point_methods.rb +0 -10
  60. data/lib/rgeo/impl_helper/basic_polygon_methods.rb +1 -9
  61. data/lib/rgeo/impl_helper/utils.rb +27 -0
  62. data/lib/rgeo/impl_helper/validity_check.rb +3 -3
  63. data/lib/rgeo/version.rb +1 -1
  64. data/lib/rgeo/wkrep/wkb_generator.rb +68 -53
  65. data/lib/rgeo/wkrep/wkb_parser.rb +19 -16
  66. data/lib/rgeo/wkrep/wkt_generator.rb +34 -34
  67. data/lib/rgeo/wkrep/wkt_parser.rb +26 -23
  68. data/lib/rgeo.rb +1 -3
  69. metadata +7 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 939fdbb8c9bbcb94342b99f952ad5524cb436683ea054bcab0aaa408f362ac2a
4
- data.tar.gz: 4cd0c59ee3e08947c646c1b7e5c9a9755c44a0a87459437754867bbb5c2e304e
3
+ metadata.gz: 91ca209240d93482556f0aaf2b1dcb3beca7710af47a3cba6b12014a09a8b3be
4
+ data.tar.gz: b22b62247f1c4f3d07d4e7e4c1552999ae42d1d0d94808cc2fa7805e48914acd
5
5
  SHA512:
6
- metadata.gz: e6f02199e30b35334156d3a1107213b6dab9028572e423d2f0f6072a7a2032586e26dfa5a594a8132b33d4071f0d55f6bd75dcd60d1e5a60df4bde0c51b7a78f
7
- data.tar.gz: 20404c7de6aec61e04eae659253ddf16f518afce40c64274d261acc1a160f5420866c8188fed18425e1a55788e5041ff9b7a93c653f61cdde0a7ce15dccfa1a1
6
+ metadata.gz: 803a18e2ccb670da3db22c630bda86bb6ad80643c8a3e4e6bae448a1e3003632904bdf90b2d7642601857c01b92ffbf4a5e354fd292fb85033db7c0e19cd49b3
7
+ data.tar.gz: 142ada28031864f3a2960605b504aa3daf222db98d190fc208589b31841f328cefb5192391594a6237b48d1aab907eae2250e63c12824ef65d22f6ca01546057
data/README.md CHANGED
@@ -37,7 +37,7 @@ Use the core **rgeo** gem to:
37
37
 
38
38
  RGeo works with the following Ruby implementations:
39
39
 
40
- * MRI Ruby 2.3.0 or later.
40
+ * MRI Ruby 2.6.0 or later.
41
41
  * Partial support for JRuby 9.0 or later. The FFI implementation of GEOS
42
42
  is available (ffi-geos gem required) but CAPI is not.
43
43
  * See earlier versions for support for older ruby versions.
@@ -6,14 +6,13 @@
6
6
 
7
7
  #ifdef RGEO_GEOS_SUPPORTED
8
8
 
9
- #include <ruby.h>
10
9
  #include <geos_c.h>
11
-
12
- #include "globals.h"
10
+ #include <ruby.h>
13
11
 
14
12
  #include "analysis.h"
15
- #include "factory.h"
16
13
  #include "errors.h"
14
+ #include "factory.h"
15
+ #include "globals.h"
17
16
 
18
17
  RGEO_BEGIN_C
19
18
 
@@ -25,9 +24,9 @@ RGEO_BEGIN_C
25
24
  * otherwise.
26
25
  */
27
26
  #ifdef RGEO_GEOS_SUPPORTS_ISCCW
28
- VALUE rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring)
27
+ VALUE
28
+ rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring)
29
29
  {
30
-
31
30
  const RGeo_GeometryData* ring_data;
32
31
  const GEOSCoordSequence* coord_seq;
33
32
  char is_ccw;
@@ -36,17 +35,18 @@ VALUE rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring)
36
35
 
37
36
  ring_data = RGEO_GEOMETRY_DATA_PTR(ring);
38
37
 
39
- coord_seq = GEOSGeom_getCoordSeq_r(ring_data->geos_context, ring_data->geom);
40
- if (!coord_seq) { rb_raise(rb_eGeosError, "Could not retrieve CoordSeq from given ring."); }
41
- if (!GEOSCoordSeq_isCCW_r(ring_data->geos_context, coord_seq, &is_ccw)) {
38
+ coord_seq = GEOSGeom_getCoordSeq(ring_data->geom);
39
+ if (!coord_seq) {
40
+ rb_raise(rb_eGeosError, "Could not retrieve CoordSeq from given ring.");
41
+ }
42
+ if (!GEOSCoordSeq_isCCW(coord_seq, &is_ccw)) {
42
43
  rb_raise(rb_eGeosError, "Could not determine if the CoordSeq is CCW.");
43
44
  }
44
45
 
45
46
  return is_ccw ? Qtrue : Qfalse;
46
- };
47
+ }
47
48
  #endif // RGEO_GEOS_SUPPORTS_ISCCW
48
49
 
49
-
50
50
  /**
51
51
  * call-seq:
52
52
  * RGeo::Geos::Analysis.ccw_supported? -> true or false
@@ -54,25 +54,28 @@ VALUE rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring)
54
54
  * Checks if the RGEO_GEOS_SUPPORTS_ISCCW macro is defined, returns +true+
55
55
  * if it is, +false+ otherwise
56
56
  */
57
- VALUE rgeo_geos_analysis_supports_ccw(VALUE self)
57
+ VALUE
58
+ rgeo_geos_analysis_supports_ccw(VALUE self)
58
59
  {
59
- #ifdef RGEO_GEOS_SUPPORTS_ISCCW
60
- return Qtrue;
61
- #else
62
- return Qfalse;
63
- #endif
60
+ #ifdef RGEO_GEOS_SUPPORTS_ISCCW
61
+ return Qtrue;
62
+ #else
63
+ return Qfalse;
64
+ #endif
64
65
  }
65
66
 
66
-
67
- void rgeo_init_geos_analysis()
67
+ void
68
+ rgeo_init_geos_analysis()
68
69
  {
69
70
  VALUE geos_analysis_module;
70
71
 
71
72
  geos_analysis_module = rb_define_module_under(rgeo_geos_module, "Analysis");
72
- rb_define_singleton_method(geos_analysis_module, "ccw_supported?", rgeo_geos_analysis_supports_ccw, 0);
73
- #ifdef RGEO_GEOS_SUPPORTS_ISCCW
74
- rb_define_singleton_method(geos_analysis_module, "ccw?", rgeo_geos_analysis_ccw_p, 1);
75
- #endif // RGEO_GEOS_SUPPORTS_ISCCW
73
+ rb_define_singleton_method(
74
+ geos_analysis_module, "ccw_supported?", rgeo_geos_analysis_supports_ccw, 0);
75
+ #ifdef RGEO_GEOS_SUPPORTS_ISCCW
76
+ rb_define_singleton_method(
77
+ geos_analysis_module, "ccw?", rgeo_geos_analysis_ccw_p, 1);
78
+ #endif // RGEO_GEOS_SUPPORTS_ISCCW
76
79
  }
77
80
 
78
81
  RGEO_END_C
@@ -19,19 +19,22 @@ RGEO_BEGIN_C
19
19
  * otherwise.
20
20
  */
21
21
  #ifdef RGEO_GEOS_SUPPORTS_CCW
22
- VALUE rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring);
22
+ VALUE
23
+ rgeo_geos_analysis_ccw_p(VALUE self, VALUE ring);
23
24
  #endif // RGEO_GEOS_SUPPORTS_CCW
24
25
 
25
26
  /**
26
27
  * call-seq:
27
- * RGeo::Geos::Analysis.ccw_supported? -> true or false
28
- *
28
+ * RGeo::Geos::Analysis.ccw_supported? -> true or false
29
+ *
29
30
  * Checks if the RGEO_GEOS_SUPPORTS_ISCCW macro is defined, returns +true+
30
31
  * if it is, +false+ otherwise
31
32
  */
32
- VALUE rgeo_geos_analysis_supports_ccw(VALUE self);
33
+ VALUE
34
+ rgeo_geos_analysis_supports_ccw(VALUE self);
33
35
 
34
- void rgeo_init_geos_analysis();
36
+ void
37
+ rgeo_init_geos_analysis();
35
38
 
36
39
  RGEO_END_C
37
40
 
@@ -1,8 +1,9 @@
1
- #include <ruby.h>
2
1
  #include <geos_c.h>
2
+ #include <ruby.h>
3
3
 
4
-
5
- VALUE extract_points_from_coordinate_sequence(GEOSContextHandle_t context, const GEOSCoordSequence* coord_sequence, int zCoordinate)
4
+ VALUE
5
+ extract_points_from_coordinate_sequence(const GEOSCoordSequence* coord_sequence,
6
+ int zCoordinate)
6
7
  {
7
8
  VALUE result = Qnil;
8
9
  VALUE point;
@@ -10,20 +11,20 @@ VALUE extract_points_from_coordinate_sequence(GEOSContextHandle_t context, const
10
11
  unsigned int i;
11
12
  double val;
12
13
 
13
- if(GEOSCoordSeq_getSize_r(context, coord_sequence, &count)) {
14
+ if (GEOSCoordSeq_getSize(coord_sequence, &count)) {
14
15
  result = rb_ary_new2(count);
15
- for(i = 0; i < count; ++i) {
16
- if(zCoordinate) {
16
+ for (i = 0; i < count; ++i) {
17
+ if (zCoordinate) {
17
18
  point = rb_ary_new2(3);
18
19
  } else {
19
20
  point = rb_ary_new2(2);
20
21
  }
21
- GEOSCoordSeq_getX_r(context, coord_sequence, i, &val);
22
+ GEOSCoordSeq_getX(coord_sequence, i, &val);
22
23
  rb_ary_push(point, rb_float_new(val));
23
- GEOSCoordSeq_getY_r(context, coord_sequence, i, &val);
24
+ GEOSCoordSeq_getY(coord_sequence, i, &val);
24
25
  rb_ary_push(point, rb_float_new(val));
25
- if(zCoordinate) {
26
- GEOSCoordSeq_getZ_r(context, coord_sequence, i, &val);
26
+ if (zCoordinate) {
27
+ GEOSCoordSeq_getZ(coord_sequence, i, &val);
27
28
  rb_ary_push(point, rb_float_new(val));
28
29
  }
29
30
  rb_ary_push(result, point);
@@ -33,7 +34,8 @@ VALUE extract_points_from_coordinate_sequence(GEOSContextHandle_t context, const
33
34
  return result;
34
35
  }
35
36
 
36
- VALUE extract_points_from_polygon(GEOSContextHandle_t context, const GEOSGeometry* polygon, int zCoordinate)
37
+ VALUE
38
+ extract_points_from_polygon(const GEOSGeometry* polygon, int zCoordinate)
37
39
  {
38
40
  VALUE result = Qnil;
39
41
 
@@ -43,20 +45,24 @@ VALUE extract_points_from_polygon(GEOSContextHandle_t context, const GEOSGeometr
43
45
  unsigned int i;
44
46
 
45
47
  if (polygon) {
46
- ring = GEOSGetExteriorRing_r(context, polygon);
47
- coord_sequence = GEOSGeom_getCoordSeq_r(context, ring);
48
+ ring = GEOSGetExteriorRing(polygon);
49
+ coord_sequence = GEOSGeom_getCoordSeq(ring);
48
50
 
49
- if(coord_sequence) {
50
- interior_ring_count = GEOSGetNumInteriorRings_r(context, polygon);
51
+ if (coord_sequence) {
52
+ interior_ring_count = GEOSGetNumInteriorRings(polygon);
51
53
  result = rb_ary_new2(interior_ring_count + 1); // exterior + inner rings
52
54
 
53
- rb_ary_push(result, extract_points_from_coordinate_sequence(context, coord_sequence, zCoordinate));
55
+ rb_ary_push(
56
+ result,
57
+ extract_points_from_coordinate_sequence(coord_sequence, zCoordinate));
54
58
 
55
- for(i = 0; i < interior_ring_count; ++i) {
56
- ring = GEOSGetInteriorRingN_r(context, polygon, i);
57
- coord_sequence = GEOSGeom_getCoordSeq_r(context, ring);
58
- if(coord_sequence) {
59
- rb_ary_push(result, extract_points_from_coordinate_sequence(context, coord_sequence, zCoordinate));
59
+ for (i = 0; i < interior_ring_count; ++i) {
60
+ ring = GEOSGetInteriorRingN(polygon, i);
61
+ coord_sequence = GEOSGeom_getCoordSeq(ring);
62
+ if (coord_sequence) {
63
+ rb_ary_push(result,
64
+ extract_points_from_coordinate_sequence(coord_sequence,
65
+ zCoordinate));
60
66
  }
61
67
  }
62
68
  }
@@ -1,2 +1,5 @@
1
- VALUE extract_points_from_coordinate_sequence(GEOSContextHandle_t context, const GEOSCoordSequence* coord_sequence, int zCoordinate);
2
- VALUE extract_points_from_polygon(GEOSContextHandle_t context, const GEOSGeometry* polygon, int zCoordinate);
1
+ VALUE
2
+ extract_points_from_coordinate_sequence(const GEOSCoordSequence* coord_sequence,
3
+ int zCoordinate);
4
+ VALUE
5
+ extract_points_from_polygon(const GEOSGeometry* polygon, int zCoordinate);
@@ -8,26 +8,33 @@
8
8
 
9
9
  #ifdef RGEO_GEOS_SUPPORTED
10
10
 
11
- #include "globals.h"
12
-
13
11
  #include "errors.h"
12
+ #include "globals.h"
14
13
 
15
14
  RGEO_BEGIN_C
16
15
 
17
16
  VALUE rb_eRGeoError;
18
17
  VALUE rb_eRGeoInvalidGeometry;
18
+ VALUE rb_eRGeoParseError;
19
19
  VALUE rb_eRGeoUnsupportedOperation;
20
20
  VALUE rb_eGeosError;
21
21
 
22
-
23
- void rgeo_init_geos_errors() {
22
+ void
23
+ rgeo_init_geos_errors()
24
+ {
24
25
  VALUE error_module;
25
26
 
26
27
  error_module = rb_define_module_under(rgeo_module, "Error");
27
- rb_eRGeoError = rb_define_class_under(error_module, "RGeoError", rb_eRuntimeError);
28
- rb_eRGeoInvalidGeometry = rb_define_class_under(error_module, "InvalidGeometry", rb_eRGeoError);
29
- rb_eRGeoUnsupportedOperation = rb_define_class_under(error_module, "UnsupportedOperation", rb_eRGeoError);
30
- rb_eGeosError = rb_define_class_under(error_module, "GeosError", rb_eRGeoError);
28
+ rb_eRGeoError =
29
+ rb_define_class_under(error_module, "RGeoError", rb_eRuntimeError);
30
+ rb_eRGeoInvalidGeometry =
31
+ rb_define_class_under(error_module, "InvalidGeometry", rb_eRGeoError);
32
+ rb_eRGeoUnsupportedOperation =
33
+ rb_define_class_under(error_module, "UnsupportedOperation", rb_eRGeoError);
34
+ rb_eRGeoParseError =
35
+ rb_define_class_under(error_module, "ParseError", rb_eRGeoError);
36
+ rb_eGeosError =
37
+ rb_define_class_under(error_module, "GeosError", rb_eRGeoError);
31
38
  }
32
39
 
33
40
  RGEO_END_C
@@ -12,12 +12,15 @@ RGEO_BEGIN_C
12
12
  extern VALUE rb_eRGeoError;
13
13
  // RGeo::Error::InvalidGeometry
14
14
  extern VALUE rb_eRGeoInvalidGeometry;
15
+ // RGeo::Error::ParseError
16
+ extern VALUE rb_eRGeoParseError;
15
17
  // RGeo::Error::UnsupportedOperation
16
18
  extern VALUE rb_eRGeoUnsupportedOperation;
17
19
  // RGeo error specific to the GEOS implementation.
18
20
  extern VALUE rb_eGeosError;
19
21
 
20
- void rgeo_init_geos_errors();
22
+ void
23
+ rgeo_init_geos_errors();
21
24
 
22
25
  RGEO_END_C
23
26
 
@@ -6,45 +6,55 @@
6
6
  #
7
7
  # -----------------------------------------------------------------------------
8
8
  def create_dummy_makefile
9
- File.open("Makefile", "w") { |f_| f_.write(".PHONY: install\ninstall:\n") }
9
+ File.write("Makefile", ".PHONY: install\ninstall:\n")
10
10
  end
11
11
 
12
12
  if RUBY_DESCRIPTION =~ /^jruby\s/
13
13
  create_dummy_makefile
14
- else
15
- require "mkmf"
14
+ exit
15
+ end
16
16
 
17
- $CFLAGS << " -DRGEO_GEOS_DEBUG" if ENV.key?("DEBUG") || ENV.key?("RGEO_GEOS_DEBUG")
17
+ require "mkmf"
18
18
 
19
- geosconfig = with_config("geos-config") || find_executable("geos-config")
19
+ if ENV.key?("DEBUG") || ENV.key?("MAINTAINER_MODE")
20
+ $CFLAGS << " -DDEBUG" \
21
+ " -Wall" \
22
+ " -ggdb" \
23
+ " -pedantic" \
24
+ " -std=c17"
20
25
 
21
- if geosconfig
22
- puts "Using GEOS compile configuration from #{geosconfig}"
23
- $INCFLAGS << " " << `#{geosconfig} --cflags`.strip
24
- geos_libs = `#{geosconfig} --clibs`.tr("\n", " ")
25
- geos_libs.split(/\s+/).each do |flag|
26
- $libs << " " + flag unless $libs.include?(flag)
27
- end
28
- end
26
+ extra_flags = ENV.fetch("MAINTAINER_MODE", ENV.fetch("DEBUG", ""))
27
+ $CFLAGS << " " << extra_flags if extra_flags.strip.start_with?("-")
28
+ end
29
+
30
+ geosconfig = with_config("geos-config") || find_executable("geos-config")
29
31
 
30
- found_geos_ = false
31
- if have_header("geos_c.h")
32
- found_geos_ = true if have_func("GEOSSetSRID_r", "geos_c.h")
33
- have_func("GEOSPreparedContains_r", "geos_c.h")
34
- have_func("GEOSPreparedDisjoint_r", "geos_c.h")
35
- have_func("GEOSUnaryUnion_r", "geos_c.h")
36
- have_func("GEOSCoordSeq_isCCW_r", "geos_c.h")
37
- have_func("rb_memhash", "ruby.h")
38
- have_func("rb_gc_mark_movable", "ruby.h")
32
+ if geosconfig
33
+ puts "Using GEOS compile configuration from #{geosconfig}"
34
+ $INCFLAGS << " " << IO.popen([geosconfig, "--cflags"], &:read).strip
35
+ geos_libs = IO.popen([geosconfig, "--clibs"], &:read)
36
+ geos_libs.split.each do |flag|
37
+ $libs << " " << flag unless $libs.include?(flag)
39
38
  end
39
+ end
40
40
 
41
- if found_geos_
42
- create_makefile("rgeo/geos/geos_c_impl")
43
- else
44
- puts "**** WARNING: Unable to find GEOS headers or libraries."
45
- puts "**** Ensure that 'geos-config' is in your PATH or provide that full path via --with-geos-config"
46
- puts "**** Compiling without GEOS support."
41
+ found_geos = false
42
+ if have_header("geos_c.h")
43
+ found_geos = true if have_func("GEOSSetSRID_r", "geos_c.h")
44
+ have_func("GEOSPreparedContains_r", "geos_c.h")
45
+ have_func("GEOSPreparedDisjoint_r", "geos_c.h")
46
+ have_func("GEOSUnaryUnion_r", "geos_c.h")
47
+ have_func("GEOSCoordSeq_isCCW_r", "geos_c.h")
48
+ have_func("rb_memhash", "ruby.h")
49
+ have_func("rb_gc_mark_movable", "ruby.h")
50
+ end
47
51
 
48
- create_dummy_makefile
49
- end
52
+ if found_geos
53
+ create_makefile("rgeo/geos/geos_c_impl")
54
+ else
55
+ puts "**** WARNING: Unable to find GEOS headers or libraries."
56
+ puts "**** Ensure that 'geos-config' is in your PATH or provide that full path via --with-geos-config"
57
+ puts "**** Compiling without GEOS support."
58
+
59
+ create_dummy_makefile
50
60
  end