project( 'tlsl', 'c', default_options : ['c_std=gnu11,c11'], meson_version: '>=1.1' ) eventloop_epoll = 'epoll' eventloop_kqueue = 'kqueue' platform_info = { 'linux': { 'eventloop': eventloop_epoll, }, 'freebsd': { 'eventloop': eventloop_kqueue, }, 'openbsd': { 'eventloop': eventloop_kqueue, }, 'netbsd': { '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/str.c', 'src/eventloop.c', 'src/array_list.c', eventloop_info['path'], ] includes = include_directories('include') public_includes = include_directories('include/public') args = [ '-Wall', '-DTLSL_PLATFORM_' + target_machine.system().to_upper(), '-DTLSL_EVENTLOOP_' + platform_info['eventloop'].to_upper(), ] tlsl_lib = shared_library( meson.project_name(), sources, include_directories: includes, c_args: args, gnu_symbol_visibility: 'hidden', ) tlsl_dep = declare_dependency( include_directories: public_includes, link_with: tlsl_lib, ) if get_option('examples') executable( 'example_eventloop', [ 'examples/eventloop.c' ], dependencies: tlsl_dep, install: false, ) endif