1PORTNAME=	gdal
2PORTVERSION=	3.11.5
3PORTREVISION=	2
4CATEGORIES=	graphics geography
5MASTER_SITES=	https://download.osgeo.org/gdal/${PORTVERSION}/ \
6		FREEBSD_LOCAL/sunpoet
7
8MAINTAINER=	ports@MidnightBSD.org
9COMMENT=	Translator library for raster geospatial data formats
10WWW=		https://gdal.org/ \
11		https://github.com/OSGeo/gdal
12
13LICENSE=	mit
14LICENSE_FILE=	${WRKSRC}/LICENSE.TXT
15
16BUILD_DEPENDS=	fast_float>=0:math/fast_float \
17		libertiff>=0:graphics/libertiff \
18		libgeotiff>=1.5.0:graphics/libgeotiff \
19		proj>=6,1:graphics/proj
20LIB_DEPENDS=	libgeotiff.so:graphics/libgeotiff \
21		libgif.so:graphics/giflib \
22		libjson-c.so:devel/json-c \
23		libpng.so:graphics/png \
24		libproj.so:graphics/proj \
25		libqhull_r.so:math/qhull \
26		libtiff.so:graphics/tiff
27
28USES=		cmake compiler:c++17-lang cpe iconv jpeg localbase pkgconfig ssl tar:xz
29
30CMAKE_OFF=	BUILD_CSHARP_BINDINGS \
31		BUILD_DOCS \
32		BUILD_JAVA_BINDINGS \
33		BUILD_PYTHON_BINDINGS \
34		BUILD_TESTING \
35		BUILD_VSIPRELOAD \
36		CLANG_TIDY_ENABLED \
37		CSHARP_MONO \
38		ENABLE_DEFLATE64 \
39		GDAL_ENABLE_HDF5_GLOBAL_LOCK  \
40		GDAL_ENABLE_PLUGINS \
41		GDAL_ENABLE_PLUGINS_NO_DEPS \
42		GDAL_SET_INSTALL_RELATIVE_RPATH \
43		GDAL_USE_INTERNAL_LIBS \
44		GDAL_USE_GEOTIFF_INTERNAL \
45		GDAL_USE_GIF_INTERNAL \
46		GDAL_USE_JPEG12_INTERNAL \
47		GDAL_USE_JPEG_INTERNAL \
48		GDAL_USE_JSONC_INTERNAL \
49		GDAL_USE_LERC_INTERNAL \
50		GDAL_USE_LIBCSF_INTERNAL \
51		GDAL_USE_OPENCAD \
52		GDAL_USE_OPENCAD_INTERNAL \
53		GDAL_USE_PNG_INTERNAL \
54		GDAL_USE_PUBLICDECOMPWT \
55		GDAL_USE_QHULL_INTERNAL \
56		GDAL_USE_SHAPELIB \
57		GDAL_USE_TIFF_INTERNAL \
58		GDAL_USE_ZLIB_INTERNAL \
59		HDFS_ENABLED \
60		SWIG_REGENERATE_PYTHON \
61		${CMAKE_OFF_${ARCH}}
62CMAKE_OFF_armv7=GDAL_ENABLE_ARM_NEON_OPTIMIZATIONS
63CMAKE_ON=	AVIF_VERSION_CHECK \
64		BUILD_APPS \
65		BUILD_SHARED_LIBS \
66		BUILD_STATIC_LIBS \
67		ENABLE_GNM \
68		ENABLE_IPO \
69		ENABLE_PAM \
70		GDAL_AUTOLOAD_PLUGINS \
71		GDAL_BUILD_OPTIONAL_DRIVERS \
72		GDAL_HIDE_INTERNAL_SYMBOLS \
73		GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE \
74		GDAL_SPLIT_EXPORTED_LIBS \
75		GDAL_USE_CPL_MULTIPROC_PTHREAD \
76		GDAL_USE_EXTERNAL_LIBS \
77		GDAL_USE_GEOTIFF \
78		GDAL_USE_GIF \
79		GDAL_USE_ICONV \
80		GDAL_USE_JPEG \
81		GDAL_USE_JPEG12 \
82		GDAL_USE_JSONC \
83		GDAL_USE_LIBCSF \
84		GDAL_USE_LIBLZMA \
85		GDAL_USE_OPENSSL \
86		GDAL_USE_PNG \
87		GDAL_USE_QHULL \
88		GDAL_USE_SHAPELIB_INTERNAL \
89		GDAL_USE_TIFF \
90		GDAL_USE_ZLIB \
91		OGR_BUILD_OPTIONAL_DRIVERS \
92		OGR_SQLITE_ALLOW_LOAD_EXTENSIONS \
93		RENAME_INTERNAL_SHAPELIB_SYMBOLS \
94		USE_CCACHE
95USE_CXXSTD=	c++17
96USE_LDCONFIG=	yes
97
98PLIST_SUB=	PORTVERSION=${PORTVERSION}
99
100CPE_VENDOR=	osgeo
101
102HEADER_FILES=	alg/gvgcpfit.h \
103		alg/internal_qhull_headers.h \
104		alg/thinplatespline.h\
105		gcore/gdalexif.h \
106		gcore/gdaljp2metadatagenerator.h \
107		gcore/gdalsse_priv.h \
108		gnm/gnm_priv.h \
109		port/cpl_aws.h \
110		port/cpl_cpu_features.h \
111		port/cpl_google_cloud.h \
112		port/cpl_odbc.h \
113		port/cpl_sha1.h \
114		port/cpl_sha256.h \
115		port/cpl_vsil_curl_priv.h \
116		port/cpl_worker_thread_pool.h
117
118OPTIONS_DEFINE=	AEC ARMADILLO BLOSC BRUNSLI CFITSIO CRYPTOPP CURL DEFLATE ECW EXPAT FREEXL GEOS GTA HDF5 HEIF JXL KEA KML LERC LIBXML2 LZ4 MYSQL NETCDF ODBC OPENDRIVE OPENEXR OPENJPEG PCRE2 PGSQL QB3 RASTERLITE2 SFCGAL SPATIALITE SQLITE TILEDB WEBP XERCES ZSTD
119OPTIONS_RADIO=	PDF
120OPTIONS_RADIO_PDF=	PODOFO POPPLER
121OPTIONS_DEFAULT=AEC CURL DEFLATE EXPAT FREEXL GEOS LERC LIBXML2 LZ4 OPENJPEG PCRE2 PGSQL POPPLER WEBP ZSTD \
122		HDF5 KML NETCDF SPATIALITE SFCGAL SQLITE XERCES
123OPTIONS_EXCLUDE_powerpc=	LERC
124OPTIONS_EXCLUDE_powerpc64=	LERC
125OPTIONS_SUB=	yes
126AEC_DESC=	Adaptive entropy coding library
127BLOSC_DESC=	Blosc support in Zarr driver
128BRUNSLI_DESC=	Brunsli support via libbrunsli library
129CRYPTOPP_DESC=	Cryptopp support
130DEFLATE_DESC=	Faster deflate support via libdeflate library
131KEA_DESC=	KEA format support
132LERC_DESC=	LERC (Limited Error Raster Compression) support
133OPENDRIVE_DESC=	OpenDRIVE format support
134PCRE2_DESC=	Regular expression support for SQLite
135QB3_DESC=	QB3 compression in MRF driver
136RASTERLITE2_DESC=	RasterLite2 support
137TILEDB_DESC=	TileDB support
138
139AEC_CMAKE_BOOL=		GDAL_USE_LIBAEC
140AEC_LIB_DEPENDS=	libaec.so:science/libaec
141ARMADILLO_CMAKE_BOOL=	GDAL_USE_ARMADILLO
142ARMADILLO_LIB_DEPENDS=	libarmadillo.so:math/armadillo
143BLOSC_CMAKE_BOOL=	GDAL_USE_BLOSC
144BLOSC_LIB_DEPENDS=	libblosc.so:archivers/c-blosc
145BRUNSLI_CMAKE_BOOL=	GDAL_USE_BRUNSLI
146BRUNSLI_LIB_DEPENDS=	libbrunslidec-c.so:graphics/brunsli
147CFITSIO_CMAKE_BOOL=	GDAL_USE_CFITSIO
148CFITSIO_LIB_DEPENDS=	libcfitsio.so:astro/cfitsio
149CRYPTOPP_CMAKE_BOOL=	GDAL_USE_CRYPTOPP
150CRYPTOPP_LIB_DEPENDS=	libcryptopp.so:security/cryptopp
151CURL_CMAKE_BOOL=	GDAL_USE_CURL
152CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
153DEFLATE_CMAKE_BOOL=	GDAL_USE_DEFLATE
154DEFLATE_LIB_DEPENDS=	libdeflate.so:archivers/libdeflate
155ECW_CMAKE_BOOL=		GDAL_USE_ECW
156ECW_LIB_DEPENDS=	libNCSEcw.so:graphics/libecwj2
157EXPAT_CMAKE_BOOL=	GDAL_USE_EXPAT
158EXPAT_LIB_DEPENDS=	libexpat.so:textproc/expat2
159FREEXL_CMAKE_BOOL=	GDAL_USE_FREEXL
160FREEXL_LIB_DEPENDS=	libfreexl.so:textproc/freexl
161GEOS_CMAKE_BOOL=	GDAL_USE_GEOS
162GEOS_LIB_DEPENDS=	libgeos.so:graphics/geos
163GTA_CMAKE_BOOL=		GDAL_USE_GTA
164GTA_LIB_DEPENDS=	libgta.so:devel/libgta
165HDF5_CMAKE_BOOL=	GDAL_USE_HDF5
166HDF5_LIB_DEPENDS=	libhdf5.so:science/hdf5
167HEIF_CMAKE_BOOL=	GDAL_USE_HEIF
168HEIF_LIB_DEPENDS=	libheif.so:graphics/libheif
169JXL_CMAKE_BOOL=		GDAL_USE_JXL GDAL_USE_JXL_THREADS
170JXL_LIB_DEPENDS=	libjxl.so:graphics/libjxl
171KEA_CMAKE_BOOL=		GDAL_USE_KEA
172KEA_LIB_DEPENDS=	libkea.so:graphics/kealib
173KML_CMAKE_BOOL=		GDAL_USE_LIBKML
174KML_LIB_DEPENDS=	libkmlbase.so:science/libkml \
175			liburiparser.so:net/uriparser
176KML_USES=		minizip
177LERC_CMAKE_BOOL=	GDAL_USE_LERC
178LERC_LIB_DEPENDS=	libLerc.so:graphics/lerc
179LIBXML2_CMAKE_BOOL=	GDAL_USE_LIBXML2
180LIBXML2_LIB_DEPENDS=	libxml2.so:textproc/libxml2
181LZ4_CMAKE_BOOL=		GDAL_USE_LZ4
182LZ4_LIB_DEPENDS=	liblz4.so:archivers/liblz4
183MYSQL_CMAKE_BOOL=	GDAL_USE_MYSQL
184MYSQL_USES=		mysql
185NETCDF_CMAKE_BOOL=	GDAL_USE_NETCDF
186NETCDF_LIB_DEPENDS=	libnetcdf.so:science/netcdf
187ODBC_CMAKE_BOOL=	GDAL_USE_ODBC
188ODBC_LIB_DEPENDS=	libodbc.so:databases/unixODBC
189OPENDRIVE_CMAKE_BOOL=	GDAL_USE_OPENDRIVE
190OPENDRIVE_LDFLAGS=	-lpugixml
191OPENDRIVE_LIB_DEPENDS=	libOpenDrive.so:graphics/libopendrive \
192			libpugixml.so:textproc/pugixml
193OPENEXR_CFLAGS=		-DInt64=uint64_t
194OPENEXR_CMAKE_BOOL=	GDAL_USE_EXR
195OPENEXR_LIB_DEPENDS=	libImath.so:math/Imath \
196			libOpenEXR.so:graphics/openexr
197OPENJPEG_BUILD_DEPENDS=	openjpeg>=2.1.0:graphics/openjpeg
198OPENJPEG_CMAKE_BOOL=	GDAL_USE_OPENJPEG
199OPENJPEG_LIB_DEPENDS=	libopenjp2.so:graphics/openjpeg
200PCRE2_CMAKE_BOOL=	GDAL_USE_PCRE2
201PCRE2_LIB_DEPENDS=	libpcre2-8.so:devel/pcre2
202PGSQL_CMAKE_BOOL=	GDAL_USE_POSTGRESQL
203PGSQL_USES=		pgsql
204PODOFO_CMAKE_BOOL=	GDAL_USE_PODOFO
205PODOFO_LIB_DEPENDS=	libpodofo.so:graphics/podofo
206POPPLER_CMAKE_BOOL=	GDAL_USE_POPPLER
207POPPLER_LIB_DEPENDS=	libpoppler.so:graphics/poppler
208QB3_CMAKE_BOOL=		GDAL_USE_LIBQB3
209QB3_LIB_DEPENDS=	libQB3.so:graphics/qb3
210RASTERLITE2_CMAKE_BOOL=	GDAL_USE_RASTERLITE2
211RASTERLITE2_LIB_DEPENDS=librasterlite2.so:graphics/librasterlite2
212SFCGAL_CMAKE_BOOL=	GDAL_USE_SFCGAL
213SFCGAL_LIB_DEPENDS=	libSFCGAL.so:databases/sfcgal
214SPATIALITE_CMAKE_BOOL=	GDAL_USE_SPATIALITE
215SPATIALITE_LIB_DEPENDS=	libspatialite.so:databases/spatialite
216SQLITE_CMAKE_BOOL=	GDAL_USE_SQLITE3
217SQLITE_USES=		sqlite
218TILEDB_CMAKE_BOOL=	GDAL_USE_TILEDB
219TILEDB_LIB_DEPENDS=	libtiledb.so:databases/tiledb
220WEBP_CMAKE_BOOL=	GDAL_USE_WEBP
221WEBP_LIB_DEPENDS=	libwebp.so:graphics/webp
222XERCES_CMAKE_BOOL=	GDAL_USE_XERCESC
223XERCES_LIB_DEPENDS=	libxerces-c.so:textproc/xerces-c3
224ZSTD_CMAKE_BOOL=	GDAL_USE_ZSTD
225ZSTD_LIB_DEPENDS=	libzstd.so:archivers/zstd
226
227.include <bsd.mport.options.mk>
228
229.if ${ARCH} == powerpc || ${ARCH} == powerpc64
230PLIST_SUB+=	BIGENDIAN="@comment "
231.else
232PLIST_SUB+=	BIGENDIAN=""
233.endif
234
235# Clean up bundled libraries
236.if !defined(MAINTAINER_MODE)
237EXTRACT_AFTER_ARGS=	--exclude ${DISTNAME}/alg/internal_libqhull \
238			--exclude ${DISTNAME}/frmts/gif/giflib \
239			--exclude ${DISTNAME}/frmts/gtiff/libgeotiff \
240			--exclude ${DISTNAME}/frmts/jpeg/libjpeg \
241			--exclude ${DISTNAME}/frmts/jpeg/libjpeg12 \
242			--exclude ${DISTNAME}/frmts/png/libpng \
243			--exclude ${DISTNAME}/frmts/zlib \
244			--exclude ${DISTNAME}/ogr/ogrsf_frmts/geojson/libjson \
245			--exclude ${DISTNAME}/third_party/fast_float \
246			--exclude ${DISTNAME}/third_party/LercLib \
247			--exclude ${DISTNAME}/third_party/libertiff \
248			--no-same-owner --no-same-permissions
249.else
250post-patch:
251	@${RM} -r ${WRKSRC}/alg/internal_libqhull/
252	@${RM} -r ${WRKSRC}/frmts/gif/giflib/
253	@${RM} -r ${WRKSRC}/frmts/gtiff/libgeotiff/
254#	@${RM} -r ${WRKSRC}/frmts/gtiff/libtiff/ # tif_lerc.c, tif_lzw.c, tif_packbits.c
255	@${RM} -r ${WRKSRC}/frmts/jpeg/libjpeg/
256	@${RM} -r ${WRKSRC}/frmts/jpeg/libjpeg12/
257	@${RM} -r ${WRKSRC}/frmts/png/libpng/
258	@${RM} -r ${WRKSRC}/frmts/zlib/
259	@${RM} -r ${WRKSRC}/ogr/ogrsf_frmts/geojson/libjson/
260	@${RM} -r ${WRKSRC}/third_party/fast_float/
261	@${RM} -r ${WRKSRC}/third_party/LercLib/
262	@${RM} -r ${WRKSRC}/third_party/libertiff/
263.endif
264
265post-install:
266	${MKDIR} ${PREFIX}/etc/bash_completion.d
267	${INSTALL_DATA} ${WRKSRC}/scripts/gdal-bash-completion.sh ${PREFIX}/etc/bash_completion.d
268	cd ${WRKSRC}/ && ${INSTALL_DATA} ${HEADER_FILES} ${PREFIX}/include/
269#	${INSTALL_DATA} ${WRKSRC}/libgdal.a ${PREFIX}/lib/
270	${STRIP_CMD} ${PREFIX}/lib/libgdal.so
271
272.include <bsd.port.mk>
273