You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.4 KiB
Meson
76 lines
1.4 KiB
Meson
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
|
|
|