git: 6324d2d4a8fe - main - Mk/Uses/postgis.mk: Add USES=postgis framework

From: Loïc Bartoletti <lbartoletti_at_FreeBSD.org>
Date: Thu, 17 Sep 2026 14:19:56 UTC
The branch main has been updated by lbartoletti:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6324d2d4a8fe20ec1c76adcc5a3736e1e6926ef0

commit 6324d2d4a8fe20ec1c76adcc5a3736e1e6926ef0
Author:     Loïc Bartoletti <lbartoletti@FreeBSD.org>
AuthorDate: 2026-09-10 03:20:37 +0000
Commit:     Loïc Bartoletti <lbartoletti@FreeBSD.org>
CommitDate: 2026-09-17 14:14:48 +0000

    Mk/Uses/postgis.mk: Add USES=postgis framework
    
    PR:             213038
    Tested by:      Martin Birgmeier
    Exp-run by: antoine
---
 Mk/Uses/postgis.mk         | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 Mk/bsd.default-versions.mk |  2 ++
 2 files changed, 65 insertions(+)

diff --git a/Mk/Uses/postgis.mk b/Mk/Uses/postgis.mk
new file mode 100644
index 000000000000..41586152d862
--- /dev/null
+++ b/Mk/Uses/postgis.mk
@@ -0,0 +1,63 @@
+# Provide support for PostGIS
+#
+# Feature:	postgis
+# Usage:	USES=	postgis[:version] pgsql
+#
+# version	PostGIS version to depend on.  Valid versions are 33, 34,
+#		35, 36 and 37.  If omitted, POSTGIS_DEFAULT is used.
+#
+# WANT_POSTGIS may contain build and/or run to select the dependency type.
+# The default is run.
+#
+# postgis must appear before pgsql in USES so that the PostgreSQL version
+# constraint required by the selected PostGIS version is applied first.
+#
+# MAINTAINER: lbartoletti@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_POSTGIS_MK)
+_INCLUDE_USES_POSTGIS_MK=	yes
+
+_VALID_POSTGIS_VER=	33 34 35 36 37
+
+.  if defined(_INCLUDE_USES_PGSQL_MK)
+BROKEN=		USES=postgis must appear before USES=pgsql
+.  endif
+
+.  if empty(postgis_ARGS)
+POSTGIS_VER=	${POSTGIS_DEFAULT}
+.  elif ${postgis_ARGS:[#]} != 1 || empty(_VALID_POSTGIS_VER:M${postgis_ARGS})
+IGNORE=		Invalid PostGIS version ${postgis_ARGS}; valid versions are ${_VALID_POSTGIS_VER}
+.  else
+POSTGIS_VER=	${postgis_ARGS}
+.  endif
+
+.  if empty(_VALID_POSTGIS_VER:M${POSTGIS_DEFAULT})
+IGNORE=		Invalid POSTGIS default version ${POSTGIS_DEFAULT}; valid versions are ${_VALID_POSTGIS_VER}
+.  endif
+
+_POSTGIS_PGSQL_RANGE_33=	14-17
+_POSTGIS_PGSQL_RANGE_34=	14-17
+_POSTGIS_PGSQL_RANGE_35=	14-18
+_POSTGIS_PGSQL_RANGE_36=	14-18
+_POSTGIS_PGSQL_RANGE_37=	14-19
+
+.  if defined(pgsql_ARGS) && !empty(pgsql_ARGS)
+BROKEN=		USES=postgis supplies the PostgreSQL version constraint; do not add arguments to USES=pgsql
+.  else
+pgsql_ARGS=	${_POSTGIS_PGSQL_RANGE_${POSTGIS_VER}}
+.  endif
+
+WANT_POSTGIS?=	run
+_POSTGIS_DEP=	${LOCALBASE}/share/postgresql/extension/postgis.control:databases/postgis${POSTGIS_VER}
+
+.  if ${WANT_POSTGIS:Mbuild}
+BUILD_DEPENDS+=	${_POSTGIS_DEP}
+.  endif
+.  if ${WANT_POSTGIS:Mrun}
+RUN_DEPENDS+=	${_POSTGIS_DEP}
+.  endif
+.  if empty(WANT_POSTGIS:Mbuild) && empty(WANT_POSTGIS:Mrun)
+BROKEN=		Invalid WANT_POSTGIS value: ${WANT_POSTGIS}; valid values are build and run
+.  endif
+
+.endif
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index 871b53173ac3..10f01dd4daad 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -144,6 +144,8 @@ PERL5_DEFAULT:=		${_PERL5_FROM_BIN:R}
 PGSQL_DEFAULT?=		18
 # Possible values: 8.2, 8.3, 8.4, 8.5, 8.6
 PHP_DEFAULT?=		8.4
+# Possible values: 33, 34, 35, 36, 37
+POSTGIS_DEFAULT?=	36
 # Possible values: rust, legacy
 .  if empty(ARCH:Naarch64:Namd64:Narmv7:Ni386:Npowerpc64:Npowerpc64le:Npowerpc:Nriscv64)
 PYCRYPTOGRAPHY_DEFAULT?=	rust