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
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to