From 140344da14b5ab62db78328e06686bf03ba1fe14 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:17:52 -0500 Subject: FindGDAL: fix some indentation --- Modules/FindGDAL.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 406a738..2e0a5d0 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -68,9 +68,9 @@ find_path(GDAL_INCLUDE_DIR gdal.h ENV GDAL_DIR ENV GDAL_ROOT PATH_SUFFIXES - include/gdal - include/GDAL - include + include/gdal + include/GDAL + include ) if(UNIX) -- cgit v0.12 From 02e906305d919f553d009488f8a25b248d01aa48 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:18:10 -0500 Subject: FindGDAL: use execute_process instead of exec_program --- Modules/FindGDAL.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 2e0a5d0..80d91b2 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -86,7 +86,7 @@ if(UNIX) ) if(GDAL_CONFIG) - exec_program(${GDAL_CONFIG} ARGS --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS) + execute_process(COMMAND ${GDAL_CONFIG} --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS) if(GDAL_CONFIG_LIBS) # treat the output as a command line and split it up -- cgit v0.12 From 3f6a4f2062f998512da619a0bd318f11c931f508 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:18:53 -0500 Subject: FindGDAL: mark cache variables as advanced --- Modules/FindGDAL.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 80d91b2..e2c9514 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -72,6 +72,7 @@ find_path(GDAL_INCLUDE_DIR gdal.h include/GDAL include ) +mark_as_advanced(GDAL_INCLUDE_DIR) if(UNIX) # Use gdal-config to obtain the library version (this should hopefully @@ -84,6 +85,7 @@ if(UNIX) ENV GDAL_ROOT PATH_SUFFIXES bin ) + mark_as_advanced(GDAL_CONFIG) if(GDAL_CONFIG) execute_process(COMMAND ${GDAL_CONFIG} --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS) @@ -142,6 +144,7 @@ find_library(GDAL_LIBRARY ${_gdal_libpath} PATH_SUFFIXES lib ) +mark_as_advanced(GDAL_LIBRARY) if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h") file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version -- cgit v0.12 From 3caaff4c080ce20aa44810f4c033a1cc551ccab7 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:19:19 -0500 Subject: FindGDAL: conditionally set the output variables --- Modules/FindGDAL.cmake | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index e2c9514..140504c 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -160,12 +160,14 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL VERSION_VAR GDAL_VERSION REQUIRED_VARS GDAL_LIBRARY GDAL_INCLUDE_DIR) -if (GDAL_FOUND AND NOT TARGET GDAL::GDAL) - add_library(GDAL::GDAL UNKNOWN IMPORTED) - set_target_properties(GDAL::GDAL PROPERTIES - IMPORTED_LOCATION "${GDAL_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${GDAL_INCLUDE_DIR}") +if (GDAL_FOUND) + set(GDAL_LIBRARIES ${GDAL_LIBRARY}) + set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR}) + + if (NOT TARGET GDAL::GDAL) + add_library(GDAL::GDAL UNKNOWN IMPORTED) + set_target_properties(GDAL::GDAL PROPERTIES + IMPORTED_LOCATION "${GDAL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GDAL_INCLUDE_DIR}") + endif () endif () - -set(GDAL_LIBRARIES ${GDAL_LIBRARY}) -set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR}) -- cgit v0.12 From 1621cb3eb19fc27e2cec78448f7ef75688d071b3 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:24:16 -0500 Subject: FindGDAL: add documentation to cache variables --- Modules/FindGDAL.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 140504c..012024b 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -71,6 +71,7 @@ find_path(GDAL_INCLUDE_DIR gdal.h include/gdal include/GDAL include + DOC "Path to the GDAL include directory" ) mark_as_advanced(GDAL_INCLUDE_DIR) @@ -84,6 +85,7 @@ if(UNIX) ENV GDAL_DIR ENV GDAL_ROOT PATH_SUFFIXES bin + DOC "Path to the gdal-config tool" ) mark_as_advanced(GDAL_CONFIG) @@ -143,6 +145,7 @@ find_library(GDAL_LIBRARY ENV GDAL_ROOT ${_gdal_libpath} PATH_SUFFIXES lib + DOC "Path to the GDAL library" ) mark_as_advanced(GDAL_LIBRARY) -- cgit v0.12 From 1b2774450d346da0e817cdd3e7b909f817ab450f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:24:32 -0500 Subject: FindGDAL: add support for skipping gdal-config This can be confusing if there are autotools and CMake-built GDAL builds within the same environment as the autotools variant will always be preferred. --- Modules/FindGDAL.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 012024b..03d353d 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -45,6 +45,13 @@ Hints Set ``GDAL_DIR`` or ``GDAL_ROOT`` in the environment to specify the GDAL installation prefix. + +The following variables may be set to modify the search strategy: + +``FindGDAL_SKIP_GDAL_CONFIG`` + If set, ``gdal-config`` will not be used. This can be useful if there are + GDAL libraries built with autotools (which provide the tool) and CMake (which + do not) in the same environment. #]=======================================================================] # $GDALDIR is an environment variable that would @@ -75,7 +82,7 @@ find_path(GDAL_INCLUDE_DIR gdal.h ) mark_as_advanced(GDAL_INCLUDE_DIR) -if(UNIX) +if(UNIX AND NOT FindGDAL_SKIP_GDAL_CONFIG) # Use gdal-config to obtain the library version (this should hopefully # allow us to -lgdal1.x.y where x.y are correct version) # For some reason, libgdal development packages do not contain -- cgit v0.12 From f4b53faddaccdddd5238c3aaf8ef4f1c01a1b350 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:25:17 -0500 Subject: FindGDAL: support finding additional GDAL library names --- Modules/FindGDAL.cmake | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 03d353d..5237e15 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -52,6 +52,8 @@ The following variables may be set to modify the search strategy: If set, ``gdal-config`` will not be used. This can be useful if there are GDAL libraries built with autotools (which provide the tool) and CMake (which do not) in the same environment. +``GDAL_ADDITIONAL_LIBRARY_VERSIONS`` + Extra versions of library names to search for. #]=======================================================================] # $GDALDIR is an environment variable that would @@ -145,8 +147,20 @@ if(UNIX AND NOT FindGDAL_SKIP_GDAL_CONFIG) endif() endif() +# GDAL name its library when built with CMake as `gdal${major}${minor}`. +set(_gdal_versions + ${GDAL_ADDITIONAL_LIBRARY_VERSIONS} 3.0 2.4 2.3 2.2 2.1 2.0 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2) + +set(_gdal_libnames) +foreach (_gdal_version IN LISTS _gdal_versions) + string(REPLACE "." "" _gdal_version "${_gdal_version}") + list(APPEND _gdal_libnames "gdal${_gdal_version}" "GDAL${_gdal_version}") +endforeach () +unset(_gdal_version) +unset(_gdal_versions) + find_library(GDAL_LIBRARY - NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL + NAMES ${_gdal_lib} ${_gdal_libnames} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL HINTS ENV GDAL_DIR ENV GDAL_ROOT @@ -155,6 +169,8 @@ find_library(GDAL_LIBRARY DOC "Path to the GDAL library" ) mark_as_advanced(GDAL_LIBRARY) +unset(_gdal_libnames) +unset(_gdal_lib) if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h") file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version -- cgit v0.12 From 55e493928b64094d739e7b175d89d62e267b7cb0 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 10 Feb 2021 15:28:20 -0500 Subject: FindGDAL: add release note --- Help/release/3.20.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Help/release/3.20.rst b/Help/release/3.20.rst index 4a3ff70..16d4b21 100644 --- a/Help/release/3.20.rst +++ b/Help/release/3.20.rst @@ -186,6 +186,12 @@ Modules toolkits when ``nvcc`` is a symbolic link, for example due to a ``ccache`` or ``colornvcc`` wrapper script. +* The :module:`FindGDAL` module has been improved to document and mark as + advanced its cache variables. There is a new ``FindGDAL_SKIP_GDAL_CONFIG`` + variable which may be used to skip over the ``gdal-config``-based search. + Users may also set ``GDAL_ADDITIONAL_LIBRARY_VERSIONS`` to add additional + versions to the library name search strategy. + * The :module:`FindIntl` module now provides an imported target. * The :module:`FindOpenSSL` module learned to support a version range. -- cgit v0.12