Skip to content

[gdal] add version 3.7.0 #18027

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions recipes/gdal/config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
versions:
"3.7.0":
folder: "post_3.5.0"
"3.5.2":
folder: "post_3.5.0"
"3.5.1":
Expand Down
6 changes: 6 additions & 0 deletions recipes/gdal/post_3.5.0/conandata.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
sources:
"3.7.0":
url: "https://github.com/OSGeo/gdal/releases/download/v3.7.0/gdal-3.7.0.tar.gz"
sha256: "5a806d759f403a15bbbf8a14ecc6947071afc5ab91e5abaef0d11d1d2d16bf94"
"3.5.2":
url: "https://github.com/OSGeo/gdal/releases/download/v3.5.2/gdal-3.5.2.tar.gz"
sha256: "fbd696e1b2a858fbd2eb3718db16b14ed9ba82521d3578770d480c74fe1146d2"
"3.5.1":
url: "https://github.com/OSGeo/gdal/releases/download/v3.5.1/gdal-3.5.1.tar.gz"
sha256: "7c4406ca010dc8632703a0a326f39e9db25d9f1f6ebaaeca64a963e3fac123d1"
patches:
"3.7.0":
- patch_file: "patches/3.7.0/0-replace-find-package.patch"
base_path: "source_subfolder"
"3.5.2":
- patch_file: "patches/3.5.2/0-replace-find-package.patch"
base_path: "source_subfolder"
Expand Down
282 changes: 282 additions & 0 deletions recipes/gdal/post_3.5.0/patches/3.7.0/0-replace-find-package.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
diff -urN ./a/alg/CMakeLists.txt ./b/alg/CMakeLists.txt
--- ./a/alg/CMakeLists.txt 2023-05-02 08:47:11.000000000 -0500
+++ ./b/alg/CMakeLists.txt 2023-06-06 16:47:02.784509800 -0500
@@ -73,7 +73,7 @@
target_sources(alg PRIVATE gdalwarpkernel_opencl.h gdalwarpkernel_opencl.cpp)
endif ()

-gdal_target_link_libraries(alg PRIVATE PROJ::proj)
+target_link_libraries(alg PUBLIC PROJ::proj)

if (GDAL_USE_QHULL_INTERNAL)
target_compile_definitions(alg PRIVATE -DINTERNAL_QHULL)
diff -urN ./a/apps/CMakeLists.txt ./b/apps/CMakeLists.txt
--- ./a/apps/CMakeLists.txt 2023-05-02 08:47:11.000000000 -0500
+++ ./b/apps/CMakeLists.txt 2023-06-06 16:46:55.380690700 -0500
@@ -26,7 +26,7 @@
appslib PRIVATE $<TARGET_PROPERTY:gdal_vrt,SOURCE_DIR> $<TARGET_PROPERTY:ogrsf_generic,SOURCE_DIR>
$<TARGET_PROPERTY:ogr_geojson,SOURCE_DIR> $<TARGET_PROPERTY:ogr_MEM,SOURCE_DIR>)

-gdal_target_link_libraries(appslib PRIVATE PROJ::proj)
+target_link_libraries(appslib PUBLIC PROJ::proj)

set_property(TARGET appslib PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE})
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)
diff -urN ./a/cmake/helpers/CheckDependentLibraries.cmake ./b/cmake/helpers/CheckDependentLibraries.cmake
--- ./a/cmake/helpers/CheckDependentLibraries.cmake 2023-06-07 09:33:06.599777700 -0500
+++ ./b/cmake/helpers/CheckDependentLibraries.cmake 2023-06-07 13:38:51.722872200 -0500
@@ -11,7 +11,8 @@
include(CheckFunctionExists)
include(CMakeDependentOption)
include(FeatureSummary)
-include(DefineFindPackage2)
+#include(DefineFindPackage2)
+include(ConanFindPackage)
include(CheckSymbolExists)

option(
@@ -109,51 +110,8 @@
string(TOUPPER ${name} key)
set(_find_dependency "")
set(_find_dependency_args "")
- if(FIND_PACKAGE2_${name}_ENABLED)
- find_package2(${name} QUIET OUT_DEPENDENCY _find_dependency)
- else()
- set(_find_package_args)
- if (_GCP_VERSION)
- list(APPEND _find_package_args ${_GCP_VERSION})
- endif ()
- if (_GCP_CONFIG)
- list(APPEND _find_package_args CONFIG)
- endif ()
- if (_GCP_COMPONENTS)
- list(APPEND _find_package_args COMPONENTS ${_GCP_COMPONENTS})
- endif ()
- if (_GCP_PATHS)
- list(APPEND _find_package_args PATHS ${_GCP_PATHS})
- endif ()
- if (_GCP_NAMES)
- set(GDAL_CHECK_PACKAGE_${name}_NAMES "${_GCP_NAMES}" CACHE STRING "Config file name for ${name}")
- mark_as_advanced(GDAL_CHECK_PACKAGE_${name}_NAMES)
- endif ()
- if (_GCP_TARGETS)
- set(GDAL_CHECK_PACKAGE_${name}_TARGETS "${_GCP_TARGETS}" CACHE STRING "Target name candidates for ${name}")
- mark_as_advanced(GDAL_CHECK_PACKAGE_${name}_TARGETS)
- endif ()
- if (GDAL_CHECK_PACKAGE_${name}_NAMES)
- find_package(${name} NAMES ${GDAL_CHECK_PACKAGE_${name}_NAMES} ${_find_package_args})
- gdal_check_package_target(${name} ${GDAL_CHECK_PACKAGE_${name}_TARGETS} REQUIRED)
- if (${name}_FOUND)
- get_filename_component(_find_dependency_args "${${name}_CONFIG}" NAME)
- string(REPLACE ";" " " _find_dependency_args "${name} NAMES ${GDAL_CHECK_PACKAGE_${name}_NAMES} CONFIGS ${_find_dependency_args} ${_find_package_args}")
- endif ()
- endif ()
- if (NOT ${name}_FOUND)
- find_package(${name} ${_find_package_args})
- if (${name}_FOUND)
- gdal_check_package_target(${name} ${GDAL_CHECK_PACKAGE_${name}_TARGETS})
- elseif (${key}_FOUND) # Some find modules do not set <Pkg>_FOUND
- gdal_check_package_target(${key} ${GDAL_CHECK_PACKAGE_${name}_TARGETS})
- set(${name}_FOUND "${key}_FOUND")
- endif ()
- if (${name}_FOUND)
- string(REPLACE ";" " " _find_dependency_args "${name} ${_find_package_args}")
- endif()
- endif ()
- endif ()
+
+ find_package2(${name} QUIET OUT_DEPENDENCY _find_dependency)
if (${key}_FOUND OR ${name}_FOUND)
if(_GCP_MINIMUM_VERSION)

@@ -368,14 +326,12 @@
endif ()

# First check with CMake config files (starting at version 8, due to issues with earlier ones), and then fallback to the FindPROJ module.
-find_package(PROJ 9 CONFIG QUIET)
-if (NOT PROJ_FOUND)
- find_package(PROJ 8 CONFIG QUIET)
-endif()
+find_package2(PROJ)
+target_include_directories(PROJ::proj INTERFACE ${PROJ_INCLUDE_DIRS})
if (PROJ_FOUND)
string(APPEND GDAL_IMPORT_DEPENDENCIES "find_dependency(PROJ ${PROJ_VERSION_MAJOR} CONFIG)\n")
else()
- find_package(PROJ 6.0 REQUIRED)
+ find_package(proj 6.0 REQUIRED)
string(APPEND GDAL_IMPORT_DEPENDENCIES "find_dependency(PROJ 6.0)\n")
endif ()

@@ -458,15 +414,10 @@
TARGETS json-c::json-c JSONC::JSONC
)
gdal_internal_library(JSONC REQUIRED)
-if(TARGET json-c::json-c)
- get_target_property(include_dirs json-c::json-c INTERFACE_INCLUDE_DIRECTORIES)
- find_path(GDAL_JSON_INCLUDE_DIR NAMES json.h PATHS ${include_dirs} PATH_SUFFIXES json-c NO_DEFAULT_PATH)
- list(APPEND include_dirs "${GDAL_JSON_INCLUDE_DIR}")
- list(REMOVE_DUPLICATES include_dirs)
- set_target_properties(json-c::json-c PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GDAL_JSON_INCLUDE_DIR}"
- )
-endif()
+get_target_property(include_dirs json-c::json-c INTERFACE_INCLUDE_DIRECTORIES)
+list(APPEND include_dirs "${JSONC_INCLUDE_DIRS}/json-c")
+set_target_properties(json-c::json-c PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include_dirs}")
+message("Setting include for json-c: ${include_dirs}")

gdal_check_package(OpenCAD "libopencad (external, used by OpenCAD driver)" CAN_DISABLE)
gdal_internal_library(OPENCAD)
@@ -527,6 +478,24 @@
gdal_check_package(SQLite3 "Enable SQLite3 support (used by SQLite/Spatialite, GPKG, Rasterlite, MBTiles, etc.)"
CAN_DISABLE RECOMMENDED)
if (SQLite3_FOUND)
+ set(CMAKE_REQUIRED_INCLUDES ${SQLite3_INCLUDE_DIRS})
+ check_symbol_exists(sqlite3_mutex_alloc sqlite3ext.h SQLite3_HAS_MUTEX_ALLOC)
+ check_symbol_exists(sqlite3_column_table_name sqlite3ext.h SQLite3_HAS_COLUMN_METADATA)
+ check_symbol_exists(sqlite3_rtree_query_callback sqlite3.h SQLite3_HAS_RTREE)
+ check_symbol_exists(sqlite3_load_extension sqlite3ext.h SQLite3_HAS_LOAD_EXTENSION)
+ # https://www.sqlite.org/compile.html recommends to build with -DSQLITE_OMIT_PROGRESS_CALLBACK
+ # "for applications that are able to use them"... This is sometimes wrongly
+ # understood as recommended in all situations.
+ check_symbol_exists(sqlite3_progress_handler sqlite3.h SQLite3_HAS_PROGRESS_HANDLER)
+
+ #if(NOT TARGET SQLite::SQLite3)
+ # add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
+ # set_target_properties(SQLite::SQLite3 PROPERTIES
+ # INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}"
+ # IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ # IMPORTED_LOCATION "${SQLite3_LIBRARY}")
+ #endif()
+
if (NOT DEFINED SQLite3_HAS_COLUMN_METADATA)
message(FATAL_ERROR "missing SQLite3_HAS_COLUMN_METADATA")
endif ()
@@ -566,7 +535,7 @@
gdal_check_package(SPATIALITE "Enable spatialite support for sqlite3" VERSION 4.1.2 CAN_DISABLE)
gdal_check_package(RASTERLITE2 "Enable RasterLite2 support for sqlite3" VERSION 1.1.0 CAN_DISABLE)

-find_package(LibKML COMPONENTS DOM ENGINE)
+find_package(LibKML COMPONENTS kmlengine kmldom kmlbase)
if (GDAL_USE_LIBKML)
if (NOT LibKML_FOUND)
message(FATAL_ERROR "Configured to use GDAL_USE_LIBKML, but not found")
diff -urN ./a/cmake/helpers/ConanFindPackage.cmake ./b/cmake/helpers/ConanFindPackage.cmake
--- ./a/cmake/helpers/ConanFindPackage.cmake 1969-12-31 18:00:00.000000000 -0600
+++ ./b/cmake/helpers/ConanFindPackage.cmake 2023-06-06 16:26:55.800008000 -0500
@@ -0,0 +1,43 @@
+
+function(define_find_package2 pkgname include_file library_name)
+endfunction()
+
+function(find_package2 pkgname)
+ set(_options QUIET REQUIRED)
+ set(_oneValueArgs OUT_DEPENDENCY)
+ set(_multiValueArgs)
+ cmake_parse_arguments(arg "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
+ if(arg_QUIET)
+ set(${pkgname}_FIND_QUIETLY TRUE)
+ endif()
+ if(arg_REQUIRED)
+ set(${pkgname}_FIND_REQUIRED TRUE)
+ endif()
+
+ string(TOUPPER ${pkgname} key)
+
+ set(docstring "Configured for conan package ${GDAL_CONAN_PACKAGE_FOR_${key}}")
+ if (DEFINED GDAL_CONAN_PACKAGE_FOR_${key})
+ message("Using conan package ${GDAL_CONAN_PACKAGE_FOR_${key}} for dependency ${pkgname}")
+ set(conan_package ${GDAL_CONAN_PACKAGE_FOR_${key}})
+ string(TOUPPER ${conan_package} conan_package_upper)
+
+ set(${key}_INCLUDE_DIRS "${CONAN_INCLUDE_DIRS_${conan_package_upper}}" CACHE STRING ${docstring})
+ if (NOT TARGET_FOR_${key})
+ set(TARGET_FOR_${key} "${conan_package}::${conan_package}")
+ endif()
+ set(${key}_LIBRARIES "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${key}_LIBRARY "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${key}_TARGET "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${pkgname}_INCLUDE_DIRS "CONAN_INCLUDE_DIRS_${conan_package_upper}" CACHE STRING ${docstring})
+ set(${pkgname}_LIBRARIES "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${pkgname}_LIBRARY "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${pkgname}_TARGET "${TARGET_FOR_${key}}" CACHE STRING ${docstring})
+ set(${key}_FOUND TRUE CACHE BOOL ${docstring})
+
+ else ()
+ message("dependency ${pkgname} has no conan package")
+ set(${key}_FOUND FALSE CACHE BOOL ${docstring})
+ endif()
+
+endfunction()
diff -urN ./a/frmts/hfa/CMakeLists.txt ./b/frmts/hfa/CMakeLists.txt
--- ./a/frmts/hfa/CMakeLists.txt 2023-05-02 08:47:11.000000000 -0500
+++ ./b/frmts/hfa/CMakeLists.txt 2023-06-06 16:54:31.162043900 -0500
@@ -15,7 +15,8 @@
hfa_overviews.cpp
BUILTIN)
gdal_standard_includes(gdal_HFA)
-target_include_directories(gdal_HFA PRIVATE $<TARGET_PROPERTY:PROJ::proj,INTERFACE_INCLUDE_DIRECTORIES>)
+target_link_libraries(gdal_HFA INTERFACE PROJ::proj)
+target_include_directories(gdal_HFA PRIVATE ${PROJ_INCLUDE_DIRS})
target_compile_definitions(gdal_HFA PRIVATE $<TARGET_PROPERTY:PROJ::proj,INTERFACE_COMPILE_DEFINITIONS>)

if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
diff -urN ./a/gdal.cmake ./b/gdal.cmake
--- ./a/gdal.cmake 2023-05-02 08:47:12.000000000 -0500
+++ ./b/gdal.cmake 2023-06-06 16:55:34.252830900 -0500
@@ -859,25 +859,6 @@
${CMAKE_CURRENT_BINARY_DIR}/GDALConfig.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/GDALConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/gdal/)

- # Generate gdal-config utility command and pkg-config module gdal.pc
- include(GdalGenerateConfig)
- gdal_generate_config(
- TARGET
- "${GDAL_LIB_TARGET_NAME}"
- GLOBAL_PROPERTY
- "gdal_private_link_libraries"
- GDAL_CONFIG
- "${PROJECT_BINARY_DIR}/apps/gdal-config"
- PKG_CONFIG
- "${CMAKE_CURRENT_BINARY_DIR}/gdal.pc")
- install(
- PROGRAMS ${PROJECT_BINARY_DIR}/apps/gdal-config
- DESTINATION ${CMAKE_INSTALL_BINDIR}
- COMPONENT applications)
- install(
- FILES ${CMAKE_CURRENT_BINARY_DIR}/gdal.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
- COMPONENT libraries)
endif ()

configure_file(${GDAL_CMAKE_TEMPLATE_PATH}/uninstall.cmake.in ${PROJECT_BINARY_DIR}/cmake_uninstall.cmake @ONLY)
diff -urN ./a/ogr/CMakeLists.txt ./b/ogr/CMakeLists.txt
--- ./a/ogr/CMakeLists.txt 2023-05-02 08:47:12.000000000 -0500
+++ ./b/ogr/CMakeLists.txt 2023-06-06 16:56:18.682151700 -0500
@@ -89,12 +89,12 @@

target_compile_definitions(ogr PRIVATE HAVE_MITAB)

-gdal_target_link_libraries(ogr PRIVATE PROJ::proj)
+target_link_libraries(ogr PUBLIC PROJ::proj)

# External libs then
if (GDAL_USE_GEOS)
target_compile_definitions(ogr PRIVATE -DHAVE_GEOS=1)
- gdal_target_link_libraries(ogr PRIVATE ${GEOS_TARGET})
+ target_link_libraries(ogr PUBLIC ${GEOS_TARGET})
endif ()

if (GDAL_USE_SFCGAL)
diff -urN ./a/ogr/ogr_proj_p.h ./b/ogr/ogr_proj_p.h
--- ./a/ogr/ogr_proj_p.h 2023-05-02 08:47:12.000000000 -0500
+++ ./b/ogr/ogr_proj_p.h 2023-06-06 16:56:30.772908800 -0500
@@ -29,7 +29,7 @@
#ifndef OGR_PROJ_P_H_INCLUDED
#define OGR_PROJ_P_H_INCLUDED

-#include "proj.h"
+#include <proj.h>

#include "cpl_mem_cache.h"