diff options
author | Vicent Marti <tanoku@gmail.com> | 2016-04-20 13:24:54 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2016-04-20 13:24:54 +0200 |
commit | 0612db5fff2f2b14349fa8c9ce55e42ff1d5ea51 (patch) | |
tree | b1c19081f0bcebf8ebff085ac9f24d2589ddf269 /cmake | |
parent | ff9ff5d6eed016372c590cd2ddde8dd312ddf21d (diff) | |
download | bcc-0612db5fff2f2b14349fa8c9ce55e42ff1d5ea51.tar.gz |
cmake: Add dependency to LibELF
Add a new a `FindLibElf.cmake` package, and use it to link the main
`libbcc` library against the system's LibELF. This library will be used
to re-implement functionality that was previously dependent on
`binutils`.
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindLibElf.cmake | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/cmake/FindLibElf.cmake b/cmake/FindLibElf.cmake new file mode 100644 index 00000000..8968b3e8 --- /dev/null +++ b/cmake/FindLibElf.cmake @@ -0,0 +1,64 @@ +# - Try to find libelf +# Once done this will define +# +# LIBELF_FOUND - system has libelf +# LIBELF_INCLUDE_DIRS - the libelf include directory +# LIBELF_LIBRARIES - Link these to use libelf +# LIBELF_DEFINITIONS - Compiler switches required for using libelf +# +# Copyright (c) 2008 Bernhard Walle <bernhard.walle@gmx.de> +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + + +if (LIBELF_LIBRARIES AND LIBELF_INCLUDE_DIRS) + set (LibElf_FIND_QUIETLY TRUE) +endif (LIBELF_LIBRARIES AND LIBELF_INCLUDE_DIRS) + +find_path (LIBELF_INCLUDE_DIRS + NAMES + libelf.h + PATHS + /usr/include + /usr/include/libelf + /usr/local/include + /usr/local/include/libelf + /opt/local/include + /opt/local/include/libelf + /sw/include + /sw/include/libelf + ENV CPATH) + +find_library (LIBELF_LIBRARIES + NAMES + elf + PATHS + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib + ENV LIBRARY_PATH + ENV LD_LIBRARY_PATH) + +include (FindPackageHandleStandardArgs) + + +# handle the QUIETLY and REQUIRED arguments and set LIBELF_FOUND to TRUE if all listed variables are TRUE +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibElf DEFAULT_MSG + LIBELF_LIBRARIES + LIBELF_INCLUDE_DIRS) + +SET(CMAKE_REQUIRED_LIBRARIES elf) +INCLUDE(CheckCXXSourceCompiles) +CHECK_CXX_SOURCE_COMPILES("#include <libelf.h> +int main() { + Elf *e = (Elf*)0; + size_t sz; + elf_getshdrstrndx(e, &sz); + return 0; +}" ELF_GETSHDRSTRNDX) + +mark_as_advanced(LIBELF_INCLUDE_DIRS LIBELF_LIBRARIES ELF_GETSHDRSTRNDX) |