From: Peter Lohrmann Date: Wed, 19 Mar 2014 18:48:34 +0000 (-0700) Subject: Merge pull request #27 from PeterLValve/master X-Git-Url: https://git.cworth.org/git?p=vogl;a=commitdiff_plain;h=0182af18d34ccd6cd468afae9e0e478d377bf8fa;hp=f5e103c2d629e19724061c4f92d78def3013d5bb Merge pull request #27 from PeterLValve/master UI: Fix issue #21: Resizing of vogleditor window is slow depending on trace size --- 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/cmake/Modules/FindTinyXML.cmake b/src/cmake/Modules/FindTinyXML.cmake new file mode 100644 index 0000000..3222160 --- /dev/null +++ b/src/cmake/Modules/FindTinyXML.cmake @@ -0,0 +1,75 @@ +################################################################################################## +# +# 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() diff --git a/src/glxspheres/CMakeLists.txt b/src/glxspheres/CMakeLists.txt index e96910e..2fb7915 100644 --- a/src/glxspheres/CMakeLists.txt +++ b/src/glxspheres/CMakeLists.txt @@ -3,19 +3,16 @@ cmake_minimum_required(VERSION 2.8) 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() diff --git a/src/libbacktrace/CMakeLists.txt b/src/libbacktrace/CMakeLists.txt index 544039a..4fd4847 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 NAMES unwind libunwind REQUIRE) +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; diff --git a/src/voglcore/CMakeLists.txt b/src/voglcore/CMakeLists.txt index 476cb3a..8e4bd65 100644 --- a/src/voglcore/CMakeLists.txt +++ b/src/voglcore/CMakeLists.txt @@ -10,7 +10,8 @@ endif () include("${SRC_DIR}/build_options.cmake") include_directories( - "${PROJECT_SOURCE_DIR}/../inc" + ${LZMA_INCLUDE_DIR} + ${LZMADEC_INCLUDE_DIR} "${SRC_DIR}/chromiumlib" ) @@ -65,23 +66,6 @@ set(SRC_LIST 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 @@ -112,6 +96,8 @@ add_library(${PROJECT_NAME} ${SRC_LIST}) target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT} rt + ${LZMA_LIBRARIES} + ${LZMADEC_LIBRARIES} ) build_options_finalize() diff --git a/src/voglgen/CMakeLists.txt b/src/voglgen/CMakeLists.txt index 751b5ac..908a195 100644 --- a/src/voglgen/CMakeLists.txt +++ b/src/voglgen/CMakeLists.txt @@ -3,17 +3,20 @@ cmake_minimum_required(VERSION 2.8) 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() diff --git a/src/vogltrace/CMakeLists.txt b/src/vogltrace/CMakeLists.txt index dbf66ce..6320b4e 100644 --- a/src/vogltrace/CMakeLists.txt +++ b/src/vogltrace/CMakeLists.txt @@ -1,4 +1,5 @@ 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) @@ -9,11 +10,8 @@ if (NOT CMAKE_USE_PTHREADS_INIT) endif () find_package(X11 REQUIRED) -project(vogltrace) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) - add_compiler_flag("-DVOGL_REMOTING") set(SRC_LIST @@ -57,9 +55,9 @@ target_link_libraries(${PROJECT_NAME} voglcore ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} - ${X11_X11_LIB} - libturbojpeg.a + ${X11_LIBRARIES} rt + turbojpeg ) build_options_finalize()