From 60e7b40edc04a70efaa0f2ef0af69283e0e007e6 Mon Sep 17 00:00:00 2001 From: Gregory King Date: Mon, 17 Mar 2014 13:04:18 -0700 Subject: [PATCH] Updated CMakeLists.txt to fix ValveSoftware/vogl/issues/16; src/CMakeLists.txt: (1) Added cmake variable HAS_UPDATED_LIBUNWIND; (2) Added message explaining what HAS_UPDATED_LIBUNWIND does; (3) Moved add_subdirectory(libbacktrace), add_subdirectory(libbacktrace_test); below other add_subdirectory(...) commands; src/libbacktrace/CMakeLists.txt: (1) add_definitions(-DCMAKE_HAS_UPDATED_LIBUNWIND) if HAS_UPDATED_LIBUNWIND=true src/libbacktrace/btrace.cpp: (1) added ifdef check CMAKE_HAS_UPDATED_LIBUNWIND --- src/CMakeLists.txt | 11 ++++++++++- src/libbacktrace/CMakeLists.txt | 11 +++++++++-- src/libbacktrace/btrace.cpp | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a684355..fd198d3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,13 @@ cmake_minimum_required(VERSION 2.8) set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +option(HAS_UPDATED_LIBUNWIND "Build using unw_backtrace_skip" FALSE) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + +find_package(LibLZMA REQUIRED) +find_package(TinyXML REQUIRED) + message("") message("cmake options:") message(" -DCMAKE_BUILD_TYPE=[debug|release]: Build debug or release.") @@ -14,6 +21,7 @@ message(" -DBUILD_X64=[On|Off]: Build 32 or 64-bit.") message(" -DCLANG_ANALYZE=[On|Off]: Do clang analyze build (will not link).") message(" -DCLANG_EVERYTHING=[On|Off]: Do clang build with -Weverything.") message(" -DUSE_TELEMETRY=[On|Off]: Build with Telemetry.") +message(" -DHAS_UPDATED_LIBUNWIND=[On|Off]: Build using unw_backtrace_skip (from valve patched libunwind)") message("") # @@ -32,7 +40,8 @@ add_subdirectory(voglserver) add_subdirectory(voglcmd) add_subdirectory(glxspheres) add_subdirectory(vogleditor) - add_subdirectory(libbacktrace) add_subdirectory(libbacktrace_test) +add_subdirectory(libbacktrace) +add_subdirectory(libbacktrace_test) diff --git a/src/libbacktrace/CMakeLists.txt b/src/libbacktrace/CMakeLists.txt index 544039a..9968e91 100644 --- a/src/libbacktrace/CMakeLists.txt +++ b/src/libbacktrace/CMakeLists.txt @@ -159,6 +159,7 @@ include_directories ( ${SRC_DIR}/voglcore ${LIBUNWIND_INCLUDE_DIR} ) + add_library (backtrace STATIC EXCLUDE_FROM_ALL ${BACKTRACE_FILE} ${FORMAT_FILE} @@ -173,10 +174,16 @@ add_library (backtrace STATIC EXCLUDE_FROM_ALL btrace.cpp libelftc_dem_gnu3.c ) + +if(HAS_UPDATED_LIBUNWIND) + add_definitions(-DCMAKE_HAS_UPDATED_LIBUNWIND) +endif(HAS_UPDATED_LIBUNWIND) + + target_link_libraries(backtrace voglcore) -find_library(LIBUNWIND_LIBRARY libunwind.a) -target_link_libraries(backtrace ${LIBUNWIND_LIBRARY}) +find_library(LIBUNWIND_LIBRARY libunwind) +target_link_libraries(backtrace ${LIBUNWIND_LIBRARY} ${LIBLZMA_LIBRARIES}) set_target_properties (backtrace PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}" diff --git a/src/libbacktrace/btrace.cpp b/src/libbacktrace/btrace.cpp index 94f4dd9..c9a3340 100644 --- a/src/libbacktrace/btrace.cpp +++ b/src/libbacktrace/btrace.cpp @@ -75,7 +75,7 @@ btrace_glinfo& btrace_get_glinfo() int btrace_get(uintptr_t *addrs, size_t count_addrs, uint32_t addrs_to_skip) { -#if 1 +#ifdef CMAKE_HAS_UPDATED_LIBUNWIND return unw_backtrace_skip((void **)addrs, (int)count_addrs, addrs_to_skip); #else size_t count = 0; -- 2.43.0