aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2016-04-20 13:24:54 +0200
committerVicent Marti <tanoku@gmail.com>2016-04-20 13:24:54 +0200
commit0612db5fff2f2b14349fa8c9ce55e42ff1d5ea51 (patch)
treeb1c19081f0bcebf8ebff085ac9f24d2589ddf269 /cmake
parentff9ff5d6eed016372c590cd2ddde8dd312ddf21d (diff)
downloadbcc-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.cmake64
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)