diff --git a/.cirrus.yml b/.cirrus.yml index 20fe346..a97f955 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -10,6 +10,7 @@ task: install_script: - sed -i.bak -e 's,pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly,pkg+http://pkg.FreeBSD.org/\${ABI}/latest,' /etc/pkg/FreeBSD.conf - pkg upgrade -y - - script: | - make -j 4 + - pkg install -y meson ninja + meson_script: + - meson _build + - ninja -C _build diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 91590d3..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.9) -project(epoll-shim C) - -set(CMAKE_C_STANDARD 99) -set(CMAKE_C_EXTENSIONS ON) - -add_subdirectory(src) -add_subdirectory(test) diff --git a/Makefile b/Makefile deleted file mode 100644 index df3f17f..0000000 --- a/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -LIB= epoll-shim -SHLIB_MAJOR= 0 -SRCS= src/epoll.c src/timerfd.c src/signalfd.c src/common.c -INCS= include/sys/epoll.h include/sys/timerfd.h include/sys/signalfd.h -VERSION_MAP= Version.map - -LIBDIR= /usr/local/lib -INCSDIR= /usr/local/include/libepoll-shim/sys - -CFLAGS+= -I${.CURDIR}/include -pthread -Wall -Wextra -Wno-missing-prototypes -Wno-padded -Wno-missing-variable-declarations -Wno-thread-safety-analysis -LDFLAGS+= -pthread -lrt - -distrib-dirs: - mkdir -p "${DESTDIR}/${LIBDIR}" - mkdir -p "${DESTDIR}/${INCSDIR}" - -.include diff --git a/Version.map b/Version.map index e9ed66f..b46b38a 100644 --- a/Version.map +++ b/Version.map @@ -9,5 +9,6 @@ signalfd; timerfd_create; timerfd_settime; - local: *; + local: + *; }; diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..102d762 --- /dev/null +++ b/meson.build @@ -0,0 +1,76 @@ +project('epoll-shim', 'c', + version : '0.0.1', + license : 'MIT', + default_options : [ + 'buildtype=debugoptimized', + 'warning_level=3', + 'c_std=c11', + 'werror=true' ], + meson_version : '>=0.46.0' ) + +libepollshim_version = meson.project_version().split('.') + +dir_data = join_paths(get_option('prefix'), get_option('datadir')) +dir_sysconf = join_paths(get_option('prefix'), get_option('sysconfdir')) +dir_libexec = join_paths(get_option('prefix'), get_option('libexecdir')) +dir_lib = join_paths(get_option('prefix'), get_option('libdir')) +dir_include = join_paths(get_option('prefix'), get_option('includedir'), 'libepoll-shim/sys') +dir_src_test = join_paths(meson.source_root(), 'test') +dir_src = join_paths(meson.source_root(), 'src') + +# Compiler setup +cc = meson.get_compiler('c') + +libepollshim_so_version = '0.0.0' + +# Dependencies +thread_dep = dependency('threads') +pkgconfig = import('pkgconfig') +rt_dep = cc.find_library('rt') + +# Include directories +includes_include = include_directories('include') + +# Symbol map +libepollshim_sym_path = meson.current_source_dir() + '/Version.map' +libepollshim_sym_ldflag = '-Wl,--version-script=' + libepollshim_sym_path + +if cc.links('', name: '-Wl,--version-script', args: ['-shared', libepollshim_sym_ldflag]) + link_args = [libepollshim_sym_ldflag] +else + error('Linker doesn\'t support --version-script') +endif + +header_libepollshim = [ 'include/sys/epoll.h', + 'include/sys/timerfd.h', + 'include/sys/signalfd.h' +] + +install_headers(header_libepollshim, subdir : 'libepoll-shim/sys') + +src_libepollshim = [ 'src/epoll.c', + 'src/timerfd.c', + 'src/signalfd.c', + 'src/common.c' +] + +src_libepollshim += header_libepollshim + +deps_libepollshim = [ thread_dep, + rt_dep +] + +lib_libepollshim = both_libraries('epoll-shim', + src_libepollshim, + include_directories : includes_include, + dependencies : deps_libepollshim, + version : libepollshim_so_version, + link_args : '-Wl,--version-script=' + libepollshim_sym_path, + install : true +) + +pkgconfig.generate(lib_libepollshim, + url : 'https://github.com/FreeBSDDesktop/epoll-shim', + description : 'small epoll implementation using kqueue', + subdirs : 'libepoll-shim' +) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index dbac513..0000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_executable(epoll-test epoll-test.c) -target_link_libraries(epoll-test PRIVATE epoll-shim) - -add_executable(expire-five expire-five.c) -target_link_libraries(expire-five PRIVATE epoll-shim) - -add_executable(kqueue-state kqueue-state.c) -target_include_directories(kqueue-state PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../include")