diff --git a/CMake/DefineOptions.cmake b/CMake/DefineOptions.cmake index 988cb5c0ff..c634d3849d 100644 --- a/CMake/DefineOptions.cmake +++ b/CMake/DefineOptions.cmake @@ -28,8 +28,7 @@ option(WITH_GPL_LIBS "Build with GPL libraries." ON) if(WIN32) option(WITH_MINIMAID "Build with Mimimaid Lights Support." OFF) -else() - if(LINUX) +elseif(LINUX) option(WITH_FFMPEG "Build with FFMPEG." ON) # Builder beware: later versions of ffmpeg may break! option(WITH_SYSTEM_FFMPEG "Build with the system's FFMPEG." OFF) @@ -42,5 +41,4 @@ else() option(WITH_MP3 "Build with MP3 Support." ON) option(WITH_PARALLEL_PORT "Build with Parallel Lights I/O Support." OFF) option(WITH_CRASH_HANDLER "Build with Crash Handler Support." ON) - endif() endif() diff --git a/src/CMakeData-os.cmake b/src/CMakeData-os.cmake index 8c53ac5d61..c9502ce9b7 100644 --- a/src/CMakeData-os.cmake +++ b/src/CMakeData-os.cmake @@ -26,34 +26,13 @@ if(APPLE) ) source_group("OS Specific\\\\Darwin" FILES ${SMDATA_OS_DARWIN_SRC} ${SMDATA_OS_DARWIN_HPP}) - - if (WITH_CRASH_HANDLER) - list(APPEND SMDATA_OS_UNIX_SRC - "archutils/Unix/Backtrace.cpp" - "archutils/Unix/BacktraceNames.cpp" - "archutils/Unix/CrashHandler.cpp" - "archutils/Unix/CrashHandlerChild.cpp" - "archutils/Unix/CrashHandlerInternal.cpp" - "archutils/Unix/SignalHandler.cpp" - ) - list(APPEND SMDATA_OS_UNIX_HPP - "archutils/Unix/Backtrace.h" - "archutils/Unix/BacktraceNames.h" - "archutils/Unix/CrashHandler.h" - "archutils/Unix/CrashHandlerInternal.h" - "archutils/Unix/SignalHandler.h" - ) - endif() - - source_group("OS Specific\\\\Unix" FILES ${SMDATA_OS_UNIX_SRC} ${SMDATA_OS_UNIX_HPP}) + list(APPEND SMDATA_OS_SRC ${SMDATA_OS_DARWIN_SRC} - ${SMDATA_OS_UNIX_SRC} ) list(APPEND SMDATA_OS_HPP ${SMDATA_OS_DARWIN_HPP} - ${SMDATA_OS_UNIX_HPP} ) else() if(WIN32) @@ -147,3 +126,30 @@ else() source_group("OS Specific" FILES ${SMDATA_OS_SRC} ${SMDATA_OS_HPP}) endif() +if(APPLE OR LINUX) + if (WITH_CRASH_HANDLER) + list(APPEND SMDATA_OS_UNIX_CRASH_SRC + "archutils/Unix/Backtrace.cpp" + "archutils/Unix/BacktraceNames.cpp" + "archutils/Unix/CrashHandler.cpp" + "archutils/Unix/CrashHandlerChild.cpp" + "archutils/Unix/CrashHandlerInternal.cpp" + "archutils/Unix/SignalHandler.cpp" + ) + list(APPEND SMDATA_OS_UNIX_CRASH_HPP + "archutils/Unix/Backtrace.h" + "archutils/Unix/BacktraceNames.h" + "archutils/Unix/CrashHandler.h" + "archutils/Unix/CrashHandlerInternal.h" + "archutils/Unix/SignalHandler.h" + ) + source_group("OS Specific\\\\Unix" FILES ${SMDATA_OS_UNIX_CRASH_SRC} ${SMDATA_OS_UNIX_CRASH_HPP}) + + list(APPEND SMDATA_OS_SRC + ${SMDATA_OS_UNIX_CRASH_SRC} + ) + list(APPEND SMDATA_OS_HPP + ${SMDATA_OS_UNIX_CRASH_HPP} + ) + endif() +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8999e6ae09..3cface62a9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -347,8 +347,23 @@ else() # Linux RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${SM_ROOT_DIR}" ) + if(${WITH_CRASH_HANDLER}) + sm_add_compile_definition("${SM_EXE_NAME}" CRASH_HANDLER) + if(LINUX) + # used only in the ArchHooks_Unix.cpp file + sm_add_compile_definition("${SM_EXE_NAME}" BACKTRACE_METHOD_X86_LINUX) + sm_add_compile_definition("${SM_EXE_NAME}" BACKTRACE_METHOD_TEXT="x86 custom backtrace") + sm_add_compile_definition("${SM_EXE_NAME}" BACKTRACE_LOOKUP_METHOD_TEXT="backtrace_symbols") + endif() + endif() if (${HAS_PTHREAD}) sm_add_compile_definition("${SM_EXE_NAME}" HAVE_LIBPTHREAD) + + message("Host processor is ${CMAKE_SYSTEM_PROCESSOR}") + if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + message("Host processor is 64bit") + sm_add_compile_definition("${SM_EXE_NAME}" CPU_X86_64) + endif() endif() if (${HAS_FFMPEG}) sm_add_compile_definition("${SM_EXE_NAME}" HAVE_FFMPEG) diff --git a/src/arch/ArchHooks/ArchHooks_Unix.cpp b/src/arch/ArchHooks/ArchHooks_Unix.cpp index e026184b68..31033727a4 100644 --- a/src/arch/ArchHooks/ArchHooks_Unix.cpp +++ b/src/arch/ArchHooks/ArchHooks_Unix.cpp @@ -18,6 +18,9 @@ #if defined(CRASH_HANDLER) #include "archutils/Unix/CrashHandler.h" +#if defined(LINUX) +#include +#endif #endif #if defined(HAVE_FFMPEG) diff --git a/src/archutils/Unix/Backtrace.cpp b/src/archutils/Unix/Backtrace.cpp index 217338060a..3faa821108 100644 --- a/src/archutils/Unix/Backtrace.cpp +++ b/src/archutils/Unix/Backtrace.cpp @@ -13,6 +13,10 @@ #if defined(BACKTRACE_METHOD_X86_LINUX) #include "archutils/Common/PthreadHelpers.h" +#if defined(LINUX) && !defined(ANDROID) +#include +#endif + static const char *itoa(unsigned n) { static char ret[32];