1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4#[=======================================================================[.rst: 5FindLibXslt 6----------- 7 8Find the XSL Transformations, Extensible Stylesheet Language 9Transformations (XSLT) library (LibXslt) 10 11IMPORTED Targets 12^^^^^^^^^^^^^^^^ 13 14.. versionadded:: 3.18 15 16The following :prop_tgt:`IMPORTED` targets may be defined: 17 18``LibXslt::LibXslt`` 19 If the libxslt library has been found 20``LibXslt::LibExslt`` 21 If the libexslt library has been found 22``LibXslt::xsltproc`` 23 If the xsltproc command-line executable has been found 24 25Result variables 26^^^^^^^^^^^^^^^^ 27 28This module will set the following variables in your project: 29 30 LIBXSLT_FOUND - system has LibXslt 31 LIBXSLT_INCLUDE_DIR - the LibXslt include directory 32 LIBXSLT_LIBRARIES - Link these to LibXslt 33 LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt 34 LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8) 35 36Additionally, the following two variables are set (but not required 37for using xslt): 38 39``LIBXSLT_EXSLT_INCLUDE_DIR`` 40 .. versionadded:: 3.18 41 The include directory for exslt. 42``LIBXSLT_EXSLT_LIBRARIES`` 43 Link to these if you need to link against the exslt library. 44``LIBXSLT_XSLTPROC_EXECUTABLE`` 45 Contains the full path to the xsltproc executable if found. 46#]=======================================================================] 47 48# use pkg-config to get the directories and then use these values 49# in the find_path() and find_library() calls 50find_package(PkgConfig QUIET) 51PKG_CHECK_MODULES(PC_LIBXSLT QUIET libxslt) 52set(LIBXSLT_DEFINITIONS ${PC_LIBXSLT_CFLAGS_OTHER}) 53 54find_path(LIBXSLT_INCLUDE_DIR NAMES libxslt/xslt.h 55 HINTS 56 ${PC_LIBXSLT_INCLUDEDIR} 57 ${PC_LIBXSLT_INCLUDE_DIRS} 58 ) 59 60# CMake 3.17 and below used 'LIBXSLT_LIBRARIES' as the name of 61# the cache entry storing the find_library result. Use the 62# value if it was set by the project or user. 63if(DEFINED LIBXSLT_LIBRARIES AND NOT DEFINED LIBXSLT_LIBRARY) 64 set(LIBXSLT_LIBRARY ${LIBXSLT_LIBRARIES}) 65endif() 66 67find_library(LIBXSLT_LIBRARY NAMES xslt libxslt 68 HINTS 69 ${PC_LIBXSLT_LIBDIR} 70 ${PC_LIBXSLT_LIBRARY_DIRS} 71 ) 72 73set(LIBXSLT_LIBRARIES ${LIBXSLT_LIBRARY}) 74 75PKG_CHECK_MODULES(PC_LIBXSLT_EXSLT QUIET libexslt) 76set(LIBXSLT_EXSLT_DEFINITIONS ${PC_LIBXSLT_EXSLT_CFLAGS_OTHER}) 77 78find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h 79 HINTS 80 ${PC_LIBXSLT_EXSLT_INCLUDEDIR} 81 ${PC_LIBXSLT_EXSLT_INCLUDE_DIRS} 82) 83 84find_library(LIBXSLT_EXSLT_LIBRARY NAMES exslt libexslt 85 HINTS 86 ${PC_LIBXSLT_LIBDIR} 87 ${PC_LIBXSLT_LIBRARY_DIRS} 88 ${PC_LIBXSLT_EXSLT_LIBDIR} 89 ${PC_LIBXSLT_EXSLT_LIBRARY_DIRS} 90 ) 91 92set(LIBXSLT_EXSLT_LIBRARIES ${LIBXSLT_EXSLT_LIBRARY} ) 93 94find_program(LIBXSLT_XSLTPROC_EXECUTABLE xsltproc) 95 96if(PC_LIBXSLT_VERSION) 97 set(LIBXSLT_VERSION_STRING ${PC_LIBXSLT_VERSION}) 98elseif(LIBXSLT_INCLUDE_DIR AND EXISTS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h") 99 file(STRINGS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h" libxslt_version_str 100 REGEX "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\".*\"") 101 102 string(REGEX REPLACE "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1" 103 LIBXSLT_VERSION_STRING "${libxslt_version_str}") 104 unset(libxslt_version_str) 105endif() 106 107include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) 108FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXslt 109 REQUIRED_VARS LIBXSLT_LIBRARIES LIBXSLT_INCLUDE_DIR 110 VERSION_VAR LIBXSLT_VERSION_STRING) 111 112mark_as_advanced(LIBXSLT_INCLUDE_DIR 113 LIBXSLT_LIBRARIES 114 LIBXSLT_EXSLT_LIBRARY 115 LIBXSLT_XSLTPROC_EXECUTABLE) 116 117if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibXslt) 118 add_library(LibXslt::LibXslt UNKNOWN IMPORTED) 119 set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_INCLUDE_DIR}") 120 set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_DEFINITIONS}") 121 set_property(TARGET LibXslt::LibXslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_LIBRARY}") 122endif() 123 124if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibExslt) 125 add_library(LibXslt::LibExslt UNKNOWN IMPORTED) 126 set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_EXSLT_INCLUDE_DIR}") 127 set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_EXSLT_DEFINITIONS}") 128 set_property(TARGET LibXslt::LibExslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_EXSLT_LIBRARY}") 129endif() 130 131if(LIBXSLT_XSLTPROC_EXECUTABLE AND NOT TARGET LibXslt::xsltproc) 132 add_executable(LibXslt::xsltproc IMPORTED) 133 set_target_properties(LibXslt::xsltproc PROPERTIES IMPORTED_LOCATION "${LIBXSLT_XSLTPROC_EXECUTABLE}") 134endif() 135