1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2 # file Copyright.txt or https://cmake.org/licensing for details. 4 # XXX: Copied from CMake, but includes vtkDetectLibraryType. 5 # See https://gitlab.kitware.com/cmake/cmake/-/issues/18564 7 #[=======================================================================[.rst: 11 Find the native Expat headers and library.
16 This module defines the following :prop_tgt:`IMPORTED` targets:
19 The Expat ``expat`` library,
if found.
24 This module will
set the following variables in your project:
26 ``EXPAT_INCLUDE_DIRS``
27 where to find expat.h, etc.
29 the libraries to link against to use Expat.
31 true if the Expat headers and libraries were found.
33 #]=======================================================================]
35 find_package(PkgConfig QUIET)
37 pkg_check_modules(PC_EXPAT QUIET expat)
39 # Look for the header file. 40 find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})
42 # Look for the library. 43 find_library(EXPAT_LIBRARY NAMES expat libexpat HINTS ${PC_EXPAT_LIBRARY_DIRS})
45 if (EXPAT_INCLUDE_DIR AND EXISTS
"${EXPAT_INCLUDE_DIR}/expat.h")
46 file(STRINGS
"${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str
47 REGEX
"^#[\t ]*define[\t ]+XML_(MAJOR|MINOR|MICRO)_VERSION[\t ]+[0-9]+$")
49 unset(EXPAT_VERSION_STRING)
50 foreach(VPART MAJOR MINOR MICRO)
51 foreach(VLINE ${expat_version_str})
52 if(VLINE MATCHES
"^#[\t ]*define[\t ]+XML_${VPART}_VERSION[\t ]+([0-9]+)$")
53 set(EXPAT_VERSION_PART
"${CMAKE_MATCH_1}")
54 if(EXPAT_VERSION_STRING)
55 string(APPEND EXPAT_VERSION_STRING
".${EXPAT_VERSION_PART}")
57 set(EXPAT_VERSION_STRING
"${EXPAT_VERSION_PART}")
64 include(FindPackageHandleStandardArgs)
65 FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT
66 REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR
67 VERSION_VAR EXPAT_VERSION_STRING)
69 # Copy the results to the output variables and target. 71 set(EXPAT_LIBRARIES ${EXPAT_LIBRARY})
72 set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR})
74 if(NOT TARGET EXPAT::EXPAT)
75 include(vtkDetectLibraryType)
77 PATH
"${EXPAT_LIBRARY}")
78 add_library(EXPAT::EXPAT
"${expat_library_type}" IMPORTED)
79 unset(expat_library_type)
80 set_target_properties(EXPAT::EXPAT PROPERTIES
81 IMPORTED_LINK_INTERFACE_LANGUAGES
"C" 82 IMPORTED_LOCATION
"${EXPAT_LIBRARY}" 83 IMPORTED_IMPLIB
"${EXPAT_LIBRARY}" 84 INTERFACE_INCLUDE_DIRECTORIES
"${EXPAT_INCLUDE_DIRS}")
88 mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY)
function vtk_detect_library_type(output)
Detect library type of a library.