diff options
Diffstat (limited to 'vcpkg/ports/gdal')
| -rw-r--r-- | vcpkg/ports/gdal/cmake-project-include.cmake | 29 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/find-link-libraries.patch | 109 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/fix-gdal-target-interfaces.patch | 15 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/libkml.patch | 46 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/portfile.cmake | 177 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/sqlite3.diff | 49 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/target-is-valid.patch | 21 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/vcpkg-cmake-wrapper.cmake | 23 | ||||
| -rw-r--r-- | vcpkg/ports/gdal/vcpkg.json | 341 |
10 files changed, 814 insertions, 0 deletions
diff --git a/vcpkg/ports/gdal/cmake-project-include.cmake b/vcpkg/ports/gdal/cmake-project-include.cmake new file mode 100644 index 0000000..107d100 --- /dev/null +++ b/vcpkg/ports/gdal/cmake-project-include.cmake @@ -0,0 +1,29 @@ +if(GDAL_USE_KEA) + find_package(Kealib CONFIG REQUIRED) + add_library(KEA::KEA ALIAS Kealib::Kealib) + set(GDAL_CHECK_PACKAGE_KEA_NAMES Kealib CACHE INTERNAL "vcpkg") + set(GDAL_CHECK_PACKAGE_KEA_TARGETS Kealib::Kealib CACHE INTERNAL "vcpkg") +endif() + +if(GDAL_USE_WEBP) + find_package(WebP CONFIG REQUIRED) + add_library(WEBP::WebP ALIAS WebP::webp) + set(GDAL_CHECK_PACKAGE_WebP_NAMES WebP CACHE INTERNAL "vcpkg") + set(GDAL_CHECK_PACKAGE_WebP_TARGETS WebP::webp CACHE INTERNAL "vcpkg") +endif() + +if(GDAL_USE_ARROW) + find_package(Arrow REQUIRED) + set(ARROW_USE_STATIC_LIBRARIES "${ARROW_BUILD_STATIC}" CACHE INTERNAL "") + set(GDAL_USE_ARROWDATASET "${ARROW_DATASET}" CACHE INTERNAL "") + set(GDAL_USE_ARROWCOMPUTE "${ARROW_COMPUTE}" CACHE INTERNAL "") +endif() + +if(GDAL_USE_SQLITE3) + # CMake find module with vcpkg cmake wrapper + find_package(SQLite3 REQUIRED) + # .. and inject into GDAL's FindSQLite3.cmake + set(SQLite3_LIBRARY "${SQLite3_LIBRARIES}") + set(SQLite3_FOUND FALSE) + set(SQLITE3_FOUND FALSE) +endif() diff --git a/vcpkg/ports/gdal/find-link-libraries.patch b/vcpkg/ports/gdal/find-link-libraries.patch new file mode 100644 index 0000000..a802e42 --- /dev/null +++ b/vcpkg/ports/gdal/find-link-libraries.patch @@ -0,0 +1,109 @@ +diff --git a/cmake/modules/packages/FindFreeXL.cmake b/cmake/modules/packages/FindFreeXL.cmake +index 6c86fb8..0634412 100644 +--- a/cmake/modules/packages/FindFreeXL.cmake ++++ b/cmake/modules/packages/FindFreeXL.cmake +@@ -37,7 +37,15 @@ include(SelectLibraryConfigurations) + + find_package(PkgConfig QUIET) + if(PKG_CONFIG_FOUND) +- pkg_check_modules(PC_FREEXL QUIET freexl) ++ pkg_check_modules(PC_FREEXL QUIET IMPORTED_TARGET freexl) ++endif() ++if(PC_FREEXL_FOUND) ++ set(FREEXL_INCLUDE_DIR "${PC_FREEXL_INCLUDE_DIRS}" CACHE STRING "") ++ set(FREEXL_LIBRARY "${PC_FREEXL_LIBRARIES}" CACHE STRING "") ++ if(NOT TARGET FREEXL::freexl) ++ add_library(FREEXL::freexl INTERFACE IMPORTED) ++ set_target_properties(FREEXL::freexl PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::PC_FREEXL) ++ endif() + endif() + + find_path(FREEXL_INCLUDE_DIR +diff --git a/cmake/modules/packages/FindOpenJPEG.cmake b/cmake/modules/packages/FindOpenJPEG.cmake +index c697484..6e83222 100644 +--- a/cmake/modules/packages/FindOpenJPEG.cmake ++++ b/cmake/modules/packages/FindOpenJPEG.cmake +@@ -32,9 +32,18 @@ endfunction() + + find_package(PkgConfig QUIET) + if(PKG_CONFIG_FOUND) +- pkg_check_modules(PC_OPENJPEG QUIET libopenjp2) ++ pkg_check_modules(PC_OPENJPEG QUIET IMPORTED_TARGET libopenjp2) + set(OpenJPEG_VERSION_STRING ${PC_OPENJPEG_VERSION}) + endif() ++if(PC_OPENJPEG_FOUND) ++ set(OPENJPEG_INCLUDE_DIR "${PC_OPENJPEG_INCLUDE_DIRS}" CACHE STRING "") ++ set(OPENJPEG_LIBRARY "${PC_OPENJPEG_LIBRARIES}" CACHE STRING "") ++ if(NOT TARGET OPENJPEG::OpenJPEG) ++ add_library(OPENJPEG::OpenJPEG INTERFACE IMPORTED) ++ set_target_properties(OPENJPEG::OpenJPEG PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PC_OPENJPEG_INCLUDE_DIRS}") ++ set_target_properties(OPENJPEG::OpenJPEG PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::PC_OPENJPEG) ++ endif() ++endif() + + + find_path(OPENJPEG_INCLUDE_DIR opj_config.h +diff --git a/cmake/modules/packages/FindPoppler.cmake b/cmake/modules/packages/FindPoppler.cmake +index 3807ec0..8059eb4 100644 +--- a/cmake/modules/packages/FindPoppler.cmake ++++ b/cmake/modules/packages/FindPoppler.cmake +@@ -42,11 +42,19 @@ This module defines the following variables: + + find_package(PkgConfig QUIET) + if(PKG_CONFIG_FOUND) +- pkg_check_modules(PC_Poppler QUIET poppler) ++ pkg_check_modules(PC_Poppler QUIET IMPORTED_TARGET poppler) + if(PC_Poppler_VERSION) + set(Poppler_VERSION_STRING ${PC_Poppler_VERSION}) + endif() + endif() ++if(PC_Poppler_FOUND) ++ find_path(Poppler_INCLUDE_DIR NAMES Object.h PATHS ${PC_Poppler_INCLUDE_DIRS} NO_DEFAULT_PATH) ++ set(Poppler_LIBRARY "${PC_Poppler_LIBRARIES}" CACHE STRING "") ++ if(NOT TARGET Poppler::Poppler) ++ add_library(Poppler::Poppler INTERFACE IMPORTED) ++ set_target_properties(Poppler::Poppler PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::PC_Poppler) ++ endif() ++endif() + find_path(Poppler_INCLUDE_DIR NAMES "poppler-config.h" "cpp/poppler-version.h" "qt5/poppler-qt5.h" "qt4/poppler-qt4.h" + "glib/poppler.h" + HINTS ${PC_Poppler_INCLUDE_DIRS} +@@ -77,6 +85,15 @@ endforeach() + foreach(_comp IN LISTS Poppler_known_components) + list(FIND Poppler_FIND_COMPONENTS "${_comp}" _nextcomp) + if(_nextcomp GREATER -1) ++ pkg_check_modules(PC_Poppler_${_comp} QUIET IMPORTED_TARGET ${Poppler_${_comp}_pkg_config}) ++ if(PC_Poppler_${_comp}_FOUND) ++ set(Poppler_${_comp}_INCLUDE_DIR "${PC_Poppler_${_comp}_INCLUDE_DIRS}" CACHE STRING "") ++ set(Poppler_${_comp}_LIBRARY "${PC_Poppler_${_comp}_LIBRARIES}" CACHE STRING "") ++ if(NOT TARGET Poppler::Poppler_${_comp}) ++ add_library(Poppler::${_comp} INTERFACE IMPORTED) ++ set_target_properties(Poppler::${_comp} PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::PC_Poppler_${_comp}) ++ endif() ++ endif() + find_path(Poppler_${_comp}_INCLUDE_DIR + NAMES ${Poppler_${_comp}_header} + PATH_SUFFIXES poppler +diff --git a/cmake/modules/packages/FindSPATIALITE.cmake b/cmake/modules/packages/FindSPATIALITE.cmake +index 00612b0..6388719 100644 +--- a/cmake/modules/packages/FindSPATIALITE.cmake ++++ b/cmake/modules/packages/FindSPATIALITE.cmake +@@ -38,9 +38,17 @@ endif() + + find_package(PkgConfig QUIET) + if(PKG_CONFIG_FOUND) +- pkg_check_modules(PC_SPATIALITE QUIET spatialite) ++ pkg_check_modules(PC_SPATIALITE QUIET IMPORTED_TARGET spatialite) + set(SPATIALITE_VERSION_STRING ${PC_SPATIALITE_VERSION}) + endif() ++if(PC_SPATIALITE_FOUND) ++ set(SPATIALITE_INCLUDE_DIR "${PC_SPATIALITE_INCLUDE_DIRS}" CACHE STRING "") ++ set(SPATIALITE_LIBRARY "${PC_SPATIALITE_LIBRARIES}" CACHE STRING "") ++ if(NOT TARGET SPATIALITE::SPATIALITE) ++ add_library(SPATIALITE::SPATIALITE INTERFACE IMPORTED) ++ set_target_properties(SPATIALITE::SPATIALITE PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::PC_SPATIALITE) ++ endif() ++endif() + + find_path(SPATIALITE_INCLUDE_DIR + NAMES spatialite.h diff --git a/vcpkg/ports/gdal/fix-gdal-target-interfaces.patch b/vcpkg/ports/gdal/fix-gdal-target-interfaces.patch new file mode 100644 index 0000000..bf159fc --- /dev/null +++ b/vcpkg/ports/gdal/fix-gdal-target-interfaces.patch @@ -0,0 +1,15 @@ +diff --git a/cmake/helpers/GdalDriverHelper.cmake b/cmake/helpers/GdalDriverHelper.cmake +index 838f0fd..380e20d 100644 +--- a/cmake/helpers/GdalDriverHelper.cmake ++++ b/cmake/helpers/GdalDriverHelper.cmake +@@ -248,6 +248,10 @@ function(gdal_target_interfaces _TARGET) + if (_res) + target_compile_options(${_TARGET} PRIVATE ${_res}) + endif () ++ get_property(_res TARGET ${_LIB} PROPERTY INTERFACE_LINK_LIBRARIES) ++ if (_res) ++ gdal_target_interfaces(${_TARGET} ${_res}) ++ endif () + endif () + endforeach () + endfunction() diff --git a/vcpkg/ports/gdal/libkml.patch b/vcpkg/ports/gdal/libkml.patch new file mode 100644 index 0000000..ef25d06 --- /dev/null +++ b/vcpkg/ports/gdal/libkml.patch @@ -0,0 +1,46 @@ +diff --git a/cmake/modules/packages/FindLibKML.cmake b/cmake/modules/packages/FindLibKML.cmake +index 9418247..589b83d 100644 +--- a/cmake/modules/packages/FindLibKML.cmake ++++ b/cmake/modules/packages/FindLibKML.cmake +@@ -56,6 +56,8 @@ find_library(LIBKML_BASE_LIBRARY + HINTS ${PC_LIBKML_LIBRARY_DIRS} ) + mark_as_advanced(LIBKML_BASE_LIBRARY) + ++cmake_policy(PUSH) ++cmake_policy(SET CMP0057 NEW) + set(libkml_known_components DOM CONVENIENCE ENGINE REGIONATOR) + foreach(_comp IN LISTS libkml_known_components) + if(${_comp} IN_LIST LibKML_FIND_COMPONENTS) +@@ -99,21 +101,20 @@ find_package_handle_standard_args(LibKML + if(LIBKML_FOUND) + set(LIBKML_INCLUDE_DIRS "${LIBKML_INCLUDE_DIR}") + set(LIBKML_LIBRARIES "${LIBKML_BASE_LIBRARY}") ++ find_package(LibKML CONFIG REQUIRED) + if(NOT TARGET LIBKML::LibKML) +- add_library(LIBKML::LibKML UNKNOWN IMPORTED) ++ add_library(LIBKML::LibKML INTERFACE IMPORTED) + set_target_properties(LIBKML::LibKML PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${LIBKML_INCLUDE_DIR}" +- IMPORTED_LINK_INTERFACE_LANGUAGES "C++" +- IMPORTED_LOCATION "${LIBKML_BASE_LIBRARY}") ++ INTERFACE_LINK_LIBRARIES kmlbase) + endif() + foreach(_comp IN LISTS libkml_known_components) + if(${_comp} IN_LIST LibKML_FIND_COMPONENTS) ++ string(TOLOWER ${_comp} _name) + list(APPEND LIBKML_LIBRARIES "${LIBKML_${_comp}_LIBRARY}") + if(NOT TARGET LIBKML::${_comp}) +- add_library(LIBKML::${_comp} UNKNOWN IMPORTED) ++ add_library(LIBKML::${_comp} INTERFACE IMPORTED) + set_target_properties(LIBKML::${_comp} PROPERTIES +- IMPORTED_LINK_INTERFACE_LANGUAGES "C++" +- IMPORTED_LOCATION "${LIBKML_${_comp}_LIBRARY}") ++ INTERFACE_LINK_LIBRARIES kml${_name}) + endif() + endif() + endforeach() +@@ -129,3 +130,4 @@ if(LIBKML_FOUND) + endif() + endforeach() + endif() ++cmake_policy(POP) diff --git a/vcpkg/ports/gdal/portfile.cmake b/vcpkg/ports/gdal/portfile.cmake new file mode 100644 index 0000000..99b8518 --- /dev/null +++ b/vcpkg/ports/gdal/portfile.cmake @@ -0,0 +1,177 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO OSGeo/gdal + REF "v${VERSION}" + SHA512 497e585479b01e0b046ab2343971644746305719f8c6be19764580b818c37b26284f16bdf463e22475f1a2ecb9bf22231f3d51b349458990e75d894c217ae68e + HEAD_REF master + PATCHES + find-link-libraries.patch + fix-gdal-target-interfaces.patch + libkml.patch + sqlite3.diff + target-is-valid.patch +) +# `vcpkg clean` stumbles over one subdir +file(REMOVE_RECURSE "${SOURCE_PATH}/autotest") + +# Avoid abseil, no matter if vcpkg or system +vcpkg_replace_string("${SOURCE_PATH}/ogr/ogrsf_frmts/flatgeobuf/flatbuffers/base.h" [[__has_include("absl/strings/string_view.h")]] "(0)") + +# Cf. cmake/helpers/CheckDependentLibraries.cmake +# The default for all `GDAL_USE_<PKG>` dependencies is `OFF`. +# Here, we explicitly control dependencies provided via vpcpkg. +# "core" is used for a dependency which must be enabled to avoid vendored lib. +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + arrow GDAL_USE_ARROW + arrow-adbc GDAL_USE_ADBCDRIVERMANAGER + archive GDAL_USE_ARCHIVE + cfitsio GDAL_USE_CFITSIO + curl GDAL_USE_CURL + expat GDAL_USE_EXPAT + freexl GDAL_USE_FREEXL + geos GDAL_USE_GEOS + core GDAL_USE_GEOTIFF + gif GDAL_USE_GIF + hdf5 GDAL_USE_HDF5 + iconv GDAL_USE_ICONV + jpeg GDAL_USE_JPEG + core GDAL_USE_JSONC + kea GDAL_USE_KEA + lerc GDAL_USE_LERC + libkml GDAL_USE_LIBKML + lzma GDAL_USE_LIBLZMA + libxml2 GDAL_USE_LIBXML2 + mysql-libmariadb GDAL_USE_MYSQL + netcdf GDAL_USE_NETCDF + odbc GDAL_USE_ODBC + openjpeg GDAL_USE_OPENJPEG + openssl GDAL_USE_OPENSSL + parquet GDAL_USE_PARQUET + pcre2 GDAL_USE_PCRE2 + png GDAL_USE_PNG + poppler GDAL_USE_POPPLER + postgresql GDAL_USE_POSTGRESQL + qhull GDAL_USE_QHULL + #core GDAL_USE_SHAPELIB # https://github.com/OSGeo/gdal/issues/5711, https://github.com/microsoft/vcpkg/issues/16041 + core GDAL_USE_SHAPELIB_INTERNAL + libspatialite GDAL_USE_SPATIALITE + sqlite3 GDAL_USE_SQLITE3 + core GDAL_USE_TIFF + webp GDAL_USE_WEBP + core GDAL_USE_ZLIB + zstd GDAL_USE_ZSTD + tools BUILD_APPS + INVERTED_FEATURES + libspatialite CMAKE_DISABLE_FIND_PACKAGE_SPATIALITE +) +if(GDAL_USE_ICONV AND VCPKG_TARGET_IS_WINDOWS) + list(APPEND FEATURE_OPTIONS -D_ICONV_SECOND_ARGUMENT_IS_NOT_CONST=ON) +endif() + +# Compatibility with older Android versions https://github.com/OSGeo/gdal/pull/5941 +if(VCPKG_TARGET_IS_ANDROID AND ANDROID_PLATFORM VERSION_LESS 24 AND (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")) + list(APPEND FEATURE_OPTIONS -DBUILD_WITHOUT_64BIT_OFFSET=ON) +endif() + +string(REPLACE "dynamic" "" qhull_target "Qhull::qhull${VCPKG_LIBRARY_LINKAGE}_r") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DVCPKG_HOST_TRIPLET=${HOST_TRIPLET} # for host pkgconf in PATH + ${FEATURE_OPTIONS} + -DBUILD_DOCS=OFF + -DBUILD_PYTHON_BINDINGS=OFF + -DBUILD_TESTING=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_CSharp=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Java=ON + -DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON + -DCMAKE_DISABLE_FIND_PACKAGE_SWIG=ON + -DGDAL_USE_INTERNAL_LIBS=OFF + -DGDAL_USE_EXTERNAL_LIBS=OFF + -DGDAL_BUILD_OPTIONAL_DRIVERS=ON + -DOGR_BUILD_OPTIONAL_DRIVERS=ON + -DFIND_PACKAGE2_KEA_ENABLED=OFF + -DGDAL_CHECK_PACKAGE_MySQL_NAMES=unofficial-libmariadb + -DGDAL_CHECK_PACKAGE_MySQL_TARGETS=unofficial::libmariadb + -DMYSQL_LIBRARIES=unofficial::libmariadb + -DGDAL_CHECK_PACKAGE_NetCDF_NAMES=netCDF + -DGDAL_CHECK_PACKAGE_NetCDF_TARGETS=netCDF::netcdf + -DGDAL_CHECK_PACKAGE_QHULL_NAMES=Qhull + "-DGDAL_CHECK_PACKAGE_QHULL_TARGETS=${qhull_target}" + "-DQHULL_LIBRARY=${qhull_target}" + "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake" + OPTIONS_DEBUG + -DBUILD_APPS=OFF + MAYBE_UNUSED_VARIABLES + QHULL_LIBRARY +) +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/gdal) +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/gdal/GDALConfig.cmake" + "include(CMakeFindDependencyMacro)" + "include(CMakeFindDependencyMacro) +# gdal needs a pkg-config tool. A host dependency provides pkgconf. +get_filename_component(vcpkg_host_prefix \"\${CMAKE_CURRENT_LIST_DIR}/../../../${HOST_TRIPLET}\" ABSOLUTE) +list(APPEND CMAKE_PROGRAM_PATH \"\${vcpkg_host_prefix}/tools/pkgconf\")" +) + +if (BUILD_APPS) + vcpkg_copy_tools( + TOOL_NAMES + gdal + gdal_contour + gdal_create + gdal_footprint + gdal_grid + gdal_rasterize + gdal_translate + gdal_viewshed + gdaladdo + gdalbuildvrt + gdaldem + gdalenhance + gdalinfo + gdallocationinfo + gdalmanage + gdalmdiminfo + gdalmdimtranslate + gdalsrsinfo + gdaltindex + gdaltransform + gdalwarp + gnmanalyse + gnmmanage + nearblack + ogr2ogr + ogrinfo + ogrlineref + ogrtindex + sozip + AUTO_CLEAN + ) +endif() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +file(REMOVE "${CURRENT_PACKAGES_DIR}/bin/gdal-config" "${CURRENT_PACKAGES_DIR}/debug/bin/gdal-config") + +file(GLOB bin_files "${CURRENT_PACKAGES_DIR}/bin/*") +if(NOT bin_files) + file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/bin" + "${CURRENT_PACKAGES_DIR}/debug/bin" + ) +endif() + +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/cpl_config.h" "#define GDAL_PREFIX \"${CURRENT_PACKAGES_DIR}\"" "") + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.TXT") diff --git a/vcpkg/ports/gdal/sqlite3.diff b/vcpkg/ports/gdal/sqlite3.diff new file mode 100644 index 0000000..daeea01 --- /dev/null +++ b/vcpkg/ports/gdal/sqlite3.diff @@ -0,0 +1,49 @@ +diff --git a/cmake/modules/packages/FindSQLite3.cmake b/cmake/modules/packages/FindSQLite3.cmake +index 903465b3c9..5d3a067e50 100644 +--- a/cmake/modules/packages/FindSQLite3.cmake ++++ b/cmake/modules/packages/FindSQLite3.cmake +@@ -77,7 +77,7 @@ if(SQLite3_INCLUDE_DIR AND SQLite3_LIBRARY) + cmake_push_check_state(RESET) + # check column metadata + set(CMAKE_REQUIRED_INCLUDES ${SQLite3_INCLUDE_DIR}) +- if( ${SQLite3_LIBRARY} MATCHES "libsqlite3.a") ++ if(0) + if(PC_SQLITE3_STATIC_LDFLAGS) + set(CMAKE_REQUIRED_LIBRARIES ${PC_SQLITE3_STATIC_LDFLAGS}) + else() +@@ -111,15 +111,10 @@ if(SQLite3_INCLUDE_DIR AND SQLite3_LIBRARY) + endif() + else() + set(CMAKE_REQUIRED_LIBRARIES ${SQLite3_LIBRARY}) ++ list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}) ++ list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} "") + endif() + +- # Trick to force CMake to re-run if SQLite3_LIBRARY changes +- # Useful in development situations when switching/refreshing the library +- set_property( +- DIRECTORY +- APPEND +- PROPERTY CMAKE_CONFIGURE_DEPENDS "${SQLite3_LIBRARY}" +- ) + # Invalidate cached variables if SQLite3_LIBRARY changes + file(TIMESTAMP "${SQLite3_LIBRARY}" SQLite3_LIBRARY_TIMESTAMP) + if( SQLite3_LIBRARY_TIMESTAMP_OLD_VAL AND +@@ -179,6 +174,7 @@ if(SQLite3_FOUND) + INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${SQLite3_LIBRARY}") ++ endif() + if(SQLite3_HAS_COLUMN_METADATA) + set_property(TARGET SQLite::SQLite3 APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS "SQLite3_HAS_COLUMN_METADATA") +@@ -187,5 +183,9 @@ if(SQLite3_FOUND) + set_property(TARGET SQLite::SQLite3 APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS "SQLite3_HAS_RTREE") + endif() ++ get_target_property(definitions SQLite::SQLite3 INTERFACE_COMPILE_DEFINITIONS) ++ if(definitions) ++ list(REMOVE_DUPLICATES definitions) ++ set_target_properties(SQLite::SQLite3 PROPERTIES INTERFACE_COMPILE_DEFINITIONS "${definitions}") + endif() + endif() diff --git a/vcpkg/ports/gdal/target-is-valid.patch b/vcpkg/ports/gdal/target-is-valid.patch new file mode 100644 index 0000000..10f3dcf --- /dev/null +++ b/vcpkg/ports/gdal/target-is-valid.patch @@ -0,0 +1,21 @@ +diff --git a/cmake/helpers/CheckDependentLibrariesCommon.cmake b/cmake/helpers/CheckDependentLibrariesCommon.cmake +index ebb3538..a4a6d69 100644 +--- a/cmake/helpers/CheckDependentLibrariesCommon.cmake ++++ b/cmake/helpers/CheckDependentLibrariesCommon.cmake +@@ -41,6 +41,7 @@ endif() + # https://github.com/OSGeo/gdal/issues/5324 + function (gdal_check_target_is_valid target res_var) + get_target_property(_interface_include_directories ${target} "INTERFACE_INCLUDE_DIRECTORIES") ++ get_target_property(_type ${target} "TYPE") + if(_interface_include_directories) + foreach(_dir IN LISTS _interface_include_directories) + if(NOT EXISTS "${_dir}") +@@ -54,7 +55,7 @@ function (gdal_check_target_is_valid target res_var) + # property, but a GeoTIFF_INCLUDE_DIRS variable. + set_target_properties(${target} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${GeoTIFF_INCLUDE_DIRS}") +- else() ++ elseif(NOT _type STREQUAL "INTERFACE" AND _type STREQUAL "ALIAS") + message(WARNING "Target ${target} has no INTERFACE_INCLUDE_DIRECTORIES property. Ignoring that target.") + set(${res_var} FALSE PARENT_SCOPE) + return() diff --git a/vcpkg/ports/gdal/usage b/vcpkg/ports/gdal/usage new file mode 100644 index 0000000..6982a9a --- /dev/null +++ b/vcpkg/ports/gdal/usage @@ -0,0 +1,4 @@ +The package GDAL provides CMake targets:
+
+ find_package(GDAL CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE GDAL::GDAL)
diff --git a/vcpkg/ports/gdal/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/gdal/vcpkg-cmake-wrapper.cmake new file mode 100644 index 0000000..5b70b67 --- /dev/null +++ b/vcpkg/ports/gdal/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,23 @@ +cmake_policy(PUSH)
+cmake_policy(SET CMP0012 NEW)
+cmake_policy(SET CMP0054 NEW)
+
+list(REMOVE_ITEM ARGS "NO_MODULE" "CONFIG" "MODULE")
+list(APPEND ARGS "CONFIG")
+# The current port version should satisfy GDAL 3.0 ... 3.5
+list(GET ARGS 1 vcpkg_gdal_maybe_version)
+if(vcpkg_gdal_maybe_version MATCHES "(^3\$|^3[.][0-5])")
+ list(REMOVE_AT ARGS "1")
+endif()
+unset(vcpkg_gdal_maybe_version)
+_find_package(${ARGS} CONFIG)
+if(GDAL_FOUND)
+ get_filename_component(vcpkg_gdal_prefix "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
+ set(GDAL_INCLUDE_DIR "${vcpkg_gdal_prefix}/include" CACHE INTERNAL "")
+ set(GDAL_INCLUDE_DIRS "${GDAL_INCLUDE_DIR}")
+ set(GDAL_LIBRARY GDAL::GDAL CACHE INTERNAL "")
+ set(GDAL_LIBRARIES "${GDAL_LIBRARY}")
+ unset(vcpkg_gdal_prefix)
+endif()
+
+cmake_policy(POP)
diff --git a/vcpkg/ports/gdal/vcpkg.json b/vcpkg/ports/gdal/vcpkg.json new file mode 100644 index 0000000..d1313f0 --- /dev/null +++ b/vcpkg/ports/gdal/vcpkg.json @@ -0,0 +1,341 @@ +{ + "name": "gdal", + "version-semver": "3.12.0", + "description": "The Geographic Data Abstraction Library for reading and writing geospatial raster and vector data", + "homepage": "https://gdal.org", + "license": null, + "supports": "!uwp", + "dependencies": [ + "json-c", + "libgeotiff", + { + "name": "pkgconf", + "host": true + }, + { + "name": "proj", + "default-features": false, + "features": [ + "tiff" + ] + }, + { + "name": "tiff", + "default-features": false + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-pkgconfig-get-modules", + "host": true + }, + "zlib" + ], + "default-features": [ + "gif", + { + "name": "hdf5", + "platform": "!uwp" + }, + "iconv", + "libkml", + { + "name": "libspatialite", + "platform": "!uwp" + }, + "libxml2", + "lzma", + { + "name": "netcdf", + "platform": "!android & !ios & !(windows & arm64) & !uwp" + }, + "openjpeg", + "openssl", + "pcre2", + { + "name": "postgresql", + "platform": "!uwp" + }, + "recommended-features", + "webp", + "zstd" + ], + "features": { + "archive": { + "description": "Enable libarchive support", + "dependencies": [ + { + "name": "libarchive", + "default-features": false + } + ] + }, + "arrow": { + "description": "Enable arrow support", + "dependencies": [ + { + "name": "arrow", + "default-features": false + } + ] + }, + "arrow-adbc": { + "description": "Arrow ADBC support", + "dependencies": [ + "arrow-adbc" + ] + }, + "aws-ec2-windows": { + "description": "Optimized detection of AWS EC2 Windows hosts", + "dependencies": [ + "atl" + ] + }, + "cfitsio": { + "description": "Enable cfitsio support", + "supports": "!(android & arm32)", + "dependencies": [ + "cfitsio" + ] + }, + "curl": { + "description": "Enable CURL network support", + "dependencies": [ + { + "name": "curl", + "default-features": false + } + ] + }, + "expat": { + "description": "Use EXPAT library", + "dependencies": [ + "expat" + ] + }, + "freexl": { + "description": "Enable FREEXL support", + "dependencies": [ + "freexl" + ] + }, + "geos": { + "description": "Enable GEOS support", + "dependencies": [ + "geos" + ] + }, + "gif": { + "description": "Enable GIF support", + "dependencies": [ + "giflib" + ] + }, + "hdf5": { + "description": "Enable HDF5 support", + "dependencies": [ + { + "name": "hdf5", + "default-features": false, + "features": [ + "cpp" + ] + } + ] + }, + "iconv": { + "description": "Use iconv library", + "dependencies": [ + "libiconv" + ] + }, + "jpeg": { + "description": "Use JPEG compression library", + "dependencies": [ + "libjpeg-turbo" + ] + }, + "kea": { + "description": "Enable KEA driver", + "dependencies": [ + { + "name": "gdal", + "default-features": false, + "features": [ + "hdf5" + ] + }, + "kealib" + ] + }, + "lerc": { + "description": "Enable LERC support", + "dependencies": [ + "lerc" + ] + }, + "libkml": { + "description": "Enable the LibKML driver", + "dependencies": [ + "libkml" + ] + }, + "libspatialite": { + "description": "Create or update SpatiaLite databases using libspatialite", + "dependencies": [ + { + "name": "libspatialite", + "default-features": false + } + ] + }, + "libxml2": { + "description": "Use LibXML2 library", + "dependencies": [ + { + "name": "libxml2", + "default-features": false + } + ] + }, + "lzma": { + "description": "Use LZMA library", + "dependencies": [ + "liblzma" + ] + }, + "mysql-libmariadb": { + "description": "Add mysql support using libmariadb", + "dependencies": [ + "libmariadb" + ] + }, + "netcdf": { + "description": "Enable NetCDF support", + "dependencies": [ + { + "name": "netcdf-c", + "default-features": false + } + ] + }, + "openjpeg": { + "description": "Use OpenJPEG library", + "dependencies": [ + "openjpeg" + ] + }, + "openssl": { + "description": "Use OpenSSL library", + "dependencies": [ + "openssl" + ] + }, + "parquet": { + "description": "Enable parquet reading support. Combine with arrow[compute] or arrow[dataset] for additional capabilities.", + "dependencies": [ + { + "name": "arrow", + "default-features": false, + "features": [ + "parquet" + ] + }, + { + "name": "gdal", + "default-features": false, + "features": [ + "arrow" + ] + } + ] + }, + "pcre2": { + "description": "Enable PCRE2 support for sqlite3", + "dependencies": [ + "pcre2" + ] + }, + "png": { + "description": "Use PNG compression library", + "dependencies": [ + "libpng" + ] + }, + "poppler": { + "description": "Enable PDF reading support via poppler", + "dependencies": [ + { + "name": "poppler", + "default-features": false, + "features": [ + "private-api" + ] + } + ] + }, + "postgresql": { + "description": "Enable PostgreSQL support", + "dependencies": [ + "libpq" + ] + }, + "qhull": { + "description": "Use QHULL library", + "dependencies": [ + "qhull" + ] + }, + "recommended-features": { + "description": "Features that are explicity marked as recommended by GDAL.", + "dependencies": [ + { + "name": "gdal", + "default-features": false, + "features": [ + "curl", + "expat", + "geos", + "jpeg", + "lerc", + "png", + "qhull", + "sqlite3" + ] + } + ] + }, + "sqlite3": { + "description": "Enable SQLite3 support", + "dependencies": [ + { + "name": "sqlite3", + "features": [ + "rtree" + ] + } + ] + }, + "tools": { + "description": "Builds gdal and ogr executables" + }, + "webp": { + "description": "Enable WEBP support", + "dependencies": [ + "libwebp" + ] + }, + "zstd": { + "description": "Use ZSTD library", + "dependencies": [ + "zstd" + ] + } + } +} |