1*9e3b08aeSAndroid Build Coastguard Worker# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 2*9e3b08aeSAndroid Build Coastguard Worker# 3*9e3b08aeSAndroid Build Coastguard Worker# Copyright 2023 Google LLC 4*9e3b08aeSAndroid Build Coastguard Worker# 5*9e3b08aeSAndroid Build Coastguard Worker# Licensed under the Apache License v2.0 with LLVM Exceptions (the "License"); 6*9e3b08aeSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. You may 7*9e3b08aeSAndroid Build Coastguard Worker# obtain a copy of the License at 8*9e3b08aeSAndroid Build Coastguard Worker# 9*9e3b08aeSAndroid Build Coastguard Worker# https://llvm.org/LICENSE.txt 10*9e3b08aeSAndroid Build Coastguard Worker# 11*9e3b08aeSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*9e3b08aeSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13*9e3b08aeSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14*9e3b08aeSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 15*9e3b08aeSAndroid Build Coastguard Worker# the License. 16*9e3b08aeSAndroid Build Coastguard Worker# 17*9e3b08aeSAndroid Build Coastguard Worker# Author: Aleksei Vetrov 18*9e3b08aeSAndroid Build Coastguard Worker 19*9e3b08aeSAndroid Build Coastguard Worker#[=======================================================================[.rst: 20*9e3b08aeSAndroid Build Coastguard WorkerFindLibDw 21*9e3b08aeSAndroid Build Coastguard Worker--------- 22*9e3b08aeSAndroid Build Coastguard Worker 23*9e3b08aeSAndroid Build Coastguard WorkerFinds the DWARF processing library (libdw). 24*9e3b08aeSAndroid Build Coastguard Worker 25*9e3b08aeSAndroid Build Coastguard WorkerImported Targets 26*9e3b08aeSAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^ 27*9e3b08aeSAndroid Build Coastguard Worker 28*9e3b08aeSAndroid Build Coastguard WorkerThis module provides the following imported targets, if found: 29*9e3b08aeSAndroid Build Coastguard Worker 30*9e3b08aeSAndroid Build Coastguard Worker``LibDw::LibDw`` 31*9e3b08aeSAndroid Build Coastguard Worker The LibDw library 32*9e3b08aeSAndroid Build Coastguard Worker 33*9e3b08aeSAndroid Build Coastguard WorkerResult Variables 34*9e3b08aeSAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^ 35*9e3b08aeSAndroid Build Coastguard Worker 36*9e3b08aeSAndroid Build Coastguard WorkerThis will define the following variables: 37*9e3b08aeSAndroid Build Coastguard Worker 38*9e3b08aeSAndroid Build Coastguard Worker``LibDw_FOUND`` 39*9e3b08aeSAndroid Build Coastguard Worker True if the system has the LibDw library. 40*9e3b08aeSAndroid Build Coastguard Worker``LibDw_VERSION`` 41*9e3b08aeSAndroid Build Coastguard Worker The version of the LibDw library which was found. 42*9e3b08aeSAndroid Build Coastguard Worker``LibDw_INCLUDE_DIRS`` 43*9e3b08aeSAndroid Build Coastguard Worker Include directories needed to use LibDw. 44*9e3b08aeSAndroid Build Coastguard Worker``LibDw_LIBRARIES`` 45*9e3b08aeSAndroid Build Coastguard Worker Libraries needed to link to LibDw. 46*9e3b08aeSAndroid Build Coastguard Worker``LibDw_DEFINITIONS`` 47*9e3b08aeSAndroid Build Coastguard Worker the compiler switches required for using LibDw 48*9e3b08aeSAndroid Build Coastguard Worker 49*9e3b08aeSAndroid Build Coastguard WorkerCache Variables 50*9e3b08aeSAndroid Build Coastguard Worker^^^^^^^^^^^^^^^ 51*9e3b08aeSAndroid Build Coastguard Worker 52*9e3b08aeSAndroid Build Coastguard WorkerThe following cache variables may also be set: 53*9e3b08aeSAndroid Build Coastguard Worker 54*9e3b08aeSAndroid Build Coastguard Worker``LibDw_INCLUDE_DIR`` 55*9e3b08aeSAndroid Build Coastguard Worker The directory containing ``dwarf.h``. 56*9e3b08aeSAndroid Build Coastguard Worker``LibDw_LIBRARY`` 57*9e3b08aeSAndroid Build Coastguard Worker The path to the ``libdw.so``. 58*9e3b08aeSAndroid Build Coastguard Worker 59*9e3b08aeSAndroid Build Coastguard Worker#]=======================================================================] 60*9e3b08aeSAndroid Build Coastguard Worker 61*9e3b08aeSAndroid Build Coastguard Workerfind_package(PkgConfig) 62*9e3b08aeSAndroid Build Coastguard Workerpkg_check_modules(PC_LibDw QUIET libdw) 63*9e3b08aeSAndroid Build Coastguard Worker 64*9e3b08aeSAndroid Build Coastguard Workerfind_library( 65*9e3b08aeSAndroid Build Coastguard Worker LibDw_LIBRARY 66*9e3b08aeSAndroid Build Coastguard Worker NAMES dw 67*9e3b08aeSAndroid Build Coastguard Worker HINTS ${PC_LibDw_LIBDIR} ${PC_LibDw_LIBRARY_DIRS}) 68*9e3b08aeSAndroid Build Coastguard Worker# Try the value from user if the library is not found. 69*9e3b08aeSAndroid Build Coastguard Workerif(DEFINED LibDw_LIBRARIES AND NOT DEFINED LibDw_LIBRARY) 70*9e3b08aeSAndroid Build Coastguard Worker set(LibDw_LIBRARY ${LibDw_LIBRARIES}) 71*9e3b08aeSAndroid Build Coastguard Workerendif() 72*9e3b08aeSAndroid Build Coastguard Workermark_as_advanced(LibDw_LIBRARY) 73*9e3b08aeSAndroid Build Coastguard Worker 74*9e3b08aeSAndroid Build Coastguard Workerfind_path( 75*9e3b08aeSAndroid Build Coastguard Worker LibDw_INCLUDE_DIR 76*9e3b08aeSAndroid Build Coastguard Worker NAMES dwarf.h 77*9e3b08aeSAndroid Build Coastguard Worker HINTS ${PC_LibDw_INCLUDEDIR} ${PC_LibDw_INCLUDE_DIRS}) 78*9e3b08aeSAndroid Build Coastguard Worker# Try the value from user if the library is not found. 79*9e3b08aeSAndroid Build Coastguard Workerif(DEFINED LibDw_INCLUDE_DIRS AND NOT DEFINED LibDw_INCLUDE_DIR) 80*9e3b08aeSAndroid Build Coastguard Worker set(LibDw_INCLUDE_DIR ${LibDw_INCLUDE_DIRS}) 81*9e3b08aeSAndroid Build Coastguard Workerendif() 82*9e3b08aeSAndroid Build Coastguard Workermark_as_advanced(LibDw_INCLUDE_DIR) 83*9e3b08aeSAndroid Build Coastguard Worker 84*9e3b08aeSAndroid Build Coastguard Workerset(LibDw_VERSION ${PC_LibDw_VERSION}) 85*9e3b08aeSAndroid Build Coastguard Worker 86*9e3b08aeSAndroid Build Coastguard Workerinclude(FindPackageHandleStandardArgs) 87*9e3b08aeSAndroid Build Coastguard Workerfind_package_handle_standard_args( 88*9e3b08aeSAndroid Build Coastguard Worker LibDw 89*9e3b08aeSAndroid Build Coastguard Worker REQUIRED_VARS LibDw_LIBRARY LibDw_INCLUDE_DIR 90*9e3b08aeSAndroid Build Coastguard Worker VERSION_VAR LibDw_VERSION) 91*9e3b08aeSAndroid Build Coastguard Worker 92*9e3b08aeSAndroid Build Coastguard Workerif(LibDw_FOUND) 93*9e3b08aeSAndroid Build Coastguard Worker set(LibDw_LIBRARIES ${LibDw_LIBRARY}) 94*9e3b08aeSAndroid Build Coastguard Worker set(LibDw_INCLUDE_DIRS ${LibDw_INCLUDE_DIR}) 95*9e3b08aeSAndroid Build Coastguard Worker set(LibDw_DEFINITIONS ${PC_LibDw_CFLAGS_OTHER}) 96*9e3b08aeSAndroid Build Coastguard Workerendif() 97*9e3b08aeSAndroid Build Coastguard Worker 98*9e3b08aeSAndroid Build Coastguard Workerif(LibDw_FOUND AND NOT TARGET LibDw::LibDw) 99*9e3b08aeSAndroid Build Coastguard Worker add_library(LibDw::LibDw UNKNOWN IMPORTED) 100*9e3b08aeSAndroid Build Coastguard Worker set_target_properties( 101*9e3b08aeSAndroid Build Coastguard Worker LibDw::LibDw 102*9e3b08aeSAndroid Build Coastguard Worker PROPERTIES IMPORTED_LOCATION "${LibDw_LIBRARY}" 103*9e3b08aeSAndroid Build Coastguard Worker INTERFACE_COMPILE_OPTIONS "${PC_LibDw_CFLAGS_OTHER}" 104*9e3b08aeSAndroid Build Coastguard Worker INTERFACE_INCLUDE_DIRECTORIES "${LibDw_INCLUDE_DIR}") 105*9e3b08aeSAndroid Build Coastguard Workerendif() 106