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.")
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("")
#
add_subdirectory(voglcmd)
add_subdirectory(glxspheres)
add_subdirectory(vogleditor)
-
add_subdirectory(libbacktrace)
add_subdirectory(libbacktrace_test)
+add_subdirectory(libbacktrace)
+add_subdirectory(libbacktrace_test)
${SRC_DIR}/voglcore
${LIBUNWIND_INCLUDE_DIR}
)
+
add_library (backtrace STATIC EXCLUDE_FROM_ALL
${BACKTRACE_FILE}
${FORMAT_FILE}
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}"
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;