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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/geos_c_impl/analysis.c +26 -23
- data/ext/geos_c_impl/analysis.h +8 -5
- data/ext/geos_c_impl/coordinates.c +27 -21
- data/ext/geos_c_impl/coordinates.h +5 -2
- data/ext/geos_c_impl/errors.c +15 -8
- data/ext/geos_c_impl/errors.h +4 -1
- data/ext/geos_c_impl/extconf.rb +40 -30
- data/ext/geos_c_impl/factory.c +367 -387
- data/ext/geos_c_impl/factory.h +59 -48
- data/ext/geos_c_impl/geometry.c +368 -320
- data/ext/geos_c_impl/geometry.h +5 -5
- data/ext/geos_c_impl/geometry_collection.c +256 -183
- data/ext/geos_c_impl/geometry_collection.h +6 -7
- data/ext/geos_c_impl/globals.c +99 -21
- data/ext/geos_c_impl/globals.h +3 -2
- data/ext/geos_c_impl/line_string.c +229 -198
- data/ext/geos_c_impl/line_string.h +5 -6
- data/ext/geos_c_impl/main.c +8 -9
- data/ext/geos_c_impl/point.c +62 -63
- data/ext/geos_c_impl/point.h +4 -5
- data/ext/geos_c_impl/polygon.c +116 -84
- data/ext/geos_c_impl/polygon.h +10 -8
- data/ext/geos_c_impl/preface.h +4 -13
- data/ext/geos_c_impl/ruby_more.c +35 -40
- data/ext/geos_c_impl/ruby_more.h +3 -2
- data/lib/rgeo/cartesian/bounding_box.rb +1 -1
- data/lib/rgeo/cartesian/factory.rb +8 -43
- data/lib/rgeo/cartesian/feature_methods.rb +0 -5
- data/lib/rgeo/cartesian/interface.rb +6 -5
- data/lib/rgeo/coord_sys/cs/entities.rb +214 -0
- data/lib/rgeo/coord_sys/cs/wkt_parser.rb +15 -8
- data/lib/rgeo/coord_sys.rb +1 -9
- data/lib/rgeo/feature/curve.rb +0 -10
- data/lib/rgeo/feature/factory.rb +1 -9
- data/lib/rgeo/feature/factory_generator.rb +3 -7
- data/lib/rgeo/feature/geometry.rb +0 -10
- data/lib/rgeo/feature/multi_curve.rb +0 -5
- data/lib/rgeo/feature/types.rb +5 -5
- data/lib/rgeo/geographic/factory.rb +9 -42
- data/lib/rgeo/geographic/interface.rb +28 -99
- data/lib/rgeo/geographic/projected_feature_methods.rb +0 -10
- data/lib/rgeo/geographic/projected_window.rb +1 -1
- data/lib/rgeo/geographic/{proj4_projector.rb → projector.rb} +3 -3
- data/lib/rgeo/geographic/simple_mercator_projector.rb +1 -10
- data/lib/rgeo/geographic/spherical_feature_methods.rb +0 -5
- data/lib/rgeo/geographic.rb +1 -1
- data/lib/rgeo/geos/capi_factory.rb +37 -91
- data/lib/rgeo/geos/capi_feature_classes.rb +0 -29
- data/lib/rgeo/geos/ffi_factory.rb +52 -92
- data/lib/rgeo/geos/ffi_feature_methods.rb +1 -31
- data/lib/rgeo/geos/interface.rb +5 -20
- data/lib/rgeo/geos/zm_factory.rb +5 -36
- data/lib/rgeo/geos/zm_feature_methods.rb +1 -26
- data/lib/rgeo/geos.rb +2 -5
- data/lib/rgeo/impl_helper/basic_geometry_collection_methods.rb +1 -14
- data/lib/rgeo/impl_helper/basic_line_string_methods.rb +1 -19
- data/lib/rgeo/impl_helper/basic_point_methods.rb +0 -10
- data/lib/rgeo/impl_helper/basic_polygon_methods.rb +1 -9
- data/lib/rgeo/impl_helper/utils.rb +27 -0
- data/lib/rgeo/impl_helper/validity_check.rb +3 -3
- data/lib/rgeo/version.rb +1 -1
- data/lib/rgeo/wkrep/wkb_generator.rb +68 -53
- data/lib/rgeo/wkrep/wkb_parser.rb +19 -16
- data/lib/rgeo/wkrep/wkt_generator.rb +34 -34
- data/lib/rgeo/wkrep/wkt_parser.rb +26 -23
- data/lib/rgeo.rb +1 -3
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 91ca209240d93482556f0aaf2b1dcb3beca7710af47a3cba6b12014a09a8b3be
|
|
4
|
+
data.tar.gz: b22b62247f1c4f3d07d4e7e4c1552999ae42d1d0d94808cc2fa7805e48914acd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
data/ext/geos_c_impl/analysis.c
CHANGED
|
@@ -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
|
|
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 =
|
|
40
|
-
if (!coord_seq) {
|
|
41
|
-
|
|
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
|
|
57
|
+
VALUE
|
|
58
|
+
rgeo_geos_analysis_supports_ccw(VALUE self)
|
|
58
59
|
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
#ifdef RGEO_GEOS_SUPPORTS_ISCCW
|
|
61
|
+
return Qtrue;
|
|
62
|
+
#else
|
|
63
|
+
return Qfalse;
|
|
64
|
+
#endif
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
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(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
data/ext/geos_c_impl/analysis.h
CHANGED
|
@@ -19,19 +19,22 @@ RGEO_BEGIN_C
|
|
|
19
19
|
* otherwise.
|
|
20
20
|
*/
|
|
21
21
|
#ifdef RGEO_GEOS_SUPPORTS_CCW
|
|
22
|
-
VALUE
|
|
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
|
|
33
|
+
VALUE
|
|
34
|
+
rgeo_geos_analysis_supports_ccw(VALUE self);
|
|
33
35
|
|
|
34
|
-
void
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
22
|
+
GEOSCoordSeq_getX(coord_sequence, i, &val);
|
|
22
23
|
rb_ary_push(point, rb_float_new(val));
|
|
23
|
-
|
|
24
|
+
GEOSCoordSeq_getY(coord_sequence, i, &val);
|
|
24
25
|
rb_ary_push(point, rb_float_new(val));
|
|
25
|
-
if(zCoordinate) {
|
|
26
|
-
|
|
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
|
|
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 =
|
|
47
|
-
coord_sequence =
|
|
48
|
+
ring = GEOSGetExteriorRing(polygon);
|
|
49
|
+
coord_sequence = GEOSGeom_getCoordSeq(ring);
|
|
48
50
|
|
|
49
|
-
if(coord_sequence) {
|
|
50
|
-
interior_ring_count =
|
|
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(
|
|
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 =
|
|
57
|
-
coord_sequence =
|
|
58
|
-
if(coord_sequence) {
|
|
59
|
-
rb_ary_push(result,
|
|
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
|
|
2
|
-
|
|
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);
|
data/ext/geos_c_impl/errors.c
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
data/ext/geos_c_impl/errors.h
CHANGED
|
@@ -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
|
|
22
|
+
void
|
|
23
|
+
rgeo_init_geos_errors();
|
|
21
24
|
|
|
22
25
|
RGEO_END_C
|
|
23
26
|
|
data/ext/geos_c_impl/extconf.rb
CHANGED
|
@@ -6,45 +6,55 @@
|
|
|
6
6
|
#
|
|
7
7
|
# -----------------------------------------------------------------------------
|
|
8
8
|
def create_dummy_makefile
|
|
9
|
-
File.
|
|
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
|
-
|
|
15
|
-
|
|
14
|
+
exit
|
|
15
|
+
end
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
require "mkmf"
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
if ENV.key?("DEBUG") || ENV.key?("MAINTAINER_MODE")
|
|
20
|
+
$CFLAGS << " -DDEBUG" \
|
|
21
|
+
" -Wall" \
|
|
22
|
+
" -ggdb" \
|
|
23
|
+
" -pedantic" \
|
|
24
|
+
" -std=c17"
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|