Revision: 76469
http://sourceforge.net/p/brlcad/code/76469
Author: starseeker
Date: 2020-07-24 15:59:27 +0000 (Fri, 24 Jul 2020)
Log Message:
-----------
Older version of FindGDAL isn't properly detecting - try newer one.
Modified Paths:
--------------
brlcad/branches/RELEASE/misc/CMake/FindGDAL.cmake
Modified: brlcad/branches/RELEASE/misc/CMake/FindGDAL.cmake
===================================================================
--- brlcad/branches/RELEASE/misc/CMake/FindGDAL.cmake 2020-07-24 14:41:17 UTC
(rev 76468)
+++ brlcad/branches/RELEASE/misc/CMake/FindGDAL.cmake 2020-07-24 15:59:27 UTC
(rev 76469)
@@ -1,4 +1,4 @@
-# Copyright 2000-2017 Kitware, Inc. and Contributors
+# Copyright 2000-2020 Kitware, Inc. and Contributors
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,30 +27,53 @@
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#.rst:
-# FindGDAL
-# --------
#
-# Locate gdal
-#
-# This module accepts the following environment variables:
-#
-# ::
-#
-# GDAL_DIR or GDAL_ROOT - Specify the location of GDAL
-#
-#
-#
-# This module defines the following CMake variables:
-#
-# ::
-#
-# GDAL_FOUND - True if libgdal is found
-# GDAL_LIBRARY - A variable pointing to the GDAL library
-# GDAL_INCLUDE_DIR - Where to find the headers
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
-#
+#[=======================================================================[.rst:
+FindGDAL
+--------
+
+Find Geospatial Data Abstraction Library (GDAL).
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` target ``GDAL::GDAL``
+if GDAL has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``GDAL_FOUND``
+ True if GDAL is found.
+``GDAL_INCLUDE_DIRS``
+ Include directories for GDAL headers.
+``GDAL_LIBRARIES``
+ Libraries to link to GDAL.
+``GDAL_VERSION``
+ The version of GDAL found.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``GDAL_LIBRARY``
+ The libgdal library file.
+``GDAL_INCLUDE_DIR``
+ The directory containing ``gdal.h``.
+
+Hints
+^^^^^
+
+Set ``GDAL_DIR`` or ``GDAL_ROOT`` in the environment to specify the
+GDAL installation prefix.
+#]=======================================================================]
+
# $GDALDIR is an environment variable that would
# correspond to the ./configure --prefix=$GDAL_DIR
# used in building gdal.
@@ -67,114 +90,105 @@
#
#include "gdal.h"
-include(CheckCSourceCompiles)
-function(GDALTRANS_TEST HGDALTRANS)
+find_path(GDAL_INCLUDE_DIR gdal.h
+ HINTS
+ ENV GDAL_DIR
+ ENV GDAL_ROOT
+ PATH_SUFFIXES
+ include/gdal
+ include/GDAL
+ include
+)
- set(CMAKE_REQUIRED_INCLUDES ${GDAL_INCLUDE_DIR})
- set(CMAKE_REQUIRED_LIBRARIES ${GDAL_LIBRARY})
+if(UNIX)
+ # 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
+ # libgdal.so...
+ find_program(GDAL_CONFIG gdal-config
+ HINTS
+ ENV GDAL_DIR
+ ENV GDAL_ROOT
+ PATH_SUFFIXES bin
+ )
- set(GT_SRCS "
- #include <gdal.h>
- #include <gdalwarper.h>
- #include <gdal_utils.h>
- #include <cpl_conv.h>
- #include <cpl_string.h>
- #include <cpl_multiproc.h>
- #include <ogr_spatialref.h>
- #include <vrtdataset.h>
+ if(GDAL_CONFIG)
+ exec_program(${GDAL_CONFIG} ARGS --libs OUTPUT_VARIABLE
GDAL_CONFIG_LIBS)
- int main(int ac, char *av[])
- {
- GDALDatasetH gd = GDALTranslate(NULL, NULL, NULL, NULL);
- }
- ")
+ if(GDAL_CONFIG_LIBS)
+ # treat the output as a command line and split it up
+ separate_arguments(args NATIVE_COMMAND "${GDAL_CONFIG_LIBS}")
- CHECK_C_SOURCE_COMPILES("${GT_SRCS}" H_GT)
+ # only consider libraries whose name matches this pattern
+ set(name_pattern "[gG][dD][aA][lL]")
- set(${HGDALTRANS} ${H_GT} PARENT_SCOPE)
+ # consider each entry as a possible library path, name, or parent
directory
+ foreach(arg IN LISTS args)
+ # library name
+ if("${arg}" MATCHES "^-l(.*)$")
+ set(lib "${CMAKE_MATCH_1}")
-endfunction(GDALTRANS_TEST)
+ # only consider libraries whose name matches the expected
pattern
+ if("${lib}" MATCHES "${name_pattern}")
+ list(APPEND _gdal_lib "${lib}")
+ endif()
+ # library search path
+ elseif("${arg}" MATCHES "^-L(.*)$")
+ list(APPEND _gdal_libpath "${CMAKE_MATCH_1}")
+ # assume this is a full path to a library
+ elseif(IS_ABSOLUTE "${arg}" AND EXISTS "${arg}")
+ # extract the file name
+ get_filename_component(lib "${arg}" NAME)
+ # only consider libraries whose name matches the expected
pattern
+ if(NOT "${lib}" MATCHES "${name_pattern}")
+ continue()
+ endif()
-find_path(GDAL_INCLUDE_DIR gdal.h
- HINTS
- ENV GDAL_DIR
- ENV GDAL_ROOT
- PATH_SUFFIXES
- include/gdal
- include/GDAL
- include
- PATHS
- ~/Library/Frameworks/gdal.framework/Headers
- /Library/Frameworks/gdal.framework/Headers
- /sw # Fink
- /opt/local # DarwinPorts
- /opt/csw # Blastwave
- /opt
- )
+ # extract the file directory
+ get_filename_component(dir "${arg}" DIRECTORY)
-# 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
-# libgdal.so...
-find_program(GDAL_CONFIG gdal-config
- HINTS
- ENV GDAL_DIR
- ENV GDAL_ROOT
- PATH_SUFFIXES bin
- PATHS
- /sw # Fink
- /opt/local # DarwinPorts
- /opt/csw # Blastwave
- /opt
- )
+ # remove library prefixes/suffixes
+ string(REGEX REPLACE
"^(${CMAKE_SHARED_LIBRARY_PREFIX}|${CMAKE_STATIC_LIBRARY_PREFIX})" "" lib
"${lib}")
+ string(REGEX REPLACE
"(${CMAKE_SHARED_LIBRARY_SUFFIX}|${CMAKE_STATIC_LIBRARY_SUFFIX})$" "" lib
"${lib}")
-if(GDAL_CONFIG AND NOT "${GDAL_CONFIG}" MATCHES "NOTFOUND")
- exec_program(${GDAL_CONFIG} ARGS --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS)
- if(GDAL_CONFIG_LIBS)
- string(REGEX MATCHALL "-l[^ ]+" _gdal_dashl ${GDAL_CONFIG_LIBS})
- string(REPLACE "-l" "" _gdal_lib "${_gdal_dashl}")
- string(REGEX MATCHALL "-L[^ ]+" _gdal_dashL ${GDAL_CONFIG_LIBS})
- string(REPLACE "-L" "" _gdal_libpath "${_gdal_dashL}")
- endif(GDAL_CONFIG_LIBS)
-endif(GDAL_CONFIG AND NOT "${GDAL_CONFIG}" MATCHES "NOTFOUND")
+ # use the file name and directory as hints
+ list(APPEND _gdal_libpath "${dir}")
+ list(APPEND _gdal_lib "${lib}")
+ endif()
+ endforeach()
+ endif()
+ endif()
+endif()
find_library(GDAL_LIBRARY
- NAMES ${_gdal_lib} gdal GDAL
+ NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
HINTS
- ENV GDAL_DIR
- ENV GDAL_ROOT
- ${_gdal_libpath}
+ ENV GDAL_DIR
+ ENV GDAL_ROOT
+ ${_gdal_libpath}
PATH_SUFFIXES lib
- PATHS
- /sw
- /opt/local
- /opt/csw
- /opt
- /usr/freeware
- )
+)
-# Check for GDALTranslate - if we don't have that, we're not in business
-if(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
- GDALTRANS_TEST(HAVE_GDALTRANSLATE)
- if(NOT HAVE_GDALTRANSLATE)
- set(GDAL_LIBRARY NOTFOUND)
- set(GDAL_INCLUDE_DIR "")
- endif(NOT HAVE_GDALTRANSLATE)
-endif(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
+if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
+ file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version
+ REGEX "GDAL_RELEASE_NAME")
+ string(REGEX REPLACE ".*\"\(.*\)\"" "\\1" GDAL_VERSION "${_gdal_version}")
+ unset(_gdal_version)
+else ()
+ set(GDAL_VERSION GDAL_VERSION-NOTFOUND)
+endif ()
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL DEFAULT_MSG GDAL_LIBRARY
GDAL_INCLUDE_DIR HAVE_GDALTRANSLATE)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL
+ VERSION_VAR GDAL_VERSION
+ REQUIRED_VARS GDAL_LIBRARY GDAL_INCLUDE_DIR)
-if(HAVE_GDALTRANSLATE)
- set(GDAL_LIBRARIES ${GDAL_LIBRARY})
- set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
-endif(HAVE_GDALTRANSLATE)
+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}")
+endif ()
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8
-
+set(GDAL_LIBRARIES ${GDAL_LIBRARY})
+set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits