# 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 ()
##############################################################################
# Find dependencies
-# Ensure __thread is support
-if (NOT MSVC)
+# Check for compiler TLS support. We don't use compiler TLS support on Windows
+# because, even if the compiler supports it, Windows XP does not support TLS on
+# DLLs.
+if (NOT WIN32)
include (CheckCXXSourceCompiles)
check_cxx_source_compiles("__thread int i; int main() { return 0; }" HAVE_COMPILER_TLS)
- if (NOT HAVE_COMPILER_TLS)
- if (APPLE)
- message (FATAL_ERROR "C++ compiler does not support __thread keyword. Please install XCode 4.5 or higher.")
- else (MINGW32)
- message (FATAL_ERROR "C++ compiler does not support __thread keyword. Please use MinGW g++ version 4.4 or higher")
- else ()
- message (FATAL_ERROR "C++ compiler does not support __thread keyword.")
- endif ()
+ if (HAVE_COMPILER_TLS)
+ add_definitions (-DHAVE_COMPILER_TLS=__thread)
+ else ()
+ message (WARNING "C++ compiler does not support __thread keyword.")
endif ()
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
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
+ CHECK_INCLUDE_FILES(proc/readproc.h READPROC_H_FOUND)
+ if (READPROC_H_FOUND)
+ add_definitions (-DHAVE_READPROC_H)
+ find_library (proc_LIBRARY NAMES proc procps)
+ endif ()
endif()
if (WIN32 OR APPLE)
if (WIN32)
add_subdirectory (thirdparty/less)
+ 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.
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/trace_backtrace.cpp
)
set_target_properties (common PROPERTIES
- COMPILE_DEFINITIONS APITRACE_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
# Ensure it can be statically linked in shared libraries
COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}"
)
scripts/unpickle.py
DESTINATION ${SCRIPTS_INSTALL_DIR}
)
+if (WIN32)
+ install (
+ PROGRAMS scripts/convert.py
+ DESTINATION ${SCRIPTS_INSTALL_DIR}
+ )
+endif ()
##############################################################################
# GUI
)
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