https://bugs.gentoo.org/919177 https://www.gaia-gis.it/fossil/libspatialite/tktview?name=d5c8f926be https://www.gaia-gis.it/fossil/libspatialite/tktview/af38159360a2e740b2339e279103bcdaf951498e Macro out things upstream forgot to conditionally exclude, macro in things upstream forgot In particular, functions that appear only when GEOM is enabled should not be used when GEOM is disabled, and having fallback for ancient version of PROJ is well and good; upstream forgot version for modern one in one place. --- a/src/gaiageo/gg_advanced.c +++ b/src/gaiageo/gg_advanced.c @@ -2286,6 +2286,7 @@ / identifying toxic geometries / i.e. geoms making GEOS to crash !!! */ +#ifndef OMIT_GEOS /* don't do anything if there's no GEOS */ int ib; gaiaPointPtr point; gaiaLinestringPtr line; @@ -2350,6 +2351,7 @@ } polyg = polyg->Next; } +#endif /* OMIT_GEOS */ return 0; } @@ -2377,11 +2379,13 @@ return 0; else { +#ifndef OMIT_GEOS /*can't report error if GEOS is not build, skipping */ if (cache != NULL) gaiaSetGeosAuxErrorMsg_r (cache, "gaia detected a not-closed Ring"); else gaiaSetGeosAuxErrorMsg ("gaia detected a not-closed Ring"); +#endif return 1; } } --- a/src/spatialite/spatialite.c +++ b/src/spatialite/spatialite.c @@ -23472,9 +23472,11 @@ sqlite3_result_null (context); else { +#ifndef OMIT_GEOS /* Only if GEOS enabled */ if (!gaiaInterpolatePoint (cache, line, point, &m_value)) sqlite3_result_null (context); else +#endif sqlite3_result_double (context, m_value); } if (line != NULL) --- a/src/connection_cache/alloc_cache.c +++ b/connection_cache/alloc_cache.c @@ -646,8 +646,12 @@ #endif #else /* supporting old PROJ.4 */ +#ifdef PROJ_NEW /* PROJ.6* */ + cache->PROJ_handle = proj_context_create (); +#else cache->PROJ_handle = pj_ctx_alloc (); #endif +#endif #endif /* end PROJ.4 */ #ifdef ENABLE_RTTOPO /* initializing the RTTOPO context */ @@ -706,7 +706,11 @@ #endif /* end GEOS */ #ifndef OMIT_PROJ /* initializing the PROJ.4 context */ +#ifndef PROJ_NEW /* Only in case where PROJ.5 not needed */ cache->PROJ_handle = pj_ctx_alloc (); +#else /* PROJ.6* */ + cache->PROJ_handle = proj_context_create (); +#endif #endif /* end PROJ.4 */ done: