diff options
| author | Kai Pastor <dg0yt@darc.de> | 2021-07-23 19:38:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-23 10:38:02 -0700 |
| commit | 4990d2b9510876531eb7e73eeba09210178e804f (patch) | |
| tree | 020d2a6129bc8a656af69908c3c2cc6719963b31 | |
| parent | 5ce620b6ba5c0d5834bf8e18b75c3c0c746e74cd (diff) | |
| download | vcpkg-4990d2b9510876531eb7e73eeba09210178e804f.tar.gz vcpkg-4990d2b9510876531eb7e73eeba09210178e804f.zip | |
[gdal] Fix build for non-Windows targets (#17698)
* Remove obsolete GDAL_VERSION_LIB
* Build mingw with configure/make
* Rearrange CONF_OPTS, expose tiff dependency
* Revise linkage configuration
* Rearrange GDAL_PATCHES
* Put optional drivers into non-default feature
* Fix gdal build
* Update vcpkg.json
* Re-enable netcdf support
* Revise cmake wrapper
* Final portfile cleanup
* Remove curl osx system dependencies
* Verify configuration results before building
* Update and revise configure.ac patch
* Fix dllexport for mingw-dynamic
* Fix pc file
* Add dependencies to cmake wrapper
* Increment port-version
* x-add-version
* Fix typo
* Update git-tree
* strega-nil CRs
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
| -rw-r--r-- | ports/gdal/0005-Fix-configure.patch | 433 | ||||
| -rw-r--r-- | ports/gdal/0006-Fix-mingw-dllexport.patch | 13 | ||||
| -rw-r--r-- | ports/gdal/portfile.cmake | 298 | ||||
| -rw-r--r-- | ports/gdal/vcpkg-cmake-wrapper.cmake | 100 | ||||
| -rw-r--r-- | ports/gdal/vcpkg.json | 7 | ||||
| -rw-r--r-- | versions/baseline.json | 2 | ||||
| -rw-r--r-- | versions/g-/gdal.json | 5 |
7 files changed, 584 insertions, 274 deletions
diff --git a/ports/gdal/0005-Fix-configure.patch b/ports/gdal/0005-Fix-configure.patch index 3883ed96b..c0f35523b 100644 --- a/ports/gdal/0005-Fix-configure.patch +++ b/ports/gdal/0005-Fix-configure.patch @@ -1,222 +1,303 @@ diff --git a/configure.ac b/configure.ac -index bd85e0616..c45b0f74a 100644 +index bd85e06..b88676a 100644 --- a/configure.ac +++ b/configure.ac -@@ -1275,10 +1275,10 @@ AC_MSG_CHECKING([for libtiff]) +@@ -45,6 +45,8 @@ dnl Compute the canonical host-system (the system we are building for) + dnl type variable $host + AC_CANONICAL_HOST + ++PKG_PROG_PKG_CONFIG([0.21]) ++ + dnl Enable as much warnings as possible + AX_CFLAGS_WARN_ALL(C_WFLAGS) + AX_CXXFLAGS_WARN_ALL(CXX_WFLAGS) +@@ -1274,12 +1276,15 @@ AC_MSG_CHECKING([for libtiff]) + if test "x${with_libtiff}" = "xyes" -o "x${with_libtiff}" = "x" ; then - dnl Only automatically pick up the external libtiff if it is >= 4.0. +- dnl Only automatically pick up the external libtiff if it is >= 4.0. - AC_CHECK_LIB(tiff,TIFFScanlineSize64,TIFF_SETTING=external HAVE_BIGTIFF=yes,TIFF_SETTING=internal HAVE_BIGTIFF=yes,) -+ AC_SEARCH_LIBS(TIFFScanlineSize64,[tiffd tiff],TIFF_SETTING=external HAVE_BIGTIFF=yes,TIFF_SETTING=internal HAVE_BIGTIFF=yes,-ljpeg) ++ PKG_CHECK_MODULES([TIFF],[libtiff-4 > 4.0], [TIFF_SETTING=external], [TIFF_SETTING=internal HAVE_BIGTIFF=yes]) if test "$TIFF_SETTING" = "external" ; then - LIBS="-ltiff $LIBS" -+ LIBS="-ljpeg $LIBS" AC_MSG_RESULT([using pre-installed libtiff.]) ++ EXTRA_INCLUDES="$TIFF_CFLAGS $EXTRA_INCLUDES" ++ SAVED_LIBS="$LIBS" ++ LIBS="$TIFF_LIBS" ++ AC_SEARCH_LIBS(TIFFScanlineSize64,[],HAVE_BIGTIFF=yes,HAVE_BIGTIFF=no,) ++ LIBS="$TIFF_LIBS $SAVED_LIBS" else AC_MSG_RESULT([using internal TIFF code.]) -@@ -1338,18 +1338,12 @@ if test "`basename xx/$with_curl`" = "curl-config" ; then + fi +@@ -1333,22 +1338,28 @@ AC_ARG_WITH(curl, + dnl Clear some cache variables + unset ac_cv_path_LIBCURL + ++LIBCURL_MODVERSION= + if test "`basename xx/$with_curl`" = "curl-config" ; then + LIBCURL_CONFIG="$with_curl" elif test "$with_curl" = "no" ; then LIBCURL_CONFIG=no ++elif test "$with_curl" = "yes" -o "$with_curl" = "" ; then ++ PKG_CHECK_EXISTS([libcurl], [LIBCURL_CONFIG="${PKG_CONFIG} libcurl"], [LIBCURL_CONFIG=false]) ++ LIBCURL_MODVERSION=`$LIBCURL_CONFIG --modversion` else -- AC_PATH_PROG(LIBCURL_CONFIG, curl-config, no) -+ LIBCURL_CONFIG=yes + AC_PATH_PROG(LIBCURL_CONFIG, curl-config, no) fi if test "$LIBCURL_CONFIG" != "no" ; then - CURL_VERNUM=`$LIBCURL_CONFIG --vernum` - CURL_VER=`$LIBCURL_CONFIG --version | awk '{print $2}'` -- -- AC_MSG_RESULT([ found libcurl version $CURL_VER]) -- ++ CURL_VER="`$LIBCURL_CONFIG --version | awk '{print $2}'`$LIBCURL_MODVERSION" + + AC_MSG_RESULT([ found libcurl version $CURL_VER]) + - AC_CHECK_LIB(curl,curl_global_init,CURL_SETTING=yes,CURL_SETTING=no,`$LIBCURL_CONFIG --libs`) -- -+ AC_SEARCH_LIBS(curl_global_init,[curl-d curl],CURL_SETTING=yes,CURL_SETTING=no,) ++ SAVED_LIBS="$LIBS" ++ LIBS=`$LIBCURL_CONFIG --libs` ++ AC_SEARCH_LIBS(curl_global_init,[],CURL_SETTING=yes,CURL_SETTING=no,) ++ LIBS="$SAVED_LIBS" + fi - AC_SUBST(CURL_SETTING,$CURL_SETTING) -@@ -1512,12 +1506,12 @@ elif test "$with_spatialite" = "yes"; then - AC_CHECK_HEADERS(sqlite3.h) - if test "$ac_cv_header_sqlite3_h" = "yes"; then - AC_MSG_CHECKING([for spatialite.h in /usr/include or /usr/local/include]) -- if test -f "/usr/include/spatialite.h" -o -f "/usr/local/include/spatialite.h"; then -+ if test -f "$prefix/../include/spatialite.h" -o -f "$prefix/include/spatialite.h" -o -f "/usr/include/spatialite.h" -o -f "/usr/local/include/spatialite.h"; then - AC_MSG_RESULT(found) -- AC_CHECK_LIB(spatialite,spatialite_init,SPATIALITE_INIT_FOUND=yes,SPATIALITE_INIT_FOUND=no,-lsqlite3) -+ AC_CHECK_LIB(spatialite,spatialite_init,SPATIALITE_INIT_FOUND=yes,SPATIALITE_INIT_FOUND=no,-lsqlite3 -lrttopo -lfreexl) - if test "$SPATIALITE_INIT_FOUND" = "yes"; then - HAVE_SPATIALITE=yes -- SPATIALITE_LIBS="-lspatialite -lsqlite3" -+ SPATIALITE_LIBS="-lspatialite -lsqlite3 -lrttopo -lfreexl" - LIBS="$LIBS $SPATIALITE_LIBS" - HAVE_SQLITE3=yes - fi -@@ -1570,11 +1564,15 @@ dnl --------------------------------------------------------------------------- +@@ -1362,7 +1373,9 @@ dnl Proj depends on it so it must appear before. + dnl --------------------------------------------------------------------------- + + SQLITE3_REQ_VERSION="3.0.0" +-AX_LIB_SQLITE3($SQLITE3_REQ_VERSION) ++AC_CHECK_LIB(sqlite3,sqlite3_open,HAVE_SQLITE3=yes,AC_MSG_ERROR([vcpkg sqlite3 not found]),) ++SQLITE3_CFLAGS= ++SQLITE3_LDFLAGS=-lsqlite3 + + if test "$HAVE_SQLITE3" = "yes"; then + LIBS="$SQLITE3_LDFLAGS $LIBS" +@@ -1570,6 +1583,19 @@ dnl --------------------------------------------------------------------------- AC_ARG_WITH(liblzma,[ --with-liblzma[=ARG] Include liblzma support (ARG=yes/no)],,) if test "$with_liblzma" = "yes" ; then -- AC_CHECK_LIB(lzma,lzma_code,LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,) ++ PKG_CHECK_MODULES([LIBLZMA],[liblzma],[HAVE_LIBLZMA_PC=yes],[HAVE_LIBLZMA_PC=no]) + SAVED_LIBS="$LIBS" -+ LIBS="" -+ AC_SEARCH_LIBS(lzma_code,[lzmad lzma],LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,) ++ LIBS="$LIBLZMA_LIBS" ++ AC_SEARCH_LIBS(lzma_code,[],LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,) ++ if test "$LIBLZMA_SETTING" = "yes" ; then ++ LIBS="$LIBLZMA_LIBS $SAVED_LIBS" ++ elif test "$HAVE_LIBLZMA_PC" = "yes" ; then ++ AC_MSG_ERROR([vcpkg liblzma broken]) ++ else ++ LIBS="$SAVED_LIBS" ++ fi ++ ++elif false; then + AC_CHECK_LIB(lzma,lzma_code,LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,) AC_CHECK_HEADERS(lzma.h) -+ LZMA_LIBS="$LIBS" -+ LIBS="$SAVED_LIBS" - if test "$LIBLZMA_SETTING" = "yes" -a "$ac_cv_header_lzma_h" = "yes" ; then -- LIBS="-llzma $LIBS" -+ LIBS="$LZMA_LIBS $LIBS" - else - LIBLZMA_SETTING=no - fi -@@ -1592,11 +1590,9 @@ dnl --------------------------------------------------------------------------- +@@ -1592,6 +1618,19 @@ dnl --------------------------------------------------------------------------- AC_ARG_WITH(zstd,[ --with-zstd[=ARG] Include zstd support (ARG=yes/no/installation_prefix)],,) if test "$with_zstd" = "" -o "$with_zstd" = "yes" ; then -- AC_CHECK_LIB(zstd,ZSTD_decompressStream,ZSTD_SETTING=yes,ZSTD_SETTING=no,) -+ AC_SEARCH_LIBS(ZSTD_decompressStream,[zstdd zstd],ZSTD_SETTING=yes,ZSTD_SETTING=no,) - -- if test "$ZSTD_SETTING" = "yes" ; then -- LIBS="-lzstd $LIBS" -- else -+ if test "$ZSTD_SETTING" != "yes" ; then - if test "$with_zstd" = "yes" ; then - AC_MSG_ERROR([libzstd not found]) - else -@@ -1820,8 +1816,6 @@ fi - - if test "$CURL_SETTING" = "yes" ; then - -- CURL_INC=`$LIBCURL_CONFIG --cflags` -- CURL_LIB=`$LIBCURL_CONFIG --libs` - m4_foreach_w([frmt],CURL_FORMATS,[ - driver_enabled=m4_join([_],[$INTERNAL_FORMAT],frmt,[ENABLED]) - if test "x$driver_enabled" = "xyes"; then -@@ -1888,7 +1882,7 @@ else - PKG_CHECK_MODULES([PQ],[libpq > 9.1], [HAVE_PG=yes], [HAVE_PG=no]) - - if test "${HAVE_PG}" = "yes" ; then -- PG_LIB="${PQ_LIBS}" -+ PG_LIB="${PQ_LIBS} -lpgcommon -lpgport" - PG_INC="${PQ_CFLAGS}" ++ PKG_CHECK_MODULES([ZSTD],[libzstd],[HAVE_LIBZSTD_PC=yes],[HAVE_LIBZSTD_PC=no]) ++ SAVED_LIBS="$LIBS" ++ LIBS="$ZSTD_LIBS" ++ AC_SEARCH_LIBS(ZSTD_decompressStream,[],ZSTD_SETTING=yes,ZSTD_SETTING=no,) ++ if test "$ZSTD_SETTING" = "yes" ; then ++ LIBS="$ZSTD_LIBS $SAVED_LIBS" ++ elif test "$HAVE_LIBZSTD_PC" = "yes" ; then ++ AC_MSG_ERROR([vcpkg libzstd broken]) ++ else ++ LIBS="$SAVED_LIBS" ++ fi ++ ++elif false; then + AC_CHECK_LIB(zstd,ZSTD_decompressStream,ZSTD_SETTING=yes,ZSTD_SETTING=no,) + + if test "$ZSTD_SETTING" = "yes" ; then +@@ -1893,6 +1932,12 @@ else SAVED_LIBS="${LIBS}" LIBS="${PG_LIB}" -@@ -4287,13 +4281,13 @@ if test "x$with_xml2" = "xyes" -o "x$with_xml2" = "x" ; then + AC_CHECK_LIB(pq,PQconnectdb,HAVE_PG=yes,HAVE_PG=no) ++ if test "${HAVE_PG}" = "no" ; then ++ unset ac_cv_lib_pq_PQconnectdb ++ PG_LIB="${PG_LIB} -lpgcommon -lpgport" ++ LIBS="${PG_LIB} ${SAVED_LIBS}" ++ AC_CHECK_LIB(pq,PQconnectdb,HAVE_PG=yes,HAVE_PG=no,[-lpgcommon -lpgport]) ++ fi + LIBS="${SAVED_LIBS}" + if test "${HAVE_PG}" = "yes" ; then + LIBS="${PG_LIB} ${LIBS}" +@@ -2253,6 +2298,15 @@ AC_ARG_WITH(geotiff,[ --with-geotiff=ARG Libgeotiff library to use (ARG=inte + + if test "$with_geotiff" = "yes" -o "$with_geotiff" = "" ; then + ++ AC_CHECK_LIB(geotiff,GTIFAttachPROJContext,GEOTIFF_SETTING=external,GEOTIFF_SETTING=internal) ++ if test $GEOTIFF_SETTING = "external" ; then ++ LIBS="-lgeotiff $LIBS" ++ else ++ AC_MSG_ERROR([vcpkg geotiff broken]) ++ fi ++ ++elif false; then ++ + if test "$TIFF_SETTING" = "internal" ; then + GEOTIFF_SETTING=internal + else +@@ -3002,7 +3056,7 @@ elif test "$with_hdf5" = "yes" -o "$with_hdf5" = "" ; then + # Test that the package found is for the right architecture + saved_LIBS="$LIBS" + LIBS="$HDF5_LIBS" +- AC_CHECK_LIB(hdf5,H5Fopen, [HAVE_HDF5=yes], [HAVE_HDF5=no]) ++ AC_SEARCH_LIBS(H5Fopen,[],[HAVE_HDF5=yes],[HAVE_HDF5=no],) + LIBS="$saved_LIBS" + + if test "$HAVE_HDF5" = "yes"; then +@@ -3132,6 +3186,24 @@ if test "$with_netcdf" = "no" ; then + + echo "netCDF support disabled." + ++elif true ; then ++ ++ PKG_CHECK_MODULES([NETCDF],[netcdf],[HAVE_NETCDF_PC=yes],[HAVE_NETCDF_PC=no]) ++ SAVED_LIBS="$LIBS" ++ LIBS="$NETCDF_LIBS" ++ AC_SEARCH_LIBS(nc_open,[],NETCDF_SETTING=yes,NETCDF_SETTING=no,) ++ if test "$NETCDF_SETTING" = "yes" ; then ++ LIBS="$NETCDF_LIBS $SAVED_LIBS" ++ EXTRA_INCLUDES="$NETCDF_CFLAGS $EXTRA_INCLUDES" ++ PKG_CHECK_VAR([NETCDF_ROOT],[netcdf],[prefix],,) ++ PKG_CHECK_VAR([NETCDF_INCLUDEDIR],[netcdf],[includedir],,) ++ NETCDF_NCCONFIG= ++ elif test "$HAVE_NETCDF_PC" = "yes" ; then ++ AC_MSG_ERROR([vcpkg netcdf-c broken]) ++ else ++ LIBS="$SAVED_LIBS" ++ fi ++ + else + + dnl find nc-config location +@@ -3352,6 +3424,21 @@ if test "$with_openjpeg" = "no" ; then + + AC_MSG_NOTICE([OpenJPEG (JPEG2000) support disabled.]) + ++elif true ; then ++ ++ PKG_CHECK_MODULES([OPENJPEG],[libopenjp2 >= 2.1.0],[HAVE_LIBOPENJP2_PC=yes],[HAVE_LIBOPENJP2_PC=no]) ++ SAVED_LIBS="$LIBS" ++ LIBS="$OPENJPEG_LIBS" ++ AC_SEARCH_LIBS(opj_setup_decoder,[],HAVE_OPENJPEG=yes,HAVE_OPENJPEG=no,) ++ if test "$HAVE_OPENJPEG" = "yes" ; then ++ EXTRA_INCLUDES="$OPENJPEG_CFLAGS $EXTRA_INCLUDES" ++ LIBS="$OPENJPEG_LIBS $SAVED_LIBS" ++ elif test "$HAVE_LIBOPENJP2_PC" = "yes" ; then ++ AC_MSG_ERROR([vcpkg libopenjpeg broken]) ++ else ++ LIBS="$SAVED_LIBS" ++ fi ++ + else + + PKG_PROG_PKG_CONFIG([0.21]) +@@ -4043,7 +4130,9 @@ dnl --------------------------------------------------------------------------- + + dnl Expat 1.95.0 released in 2000-09-28 + EXPAT_REQ_VERSION="1.95.0" +-AX_LIB_EXPAT($EXPAT_REQ_VERSION) ++AC_CHECK_LIB(expat,XML_ParserCreate,HAVE_EXPAT=yes,AC_MSG_ERROR([vcpkg expat not found])) ++EXPAT_LDFLAGS="-lexpat" ++EXPAT_INCLUDE="" + + if test "$HAVE_EXPAT" = "yes"; then + LIBS="$EXPAT_LDFLAGS $LIBS" +@@ -4066,7 +4155,13 @@ dnl Check for Google libkml support. + dnl --------------------------------------------------------------------------- + + LIBKML_REQ_VERSION="1.3.0" ++if test "x${with_libkml}" = "xno"; then ++ echo "libkml support disabled." ++ HAVE_LIBKML="no" ++ LIBKML_CFLAGS= ++else + AX_LIB_LIBKML($LIBKML_REQ_VERSION) ++fi + + if test "$HAVE_LIBKML" = "yes"; then + LIBS="$LIBKML_LDFLAGS $LIBS" +@@ -4244,8 +4339,8 @@ else + dnl Add curl to LIBS; it might be local to DODS or generally installed + if test -x $DODS_BIN/curl-config; then + LIBS="$LIBS `$DODS_BIN/curl-config --libs`" +- elif which curl-config > /dev/null 2>&1; then +- LIBS="$LIBS `curl-config --libs`" ++ elif test "$CURL_SETTING" = "yes"; then ++ LIBS="$LIBS $CURL_LIB" + else + AC_MSG_ERROR([You gave a dods root, but I can't find curl!]) + fi +@@ -4287,7 +4382,7 @@ if test "x$with_xml2" = "xyes" -o "x$with_xml2" = "x" ; then if test "${HAVE_LIBXML2}" = "yes"; then SAVED_LIBS="${LIBS}" LIBS="${LIBXML2_LIBS}" - AC_CHECK_LIB(xml2,xmlParseDoc,HAVE_LIBXML2=yes,HAVE_LIBXML2=no) -+ AC_CHECK_LIB(xml2,xmlParseDoc,HAVE_LIBXML2=yes,HAVE_LIBXML2=no,-lz -lm $LZMA_LIBS) ++ AC_SEARCH_LIBS(xmlParseDoc,[],HAVE_LIBXML2=yes,HAVE_LIBXML2=no,) LIBS="${SAVED_LIBS}" fi - if test "${HAVE_LIBXML2}" = "yes"; then - LIBXML2_INC="${LIBXML2_CFLAGS}" -- LIBXML2_LIB="${LIBXML2_LIBS}" -+ LIBXML2_LIB="${LIBXML2_LIBS} -lz -lm $LZMA_LIBS" - else - if test "x$with_xml2" = "xyes"; then - AC_MSG_ERROR([--with-xml2 was requested, but libxml2 is not available]) -@@ -4817,8 +4811,7 @@ if test "$with_libjson_c" = "external" -o "$with_libjson_c" = "" -o "$with_libjs +@@ -4536,6 +4631,22 @@ WEBP_SETTING=no + + if test "$with_webp" = "yes" -o "$with_webp" = "" ; then + ++ PKG_CHECK_MODULES([WEBP],[libwebp],[HAVE_LIBWEBP_PC=yes],[HAVE_LIBWEBP_PC=no]) ++ SAVED_LIBS="$LIBS" ++ LIBS="$WEBP_LIBS" ++ AC_SEARCH_LIBS(WebPDecodeRGB,[],WEBP_SETTING=yes,WEBP_SETTING=no,) ++ ++ if test "$WEBP_SETTING" = "yes" ; then ++ LIBS="$WEBP_LIBS $SAVED_LIBS" ++ elif test "$HAVE_LIBWEBP_PC" = "yes" ; then ++ AC_MSG_ERROR([vcpkg libwebp broken]) ++ else ++ echo "libwebp not found - WEBP support disabled" ++ LIBS="$SAVED_LIBS" ++ fi ++ ++elif false ; then ++ + AC_CHECK_LIB(webp,WebPDecodeRGB,WEBP_SETTING=yes,WEBP_SETTING=no,) + + if test "$WEBP_SETTING" = "yes" ; then +@@ -4567,7 +4678,7 @@ dnl --------------------------------------------------------------------------- + dnl Check if geos library is available. + dnl --------------------------------------------------------------------------- + +-GEOS_INIT(3.1.0) ++PKG_CHECK_MODULES(GEOS,geos >= 3.1.0,HAVE_GEOS=yes,AC_MSG_ERROR([vcpkg geos not found])) + HAVE_GEOS_RESULT="no" + if test "${HAVE_GEOS}" = "yes" ; then + +@@ -4812,6 +4923,16 @@ dnl --------------------------------------------------------------------------- + + AC_ARG_WITH(libjson-c,[ --with-libjson-c[=ARG] Include libjson-c support (ARG=internal or libjson-c directory)],,) + ++PKG_CHECK_MODULES([JSONC],[json-c],[HAVE_JSONC=yes],[HAVE_JSONC=no]) ++SAVED_LIBS="$LIBS" ++LIBS="$JSONC_LIBS" ++AC_SEARCH_LIBS(json_object_set_serializer,[],LIBJSONC_SETTING=external,LIBJSONC_SETTING=,) ++if test "$LIBJSONC_SETTING" = "external" ; then ++ LIBS="$JSONC_LIBS $SAVED_LIBS" ++ JSON_INCLUDE="$JSONC_CFLAGS" ++else ++ LIBS="$SAVED_LIBS" ++ + if test "$with_libjson_c" = "external" -o "$with_libjson_c" = "" -o "$with_libjson_c" = "yes" ; then + AC_CHECK_LIB(json-c,json_object_set_serializer,LIBJSONC_SETTING=external,LIBJSONC_SETTING=internal,) elif test "$with_libjson_c" = "internal" ; then - LIBJSONC_SETTING=internal - elif test "$with_libjson_c" != "no"; then -- LIBS="-L$with_libjson_c/lib $LIBS" -- AC_CHECK_LIB(json-c,json_object_set_serializer,LIBJSONC_SETTING=external,LIBJSONC_SETTING=internal,-L$with_libjson_c/lib) -+ AC_CHECK_LIB(json-c,json_object_set_serializer,LIBJSONC_SETTING=external,LIBJSONC_SETTING=internal,) - else - AC_MSG_ERROR([libjson-c (internal or external) is required]) +@@ -4840,6 +4961,8 @@ else + AC_MSG_RESULT([using internal libjson-c code]) fi - -diff --git a/m4/ax_lib_sqlite3.m4 b/m4/ax_lib_sqlite3.m4 -index e53a4a967..440e2c5ed 100644 ---- a/m4/ax_lib_sqlite3.m4 -+++ b/m4/ax_lib_sqlite3.m4 -@@ -76,23 +76,22 @@ AC_DEFUN([AX_LIB_SQLITE3], - - unset ac_cv_lib_sqlite3_sqlite3_open - saved_LIBS="$LIBS" -- LIBS="" - AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path/lib) - LIBS="$saved_LIBS" - if test "$LIB_SQLITE3_FOUND" = "yes"; then - ac_sqlite3_ldflags="-L$ac_sqlite3_path/lib" - fi - -+ ac_sqlite3_include_path="$ac_sqlite3_path/include" - ac_sqlite3_cppflags="-I$ac_sqlite3_path/include" - else -- for ac_sqlite3_path_tmp in /usr /usr/local /opt ; do -- if test -f "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header" \ -- && test -r "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header"; then -+ for ac_sqlite3_path_tmp in $prefix /usr /usr/local /opt; do -+ if (test -f "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header" \ -+ && test -r "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header") || (test -f "$ac_sqlite3_path_tmp/../include/$ac_sqlite3_header" && test -r "$ac_sqlite3_path_tmp/../include/$ac_sqlite3_header"); then - ac_sqlite3_path=$ac_sqlite3_path_tmp - - unset ac_cv_lib_sqlite3_sqlite3_open - saved_LIBS="$LIBS" -- LIBS="" - AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,) - LIBS="$saved_LIBS" - if test "$LIB_SQLITE3_FOUND" = "yes"; then -@@ -100,7 +99,6 @@ AC_DEFUN([AX_LIB_SQLITE3], - else - unset ac_cv_lib_sqlite3_sqlite3_open - saved_LIBS="$LIBS" -- LIBS="" - AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path_tmp/lib) - LIBS="$saved_LIBS" - if test "$LIB_SQLITE3_FOUND" = "yes"; then -@@ -108,7 +106,12 @@ AC_DEFUN([AX_LIB_SQLITE3], - fi - fi - -- ac_sqlite3_cppflags="-I$ac_sqlite3_path_tmp/include" -+ if test -f "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header" && test -r "$ac_sqlite3_path_tmp/include/$ac_sqlite3_header"; then -+ ac_sqlite3_include_path="$ac_sqlite3_path_tmp/include" -+ else -+ ac_sqlite3_include_path="$ac_sqlite3_path_tmp/../include" -+ fi -+ ac_sqlite3_cppflags="-I$ac_sqlite3_include_path" - break; - fi - done -@@ -122,7 +125,6 @@ AC_DEFUN([AX_LIB_SQLITE3], - AC_MSG_CHECKING([for SQLite3 library >= $sqlite3_version_req]) - - if test "x$WANT_SQLITE3" = "xyes"; then -- - ac_sqlite3_ldflags="$ac_sqlite3_ldflags -lsqlite3" - - saved_CPPFLAGS="$CPPFLAGS" -@@ -161,7 +163,7 @@ AC_DEFUN([AX_LIB_SQLITE3], - SQLITE3_CFLAGS="$ac_sqlite3_cppflags" - SQLITE3_LDFLAGS="$ac_sqlite3_ldflags" - -- ac_sqlite3_header_path="$ac_sqlite3_path/include/$ac_sqlite3_header" -+ ac_sqlite3_header_path="$ac_sqlite3_include_path/$ac_sqlite3_header" - - dnl Retrieve SQLite release version - if test "x$ac_sqlite3_header_path" != "x"; then -@@ -184,5 +186,6 @@ AC_DEFUN([AX_LIB_SQLITE3], - else - AC_MSG_RESULT([disabled]) - fi -+ unset ac_sqlite3_include_path - ]) - - -diff --git a/m4/geos.m4 b/m4/geos.m4 -index a410673b4..c16e1f33a 100644 ---- a/m4/geos.m4 -+++ b/m4/geos.m4 -@@ -60,6 +60,7 @@ AC_DEFUN([GEOS_INIT],[ - - AC_PATH_PROG(GEOS_CONFIG, geos-config, no) - ac_geos_config_auto=yes -+ HAVE_GEOS="yes" - else ++fi # json-c.pc ++ + AC_SUBST(LIBJSONC_SETTING,$LIBJSONC_SETTING) + AC_SUBST(JSON_INCLUDE,$JSON_INCLUDE) diff --git a/ports/gdal/0006-Fix-mingw-dllexport.patch b/ports/gdal/0006-Fix-mingw-dllexport.patch new file mode 100644 index 000000000..7091f921a --- /dev/null +++ b/ports/gdal/0006-Fix-mingw-dllexport.patch @@ -0,0 +1,13 @@ +diff --git a/port/cpl_port.h b/port/cpl_port.h +index 9e3ebbb..130af04 100644 +--- a/port/cpl_port.h ++++ b/port/cpl_port.h +@@ -343,7 +343,7 @@ typedef unsigned int GUIntptr_t; + #endif + + #ifndef CPL_DLL +-#if defined(_MSC_VER) && !defined(CPL_DISABLE_DLL) ++#if defined(WIN32) && !defined(CPL_DISABLE_DLL) + # ifdef GDAL_COMPILATION + # define CPL_DLL __declspec(dllexport) + # else diff --git a/ports/gdal/portfile.cmake b/ports/gdal/portfile.cmake index f2a102a20..fc46f224d 100644 --- a/ports/gdal/portfile.cmake +++ b/ports/gdal/portfile.cmake @@ -1,12 +1,8 @@ -include(${CMAKE_CURRENT_LIST_DIR}/dependency_win.cmake) -#include(${CMAKE_CURRENT_LIST_DIR}/dependency_unix.cmake) - vcpkg_fail_port_install(ON_ARCH "arm") # NOTE: update the version and checksum for new GDAL release set(GDAL_VERSION_STR "3.2.2") set(GDAL_VERSION_PKG "322") -set(GDAL_VERSION_LIB "204") set(GDAL_PACKAGE_SUM "ce319e06c78bd076228b3710c127cdbd37c7d6fb23966b47df7287eaffe86a05d4ddcc78494c8bfcaf4db98a71f2ed50a01fb3ca2fe1c10cf0d2e812683c8e53") vcpkg_download_distfile(ARCHIVE @@ -15,51 +11,61 @@ vcpkg_download_distfile(ARCHIVE SHA512 ${GDAL_PACKAGE_SUM} ) -set(GDAL_PATCHES 0001-Fix-debug-crt-flags.patch 0002-Fix-build.patch 0005-Fix-configure.patch) -if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") +set(GDAL_PATCHES + 0001-Fix-debug-crt-flags.patch + 0002-Fix-build.patch + 0004-Fix-cfitsio.patch + 0005-Fix-configure.patch +) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") list(APPEND GDAL_PATCHES 0003-Fix-static-build.patch) +else() + list(APPEND GDAL_PATCHES 0006-Fix-mingw-dllexport.patch) endif() -list(APPEND GDAL_PATCHES 0004-Fix-cfitsio.patch) vcpkg_extract_source_archive_ex( - ARCHIVE ${ARCHIVE} + ARCHIVE "${ARCHIVE}" OUT_SOURCE_PATH SOURCE_PATH PATCHES ${GDAL_PATCHES} ) -if (VCPKG_TARGET_IS_WINDOWS) +if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) set(NATIVE_DATA_DIR "${CURRENT_PACKAGES_DIR}/share/gdal") set(NATIVE_HTML_DIR "${CURRENT_PACKAGES_DIR}/share/gdal/html") + include("${CMAKE_CURRENT_LIST_DIR}/dependency_win.cmake") find_dependency_win() + set(NMAKE_OPTIONS "") + set(NMAKE_OPTIONS_REL "") + set(NMAKE_OPTIONS_DBG "") + if("mysql-libmysql" IN_LIST FEATURES OR "mysql-libmariadb" IN_LIST FEATURES) - list(APPEND NMAKE_OPTIONS MYSQL_INC_DIR=${MYSQL_INCLUDE_DIR}) - list(APPEND NMAKE_OPTIONS_REL MYSQL_LIB=${MYSQL_LIBRARY_REL}) - list(APPEND NMAKE_OPTIONS_DBG MYSQL_LIB=${MYSQL_LIBRARY_DBG}) + list(APPEND NMAKE_OPTIONS "MYSQL_INC_DIR=${MYSQL_INCLUDE_DIR}") + list(APPEND NMAKE_OPTIONS_REL "MYSQL_LIB=${MYSQL_LIBRARY_REL}") + list(APPEND NMAKE_OPTIONS_DBG "MYSQL_LIB=${MYSQL_LIBRARY_DBG}") endif() list(APPEND NMAKE_OPTIONS - # VERSION=${GDAL_VERSION_LIB} - DATADIR=${NATIVE_DATA_DIR} - HTMLDIR=${NATIVE_HTML_DIR} - GEOS_DIR=${GEOS_INCLUDE_DIR} + "DATADIR=${NATIVE_DATA_DIR}" + "HTMLDIR=${NATIVE_HTML_DIR}" + "GEOS_DIR=${GEOS_INCLUDE_DIR}" "GEOS_CFLAGS=-I${GEOS_INCLUDE_DIR} -DHAVE_GEOS" - PROJ_INCLUDE=-I${PROJ_INCLUDE_DIR} - EXPAT_DIR=${EXPAT_INCLUDE_DIR} - EXPAT_INCLUDE=-I${EXPAT_INCLUDE_DIR} - CURL_INC=-I${CURL_INCLUDE_DIR} + "PROJ_INCLUDE=-I${PROJ_INCLUDE_DIR}" + "EXPAT_DIR=${EXPAT_INCLUDE_DIR}" + "EXPAT_INCLUDE=-I${EXPAT_INCLUDE_DIR}" + "CURL_INC=-I${CURL_INCLUDE_DIR}" "SQLITE_INC=-I${SQLITE_INCLUDE_DIR} ${HAVE_SPATIALITE}" - PG_INC_DIR=${PGSQL_INCLUDE_DIR} + "PG_INC_DIR=${PGSQL_INCLUDE_DIR}" OPENJPEG_ENABLED=YES - OPENJPEG_CFLAGS=-I${OPENJPEG_INCLUDE_DIR} + "OPENJPEG_CFLAGS=-I${OPENJPEG_INCLUDE_DIR}" OPENJPEG_VERSION=20100 WEBP_ENABLED=YES - WEBP_CFLAGS=-I${WEBP_INCLUDE_DIR} - LIBXML2_INC=-I${XML2_INCLUDE_DIR} + "WEBP_CFLAGS=-I${WEBP_INCLUDE_DIR}" + "LIBXML2_INC=-I${XML2_INCLUDE_DIR}" PNG_EXTERNAL_LIB=1 - PNGDIR=${PNG_INCLUDE_DIR} - ZLIB_INC=-I${ZLIB_INCLUDE_DIR} + "PNGDIR=${PNG_INCLUDE_DIR}" + "ZLIB_INC=-I${ZLIB_INCLUDE_DIR}" ZLIB_EXTERNAL_LIB=1 ACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1 MSVC_VER=1900 @@ -69,7 +75,7 @@ if (VCPKG_TARGET_IS_WINDOWS) list(APPEND NMAKE_OPTIONS WIN64=YES) endif() - if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") list(APPEND NMAKE_OPTIONS CURL_CFLAGS=-DCURL_STATICLIB) list(APPEND NMAKE_OPTIONS DLLBUILD=0) list(APPEND NMAKE_OPTIONS "PROJ_FLAGS=-DPROJ_STATIC -DPROJ_VERSION=5") @@ -79,7 +85,7 @@ if (VCPKG_TARGET_IS_WINDOWS) list(APPEND NMAKE_OPTIONS DLLBUILD=1) endif() - if (VCPKG_CRT_LINKAGE STREQUAL static) + if (VCPKG_CRT_LINKAGE STREQUAL "static") set(LINKAGE_FLAGS "/MT") else() set(LINKAGE_FLAGS "/MD") @@ -87,42 +93,42 @@ if (VCPKG_TARGET_IS_WINDOWS) list(APPEND NMAKE_OPTIONS_REL ${NMAKE_OPTIONS} - GDAL_HOME=${CURRENT_PACKAGES_DIR} - CXX_CRT_FLAGS=${LINKAGE_FLAGS} - PROJ_LIBRARY=${PROJ_LIBRARY_REL} - PNG_LIB=${PNG_LIBRARY_REL} + "GDAL_HOME=${CURRENT_PACKAGES_DIR}" + "CXX_CRT_FLAGS=${LINKAGE_FLAGS}" + "PROJ_LIBRARY=${PROJ_LIBRARY_REL}" + "PNG_LIB=${PNG_LIBRARY_REL}" "GEOS_LIB=${GEOS_LIBRARY_REL}" - EXPAT_LIB=${EXPAT_LIBRARY_REL} + "EXPAT_LIB=${EXPAT_LIBRARY_REL}" "CURL_LIB=${CURL_LIBRARY_REL} wsock32.lib wldap32.lib winmm.lib" "SQLITE_LIB=${SQLITE_LIBRARY_REL} ${SPATIALITE_LIBRARY_REL}" - OPENJPEG_LIB=${OPENJPEG_LIBRARY_REL} - WEBP_LIBS=${WEBP_LIBRARY_REL} + "OPENJPEG_LIB=${OPENJPEG_LIBRARY_REL}" + "WEBP_LIBS=${WEBP_LIBRARY_REL}" "LIBXML2_LIB=${XML2_LIBRARY_REL} ${ICONV_LIBRARY_REL} ${LZMA_LIBRARY_REL}" - ZLIB_LIB=${ZLIB_LIBRARY_REL} + "ZLIB_LIB=${ZLIB_LIBRARY_REL}" "PG_LIB=${PGSQL_LIBRARY_REL} Secur32.lib Shell32.lib Advapi32.lib Crypt32.lib Gdi32.lib ${OPENSSL_LIBRARY_REL}" ) list(APPEND NMAKE_OPTIONS_DBG ${NMAKE_OPTIONS} - GDAL_HOME=${CURRENT_PACKAGES_DIR}/debug - CXX_CRT_FLAGS="${LINKAGE_FLAGS}d" - PROJ_LIBRARY=${PROJ_LIBRARY_DBG} - PNG_LIB=${PNG_LIBRARY_DBG} + "GDAL_HOME=${CURRENT_PACKAGES_DIR}/debug" + "CXX_CRT_FLAGS=${LINKAGE_FLAGS}d" + "PROJ_LIBRARY=${PROJ_LIBRARY_DBG}" + "PNG_LIB=${PNG_LIBRARY_DBG}" "GEOS_LIB=${GEOS_LIBRARY_DBG}" - EXPAT_LIB=${EXPAT_LIBRARY_DBG} + "EXPAT_LIB=${EXPAT_LIBRARY_DBG}" "CURL_LIB=${CURL_LIBRARY_DBG} wsock32.lib wldap32.lib winmm.lib" "SQLITE_LIB=${SQLITE_LIBRARY_DBG} ${SPATIALITE_LIBRARY_DBG}" - OPENJPEG_LIB=${OPENJPEG_LIBRARY_DBG} - WEBP_LIBS=${WEBP_LIBRARY_DBG} + "OPENJPEG_LIB=${OPENJPEG_LIBRARY_DBG}" + "WEBP_LIBS=${WEBP_LIBRARY_DBG}" "LIBXML2_LIB=${XML2_LIBRARY_DBG} ${ICONV_LIBRARY_DBG} ${LZMA_LIBRARY_DBG}" - ZLIB_LIB=${ZLIB_LIBRARY_DBG} + "ZLIB_LIB=${ZLIB_LIBRARY_DBG}" "PG_LIB=${PGSQL_LIBRARY_DBG} Secur32.lib Shell32.lib Advapi32.lib Crypt32.lib Gdi32.lib ${OPENSSL_LIBRARY_DBG}" DEBUG=1 ) # Begin build process vcpkg_install_nmake( - SOURCE_PATH ${SOURCE_PATH} + SOURCE_PATH "${SOURCE_PATH}" TARGET devinstall OPTIONS_RELEASE "${NMAKE_OPTIONS_REL}" @@ -131,11 +137,11 @@ if (VCPKG_TARGET_IS_WINDOWS) ) if(NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/gdal/html) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/gdal/html") endif() - if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - list(APPEND GDAL_EXES + if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(GDAL_EXES gdal_contour gdal_create gdal_grid @@ -166,81 +172,193 @@ if (VCPKG_TARGET_IS_WINDOWS) ) vcpkg_copy_tools(TOOL_NAMES ${GDAL_EXES} AUTO_CLEAN) else() - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") endif() - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/share/gdal/html) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/share/gdal/html") vcpkg_copy_pdbs() if(NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/gdal204.pdb) + file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/gdal204.pdb") endif() else() # See https://github.com/microsoft/vcpkg/issues/16990 - vcpkg_execute_required_process( - COMMAND touch config.rpath - WORKING_DIRECTORY ${SOURCE_PATH} - LOGNAME touch-${TARGET_TRIPLET} - ) + file(TOUCH "${SOURCE_PATH}/config.rpath") - if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - set(BUILD_DYNAMIC yes) - set(BUILD_STATIC no) - else() - set(BUILD_DYNAMIC no) - set(BUILD_STATIC yes) + set(CONF_OPTS + --with-hide-internal-symbols=yes + --with-perl=no + --with-python=no + --with-java=no + ) + set(CONF_CHECKS "") + function(add_config option check) + list(APPEND CONF_OPTS "${option}") + set(CONF_OPTS "${CONF_OPTS}" PARENT_SCOPE) + list(APPEND CONF_CHECKS "${check}") + set(CONF_CHECKS "${CONF_CHECKS}" PARENT_SCOPE) + endfunction() + # parameters in the same order as the dependencies in vcpkg.json + add_config("--with-cfitsio=yes" "CFITSIO support: external") + add_config("--with-curl=yes" "cURL support .wms/wcs/....:yes") + add_config("--with-expat=yes" "Expat support: yes") + add_config("--with-geos=yes" "GEOS support: yes") + add_config("--with-gif=yes" "LIBGIF support: external") + add_config("--with-hdf5=yes" "HDF5 support: yes") + add_config("--with-libjson=yes" "checking for JSONC... yes") + add_config("--with-geotiff=yes" "LIBGEOTIFF support: external") + add_config("--with-jpeg=yes" "LIBJPEG support: external") + add_config("--with-liblzma=yes" "LIBLZMA support: yes") + add_config("--with-png=yes" "LIBPNG support: external") + add_config("--with-pg=yes" "PostgreSQL support: yes") + add_config("--with-webp=yes" "WebP support: yes") + add_config("--with-xml2=yes" "libxml2 support: yes") + add_config("--with-netcdf=yes" "NetCDF support: yes") + add_config("--with-openjpeg=yes" "OpenJPEG support: yes") + add_config("--with-proj=yes" "PROJ >= 6: yes") + add_config("--with-sqlite3=yes" "SQLite support: yes") + add_config("--with-libtiff=yes" "LIBTIFF support: external") + add_config("--with-libz=yes" "LIBZ support: external") + add_config("--with-zstd=yes" "ZSTD support: yes") + + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + list(APPEND CONF_OPTS --without-libtool --without-ld-shared) endif() - set(CONF_OPTS --enable-shared=${BUILD_DYNAMIC} --enable-static=${BUILD_STATIC}) - list(APPEND CONF_OPTS --with-proj=yes --with-libjson-c=${CURRENT_INSTALLED_DIR}) - list(APPEND CONF_OPTS --with-libtiff=yes --with-geotiff=yes) - list(APPEND CONF_OPTS --with-pg=yes --with-liblzma=yes) + if("system-libraries" IN_LIST FEATURES) + set(DISABLE_SYSTEM_LIBRARIES OFF) + else() + set(DISABLE_SYSTEM_LIBRARIES ON) + endif() if ("libspatialite" IN_LIST FEATURES) - list(APPEND CONF_OPTS --with-spatialite=yes) - else() - list(APPEND CONF_OPTS --with-spatialite=no) + add_config("--with-spatialite=yes" "SpatiaLite support: yes") + elseif(DISABLE_SYSTEM_LIBRARIES) + add_config("--with-spatialite=no" "SpatiaLite support: no") endif() - if(VCPKG_TARGET_IS_LINUX) - set(DEPENDLIBS "-lstdc++") - else() - set(DEPENDLIBS "-lc++ -liconv -llber -lldap -framework CoreFoundation -framework Security") + if ("mysql-libmariadb" IN_LIST FEATURES) + add_config("--with-mysql=yes" "MySQL support: yes") + elseif(DISABLE_SYSTEM_LIBRARIES) + add_config("--with-mysql=no" "MySQL support: no") endif() - list(APPEND OPTIONS_RELEASE - "LIBS=-pthread ${DEPENDLIBS} -lssl -lcrypto -lgeos_c -lgeos -llzma -lszip" - ) - list(APPEND OPTIONS_DEBUG - "LIBS=-pthread ${DEPENDLIBS} -lssl -lcrypto -lgeos_cd -lgeosd -llzmad -lszip_debug" - ) + if(DISABLE_SYSTEM_LIBRARIES) + list(APPEND CONF_OPTS + # Too much: --disable-all-optional-drivers + # alphabetical order + --with-armadillo=no + --with-charls=no + --with-crypto=no + --with-cryptopp=no + --with-dds=no + --with-dods-root=no + --with-ecw=no + --with-epsilon=no + --with-exr=no + --with-fgdb=no + --with-fme=no + --with-freexl=no + --with-grass=no + --with-gta=no + --with-hdf4=no + --with-hdfs=no + --with-heif=no + --with-idb=no + --with-ingres=no + --with-jasper=no + --with-jp2lura=no + --with-kakadu=no + --with-kea=no + --with-libdeflate=no + --with-libgrass=no + --with-libkml=no + --with-mdb=no + --with-mrsid=no + --with-mrsid_lidar=no + --with-msg=no + --with-mongocxx=no + --with-mongocxxv3=no + --with-oci=no + --with-odbc=no + --with-ogdi=no + --with-opencl=no + --with-pcidsk=no + --with-pcraster=no + --with-pcre=no + --with-pdfium=no + --with-podofo=no + --with-poppler=no + --with-qhull=no + --with-rasdaman=no + --with-rasterlite2=no + --with-rdb=no + --with-sfcgal=no + --with-sosi=no + --with-teigha=no + --with-tiledb=no + --with-xerces=no + ) + endif() + + # proj needs a C++ runtime library + if(VCPKG_TARGET_IS_OSX) + list(APPEND CONF_OPTS "--with-proj-extra-lib-for-test=-lc++") + else() + list(APPEND CONF_OPTS "--with-proj-extra-lib-for-test=-lstdc++") + endif() vcpkg_configure_make( - SOURCE_PATH ${SOURCE_PATH} + SOURCE_PATH "${SOURCE_PATH}" AUTOCONFIG COPY_SOURCE OPTIONS ${CONF_OPTS} - "GEOS_VERSION=3.9.0" - OPTIONS_RELEASE - ${OPTIONS_RELEASE} OPTIONS_DEBUG --enable-debug - ${OPTIONS_DEBUG} ) + # Verify configuration results (tightly coupled to vcpkg_configure_make) + function(check_config logfile) + set(failed_checks "") + file(READ "${logfile}" log) + foreach(check IN LISTS CONF_CHECKS) + if(NOT log MATCHES "${check}") + string(APPEND failed_checks "\n ${check}") + endif() + endforeach() + if(failed_checks) + get_filename_component(file "${logfile}" NAME_WE) + message(FATAL_ERROR "${file}: Configuration failed for ${failed_checks}") + endif() + endfunction() + foreach(suffix IN ITEMS rel dbg) + set(log "${CURRENT_BUILDTREES_DIR}/config-${TARGET_TRIPLET}-${suffix}-out.log") + if(EXISTS "${log}") + check_config("${log}") + endif() + endforeach() + vcpkg_install_make(MAKEFILE GNUmakefile) file(REMOVE_RECURSE - ${CURRENT_PACKAGES_DIR}/lib/gdalplugins - ${CURRENT_PACKAGES_DIR}/debug/lib/gdalplugins - ${CURRENT_PACKAGES_DIR}/debug/share + "${CURRENT_PACKAGES_DIR}/lib/gdalplugins" + "${CURRENT_PACKAGES_DIR}/debug/lib/gdalplugins" + "${CURRENT_PACKAGES_DIR}/debug/share" ) + + vcpkg_fixup_pkgconfig() + set(pc_file_debug "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gdal.pc") + if(EXISTS "${pc_file_debug}") + vcpkg_replace_string("${pc_file_debug}" "${prefix}/../../include" "${prefix}/../include") + vcpkg_replace_string("${pc_file_debug}" "${exec_prefix}/include" "${prefix}/../include") + endif() + endif() -file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) -configure_file(${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake ${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake @ONLY) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) # Handle copyright -file(INSTALL ${SOURCE_PATH}/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(INSTALL "${SOURCE_PATH}/LICENSE.TXT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/gdal/vcpkg-cmake-wrapper.cmake b/ports/gdal/vcpkg-cmake-wrapper.cmake index 30c3b5a66..1448956d1 100644 --- a/ports/gdal/vcpkg-cmake-wrapper.cmake +++ b/ports/gdal/vcpkg-cmake-wrapper.cmake @@ -1,12 +1,98 @@ -include(FindPackageHandleStandardArgs)
include(SelectLibraryConfigurations)
-find_path(GDAL_INCLUDE_DIR NAMES gdal.h HINTS ${CURRENT_INSTALLED_DIR})
+find_path(GDAL_INCLUDE_DIR
+ NAMES gdal.h
+ PATHS "${CMAKE_CURRENT_LIST_DIR}/../../include"
+ NO_DEFAULT_PATH
+)
+find_library(GDAL_LIBRARY_DEBUG
+ NAMES gdal_d gdal_i_d gdal
+ NAMES_PER_DIR
+ PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib"
+ NO_DEFAULT_PATH
+)
+find_library(GDAL_LIBRARY_RELEASE
+ NAMES gdal_i gdal
+ NAMES_PER_DIR
+ PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib"
+ NO_DEFAULT_PATH
+)
+select_library_configurations(GDAL)
-find_library(GDAL_LIBRARY_DEBUG NAMES gdal_d gdal_i_d gdal NAMES_PER_DIR PATH_SUFFIXES lib PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" NO_DEFAULT_PATH REQUIRED)
-find_library(GDAL_LIBRARY_RELEASE NAMES gdal_i gdal NAMES_PER_DIR PATH_SUFFIXES lib PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" NO_DEFAULT_PATH REQUIRED)
+if(NOT GDAL_INCLUDE_DIR OR NOT GDAL_LIBRARY)
+ message(FATAL_ERROR "Installation of vcpkg port gdal is broken.")
+endif()
-select_library_configurations(GDAL)
+set(FindGDAL_SKIP_GDAL_CONFIG TRUE)
+
+_find_package(${ARGS})
-set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
-set(GDAL_LIBRARIES ${GDAL_LIBRARY})
+set(_gdal_dep_find_args "")
+if(";${ARGS};" MATCHES ";REQUIRED;")
+ list(APPEND _gdal_dep_find_args "REQUIRED")
+endif()
+function(_gdal_add_dependency target package)
+ find_package(${package} ${ARGN} ${_gdal_dep_find_args})
+ if(${package}_FOUND)
+ foreach(suffix IN ITEMS "" "-shared" "_shared" "-static" "_static" "-NOTFOUND")
+ set(dependency "${target}${suffix}")
+ if(TARGET ${dependency})
+ break()
+ endif()
+ endforeach()
+ if(NOT TARGET ${dependency})
+ string(TOUPPER ${package} _gdal_deps_package)
+ if(DEFINED ${_gdal_deps_package}_LIBRARIES)
+ set(dependency ${${_gdal_deps_package}_LIBRARIES})
+ elseif(DEFINED ${package}_LIBRARIES)
+ set(dependency ${${package}_LIBRARIES})
+ elseif(DEFINED ${_gdal_deps_package}_LIBRARY)
+ set(dependency ${${_gdal_deps_package}_LIBRARY})
+ elseif(DEFINED ${package}_LIBRARY)
+ set(dependency ${${package}_LIBRARY})
+ endif()
+ endif()
+ if(dependency)
+ if(TARGET GDAL::GDAL) # CMake 3.14
+ target_link_libraries(GDAL::GDAL INTERFACE ${dependency})
+ endif()
+ if(NOT GDAL_LIBRARIES STREQUAL "GDAL::GDAL")
+ set(GDAL_LIBRARIES "${GDAL_LIBRARIES};${dependency}" PARENT_SCOPE)
+ endif()
+ else()
+ message(WARNING "Did not find which libraries are exported by ${package}")
+ set(GDAL_FOUND false PARENT_SCOPE)
+ endif()
+ else()
+ set(GDAL_FOUND false PARENT_SCOPE)
+ endif()
+endfunction()
+if(GDAL_FOUND)
+ _gdal_add_dependency(cfitsio unofficial-cfitsio CONFIG)
+ _gdal_add_dependency(CURL::libcurl CURL CONFIG)
+ _gdal_add_dependency(expat::expat expat CONFIG)
+ _gdal_add_dependency(GEOS::geos_c geos CONFIG)
+ _gdal_add_dependency(GIF::GIF GIF)
+ _gdal_add_dependency(hdf5::hdf5 hdf5 CONFIG)
+ if(NOT WIN32)
+ _gdal_add_dependency(json-c::json-c json-c CONFIG)
+ endif()
+ _gdal_add_dependency(geotiff_library geotiff CONFIG)
+ _gdal_add_dependency(JPEG::JPEG JPEG)
+ _gdal_add_dependency(liblzma::liblzma liblzma CONFIG)
+ _gdal_add_dependency(png libpng CONFIG)
+ _gdal_add_dependency(PostgreSQL::PostgreSQL PostgreSQL)
+ _gdal_add_dependency(WebP::webp WebP CONFIG)
+ _gdal_add_dependency(LibXml2::LibXml2 LibXml2)
+ _gdal_add_dependency(netCDF::netcdf netCDF CONFIG)
+ _gdal_add_dependency(openjp2 OpenJPEG CONFIG)
+ _gdal_add_dependency(PROJ::proj PROJ4 CONFIG)
+ _gdal_add_dependency(unofficial::sqlite3::sqlite3 unofficial-sqlite3 CONFIG)
+ _gdal_add_dependency(TIFF::TIFF TIFF)
+ _gdal_add_dependency(ZLIB::ZLIB ZLIB)
+ _gdal_add_dependency(zstd::libzstd zstd CONFIG)
+ list(FIND ARGS "REQUIRED" required)
+ if(NOT required EQUAL "-1")
+ message(FATAL_ERROR "Failed to find dependencies of GDAL")
+ endif()
+endif()
diff --git a/ports/gdal/vcpkg.json b/ports/gdal/vcpkg.json index 971e9b205..7bc8db99d 100644 --- a/ports/gdal/vcpkg.json +++ b/ports/gdal/vcpkg.json @@ -1,6 +1,7 @@ { "name": "gdal", "version-semver": "3.2.2", + "port-version": 1, "description": "The Geographic Data Abstraction Library for reading and writing geospatial raster and vector data", "homepage": "https://gdal.org", "supports": "!arm", @@ -16,6 +17,7 @@ "platform": "!windows" }, "libgeotiff", + "libjpeg-turbo", "liblzma", "libpng", "libpq", @@ -25,6 +27,7 @@ "openjpeg", "proj4", "sqlite3", + "tiff", "zlib", "zstd" ], @@ -40,6 +43,10 @@ "dependencies": [ "libmariadb" ] + }, + "system-libraries": { + "$supports": "!windows", + "description": "Include drivers which need additional libraries" } } } diff --git a/versions/baseline.json b/versions/baseline.json index fbde6debe..049fab1bc 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2218,7 +2218,7 @@ }, "gdal": { "baseline": "3.2.2", - "port-version": 0 + "port-version": 1 }, "gdcm": { "baseline": "3.0.7", diff --git a/versions/g-/gdal.json b/versions/g-/gdal.json index 09828f502..649654b4b 100644 --- a/versions/g-/gdal.json +++ b/versions/g-/gdal.json @@ -1,6 +1,11 @@ { "versions": [ { + "git-tree": "f95d14f55c0bbc629a07da68147324ab4fd0bd58", + "version-semver": "3.2.2", + "port-version": 1 + }, + { "git-tree": "bb182d21db781421272dccf7c43273c746480c05", "version-semver": "3.2.2", "port-version": 0 |
