Add some platform checks to give better error messages at cmake time.
authorMilian Wolff <mail@milianw.de>
Tue, 2 Dec 2014 14:11:48 +0000 (15:11 +0100)
committerMilian Wolff <mail@milianw.de>
Tue, 2 Dec 2014 14:11:48 +0000 (15:11 +0100)
CMakeLists.txt
libheaptrack.cpp

index 199321b..42260b7 100644 (file)
@@ -7,6 +7,36 @@ find_package(Boost 1.45.0 COMPONENTS iostreams program_options)
 find_package(Threads)
 
 add_subdirectory(3rdparty)
+
+check_library_exists (${LIBUNWIND_LIBRARY} unw_backtrace "" HAVE_UNW_BACKTRACE)
+if (NOT HAVE_UNW_BACKTRACE)
+    message(FATAL_ERROR "Your libunwind version is apparently too old and does not have the unw_backtrace function.")
+endif()
+
+include (CheckCXXSourceCompiles)
+check_cxx_source_compiles(
+    "#include <unordered_map>
+    #include <atomic>
+    thread_local int tls;
+    int main() { return 0; }"
+    HAVE_CXX11_SUPPORT)
+
+if (NOT HAVE_CXX11_SUPPORT)
+    message(FATAL_ERROR "Your compiler is too old and does not support the required C++11 features.")
+endif()
+
+check_cxx_source_compiles(
+    "#include <stdio_ext.h>
+    #include <fcntl.h>
+    #include <dlfcn.h>
+    #include <link.h>
+    int main() { return 0; }"
+    HAVE_LINUX_HEADERS)
+
+if (NOT HAVE_LINUX_HEADERS)
+    message(FATAL_ERROR "You are missing some Linux headers required to compile heaptrack.")
+endif()
+
 add_subdirectory(tests)
 
 include_directories(
index bbd2c2d..5068539 100644 (file)
  */
 
 #include <cstdio>
-#include <stdio_ext.h>
 #include <cstdlib>
+#include <stdio_ext.h>
 #include <fcntl.h>
+#include <dlfcn.h>
+#include <link.h>
 
 #include <atomic>
-#include <unordered_map>
 #include <string>
-#include <tuple>
 #include <memory>
 #include <unordered_set>
 #include <mutex>
 
 #include <boost/algorithm/string/replace.hpp>
 
-#include <dlfcn.h>
-#include <link.h>
-
 #include "tracetree.h"
 #include "timer.h"