X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=CMakeLists.txt;h=07751198ab257a5f48b2b74c024aedf2406d577a;hb=b9c20609ce007c6e07562df57b8a5d845061b9e4;hp=3b45baee831596e09c22e54ec78c5a42d83026cf;hpb=8917aeafc32928b4bcbd668a3f20f5dae101c8d8;p=apitrace diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b45bae..0775119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,8 @@ cmake_minimum_required (VERSION 2.8) # Use clang on MacOSX. gcc doesn't support __thread key, and Apple has # abandoned it for clang. This must be done before the project is defined. -if (APPLE) +# But DONT force clang if we are cross-compiling to Android. +if (APPLE AND NOT ANDROID_NDK) set (CMAKE_C_COMPILER "clang") set (CMAKE_CXX_COMPILER "clang++") endif () @@ -107,6 +108,9 @@ if (MSVC) # C99 includes for MSVC include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/msinttypes) + # No RTTI required + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") + # Enable math constants defines add_definitions (-D_USE_MATH_DEFINES) @@ -143,6 +147,9 @@ else () # XXX: it's safer to use ssize_t everywhere instead of disabling warning add_definitions (-Wno-sign-compare) # comparison between signed and unsigned integer expressions + # No RTTI required + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") + # Use GDB extensions if available if (CMAKE_COMPILER_IS_GNUC) set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -O0") @@ -173,6 +180,11 @@ if (MINGW) endif () endif () +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + # For RTLD_DEFAULT and RTLD_NEXT + add_definitions (-D_GNU_SOURCE) +endif () + # Put all executables into the same top level build directory, regardless of # which subdirectory they are declared @@ -253,6 +265,12 @@ if (WIN32) add_subdirectory (thirdparty/directxtex) endif () +if (CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF") + add_subdirectory (thirdparty/libbacktrace) + include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libbacktrace) + set (LIBBACKTRACE_LIBRARIES backtrace) +endif () + # Always use bundled QJSon. # - The packaged versions QJson are very old, and do not support NaN/Infinity. # - To make it easier to build the GUI on Windows and MacOSX, as there are no @@ -297,6 +315,7 @@ endif () add_library (common STATIC common/trace_callset.cpp common/trace_dump.cpp + common/trace_fast_callset.cpp common/trace_file.cpp common/trace_file_read.cpp common/trace_file_write.cpp @@ -312,6 +331,7 @@ add_library (common STATIC common/trace_profiler.cpp common/trace_option.cpp common/${os} + common/trace_backtrace.cpp ) set_target_properties (common PROPERTIES @@ -399,7 +419,7 @@ if (MSVC) ) endif () -set (CPACK_PACKAGE_VERSION_MAJOR "3") +set (CPACK_PACKAGE_VERSION_MAJOR "4") set (CPACK_PACKAGE_VERSION_MINOR "0") # Use current date in YYYYMMDD format as patch number