# 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 ()
# 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)
# 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")
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
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 dl backtrace)
+ add_definitions (-DHAVE_BACKTRACE=1)
+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
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
common/trace_profiler.cpp
common/trace_option.cpp
common/${os}
+ common/os_backtrace.cpp
)
set_target_properties (common PROPERTIES
COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}"
)
+target_link_libraries (common
+ ${LIBBACKTRACE_LIBRARIES}
+)
if (ANDROID)
target_link_libraries (common
log
)
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