# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file COPYING-CMAKE-SCRIPTS or https://cmake.org/licensing for details. #.rst: # FindShapelib # ----------- # # Copyright (c) 2018, Hiroshi Miura # find_package(PkgConfig QUIET) if(PKG_CONFIG_FOUND) pkg_check_modules(PC_Shapelib QUIET shapelib) endif() find_path(Shapelib_INCLUDE_DIR NAMES shapefil.h HINTS ${PC_Shapelib_INCLUDE_DIRS}) if(Shapelib_INCLUDE_DIR) if(PC_Shapelib_VERSION) set(Shapelib_VERSION ${PC_Shapelib_VERSION}) else() file(READ ${Shapelib_INCLUDE_DIR}/shapefil.h _shapefil_h_contents) string(REGEX MATCH "Id: shapefil.h,v ([0-9.]+)" Shapelib_H_VERSION "${_shapefil_h_contents}") string(REGEX MATCH "([0-9].[0-9][0-9])" Shapelib_H_VERSION "${Shapelib_H_VERSION}") # shapefil.h 1.26 = release 1.2.10 # shapefil.h 1.52 = release 1.3.0 # shapefil.h 1.55 = release 1.4.0, 1.4.1 if(Shapelib_H_VERSION VERSION_LESS 1.26) message(WARNING "Shapelib version detection failed") elseif(Shapelib_H_VERSION VERSION_LESS 1.52) set(Shapelib_VERSION 1.2.10) elseif(Shapelib_H_VERSION VERSION_LESS 1.55) set(Shapelib_VERSION 1.3.0) else() set(Shapelib_VERSION 1.4.0) endif() endif() endif() if(MSVC) set(Shapelib_LIBNAME shapelib) else() set(Shapelib_LIBNAME shp) endif() find_library(Shapelib_LIBRARY NAMES ${Shapelib_LIBNAME}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Shapelib FOUND_VAR Shapelib_FOUND REQUIRED_VARS Shapelib_INCLUDE_DIR Shapelib_LIBRARY VERSION_VAR Shapelib_VERSION ) mark_as_advanced(Shapelib_INCLUDE_DIR Shapelib_LIBRARY) if(Shapelib_FOUND) set(Shapelib_INCLUDE_DIRS "${Shapelib_INCLUDE_DIR}") set(Shapelib_LIBRARIES "${Shapelib_LIBRARY}") if(NOT TARGET SHAPELIB::shp) add_library(SHAPELIB::shp UNKNOWN IMPORTED) set_target_properties(SHAPELIB::shp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${Shapelib_INCLUDE_DIR}" IMPORTED_LINK_INTERFACE_LANGUAGES C IMPORTED_LOCATION "${Shapelib_LIBRARY}") endif() endif()