event_features = configuration_data() event_features.set('USE_EVENTFD', is_linux and get_option('eventfd')) event_features.set('USE_SIGNALFD', is_linux and get_option('signalfd')) event_features.set('USE_EPOLL', is_linux and get_option('epoll')) event_features.set('HAVE_THREADED_EVENT_LOOP', true) configure_file(output: 'Features.h', configuration: event_features) event_sources = [] if uring_dep.found() event_sources += 'UringManager.cxx' endif if is_windows event_sources += 'WinSelectBackend.cxx' elif is_linux and get_option('epoll') # epoll support is header-only else event_sources += 'PollBackend.cxx' endif event = static_library( 'event', 'SignalMonitor.cxx', 'TimerWheel.cxx', 'TimerList.cxx', 'CoarseTimerEvent.cxx', 'FineTimerEvent.cxx', 'IdleEvent.cxx', 'InjectEvent.cxx', 'DeferEvent.cxx', 'MaskMonitor.cxx', 'SocketEvent.cxx', 'BufferedSocket.cxx', 'FullyBufferedSocket.cxx', 'MultiSocketMonitor.cxx', 'ServerSocket.cxx', 'Call.cxx', 'Thread.cxx', 'Loop.cxx', event_sources, include_directories: inc, dependencies: [ boost_dep, log_dep, uring_dep, ], ) event_dep = declare_dependency( link_with: event, dependencies: [ thread_dep, net_dep, system_dep, boost_dep, uring_dep, ], )