71 lines
2.4 KiB
CMake
71 lines
2.4 KiB
CMake
# Copyright (c) 2019-present, Facebook, Inc.
|
|
#
|
|
# This source code is licensed under the license found in the
|
|
# LICENSE.txt file in the root directory of this source tree.
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
include(CheckCXXSourceCompiles)
|
|
include(CMakePushCheckState)
|
|
include(CheckIncludeFile)
|
|
include(CheckSymbolExists)
|
|
|
|
# Probe for coroutine TS support
|
|
find_package(Coroutines COMPONENTS Experimental Final)
|
|
# MSVC's coroutines support is too broken to support here, sadly.
|
|
if(CXX_COROUTINES_HAVE_COROUTINES AND NOT UNIFEX_CXX_COMPILER_MSVC)
|
|
set(UNIFEX_NO_COROUTINES FALSE)
|
|
set(UNIFEX_COROUTINES_HEADER ${CXX_COROUTINES_HEADER})
|
|
set(UNIFEX_COROUTINES_NAMESPACE ${CXX_COROUTINES_NAMESPACE})
|
|
else()
|
|
set(UNIFEX_NO_COROUTINES TRUE)
|
|
endif()
|
|
|
|
# Probe for memory_resource support
|
|
find_package(MemoryResource COMPONENTS Experimental Final)
|
|
# Set some variables to be used by configure_file.
|
|
if(CXX_MEMORY_RESOURCE_HAVE_PMR)
|
|
set(UNIFEX_NO_MEMORY_RESOURCE FALSE)
|
|
set(UNIFEX_MEMORY_RESOURCE_HEADER ${CXX_MEMORY_RESOURCE_HEADER})
|
|
set(UNIFEX_MEMORY_RESOURCE_NAMESPACE ${CXX_MEMORY_RESOURCE_NAMESPACE})
|
|
else()
|
|
set(UNIFEX_NO_MEMORY_RESOURCE TRUE)
|
|
endif()
|
|
|
|
if(DEFINED UNIFEX_NO_LIBURING)
|
|
message(WARNING "[unifex warning]: forcing no_liburing=${UNIFEX_NO_LIBURING} !")
|
|
elseif(DEFINED ENV{UNIFEX_NO_LIBURING})
|
|
message(WARNING "[unifex warning]: forcing no_liburing=$ENV{UNIFEX_NO_LIBURING} !")
|
|
set(UNIFEX_NO_LIBURING $ENV{UNIFEX_NO_LIBURING})
|
|
set(LIBURING_INCLUDE_DIRS $ENV{UNIFEX_LIBURING_INCLUDE_DIRS})
|
|
set(LIBURING_LIBRARIES $ENV{UNIFEX_LIBURING_LIBRARIES})
|
|
else()
|
|
# Probe for libUring support
|
|
find_package(LibUring COMPONENTS)
|
|
# Set some variables to be used by configure_file.
|
|
if(LIBURING_FOUND)
|
|
set(UNIFEX_NO_LIBURING FALSE)
|
|
else()
|
|
set(UNIFEX_NO_LIBURING TRUE)
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT UNIFEX_NO_LIBURING)
|
|
set(UNIFEX_URING_INCLUDE_DIRS ${LIBURING_INCLUDE_DIRS})
|
|
set(UNIFEX_URING_LIBRARY ${LIBURING_LIBRARIES})
|
|
endif()
|
|
|
|
if(DEFINED UNIFEX_NO_EPOLL)
|
|
message(WARNING "[unifex warning]: forcing no_epoll=${UNIFEX_NO_EPOLL} !")
|
|
elseif(DEFINED ENV{UNIFEX_NO_EPOLL})
|
|
message(WARNING "[unifex warning]: forcing no_epoll=$ENV{UNIFEX_NO_EPOLL} !")
|
|
set(UNIFEX_NO_EPOLL $ENV{UNIFEX_NO_EPOLL})
|
|
else()
|
|
# Probe for EPOLL support
|
|
CHECK_SYMBOL_EXISTS(epoll_create "sys/epoll.h" UNIFEX_HAVE_SYS_EPOLL_CREATE)
|
|
if(UNIFEX_HAVE_SYS_EPOLL_CREATE)
|
|
set(UNIFEX_NO_EPOLL FALSE)
|
|
else()
|
|
set(UNIFEX_NO_EPOLL TRUE)
|
|
endif()
|
|
endif()
|