include(SelectLibraryConfigurations) | include(SelectLibraryConfigurations) | ||||
if(NOT DEFINED CMAKE_PROCESSOR_ALIAS) | |||||
MESSAGE(STATUS "operation system is ${CMAKE_CXX_PLATFORM_ID}") | |||||
MESSAGE(STATUS "processor is ${CMAKE_HOST_SYSTEM_PROCESSOR}") | |||||
if((${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "i386") OR (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "AMD64") OR (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")) | |||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4) | |||||
set(CMAKE_PROCESSOR_ALIAS "x86" CACHE STRING "Alias of processor") | |||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) | |||||
set(CMAKE_PROCESSOR_ALIAS "x64" CACHE STRING "Alias of processor") | |||||
else() | |||||
message(FATAL_ERROR "Unknown processor") | |||||
endif() | |||||
elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") | |||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4) | |||||
set(CMAKE_PROCESSOR_ALIAS "arm" CACHE STRING "Alias of processor") | |||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) | |||||
set(CMAKE_PROCESSOR_ALIAS "arm64" CACHE STRING "Alias of processor") | |||||
else() | |||||
message(FATAL_ERROR "Unknown processor") | |||||
endif() | |||||
else() | |||||
message(FATAL_ERROR "Unknown processor") | |||||
endif() | |||||
message(STATUS "CMAKE_PROCESSOR_ALIAS=${CMAKE_PROCESSOR_ALIAS}") | |||||
endif() | |||||
macro(_acl_copy_dynamic_library_build_type basename build_type) | macro(_acl_copy_dynamic_library_build_type basename build_type) | ||||
if(${build_type} STREQUAL "Debug") | if(${build_type} STREQUAL "Debug") |
#include <optional> | #include <optional> | ||||
#include <thread> | #include <thread> | ||||
#include <cassert> | #include <cassert> | ||||
#include <utility> | |||||
#if __cpp_impl_coroutine | #if __cpp_impl_coroutine | ||||
#include <coroutine> | #include <coroutine> | ||||
#ifdef _MSC_VER | #ifdef _MSC_VER | ||||
#ifndef __clang__ | |||||
extern "C" size_t _coro_frame_size(); | extern "C" size_t _coro_frame_size(); | ||||
extern "C" void* _coro_frame_ptr(); | extern "C" void* _coro_frame_ptr(); | ||||
extern "C" void _coro_init_block(); | extern "C" void _coro_init_block(); | ||||
#pragma intrinsic(_coro_suspend) | #pragma intrinsic(_coro_suspend) | ||||
#pragma intrinsic(_coro_cancel) | #pragma intrinsic(_coro_cancel) | ||||
#pragma intrinsic(_coro_resume_block) | #pragma intrinsic(_coro_resume_block) | ||||
#else | |||||
#include "src/unix/clang_builtin.h" | |||||
#endif | |||||
#endif | #endif | ||||
#elif defined(__clang__) | #elif defined(__clang__) | ||||
#include "src/unix/coroutine.h" | #include "src/unix/coroutine.h" | ||||
#else | |||||
#elif __has_include(<experimental/coroutine>) | |||||
#include <experimental/coroutine> | #include <experimental/coroutine> | ||||
#else | |||||
#include "src/unix/coroutine.h" | |||||
#endif | #endif | ||||
#include "src/stop_token.h" | #include "src/stop_token.h" |
//extern "C" void* __builtin_coro_begin(void* memory); | //extern "C" void* __builtin_coro_begin(void* memory); | ||||
//extern "C" void* __builtin_coro_end(void* coro_frame, bool unwind); | //extern "C" void* __builtin_coro_end(void* coro_frame, bool unwind); | ||||
extern "C" char __builtin_coro_suspend(bool final); | extern "C" char __builtin_coro_suspend(bool final); | ||||
extern "C" bool __builtin_coro_param(void* original, void* copy); | |||||
//extern "C" bool __builtin_coro_param(void* original, void* copy); | |||||
#pragma intrinsic(__builtin_coro_id) | #pragma intrinsic(__builtin_coro_id) | ||||
#pragma intrinsic(__builtin_coro_alloc) | #pragma intrinsic(__builtin_coro_alloc) | ||||
//#pragma intrinsic(__builtin_coro_begin) | //#pragma intrinsic(__builtin_coro_begin) | ||||
//#pragma intrinsic(__builtin_coro_end) | //#pragma intrinsic(__builtin_coro_end) | ||||
#pragma intrinsic(__builtin_coro_suspend) | #pragma intrinsic(__builtin_coro_suspend) | ||||
#pragma intrinsic(__builtin_coro_param) | |||||
//#pragma intrinsic(__builtin_coro_param) | |||||
#ifdef __clang__ | #ifdef __clang__ | ||||
#define _coro_frame_size() __builtin_coro_size() | #define _coro_frame_size() __builtin_coro_size() |
target_compile_definitions(${TUTORIAL_FILE_NAME} | target_compile_definitions(${TUTORIAL_FILE_NAME} | ||||
PRIVATE LIBRF_TUTORIAL_STAND_ALONE=1 | PRIVATE LIBRF_TUTORIAL_STAND_ALONE=1 | ||||
) | ) | ||||
if(UNIX) | |||||
set_target_properties(${TUTORIAL_FILE_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/") | |||||
endif(UNIX) | |||||
endforeach(TUTORIAL_FILE_PATH) | endforeach(TUTORIAL_FILE_PATH) |