UI: Fix issue #21: Resizing of vogleditor window is slow depending on trace size
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)
--- /dev/null
+##################################################################################################
+#
+# CMake script for finding TinyXML.
+#
+# Input variables:
+#
+# - TinyXML_ROOT_DIR (optional): When specified, header files and libraries will be searched for in
+# ${TinyXML_ROOT_DIR}/include
+# ${TinyXML_ROOT_DIR}/libs
+# respectively, and the default CMake search order will be ignored. When unspecified, the default
+# CMake search order is used.
+# This variable can be specified either as a CMake or environment variable. If both are set,
+# preference is given to the CMake variable.
+# Use this variable for finding packages installed in a nonstandard location, or for enforcing
+# that one of multiple package installations is picked up.
+#
+#
+# Cache variables (not intended to be used in CMakeLists.txt files)
+#
+# - TinyXML_INCLUDE_DIR: Absolute path to package headers.
+# - TinyXML_LIBRARY: Absolute path to library.
+#
+#
+# Output variables:
+#
+# - TinyXML_FOUND: Boolean that indicates if the package was found
+# - TinyXML_INCLUDE_DIRS: Paths to the necessary header files
+# - TinyXML_LIBRARIES: Package libraries
+#
+#
+# Example usage:
+#
+# find_package(TinyXML)
+# if(NOT TinyXML_FOUND)
+# # Error handling
+# endif()
+# ...
+# include_directories(${TinyXML_INCLUDE_DIRS} ...)
+# ...
+# target_link_libraries(my_target ${TinyXML_LIBRARIES})
+#
+##################################################################################################
+#from: https://github.com/ros/cmake_modules/blob/0.3-devel/cmake/Modules/FindTinyXML.cmake
+
+# Get package location hint from environment variable (if any)
+if(NOT TinyXML_ROOT_DIR AND DEFINED ENV{TinyXML_ROOT_DIR})
+ set(TinyXML_ROOT_DIR "$ENV{TinyXML_ROOT_DIR}" CACHE PATH
+ "TinyXML base directory location (optional, used for nonstandard installation paths)")
+endif()
+
+# Search path for nonstandard package locations
+if(TinyXML_ROOT_DIR)
+ set(TinyXML_INCLUDE_PATH PATHS "${TinyXML_ROOT_DIR}/include" NO_DEFAULT_PATH)
+ set(TinyXML_LIBRARY_PATH PATHS "${TinyXML_ROOT_DIR}/lib" NO_DEFAULT_PATH)
+endif()
+
+# Find headers and libraries
+find_path(TinyXML_INCLUDE_DIR NAMES tinyxml.h PATH_SUFFIXES "tinyxml" ${TinyXML_INCLUDE_PATH})
+find_library(TinyXML_LIBRARY NAMES tinyxml PATH_SUFFIXES "tinyxml" ${TinyXML_LIBRARY_PATH})
+
+mark_as_advanced(TinyXML_INCLUDE_DIR
+ TinyXML_LIBRARY)
+
+# Output variables generation
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(TinyXML DEFAULT_MSG TinyXML_LIBRARY
+ TinyXML_INCLUDE_DIR)
+
+set(TinyXML_FOUND ${TINYXML_FOUND}) # Enforce case-correctness: Set appropriately cased variable...
+unset(TINYXML_FOUND) # ...and unset uppercase variable generated by find_package_handle_standard_args
+
+if(TinyXML_FOUND)
+ set(TinyXML_INCLUDE_DIRS ${TinyXML_INCLUDE_DIR})
+ set(TinyXML_LIBRARIES ${TinyXML_LIBRARY})
+endif()
include("${SRC_DIR}/build_options.cmake")
find_package(X11 REQUIRED)
+find_package(GLU REQUIRED)
-aux_source_directory(. SRC_LIST)
+set(glxsphere_SRC glxspheres.c)
-include_directories(
- ${PROJECT_SOURCE_DIR}/../include
- )
-
-add_executable(${PROJECT_NAME} ${SRC_LIST})
+add_executable(${PROJECT_NAME} ${glxsphere_SRC})
target_link_libraries(${PROJECT_NAME}
${X11_X11_LIB}
${OPENGL_LIBRARY}
m
- GLU)
+ ${GLU_LIBRARIES})
build_options_finalize()
${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 NAMES unwind libunwind REQUIRE)
+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;
include("${SRC_DIR}/build_options.cmake")
include_directories(
- "${PROJECT_SOURCE_DIR}/../inc"
+ ${LZMA_INCLUDE_DIR}
+ ${LZMADEC_INCLUDE_DIR}
"${SRC_DIR}/chromiumlib"
)
vogl_vector.cpp
vogl_etc.cpp
vogl_rg_etc1.cpp
-
- lzma_7zBuf2.cpp
- lzma_7zBuf.cpp
- lzma_7zCrc.cpp
- lzma_7zFile.cpp
- lzma_7zStream.cpp
- lzma_Alloc.cpp
- lzma_Bcj2.cpp
- lzma_Bra86.cpp
- lzma_Bra.cpp
- lzma_BraIA64.cpp
- lzma_LzFind.cpp
- # lzma_LzFindMt.cpp
- lzma_LzmaDec.cpp
- lzma_LzmaEnc.cpp
- lzma_LzmaLib.cpp
- # lzma_Threads.cpp
rmalloc.c
regex/debug.c
regex/regcomp.c
target_link_libraries(${PROJECT_NAME}
${CMAKE_THREAD_LIBS_INIT}
rt
+ ${LZMA_LIBRARIES}
+ ${LZMADEC_LIBRARIES}
)
build_options_finalize()
include("${SRC_DIR}/build_options.cmake")
-aux_source_directory(. SRC_LIST)
-aux_source_directory(tinyxml SRC_LIST)
+set(SRC_LIST voglgen.cpp)
+
+add_definitions(-DTIXML_USE_STL)
include_directories(
${SRC_DIR}/voglcore
+ ${TinyXML_INCLUDE_DIRS}
)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME}
voglcore
+ ${TinyXML_LIBRARIES}
)
build_options_finalize()
cmake_minimum_required(VERSION 2.8)
+project(vogltrace)
option(VOGLTRACE_NO_PUBLIC_EXPORTS "Don't define any public GL exports in libvogltraceXX.so, this .so will only be useful for manual loading" FALSE)
endif ()
find_package(X11 REQUIRED)
-project(vogltrace)
-
include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
add_compiler_flag("-DVOGL_REMOTING")
set(SRC_LIST
voglcore
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
- ${X11_X11_LIB}
- libturbojpeg.a
+ ${X11_LIBRARIES}
rt
+ turbojpeg
)
build_options_finalize()