h3 3.6.0 → 3.7.2
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/.github/workflows/ruby_ci.yml +30 -0
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +39 -0
- data/Gemfile.lock +6 -24
- data/LICENSE.md +1 -1
- data/README.md +2 -3
- data/ext/h3/src/.github/workflows/test-linux.yml +118 -0
- data/ext/h3/src/.github/workflows/test-macos.yml +42 -0
- data/ext/h3/src/.github/workflows/test-website.yml +32 -0
- data/ext/h3/src/.github/workflows/test-windows.yml +44 -0
- data/ext/h3/src/.gitignore +5 -0
- data/ext/h3/src/.travis.yml +20 -42
- data/ext/h3/src/CHANGELOG.md +57 -0
- data/ext/h3/src/CMakeLists.txt +135 -33
- data/ext/h3/src/CONTRIBUTING.md +1 -1
- data/ext/h3/src/README.md +61 -11
- data/ext/h3/src/RELEASE.md +3 -1
- data/ext/h3/src/VERSION +1 -1
- data/ext/h3/src/dev-docs/RFCs/rfc-template.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/error-handling-rfc.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/names_for_concepts_types_functions.md +276 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/overrideable-allocators-rfc.md +141 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/polyfill-modes-rfc.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/vertex-mode-rfc.md +50 -0
- data/ext/h3/src/dev-docs/build_windows.md +6 -1
- data/ext/h3/src/dev-docs/creating_bindings.md +3 -3
- data/ext/h3/src/dev-docs/custom_alloc.md +27 -0
- data/ext/h3/src/docs/{overview/mainpage.md → README.md} +2 -3
- data/ext/h3/src/docs/api/misc.md +76 -0
- data/ext/h3/src/docs/community/applications.md +1 -0
- data/ext/h3/src/docs/community/bindings.md +10 -0
- data/ext/h3/src/docs/community/tutorials.md +8 -3
- data/ext/h3/src/docs/core-library/coordsystems.md +5 -4
- data/ext/h3/src/docs/core-library/filters.md +8 -9
- data/ext/h3/src/docs/core-library/geoToH3desc.md +2 -3
- data/ext/h3/src/docs/core-library/h3ToGeoBoundaryDesc.md +4 -5
- data/ext/h3/src/docs/core-library/h3ToGeoDesc.md +3 -4
- data/ext/h3/src/docs/core-library/h3indexing.md +26 -17
- data/ext/h3/src/docs/core-library/overview.md +2 -3
- data/ext/h3/src/docs/core-library/restable.md +1 -2
- data/ext/h3/src/docs/core-library/usage.md +1 -2
- data/ext/h3/src/docs/table-of-contents.json +47 -0
- data/ext/h3/src/docs/{overview/usecases.md → usecases.md} +6 -11
- data/ext/h3/src/scripts/binding_functions.sh +1 -1
- data/ext/h3/src/scripts/coverage.sh.in +1 -1
- data/ext/h3/src/scripts/update_version.sh +2 -2
- data/ext/h3/src/src/apps/applib/include/args.h +1 -0
- data/ext/h3/src/src/apps/applib/include/test.h +1 -0
- data/ext/h3/src/src/apps/applib/include/utility.h +7 -1
- data/ext/h3/src/src/apps/applib/lib/args.c +2 -0
- data/ext/h3/src/src/apps/applib/lib/kml.c +2 -0
- data/ext/h3/src/src/apps/applib/lib/test.c +1 -0
- data/ext/h3/src/src/apps/applib/lib/utility.c +133 -2
- data/ext/h3/src/src/apps/benchmarks/benchmarkH3Api.c +1 -1
- data/ext/h3/src/{website/html.config.js → src/apps/benchmarks/benchmarkH3UniEdge.c} +15 -12
- data/ext/h3/src/src/apps/filters/h3ToComponents.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToGeo.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToLocalIj.c +1 -0
- data/ext/h3/src/src/apps/filters/hexRange.c +1 -0
- data/ext/h3/src/src/apps/filters/kRing.c +1 -0
- data/ext/h3/src/src/apps/filters/localIjToH3.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generateFaceCenterPoint.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generateNumHexagons.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generatePentagonDirectionFaces.c +67 -0
- data/ext/h3/src/src/apps/miscapps/h3ToGeoBoundaryHier.c +1 -0
- data/ext/h3/src/src/apps/miscapps/h3ToGeoHier.c +1 -0
- data/ext/h3/src/src/apps/miscapps/h3ToHier.c +1 -0
- data/ext/h3/src/src/apps/testapps/mkRandGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/mkRandGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/testapps/testBBox.c +1 -0
- data/ext/h3/src/src/apps/testapps/testBaseCells.c +15 -1
- data/ext/h3/src/src/apps/testapps/testCompact.c +109 -2
- data/ext/h3/src/src/apps/testapps/testCoordIj.c +1 -0
- data/ext/h3/src/src/apps/testapps/testGeoCoord.c +47 -8
- data/ext/h3/src/src/apps/testapps/testGeoToH3.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Api.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3CellArea.c +47 -0
- data/ext/h3/src/src/apps/testapps/testH3CellAreaExhaustive.c +180 -0
- data/ext/h3/src/src/apps/testapps/testH3Distance.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3DistanceExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3GetFaces.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Index.c +33 -3
- data/ext/h3/src/src/apps/testapps/testH3Line.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3LineExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Memory.c +175 -0
- data/ext/h3/src/src/apps/testapps/testH3NeighborRotations.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3SetToLinkedGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3SetToVertexGraph.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToCenterChild.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToChildren.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToLocalIj.c +12 -6
- data/ext/h3/src/src/apps/testapps/testH3ToLocalIjExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToParent.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3UniEdge.c +45 -16
- data/ext/h3/src/src/apps/testapps/testH3UniEdgeExhaustive.c +111 -0
- data/ext/h3/src/src/apps/testapps/testHexRanges.c +1 -0
- data/ext/h3/src/src/apps/testapps/testHexRing.c +1 -0
- data/ext/h3/src/src/apps/testapps/testKRing.c +19 -0
- data/ext/h3/src/src/apps/testapps/testLinkedGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testMaxH3ToChildrenSize.c +1 -0
- data/ext/h3/src/src/apps/testapps/testPentagonIndexes.c +1 -0
- data/ext/h3/src/src/apps/testapps/testPolyfill.c +72 -9
- data/ext/h3/src/src/apps/testapps/testPolyfillReported.c +157 -0
- data/ext/h3/src/src/apps/testapps/testPolygon.c +27 -1
- data/ext/h3/src/src/apps/testapps/testVec2d.c +1 -0
- data/ext/h3/src/src/apps/testapps/testVec3d.c +1 -0
- data/ext/h3/src/src/apps/testapps/testVertex.c +66 -0
- data/ext/h3/src/src/apps/testapps/testVertexGraph.c +1 -0
- data/ext/h3/src/src/h3lib/include/algos.h +8 -0
- data/ext/h3/src/src/h3lib/include/alloc.h +40 -0
- data/ext/h3/src/src/h3lib/include/baseCells.h +4 -0
- data/ext/h3/src/src/h3lib/include/bbox.h +4 -1
- data/ext/h3/src/src/h3lib/include/faceijk.h +3 -2
- data/ext/h3/src/src/h3lib/include/geoCoord.h +2 -3
- data/ext/h3/src/src/h3lib/include/h3Index.h +37 -4
- data/ext/h3/src/src/h3lib/include/h3api.h.in +65 -17
- data/ext/h3/src/src/h3lib/include/linkedGeo.h +1 -0
- data/ext/h3/src/src/h3lib/include/polygon.h +1 -0
- data/ext/h3/src/src/h3lib/include/polygonAlgos.h +1 -0
- data/ext/h3/src/src/h3lib/include/vertex.h +44 -0
- data/ext/h3/src/src/h3lib/include/vertexGraph.h +1 -0
- data/ext/h3/src/src/h3lib/lib/algos.c +304 -76
- data/ext/h3/src/src/h3lib/lib/baseCells.c +26 -4
- data/ext/h3/src/src/h3lib/lib/bbox.c +56 -27
- data/ext/h3/src/src/h3lib/lib/coordijk.c +2 -0
- data/ext/h3/src/src/h3lib/lib/faceijk.c +32 -21
- data/ext/h3/src/src/h3lib/lib/geoCoord.c +162 -44
- data/ext/h3/src/src/h3lib/lib/h3Index.c +83 -42
- data/ext/h3/src/src/h3lib/lib/h3UniEdge.c +42 -57
- data/ext/h3/src/src/h3lib/lib/linkedGeo.c +20 -15
- data/ext/h3/src/src/h3lib/lib/localij.c +1 -1
- data/ext/h3/src/src/h3lib/lib/polygon.c +2 -0
- data/ext/h3/src/src/h3lib/lib/vec2d.c +1 -0
- data/ext/h3/src/src/h3lib/lib/vec3d.c +1 -0
- data/ext/h3/src/src/h3lib/lib/vertex.c +134 -0
- data/ext/h3/src/src/h3lib/lib/vertexGraph.c +8 -5
- data/ext/h3/src/website/.eslintignore +2 -0
- data/ext/h3/src/website/.gitignore +57 -0
- data/ext/h3/src/website/.nvmrc +1 -0
- data/ext/h3/src/website/README.md +8 -6
- data/ext/h3/src/website/gatsby-config.js +83 -0
- data/ext/h3/src/website/package.json +20 -12
- data/ext/h3/src/website/scripts/build-to-gh-pages.sh +7 -5
- data/ext/h3/src/website/src/.gitkeep +0 -0
- data/ext/h3/src/website/templates/documentation.jsx +129 -0
- data/ext/h3/src/website/yarn.lock +13723 -0
- data/h3.gemspec +2 -2
- data/lib/h3/bindings/base.rb +14 -4
- data/lib/h3/bindings/private.rb +12 -9
- data/lib/h3/hierarchy.rb +0 -18
- data/lib/h3/indexing.rb +0 -18
- data/lib/h3/inspection.rb +3 -59
- data/lib/h3/miscellaneous.rb +119 -14
- data/lib/h3/regions.rb +3 -0
- data/lib/h3/traversal.rb +0 -18
- data/lib/h3/unidirectional_edges.rb +5 -60
- data/lib/h3/version.rb +1 -1
- data/spec/geo_json_spec.rb +8 -0
- data/spec/miscellaneous_spec.rb +117 -0
- data/spec/{region_spec.rb → regions_spec.rb} +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +44 -36
- data/.travis.yml +0 -11
- data/ext/h3/src/.ycm_extra_conf.py +0 -92
- data/ext/h3/src/appveyor.yml +0 -50
- data/ext/h3/src/website/src/config.js +0 -46
- data/ext/h3/src/website/src/mdRoutes.js +0 -151
- data/ext/h3/src/website/src/styles/_variables.scss +0 -16
- data/ext/h3/src/website/src/styles/index.scss +0 -3
- data/ext/h3/src/website/static/index.html +0 -15
data/ext/h3/src/.travis.yml
CHANGED
|
@@ -15,12 +15,17 @@
|
|
|
15
15
|
language: c
|
|
16
16
|
|
|
17
17
|
os: linux
|
|
18
|
-
dist:
|
|
18
|
+
dist: bionic
|
|
19
19
|
|
|
20
20
|
compiler:
|
|
21
21
|
- gcc
|
|
22
22
|
- clang
|
|
23
23
|
|
|
24
|
+
arch:
|
|
25
|
+
- arm64
|
|
26
|
+
- ppc64le
|
|
27
|
+
- s390x
|
|
28
|
+
|
|
24
29
|
# Docs are built during the normal compile/test check.
|
|
25
30
|
addons:
|
|
26
31
|
apt:
|
|
@@ -30,49 +35,22 @@ addons:
|
|
|
30
35
|
|
|
31
36
|
matrix:
|
|
32
37
|
include:
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- clang-format-5.0
|
|
42
|
-
script: make format && git diff --exit-code
|
|
43
|
-
# Submit coverage report to Coveralls.io, also test that prefixing works.
|
|
44
|
-
- env: NAME="Coverage report"
|
|
45
|
-
compiler: gcc
|
|
46
|
-
addons:
|
|
47
|
-
apt:
|
|
48
|
-
packages:
|
|
49
|
-
- lcov
|
|
50
|
-
install:
|
|
51
|
-
- gem install coveralls-lcov
|
|
52
|
-
before_script:
|
|
53
|
-
- cmake -DCMAKE_BUILD_TYPE=Debug -DWARNINGS_AS_ERRORS=ON -DH3_PREFIX=testprefix_ .
|
|
54
|
-
script:
|
|
55
|
-
- make && make coverage
|
|
56
|
-
after_success:
|
|
57
|
-
- coveralls-lcov coverage.cleaned.info
|
|
58
|
-
- env: NAME="Valgrind test"
|
|
59
|
-
compiler: gcc
|
|
60
|
-
addons:
|
|
61
|
-
apt:
|
|
62
|
-
packages:
|
|
63
|
-
- valgrind
|
|
38
|
+
# Test building the website also - needed for FOSSA to pick up dependencies
|
|
39
|
+
# FOSSA is run here because the API key will not be present in Github Actions.
|
|
40
|
+
# Blocked on https://github.com/fossas/fossa-cli/issues/617
|
|
41
|
+
- name: "Website and FOSSA report"
|
|
42
|
+
arch: amd64
|
|
43
|
+
language: node_js
|
|
44
|
+
node_js: 10
|
|
45
|
+
install: []
|
|
64
46
|
before_script:
|
|
65
|
-
-
|
|
66
|
-
script:
|
|
67
|
-
- make
|
|
68
|
-
- CTEST_OUTPUT_ON_FAILURE=1 make test-fast
|
|
69
|
-
- env: NAME="Mac OSX (Xcode 8)"
|
|
70
|
-
os: osx
|
|
71
|
-
- env: NAME="binding-functions target"
|
|
47
|
+
- "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
|
|
72
48
|
script:
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
-
|
|
49
|
+
- cd website
|
|
50
|
+
- yarn
|
|
51
|
+
- yarn build
|
|
52
|
+
- cd ..
|
|
53
|
+
- 'if [ -n "$FOSSA_API_KEY" ]; then fossa; fi'
|
|
76
54
|
|
|
77
55
|
# Configure the build script, out of source.
|
|
78
56
|
before_script:
|
data/ext/h3/src/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,63 @@ The public API of this library consists of the functions declared in file
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.7.2] - 2021-07-15
|
|
11
|
+
### Fixed
|
|
12
|
+
- `gridDisk` of invalid indexes should not crash. (#498)
|
|
13
|
+
|
|
14
|
+
## [3.7.1] - 2020-10-05
|
|
15
|
+
### Fixed
|
|
16
|
+
- Finding invalid edge boundaries should not crash. (#399)
|
|
17
|
+
- Build fixes for FreeBSD. (#397)
|
|
18
|
+
|
|
19
|
+
## [3.7.0] - 2020-09-28
|
|
20
|
+
### Added
|
|
21
|
+
- Area and haversine distance functions (#377):
|
|
22
|
+
- `cellAreaRads2`
|
|
23
|
+
- `cellAreaKm2`
|
|
24
|
+
- `cellAreaM2`
|
|
25
|
+
- `pointDistRads`
|
|
26
|
+
- `pointDistKm`
|
|
27
|
+
- `pointDistM`
|
|
28
|
+
- `exactEdgeLengthRads`
|
|
29
|
+
- `exactEdgeLengthKm`
|
|
30
|
+
- `exactEdgeLengthM`
|
|
31
|
+
- Refactor `getH3UnidirectionalEdgeBoundary` for accuracy at small resolutions. (#391)
|
|
32
|
+
- Speeds up `getH3UnidirectionalEdgeBoundary` by about 3x.
|
|
33
|
+
- Implement core logic for future vertex mode.
|
|
34
|
+
### Fixed
|
|
35
|
+
- Fixed building the library with custom memory allocation functions on Mac OSX. (#362)
|
|
36
|
+
- The installed H3 CMake target should have include directories specified. (#381)
|
|
37
|
+
### Changed
|
|
38
|
+
- Tests now use `bash` on Windows. (#381)
|
|
39
|
+
|
|
40
|
+
## [3.6.4] - 2020-06-19
|
|
41
|
+
### Added
|
|
42
|
+
- `H3_MEMORY_PREFIX` CMake option for replacing the memory management functions used in H3. (#317)
|
|
43
|
+
- Support for building Debian packages of H3. (#352)
|
|
44
|
+
### Fixed
|
|
45
|
+
- Removed duplicate include statements. (#333)
|
|
46
|
+
- Fixed macro `H3_DIGIT_MASK_NEGATIVE`. (#329)
|
|
47
|
+
## Changed
|
|
48
|
+
- Again implement new `polyfill` algorithm. (#313)
|
|
49
|
+
|
|
50
|
+
## [3.6.3] - 2020-01-21
|
|
51
|
+
### Fixed
|
|
52
|
+
- `compact` detects and fails on cases with duplicated input indexes. (#299)
|
|
53
|
+
### Changed
|
|
54
|
+
- `h3IsValid` returns false for indexes that have non-zero reserved bits. (#300)
|
|
55
|
+
- `h3IsValid` and `h3UnidirectionalEdgeIsValid` return false for indexes with the high bit set. (#300)
|
|
56
|
+
|
|
57
|
+
## [3.6.2] - 2019-12-9
|
|
58
|
+
- Revert new `polyfill` algorithm until reported issues are fixed. (#293)
|
|
59
|
+
|
|
60
|
+
## [3.6.1] - 2019-11-11
|
|
61
|
+
### Fixed
|
|
62
|
+
- `compact` handles zero length input correctly. (#278)
|
|
63
|
+
- `bboxHexRadius` scaling factor adjusted to guarantee containment for `polyfill`. (#279)
|
|
64
|
+
- `polyfill` new algorithm for up to 3x perf boost. (#282)
|
|
65
|
+
- Fix CMake targets for KML generation. (#285)
|
|
66
|
+
|
|
10
67
|
## [3.6.0] - 2019-08-12
|
|
11
68
|
### Added
|
|
12
69
|
- `h3ToCenterChild` function to find center child at given resolution (#267)
|
data/ext/h3/src/CMakeLists.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2017-
|
|
1
|
+
# Copyright 2017-2020 Uber Technologies, Inc.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
cmake_minimum_required(VERSION 3.1)
|
|
16
16
|
|
|
17
17
|
set(H3_PREFIX "" CACHE STRING "Prefix for exported symbols")
|
|
18
|
+
set(H3_ALLOC_PREFIX "" CACHE STRING "Prefix for allocation functions")
|
|
18
19
|
|
|
19
20
|
# Needed due to CMP0042
|
|
20
21
|
set(CMAKE_MACOSX_RPATH 1)
|
|
@@ -34,7 +35,8 @@ option(BUILD_FILTERS "Build filter applications." ON)
|
|
|
34
35
|
option(BUILD_GENERATORS "Build code generation applications." ON)
|
|
35
36
|
|
|
36
37
|
if(WIN32)
|
|
37
|
-
|
|
38
|
+
# Use bash (usually from Git for Windows) for piping results
|
|
39
|
+
set(SHELL bash -c)
|
|
38
40
|
|
|
39
41
|
set(EXECUTABLE_OUTPUT_PATH bin)
|
|
40
42
|
set(LIBRARY_OUTPUT_PATH bin)
|
|
@@ -107,6 +109,7 @@ set(LIB_SOURCE_FILES
|
|
|
107
109
|
src/h3lib/lib/h3Index.c
|
|
108
110
|
src/h3lib/lib/vec2d.c
|
|
109
111
|
src/h3lib/lib/vec3d.c
|
|
112
|
+
src/h3lib/lib/vertex.c
|
|
110
113
|
src/h3lib/lib/linkedGeo.c
|
|
111
114
|
src/h3lib/lib/localij.c
|
|
112
115
|
src/h3lib/lib/geoCoord.c
|
|
@@ -143,6 +146,7 @@ set(OTHER_SOURCE_FILES
|
|
|
143
146
|
src/apps/testapps/testVertexGraph.c
|
|
144
147
|
src/apps/testapps/testCompact.c
|
|
145
148
|
src/apps/testapps/testPolyfill.c
|
|
149
|
+
src/apps/testapps/testPolyfillReported.c
|
|
146
150
|
src/apps/testapps/testPentagonIndexes.c
|
|
147
151
|
src/apps/testapps/testKRing.c
|
|
148
152
|
src/apps/testapps/testH3ToGeoBoundary.c
|
|
@@ -161,10 +165,12 @@ set(OTHER_SOURCE_FILES
|
|
|
161
165
|
src/apps/testapps/testHexRing.c
|
|
162
166
|
src/apps/testapps/testH3SetToVertexGraph.c
|
|
163
167
|
src/apps/testapps/testBBox.c
|
|
168
|
+
src/apps/testapps/testVertex.c
|
|
164
169
|
src/apps/testapps/testPolygon.c
|
|
165
170
|
src/apps/testapps/testVec2d.c
|
|
166
171
|
src/apps/testapps/testVec3d.c
|
|
167
172
|
src/apps/testapps/testH3UniEdge.c
|
|
173
|
+
src/apps/testapps/testH3UniEdgeExhaustive.c
|
|
168
174
|
src/apps/testapps/testLinkedGeo.c
|
|
169
175
|
src/apps/testapps/mkRandGeo.c
|
|
170
176
|
src/apps/testapps/testH3Api.c
|
|
@@ -175,11 +181,15 @@ set(OTHER_SOURCE_FILES
|
|
|
175
181
|
src/apps/testapps/testH3DistanceExhaustive.c
|
|
176
182
|
src/apps/testapps/testH3Line.c
|
|
177
183
|
src/apps/testapps/testH3LineExhaustive.c
|
|
184
|
+
src/apps/testapps/testH3CellArea.c
|
|
185
|
+
src/apps/testapps/testH3CellAreaExhaustive.c
|
|
178
186
|
src/apps/testapps/testCoordIj.c
|
|
179
187
|
src/apps/testapps/testCoordIjk.c
|
|
188
|
+
src/apps/testapps/testH3Memory.c
|
|
180
189
|
src/apps/miscapps/h3ToGeoBoundaryHier.c
|
|
181
190
|
src/apps/miscapps/h3ToGeoHier.c
|
|
182
191
|
src/apps/miscapps/generateBaseCellNeighbors.c
|
|
192
|
+
src/apps/miscapps/generatePentagonDirectionFaces.c
|
|
183
193
|
src/apps/miscapps/generateNumHexagons.c
|
|
184
194
|
src/apps/miscapps/generateFaceCenterPoint.c
|
|
185
195
|
src/apps/miscapps/h3ToHier.c
|
|
@@ -188,6 +198,7 @@ set(OTHER_SOURCE_FILES
|
|
|
188
198
|
src/apps/benchmarks/benchmarkH3SetToLinkedGeo.c
|
|
189
199
|
src/apps/benchmarks/benchmarkKRing.c
|
|
190
200
|
src/apps/benchmarks/benchmarkH3Line.c
|
|
201
|
+
src/apps/benchmarks/benchmarkH3UniEdge.c
|
|
191
202
|
src/apps/benchmarks/benchmarkH3Api.c)
|
|
192
203
|
|
|
193
204
|
set(ALL_SOURCE_FILES
|
|
@@ -197,36 +208,55 @@ set(UNCONFIGURED_API_HEADER src/h3lib/include/h3api.h.in)
|
|
|
197
208
|
set(CONFIGURED_API_HEADER src/h3lib/include/h3api.h)
|
|
198
209
|
configure_file(${UNCONFIGURED_API_HEADER} ${CONFIGURED_API_HEADER})
|
|
199
210
|
|
|
200
|
-
set(INSTALL_TARGETS
|
|
211
|
+
set(INSTALL_TARGETS)
|
|
201
212
|
|
|
202
|
-
|
|
203
|
-
add_library(
|
|
213
|
+
function(add_h3_library name h3_alloc_prefix_override)
|
|
214
|
+
add_library(${name} ${LIB_SOURCE_FILES} ${CONFIGURED_API_HEADER})
|
|
204
215
|
|
|
205
|
-
target_compile_options(
|
|
206
|
-
target_link_libraries(
|
|
216
|
+
target_compile_options(${name} PRIVATE ${H3_COMPILE_FLAGS})
|
|
217
|
+
target_link_libraries(${name} PRIVATE ${H3_LINK_FLAGS})
|
|
207
218
|
|
|
208
|
-
find_library(M_LIB m)
|
|
209
|
-
if(M_LIB)
|
|
210
|
-
|
|
211
|
-
endif()
|
|
219
|
+
find_library(M_LIB m)
|
|
220
|
+
if(M_LIB)
|
|
221
|
+
target_link_libraries(${name} PUBLIC ${M_LIB})
|
|
222
|
+
endif()
|
|
212
223
|
|
|
213
|
-
if(BUILD_SHARED_LIBS)
|
|
214
|
-
|
|
215
|
-
endif()
|
|
224
|
+
if(BUILD_SHARED_LIBS)
|
|
225
|
+
set_target_properties(${name} PROPERTIES SOVERSION ${H3_SOVERSION})
|
|
226
|
+
endif()
|
|
216
227
|
|
|
217
|
-
target_compile_definitions(
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
228
|
+
target_compile_definitions(${name} PUBLIC H3_PREFIX=${H3_PREFIX})
|
|
229
|
+
set(has_alloc_prefix NO)
|
|
230
|
+
if(h3_alloc_prefix_override)
|
|
231
|
+
set(has_alloc_prefix YES)
|
|
232
|
+
target_compile_definitions(${name} PUBLIC H3_ALLOC_PREFIX=${h3_alloc_prefix_override})
|
|
233
|
+
elseif(H3_ALLOC_PREFIX)
|
|
234
|
+
set(has_alloc_prefix YES)
|
|
235
|
+
target_compile_definitions(${name} PUBLIC H3_ALLOC_PREFIX=${H3_ALLOC_PREFIX})
|
|
236
|
+
endif()
|
|
237
|
+
# Mac OSX defaults to not looking up undefined symbols dynamically,
|
|
238
|
+
# so enable that explicitly.
|
|
239
|
+
if(has_alloc_prefix AND APPLE)
|
|
240
|
+
target_link_libraries(${name} PRIVATE "-undefined dynamic_lookup")
|
|
241
|
+
endif()
|
|
242
|
+
|
|
243
|
+
if(have_alloca)
|
|
244
|
+
target_compile_definitions(${name} PUBLIC H3_HAVE_ALLOCA)
|
|
245
|
+
endif()
|
|
246
|
+
if(have_vla)
|
|
247
|
+
target_compile_definitions(${name} PUBLIC H3_HAVE_VLA)
|
|
248
|
+
endif()
|
|
249
|
+
target_include_directories(${name} PUBLIC
|
|
250
|
+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/h3lib/include>
|
|
251
|
+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src/h3lib/include>)
|
|
252
|
+
endfunction()
|
|
253
|
+
|
|
254
|
+
# Build the H3 library
|
|
255
|
+
add_h3_library(h3 "")
|
|
227
256
|
|
|
228
257
|
# Automatic code formatting
|
|
229
|
-
|
|
258
|
+
# Give preference to clang-format-9
|
|
259
|
+
find_program(CLANG_FORMAT_PATH NAMES clang-format-9 clang-format)
|
|
230
260
|
cmake_dependent_option(
|
|
231
261
|
ENABLE_FORMAT "Enable running clang-format before compiling" ON
|
|
232
262
|
"CLANG_FORMAT_PATH" OFF)
|
|
@@ -349,11 +379,11 @@ if(BUILD_FILTERS)
|
|
|
349
379
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}cells.kml")
|
|
350
380
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}centers.kml")
|
|
351
381
|
add_custom_target(kml_cells_${resolution}
|
|
352
|
-
COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeoBoundary>
|
|
382
|
+
COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> -r ${resolution} | $<TARGET_FILE:h3ToGeoBoundary> --kml --kml-name res${resolution}cells.kml --kml-description \"Res ${resolution} Cells\" > KML/res${resolution}cells.kml"
|
|
353
383
|
VERBATIM
|
|
354
384
|
DEPENDS create-kml-dir)
|
|
355
385
|
add_custom_target(kml_centers_${resolution}
|
|
356
|
-
COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeo>
|
|
386
|
+
COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> -r ${resolution} | $<TARGET_FILE:h3ToGeo> --kml --kml-name res${resolution}centers.kml --kml-description \"Res ${resolution} Centers\" > KML/res${resolution}centers.kml"
|
|
357
387
|
VERBATIM
|
|
358
388
|
DEPENDS create-kml-dir)
|
|
359
389
|
add_dependencies(kml
|
|
@@ -365,6 +395,7 @@ endif()
|
|
|
365
395
|
if(BUILD_GENERATORS)
|
|
366
396
|
# Code generation
|
|
367
397
|
add_h3_executable(generateBaseCellNeighbors src/apps/miscapps/generateBaseCellNeighbors.c ${APP_SOURCE_FILES})
|
|
398
|
+
add_h3_executable(generatePentagonDirectionFaces src/apps/miscapps/generatePentagonDirectionFaces.c ${APP_SOURCE_FILES})
|
|
368
399
|
add_h3_executable(generateNumHexagons src/apps/miscapps/generateNumHexagons.c ${APP_SOURCE_FILES})
|
|
369
400
|
add_h3_executable(generateFaceCenterPoint src/apps/miscapps/generateFaceCenterPoint.c ${APP_SOURCE_FILES})
|
|
370
401
|
|
|
@@ -398,6 +429,37 @@ if(BUILD_TESTING)
|
|
|
398
429
|
)
|
|
399
430
|
endif()
|
|
400
431
|
|
|
432
|
+
add_h3_library(h3WithTestAllocators test_prefix_)
|
|
433
|
+
|
|
434
|
+
macro(add_h3_memory_test name srcfile)
|
|
435
|
+
# Like other test code, but these need to be linked against
|
|
436
|
+
# a different copy of the H3 library which has known intercepted
|
|
437
|
+
# allocator functions.
|
|
438
|
+
add_executable(${ARGV} ${APP_SOURCE_FILES})
|
|
439
|
+
|
|
440
|
+
if(TARGET ${name})
|
|
441
|
+
target_link_libraries(${name} PUBLIC h3WithTestAllocators)
|
|
442
|
+
target_include_directories(${name} PUBLIC
|
|
443
|
+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/apps/applib/include>)
|
|
444
|
+
target_compile_options(${name} PRIVATE ${H3_COMPILE_FLAGS})
|
|
445
|
+
target_link_libraries(${name} PRIVATE ${H3_LINK_FLAGS})
|
|
446
|
+
endif()
|
|
447
|
+
|
|
448
|
+
math(EXPR test_number "${test_number}+1")
|
|
449
|
+
|
|
450
|
+
add_test(NAME ${name}_test${test_number} COMMAND ${TEST_WRAPPER} "$<TARGET_FILE:${name}>")
|
|
451
|
+
|
|
452
|
+
if(ENABLE_COVERAGE)
|
|
453
|
+
add_custom_target(${name}_coverage${test_number}
|
|
454
|
+
COMMAND ${name} > /dev/null
|
|
455
|
+
COMMENT "Running ${name}_coverage${test_number}"
|
|
456
|
+
)
|
|
457
|
+
|
|
458
|
+
add_dependencies(coverage ${name}_coverage${test_number})
|
|
459
|
+
add_dependencies(${name}_coverage${test_number} clean-coverage)
|
|
460
|
+
endif()
|
|
461
|
+
endmacro()
|
|
462
|
+
|
|
401
463
|
macro(add_h3_test_common name srcfile)
|
|
402
464
|
# need to actually make the test target
|
|
403
465
|
if(NOT TARGET ${name})
|
|
@@ -425,11 +487,7 @@ if(BUILD_TESTING)
|
|
|
425
487
|
macro(add_h3_test_with_file name srcfile argfile)
|
|
426
488
|
add_h3_test_common(${name} ${srcfile})
|
|
427
489
|
# add a special command (so we don't need to read the test file from the test program)
|
|
428
|
-
|
|
429
|
-
set(dump_command "Get-Content")
|
|
430
|
-
else()
|
|
431
|
-
set(dump_command "cat")
|
|
432
|
-
endif()
|
|
490
|
+
set(dump_command "cat")
|
|
433
491
|
|
|
434
492
|
add_test(NAME ${name}_test${test_number}
|
|
435
493
|
COMMAND ${SHELL} "${dump_command} ${argfile} | ${TEST_WRAPPER_STR} $<TARGET_FILE:${name}>")
|
|
@@ -470,7 +528,6 @@ if(BUILD_TESTING)
|
|
|
470
528
|
endmacro()
|
|
471
529
|
|
|
472
530
|
# Add each individual test
|
|
473
|
-
|
|
474
531
|
file(GLOB all_centers tests/inputfiles/bc*centers.txt)
|
|
475
532
|
foreach(file ${all_centers})
|
|
476
533
|
add_h3_test_with_file(testH3ToGeo src/apps/testapps/testH3ToGeo.c ${file})
|
|
@@ -506,16 +563,19 @@ if(BUILD_TESTING)
|
|
|
506
563
|
add_h3_test(testH3SetToVertexGraph src/apps/testapps/testH3SetToVertexGraph.c)
|
|
507
564
|
add_h3_test(testLinkedGeo src/apps/testapps/testLinkedGeo.c)
|
|
508
565
|
add_h3_test(testPolyfill src/apps/testapps/testPolyfill.c)
|
|
566
|
+
add_h3_test(testPolyfillReported src/apps/testapps/testPolyfillReported.c)
|
|
509
567
|
add_h3_test(testVertexGraph src/apps/testapps/testVertexGraph.c)
|
|
510
568
|
add_h3_test(testH3UniEdge src/apps/testapps/testH3UniEdge.c)
|
|
511
569
|
add_h3_test(testGeoCoord src/apps/testapps/testGeoCoord.c)
|
|
512
570
|
add_h3_test(testBBox src/apps/testapps/testBBox.c)
|
|
571
|
+
add_h3_test(testVertex src/apps/testapps/testVertex.c)
|
|
513
572
|
add_h3_test(testPolygon src/apps/testapps/testPolygon.c)
|
|
514
573
|
add_h3_test(testVec2d src/apps/testapps/testVec2d.c)
|
|
515
574
|
add_h3_test(testVec3d src/apps/testapps/testVec3d.c)
|
|
516
575
|
add_h3_test(testH3ToLocalIj src/apps/testapps/testH3ToLocalIj.c)
|
|
517
576
|
add_h3_test(testH3Distance src/apps/testapps/testH3Distance.c)
|
|
518
577
|
add_h3_test(testH3Line src/apps/testapps/testH3Line.c)
|
|
578
|
+
add_h3_test(testH3CellArea src/apps/testapps/testH3CellArea.c)
|
|
519
579
|
add_h3_test(testCoordIj src/apps/testapps/testCoordIj.c)
|
|
520
580
|
add_h3_test(testCoordIjk src/apps/testapps/testCoordIjk.c)
|
|
521
581
|
add_h3_test(testBaseCells src/apps/testapps/testBaseCells.c)
|
|
@@ -527,9 +587,13 @@ if(BUILD_TESTING)
|
|
|
527
587
|
|
|
528
588
|
# The "Exhaustive" part of the test name is used by the test-fast to exclude these files.
|
|
529
589
|
# test-fast exists so that Travis CI can run Valgrind on tests without taking a very long time.
|
|
590
|
+
add_h3_test(testH3UniEdgeExhaustive src/apps/testapps/testH3UniEdgeExhaustive.c)
|
|
530
591
|
add_h3_test(testH3ToLocalIjExhaustive src/apps/testapps/testH3ToLocalIjExhaustive.c)
|
|
531
592
|
add_h3_test(testH3LineExhaustive src/apps/testapps/testH3LineExhaustive.c)
|
|
532
593
|
add_h3_test(testH3DistanceExhaustive src/apps/testapps/testH3DistanceExhaustive.c)
|
|
594
|
+
add_h3_test(testH3CellAreaExhaustive src/apps/testapps/testH3CellAreaExhaustive.c)
|
|
595
|
+
|
|
596
|
+
add_h3_memory_test(testH3Memory src/apps/testapps/testH3Memory.c)
|
|
533
597
|
|
|
534
598
|
add_custom_target(test-fast COMMAND ctest -E Exhaustive)
|
|
535
599
|
endif()
|
|
@@ -547,6 +611,7 @@ if(BUILD_BENCHMARKS)
|
|
|
547
611
|
add_h3_benchmark(benchmarkH3Api src/apps/benchmarks/benchmarkH3Api.c)
|
|
548
612
|
add_h3_benchmark(benchmarkKRing src/apps/benchmarks/benchmarkKRing.c)
|
|
549
613
|
add_h3_benchmark(benchmarkH3Line src/apps/benchmarks/benchmarkH3Line.c)
|
|
614
|
+
add_h3_benchmark(benchmarkH3UniEdge src/apps/benchmarks/benchmarkH3UniEdge.c)
|
|
550
615
|
add_h3_benchmark(benchmarkH3SetToLinkedGeo src/apps/benchmarks/benchmarkH3SetToLinkedGeo.c)
|
|
551
616
|
add_h3_benchmark(benchmarkPolyfill src/apps/benchmarks/benchmarkPolyfill.c)
|
|
552
617
|
add_h3_benchmark(benchmarkPolygon src/apps/benchmarks/benchmarkPolygon.c)
|
|
@@ -569,6 +634,10 @@ set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
|
|
|
569
634
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
|
570
635
|
set(namespace "${PROJECT_NAME}::")
|
|
571
636
|
|
|
637
|
+
# TODO: Unclear why this is needed to get the libh3 Debian package to build correctly
|
|
638
|
+
# with shared libraries.
|
|
639
|
+
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "libh3")
|
|
640
|
+
|
|
572
641
|
# Include module with fuction 'write_basic_package_version_file'
|
|
573
642
|
include(CMakePackageConfigHelpers)
|
|
574
643
|
|
|
@@ -597,6 +666,14 @@ configure_package_config_file(
|
|
|
597
666
|
install(
|
|
598
667
|
TARGETS ${INSTALL_TARGETS}
|
|
599
668
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
|
669
|
+
RUNTIME DESTINATION "bin"
|
|
670
|
+
COMPONENT h3
|
|
671
|
+
)
|
|
672
|
+
|
|
673
|
+
install(
|
|
674
|
+
TARGETS h3
|
|
675
|
+
EXPORT "${TARGETS_EXPORT_NAME}"
|
|
676
|
+
COMPONENT libh3
|
|
600
677
|
LIBRARY DESTINATION "lib"
|
|
601
678
|
ARCHIVE DESTINATION "lib"
|
|
602
679
|
RUNTIME DESTINATION "bin"
|
|
@@ -609,6 +686,7 @@ install(
|
|
|
609
686
|
install(
|
|
610
687
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/src/h3lib/include/h3api.h"
|
|
611
688
|
DESTINATION "${include_install_dir}/h3"
|
|
689
|
+
COMPONENT libh3-dev
|
|
612
690
|
)
|
|
613
691
|
|
|
614
692
|
# Config
|
|
@@ -617,6 +695,7 @@ install(
|
|
|
617
695
|
install(
|
|
618
696
|
FILES "${project_config}" "${version_config}"
|
|
619
697
|
DESTINATION "${config_install_dir}"
|
|
698
|
+
COMPONENT libh3-dev
|
|
620
699
|
)
|
|
621
700
|
|
|
622
701
|
# Config
|
|
@@ -625,4 +704,27 @@ install(
|
|
|
625
704
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
|
626
705
|
NAMESPACE "${namespace}"
|
|
627
706
|
DESTINATION "${config_install_dir}"
|
|
707
|
+
COMPONENT libh3-dev
|
|
628
708
|
)
|
|
709
|
+
|
|
710
|
+
# Debian package build
|
|
711
|
+
set(CPACK_DEB_COMPONENT_INSTALL 1)
|
|
712
|
+
set(CPACK_GENERATOR "DEB")
|
|
713
|
+
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
|
714
|
+
# set(CPACK_DEBIAN_PACKAGE_MAINTAINER "TEST PACKAGE") # Required
|
|
715
|
+
set(CPACK_PACKAGE_HOMEPAGE_URL "https://www.h3geo.org")
|
|
716
|
+
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
|
717
|
+
set(CPACK_DEBIAN_LIBH3_PACKAGE_DEPENDS "libc6 (>= 2.27)")
|
|
718
|
+
set(CPACK_DEBIAN_LIBH3-DEV_PACKAGE_DEPENDS "libh3 (= ${H3_VERSION})")
|
|
719
|
+
set(CPACK_DEBIAN_H3_PACKAGE_DEPENDS "libc6 (>= 2.27), libh3 (= ${H3_VERSION})")
|
|
720
|
+
set(CPACK_DEBIAN_LIBH3_DESCRIPTION "Library files for the H3 hexagonal discrete global grid system.")
|
|
721
|
+
set(CPACK_DEBIAN_LIBH3-DEV_DESCRIPTION "Development files and headers for the H3 hexagonal discrete global grid system.")
|
|
722
|
+
set(CPACK_DEBIAN_H3_DESCRIPTION "UNIX style filter (command line) tools for the H3 hexagonal discrete global grid system.")
|
|
723
|
+
set(CPACK_DEBIAN_LIBH3_PACKAGE_NAME "libh3")
|
|
724
|
+
set(CPACK_DEBIAN_LIBH3-DEV_PACKAGE_NAME "libh3-dev")
|
|
725
|
+
set(CPACK_DEBIAN_H3_PACKAGE_NAME "h3")
|
|
726
|
+
set(CPACK_DEBIAN_LIBH3_PACKAGE_SECTION "libs")
|
|
727
|
+
set(CPACK_DEBIAN_LIBH3-DEV_PACKAGE_SECTION "libdevel")
|
|
728
|
+
set(CPACK_DEBIAN_H3_PACKAGE_SECTION "science")
|
|
729
|
+
|
|
730
|
+
include(CPack)
|