# =================================================================== # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # =================================================================== cmake_minimum_required(VERSION 3.12) #.rst: # FindUnbound # ----------- # # Find the Unbound library and headers. # # IMPORTED Targets # ^^^^^^^^^^^^^^^^ # # This module defines :prop_tgt:`IMPORTED` target ``Unbound::Unbound``, if # libunbound has been found. # # Result Variables # ^^^^^^^^^^^^^^^^ # # This module defines the following variables: # # :: # # Unbound_FOUND - True if libunbound was found. # UNBOUND_VERSION - The version of libunbound found (x.y.z). # UNBOUND_INCLUDE_DIR - Where to find unbound.h. # UNBOUND_LIBRARY - Linker switches to use with ld to link the library. # # Hints # ^^^^^ # # A user may set ``Unbound_ROOT`` to tell this module where to look. include(FindPackageHandleStandardArgs) include(GNUInstallDirs) set(Unbound_FOUND FALSE) if(DEFINED Unbound_ROOT) # Search in the provided root path set(_root_search PATHS ${Unbound_ROOT} NO_DEFAULT_PATH) list(APPEND _unbound_searches _root_search) endif() # Search in default paths set(_default_search) list(APPEND _unbound_searches _default_search) # Try each search configuration foreach(search ${_unbound_searches}) find_path(UNBOUND_INCLUDE_DIR NAMES "unbound.h" ${${search}} PATH_SUFFIXES "include" "${CMAKE_INSTALL_INCLUDEDIR}") if(UNBOUND_INCLUDE_DIR AND EXISTS "${UNBOUND_INCLUDE_DIR}/unbound.h") # Use the first successful search to find the libraries if(NOT DEFINED libsearch) set(libsearch ${search}) endif() endif() endforeach() find_library(UNBOUND_LIBRARY NAMES "unbound" NAMES_PER_DIR ${${libsearch}} PATH_SUFFIXES "lib" "${CMAKE_INSTALL_LIBDIR}") # Extract the version number from the header if(UNBOUND_INCLUDE_DIR AND EXISTS "${UNBOUND_INCLUDE_DIR}/unbound.h") file(STRINGS "${UNBOUND_INCLUDE_DIR}/unbound.h" _major REGEX "^ *# *define +UNBOUND_VERSION_MAJOR +[0-9]+.*$") file(STRINGS "${UNBOUND_INCLUDE_DIR}/unbound.h" _minor REGEX "^ *# *define +UNBOUND_VERSION_MINOR +[0-9]+.*$") file(STRINGS "${UNBOUND_INCLUDE_DIR}/unbound.h" _micro REGEX "^ *# *define +UNBOUND_VERSION_MICRO +[0-9]+.*$") string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _major ${_major}) string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _minor ${_minor}) string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _micro ${_micro}) set(UNBOUND_VERSION "${_major}.${_minor}.${_micro}") endif() find_package_handle_standard_args(Unbound REQUIRED_VARS UNBOUND_LIBRARY UNBOUND_INCLUDE_DIR VERSION_VAR UNBOUND_VERSION) if(Unbound_FOUND) add_library(Unbound::Unbound UNKNOWN IMPORTED) set_target_properties(Unbound::Unbound PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${UNBOUND_INCLUDE_DIR}" IMPORTED_LOCATION "${UNBOUND_LIBRARY}") set(UNBOUND_PC_LIBS "${UNBOUND_LIBRARY}") endif()