diff --git a/CMakeLists.txt b/CMakeLists.txt index bde7183e7a..678a9fa8dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,6 +50,8 @@ if (APPLE) find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox) find_library(AUDIOUNIT_LIBRARY AudioUnit) find_library(COCOA_LIBRARY Cocoa) + + find_package(MacUcontext) endif (APPLE) if (MSVC) diff --git a/cmake/FindMacUcontext.cmake b/cmake/FindMacUcontext.cmake new file mode 100644 index 0000000000..4d989cd86a --- /dev/null +++ b/cmake/FindMacUcontext.cmake @@ -0,0 +1,23 @@ +include(CheckCXXSourceCompiles) + +check_cxx_source_compiles(" +#include +int main() { + ucontext_t context; +#if defined(__x86_64__) + void *ptr = (void *) context.uc_mcontext->__ss.__rip; +#elif defined(__i386) + void *ptr = (void *) context.uc_mcontext->__ss.__rip; +#else +#error Unknown arch +#endif + return 0; +}" + UCONTEXT_FOUND +) + +if (UCONTEXT_FOUND) + add_compile_options( + -DWITH_UCONTEXT + ) +endif (UCONTEXT_FOUND)