# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # # Copyright 2023 Google LLC # # Licensed under the Apache License v2.0 with LLVM Exceptions (the "License"); # you may not use this file except in compliance with the License. You may # obtain a copy of the License at # # https://llvm.org/LICENSE.txt # # 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. # # Author: Aleksei Vetrov #[=======================================================================[.rst: FindLibDw --------- Finds the DWARF processing library (libdw). Imported Targets ^^^^^^^^^^^^^^^^ This module provides the following imported targets, if found: ``LibDw::LibDw`` The LibDw library Result Variables ^^^^^^^^^^^^^^^^ This will define the following variables: ``LibDw_FOUND`` True if the system has the LibDw library. ``LibDw_VERSION`` The version of the LibDw library which was found. ``LibDw_INCLUDE_DIRS`` Include directories needed to use LibDw. ``LibDw_LIBRARIES`` Libraries needed to link to LibDw. ``LibDw_DEFINITIONS`` the compiler switches required for using LibDw Cache Variables ^^^^^^^^^^^^^^^ The following cache variables may also be set: ``LibDw_INCLUDE_DIR`` The directory containing ``dwarf.h``. ``LibDw_LIBRARY`` The path to the ``libdw.so``. #]=======================================================================] find_package(PkgConfig) pkg_check_modules(PC_LibDw QUIET libdw) find_library( LibDw_LIBRARY NAMES dw HINTS ${PC_LibDw_LIBDIR} ${PC_LibDw_LIBRARY_DIRS}) # Try the value from user if the library is not found. if(DEFINED LibDw_LIBRARIES AND NOT DEFINED LibDw_LIBRARY) set(LibDw_LIBRARY ${LibDw_LIBRARIES}) endif() mark_as_advanced(LibDw_LIBRARY) find_path( LibDw_INCLUDE_DIR NAMES dwarf.h HINTS ${PC_LibDw_INCLUDEDIR} ${PC_LibDw_INCLUDE_DIRS}) # Try the value from user if the library is not found. if(DEFINED LibDw_INCLUDE_DIRS AND NOT DEFINED LibDw_INCLUDE_DIR) set(LibDw_INCLUDE_DIR ${LibDw_INCLUDE_DIRS}) endif() mark_as_advanced(LibDw_INCLUDE_DIR) set(LibDw_VERSION ${PC_LibDw_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args( LibDw REQUIRED_VARS LibDw_LIBRARY LibDw_INCLUDE_DIR VERSION_VAR LibDw_VERSION) if(LibDw_FOUND) set(LibDw_LIBRARIES ${LibDw_LIBRARY}) set(LibDw_INCLUDE_DIRS ${LibDw_INCLUDE_DIR}) set(LibDw_DEFINITIONS ${PC_LibDw_CFLAGS_OTHER}) endif() if(LibDw_FOUND AND NOT TARGET LibDw::LibDw) add_library(LibDw::LibDw UNKNOWN IMPORTED) set_target_properties( LibDw::LibDw PROPERTIES IMPORTED_LOCATION "${LibDw_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${PC_LibDw_CFLAGS_OTHER}" INTERFACE_INCLUDE_DIRECTORIES "${LibDw_INCLUDE_DIR}") endif()