project( 'owdt', 'c', default_options : ['c_std=gnu11,c11'] ) eventloop_epoll = 'epoll' eventloop_kqueue = 'kqueue' platform_info = { 'linux': { 'eventloop': eventloop_epoll, }, 'freebsd': { 'eventloop': eventloop_kqueue, }, 'openbsd': { 'eventloop': eventloop_kqueue, }, 'netbsd': { 'eventloop': eventloop_kqueue, }, 'dragonfly': { 'eventloop': eventloop_kqueue, }, 'darwin': { 'eventloop': eventloop_kqueue, }, }[target_machine.system()] eventloop_info = { eventloop_epoll: { 'path': 'src/eventloop_epoll.c', }, eventloop_kqueue: { 'path': 'src/eventloop_kqueue.c', }, }[platform_info['eventloop']] sources = [ 'src/main.c', 'src/server.c', 'src/client.c', 'src/str.c', 'src/eventloop.c', eventloop_info['path'], ] includes = include_directories('include') args = [ '-Wall', '-DOWD_PLATFORM_' + target_machine.system().to_upper(), '-DOWD_EVENTLOOP_' + platform_info['eventloop'].to_upper(), ] executable( meson.project_name(), sources, include_directories: includes, c_args: args )