pantry/projects/libgeos.org/package.yml

59 lines
1.6 KiB
YAML
Raw Normal View History

2023-04-21 16:10:29 +03:00
distributable:
url: https://github.com/libgeos/geos/releases/download/{{version}}/geos-{{version}}.tar.bz2
strip-components: 1
versions:
github: libgeos/geos/releases/tags
build:
dependencies:
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
cmake.org: '*'
working-directory: build
script: |
cmake .. $ARGS
make --jobs {{ hw.concurrency }}
make install
env:
ARGS:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX={{prefix}}
provides:
- bin/geosop
- bin/geos-config
test:
dependencies:
tea.xyz/gx/cc: c99
fixture: |
#include <stdio.h>
#include <stdarg.h>
#include <geos_c.h>
static void geos_message_handler(const char* fmt, ...) {
va_list ap;
va_start(ap, fmt);
vprintf (fmt, ap);
va_end(ap);
}
int main() {
initGEOS(geos_message_handler, geos_message_handler);
const char* wkt_a = "POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))";
const char* wkt_b = "POLYGON((5 5, 15 5, 15 15, 5 15, 5 5))";
GEOSWKTReader* reader = GEOSWKTReader_create();
GEOSGeometry* geom_a = GEOSWKTReader_read(reader, wkt_a);
GEOSGeometry* geom_b = GEOSWKTReader_read(reader, wkt_b);
GEOSGeometry* inter = GEOSIntersection(geom_a, geom_b);
GEOSWKTWriter* writer = GEOSWKTWriter_create();
GEOSWKTWriter_setTrim(writer, 1);
char* wkt_inter = GEOSWKTWriter_write(writer, inter);
printf("Intersection(A, B): %s\\n", wkt_inter);
return 0;
}
script: |
mv $FIXTURE test.c
cc test.c -lgeos_c
./a.out