diff options
author | Cristian Adam <cristian.adam@qt.io> | 2020-01-24 17:09:56 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2020-01-28 14:18:19 +0000 |
commit | e6e0b0ca3bf77826e2ce2ca05776f2809f99931d (patch) | |
tree | 02f8b546f0633c75a1db1dd34f364ee1d3f185ec /cmake/Findelfutils.cmake | |
parent | 4da23c74910611ed99d18f9dfc8ff12194cbfd52 (diff) | |
download | qt-creator-e6e0b0ca3bf77826e2ce2ca05776f2809f99931d.tar.gz |
CMake Build: add perfparser
Change-Id: Ib16548befefbb827f2752300f9e67da3cf91570c
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'cmake/Findelfutils.cmake')
-rw-r--r-- | cmake/Findelfutils.cmake | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/cmake/Findelfutils.cmake b/cmake/Findelfutils.cmake new file mode 100644 index 0000000000..b4d043d53e --- /dev/null +++ b/cmake/Findelfutils.cmake @@ -0,0 +1,70 @@ +#.rst: +# Findelfutils +# ----------------- +# +# Try to locate the elfutils binary installation +# +# The ``ELFUTILS_INSTALL_DIR`` (CMake or Environment) variable should be used +# to pinpoint the elfutils binary installation +# +# If found, this will define the following variables: +# +# ``elfutils_FOUND`` +# True if the elfutils header and library files have been found +# +# ``elfutils::dw`` +# ``elfutils::elf`` +# Imported targets containing the includes and libraries need to build +# against +# + +if (TARGET elfutils::dw AND TARGET elfutils::elf) + set(elfutils_FOUND TRUE) + return() +endif() + +find_path(ELFUTILS_INCLUDE_DIR + NAMES libdwfl.h elfutils/libdwfl.h + PATH_SUFFIXES include + HINTS + "${ELFUTILS_INSTALL_DIR}" ENV ELFUTILS_INSTALL_DIR +) + +foreach(lib dw elf eu_compat) + find_library(ELFUTILS_LIB_${lib} + NAMES ${lib} + PATH_SUFFIXES lib + HINTS + "${ELFUTILS_INSTALL_DIR}" ENV ELFUTILS_INSTALL_DIR + ) +endforeach() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(elfutils + DEFAULT_MSG + ELFUTILS_INCLUDE_DIR ELFUTILS_LIB_dw ELFUTILS_LIB_elf +) + +if(elfutils_FOUND) + foreach(lib dw elf) + if (NOT TARGET elfutils::${lib}) + add_library(elfutils::${lib} UNKNOWN IMPORTED) + set_target_properties(elfutils::${lib} + PROPERTIES + IMPORTED_LOCATION "${ELFUTILS_LIB_${lib}}" + INTERFACE_INCLUDE_DIRECTORIES + "${ELFUTILS_INCLUDE_DIR};${ELFUTILS_INCLUDE_DIR}/elfutils" + ) + if (ELFUTILS_LIB_eu_compat) + target_link_libraries(elfutils::${lib} INTERFACE ${ELFUTILS_LIB_eu_compat}) + endif() + endif() + endforeach() +endif() + +mark_as_advanced(ELFUTILS_INCLUDE_DIR ELFUTILS_LIB_elf ELFUTILS_LIB_dw) + +include(FeatureSummary) +set_package_properties(elfutils PROPERTIES + URL "https://sourceware.org/elfutils/" + DESCRIPTION "a collection of utilities and libraries to read, create and modify ELF binary files") |