Skip to content

Commit

Permalink
(#19298) gdal: migrate to Conan v2
Browse files Browse the repository at this point in the history
* gdal: migrate to Conan v2

* gdal/post_3.5.0: bump deps

* gdal/post_3.5.0: propagate libjpeg dependency option in graph

* gdal/post_3.5.0: migrate to Conan v2, WIP

* gdal/post_3.5.0: tidy

* gdal/post_3.5.0: adapt ConanFindPackage.cmake to make use of deps.set_properties() for renames

* gdal/post_3.5.0: drop v3.5.1

* gdal/post_3.5.0: fix external json-c not being used

* gdal/post_3.5.0: update v3.7.0, replace gdal_target_link_libraries everywhere

* gdal/post_3.5.0: always use zlib

* gdal/post_3.5.0: fix OpenEXR, HDF4, Arrow support

* gdal/post_3.5.0: more deps fixes

* gdal/post_3.5.0: add libarchive support

* gdal/post_3.5.0: add libjxl support

* gdal/post_3.5.0: add lerc support

* gdal/post_3.5.0: add basisu support

* gdal/post_3.5.0: add LZMA support

* gdal/post_3.5.0: add pdfium support

* gdal/post_3.5.0: add rasterlite2 support

* gdal/post_3.5.0: add missing GDAL_USE_*_INTERNAL vars

* gdal/post_3.5.0: did not mean to enable rasterlite2 by default

* gdal/post_3.5.0: fix rasterlite2 issue

* gdal/post_3.5.0: add spatialite support

* gdal/post_3.5.0: add external shapelib support

* gdal/post_3.5.0: fix typo

* gdal/post_3.5.0: make libtiff a required dependency

GDAL always requires either an external or internal version of it,
so might as well always use the non-vendored one.

* gdal/post_3.5.0: make internal-only deps configurable, don't use external shapelib

* gdal/post_3.5.0: ignore deprecated options in package_id

* gdal/post_3.5.0: bump deps

* gdal/post_3.5.0: merge and sort external/internal cmake settings

* gdal/post_3.5.0: set GDAL_SET_INSTALL_RELATIVE_RPATH=True

* gdal/post_3.5.0: add with_publicdecompwt option

* gdal/post_3.5.0: set all recommended and required options to True

* gdal/post_3.5.0: proj is not really an optional dependency

* gdal/post_3.5.0: separate commercial libs in pkg list

* gdal/post_3.5.0: add v3.7.1, simplify patches

* gdal/post_3.5.0: downgrade libpq

* gdal/post_3.5.0: configure all available GDAL_USE_* variables

* gdal/post_3.5.0: prevent any accidental use of system libs

* gdal/post_3.5.0: add QUIET to find_package2()

* gdal/post_3.5.0: fix libjpeg-turbo support

* gdal/post_3.5.0: fix jxl_threads support

* gdal: bump deps

* gdal: fix shared builds

Reverted back to using gdal_target_link_libraries() and fixed a number of issues caused by recursive CMakeDeps targets.

* gdal: use version ranges for libcurl and zlib

* gdal: fix v5.3.2 patch

* gdal: fix includes not being propagated correctly

* gdal: Conan v1 issue

* gdal: fix linter warnings

* gdal: fix patch issue

* gdal: bump to 3.7.2

* gdal/post_3.5.0: bump deps

* gdal/post_3.5.0: add missing system libs

* gdal: add v3.8.0, v3.7.3, v3.5.3, drop old versions

* gdal: bump deps

* gdal: disable pdfium

* gdal: update config.yml

* gdal: fix failing compilation checks on MSVC

* gdal: downgrade sqlite3 for proj

* gdal: fix hdf5 check

* gdal: add brunsli support

* gdal: add opencl support

* gdal: add tiledb

* gdal: add ecw support

* gdal: bump sqlite3 dependency

* gdal: fix brunsli option

* gdal: fix gdal data not being packaged

Fixes #15660.

* gdal: bump deps

* gdal: bump to v3.8.1

* gdal: improve patching

* gdal: disable libiconv on macOS

* gdal: drop ineffective libjpeg-turbo propagation

* gdal: bump deps

* gdal: add parquet support

* gdal: avoid the use of cache_variables

* gdal: configure ArrowDataset correctly

* gdal: fix ArrowDataset support by version

* gdal: fix arrow target name on 3.5

* gdal: disable arrow for v3.5

* gdal: bump to v3.8.2

* gdal: bump arrow

* gdal: further mark proprietary deps as such

* gdal: add libaec support

* gdal: bump proj

Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>

* gdal: add a workaround for iconv() incompatibilities

* gdal: fix v3.5.3 URL and related patch

* gdal: re-enable libiconv for apple-clang

* gdal: add short comments for deprecated options

* gdal: libiconv patches can be avoided

* gdal: revert 3.5.3 to v3.5.2 due to patching issues

* gdal: split two unrelated patches

* gdal: fix mistake in patch splitting

* gdal: prevent the use of system libs better

* gdal: simplify 2-allow-cycles-in-cmake-targets.patch

* gdal: bump v3.5.2 -> v3.5.3

* gdal: drop unused import

* gdal: bump 3.8.2 -> 3.8.3

* gdal: bump deps

* gdal: enable Armadillo

* gdal: bump deps

* gdal: fix a v3.5.3 CMake bug

* gdal: add CMAKE_TRY_COMPILE_CONFIGURATION for try_compile()

* Add deprecation warning message

* Do not set json-c include folder

* fix missing if condition

---------

Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
Co-authored-by: Rubén Rincón Blanco <git@rinconblanco.es>
Co-authored-by: Uilian Ries <uilianries@gmail.com>
  • Loading branch information
4 people authored Feb 20, 2024
1 parent 3fd1392 commit a1c6c89
Show file tree
Hide file tree
Showing 18 changed files with 960 additions and 1,600 deletions.
6 changes: 3 additions & 3 deletions recipes/gdal/config.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
versions:
"3.7.0":
"3.8.3":
folder: "post_3.5.0"
"3.5.2":
"3.7.3":
folder: "post_3.5.0"
"3.5.1":
"3.5.3":
folder: "post_3.5.0"
"3.4.3":
folder: "pre_3.5.0"
Expand Down
105 changes: 2 additions & 103 deletions recipes/gdal/post_3.5.0/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,50 +1,7 @@
cmake_minimum_required(VERSION 3.15)
project(gdal_cmake_wrapper)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

include(CMakePushCheckState)


if (${GDAL_USE_POPPLER})
find_package(poppler)
set(Poppler_VERSION_STRING ${poppler_VERSION})
add_library(Poppler::Poppler ALIAS poppler::libpoppler)
endif()

file(GLOB CONAN_GENERATED_CMAKE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/Find*.cmake")
foreach(CMAKE_FILE ${CONAN_GENERATED_CMAKE_FILES})
include(${CMAKE_FILE})
endforeach()

if (${GDAL_USE_ARROW})
find_package(Arrow REQUIRED)
add_library(arrow_shared ALIAS arrow::arrow)
endif()

if (${GDAL_USE_CRYPTOPP})
find_package(cryptopp REQUIRED)
add_library(CRYPTOPP::CRYPTOPP ALIAS ${TARGET_FOR_CRYPTOPP})
endif()

if (${GDAL_USE_DEFLATE})
find_package(libdeflate REQUIRED)
add_library(Deflate::Deflate ALIAS ${TARGET_FOR_DEFLATE})
endif()

if (${GDAL_USE_LZ4})
find_package(lz4 REQUIRED)
add_library(LZ4::LZ4 ALIAS lz4::lz4)
endif()

if (${GDAL_USE_BLOSC})
find_package(c-blosc REQUIRED)
add_library(Blosc::Blosc ALIAS c-blosc::c-blosc)
endif()

if (${GDAL_USE_OPENEXR})
if (GDAL_USE_OPENEXR)
find_package(Imath REQUIRED)
find_package(OpenEXR REQUIRED)
add_library(OpenEXR::IlmImf ALIAS OpenEXR::IlmThread)
Expand All @@ -56,62 +13,4 @@ if (${GDAL_USE_OPENEXR})
target_include_directories(OpenEXR::OpenEXR INTERFACE ${OpenEXR_INCLUDE_DIR})
endif()

if (${GDAL_USE_FREEXL})
find_package(freexl REQUIRED)
add_library(FREEXL::freexl ALIAS freexl::freexl)
endif()

if (${GDAL_USE_OPENJPEG})
add_library(OPENJPEG::OpenJPEG ALIAS OpenJPEG::OpenJPEG)
endif()

if (${GDAL_USE_GIF})
find_package(GIF REQUIRED)
endif()

if (${GDAL_USE_CFITSIO})
find_package(cfitsio)
add_library(CFITSIO::CFITSIO ALIAS cfitsio::cfitsio)
endif()

if (${GDAL_USE_SQLITE3})
find_package(SQLite3)
endif()

if (${GDAL_USE_LIBXML2})
find_package(LibXml2)
endif()

if (${GDAL_USE_POSTGRESQL})
find_package(PostgreSQL)
add_library(PostgreSQL::PostgreSQL ALIAS PostgreSQL::pq)
endif()

if (${GDAL_USE_HDF5})
find_package(HDF5)
set(HDF5_C_LIBRARIES HDF5::C)
endif()

if ("${GDAL_CONAN_PACKAGE_FOR_MYSQL}" STREQUAL "libmysqlclient")
find_package(mysql REQUIRED)
endif()
if ("${GDAL_CONAN_PACKAGE_FOR_MYSQL}" STREQUAL "mariadb-connector-c")
find_package(mariadb-connector-c REQUIRED)
endif()

if (${GDAL_USE_ZLIB})
find_package(ZLIB)
endif()

if ("${GDAL_CONAN_PACKAGE_FOR_JPEG}" STREQUAL "libjpeg-turbo")
find_package(libjpeg-turbo REQUIRED)
add_library(JPEG::JPEG ALIAS ${TARGET_FOR_JPEG})
endif()

if (${GDAL_USE_PCRE2})
find_package(PCRE2 REQUIRED)
add_library(PCRE2::PCRE2-8 ALIAS PCRE2::8BIT)
endif()


add_subdirectory("source_subfolder")
add_subdirectory(src)
48 changes: 48 additions & 0 deletions recipes/gdal/post_3.5.0/cmake/ConanFindPackage.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
function(define_find_package2 pkgname include_file library_name)
endfunction()
function(find_package2 pkgname)
# Remove args unsupported by find_package()
list(REMOVE_ITEM ARGN OUT_DEPENDENCY _find_dependency)
# Force CONFIG mode
list(REMOVE_ITEM ARGN MODULE NO_CONFIG NO_MODULE)
string(TOUPPER ${pkgname} key)
if(DEFINED GDAL_USE_${key} AND NOT GDAL_USE_${key})
set(${pkgname}_FOUND)
set(${key}_FOUND)
return()
endif()
find_package(${pkgname} ${ARGN}
QUIET
CONFIG
GLOBAL
# Forbid the use of system libs entirely
NO_DEFAULT_PATH
PATHS ${CMAKE_PREFIX_PATH}
)
# Add variables with upper-case package name in addition to the default ones
set(targets "")
foreach(lib ${${pkgname}_LIBRARIES})
if(TARGET ${lib})
list(APPEND targets ${lib})
endif()
endforeach()
# Add upper-case variables
set(${key}_DEFINITIONS "${${pkgname}_DEFINITIONS}" CACHE STRING "")
set(${key}_FOUND ${${pkgname}_FOUND} CACHE BOOL "")
set(${key}_INCLUDE_DIR "${${pkgname}_INCLUDE_DIR}" CACHE STRING "")
set(${key}_INCLUDE_DIRS "${${pkgname}_INCLUDE_DIRS}" CACHE STRING "")
set(${key}_LIBRARIES "${${pkgname}_LIBRARIES}" CACHE STRING "")
set(${key}_LIBRARY "${${pkgname}_LIBRARIES}" CACHE STRING "")
set(${key}_TARGET "${targets}" CACHE STRING "")
set(${key}_VERSION ${${pkgname}_VERSION} CACHE BOOL "")

# Add as cache vars for global visibility
set(${pkgname}_FOUND ${${pkgname}_FOUND} CACHE BOOL "")
set(${pkgname}_TARGET "${targets}" CACHE STRING "")
set(${pkgname}_VERSION ${${pkgname}_VERSION_STRING} CACHE BOOL "")

message(STATUS "Found ${pkgname}: ${${pkgname}_FOUND}")
message(STATUS " ${key}_TARGET: ${${key}_TARGET}")
message(STATUS " ${key}_LIBRARIES: ${${key}_LIBRARIES}")
message(STATUS " ${key}_INCLUDE_DIRS: ${${key}_INCLUDE_DIRS}")
endfunction()
57 changes: 39 additions & 18 deletions recipes/gdal/post_3.5.0/conandata.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,41 @@
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"
"3.8.3":
url: "https://github.com/OSGeo/gdal/releases/download/v3.8.3/gdal-3.8.3.tar.gz"
sha256: "f7a30387a8239e9da26200f787a02136df2ee6473e86b36d05ad682761a049ea"
"3.7.3":
url: "https://github.com/OSGeo/gdal/releases/download/v3.7.3/gdal-3.7.3.tar.gz"
sha256: "f66161e10b8b89a8a541cd760cd36d490114ed3f020a26db1489a6154db5d2be"
"3.5.3":
url: "https://github.com/OSGeo/gdal/releases/download/v3.5.3/gdal-3.5.3.tar.gz"
sha256: "a9ea0300d17e35bab71df4f16e62bb2fb8081caf994ab3ee0502ce4cf0d4e593"
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"
"3.5.1":
- patch_file: "patches/3.5.1/0-replace-find-package.patch"
base_path: "source_subfolder"
"3.8.3":
- patch_file: "patches/3.8.1/0-replace-find-package.patch"
patch_description: "Use custom version of find_package() for Conan deps"
patch_type: "conan"
- patch_file: "patches/3.7.3/1-do-not-force-private-linking.patch"
patch_description: "Fix private linking not working for some Conan dependencies"
patch_type: "conan"
- patch_file: "patches/3.5.3/2-allow-cycles-in-cmake-targets.patch"
patch_description: "Fix CMake failure due to cyclical dependencies in CMakeDeps targets"
patch_type: "conan"
"3.7.3":
- patch_file: "patches/3.7.3/0-replace-find-package.patch"
patch_description: "Use custom version of find_package() for Conan deps"
patch_type: "conan"
- patch_file: "patches/3.7.3/1-do-not-force-private-linking.patch"
patch_description: "Fix private linking not working for some Conan dependencies"
patch_type: "conan"
- patch_file: "patches/3.5.3/2-allow-cycles-in-cmake-targets.patch"
patch_description: "Fix CMake failure due to cyclical dependencies in CMakeDeps targets"
patch_type: "conan"
"3.5.3":
- patch_file: "patches/3.5.3/0-replace-find-package.patch"
patch_description: "Use custom version of find_package() for Conan deps"
patch_type: "conan"
- patch_file: "patches/3.5.3/1-do-not-force-private-linking.patch"
patch_description: "Fix private linking not working for some Conan dependencies"
patch_type: "conan"
- patch_file: "patches/3.5.3/2-allow-cycles-in-cmake-targets.patch"
patch_description: "Fix CMake failure due to cyclical dependencies in CMakeDeps targets"
patch_type: "conan"
Loading

0 comments on commit a1c6c89

Please sign in to comment.