Skip to content

Commit 0fe341e

Browse files
authored
Merge pull request #275 from lleon95/main
Add meson buildsystem
2 parents e6afe4e + ce9dd7c commit 0fe341e

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed

meson.build

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#
2+
# See COPYING for more information about licensing
3+
#
4+
5+
project('nethogs',
6+
['c', 'cpp'],
7+
default_options : ['warning_level=3',
8+
'cpp_std=c++14']
9+
)
10+
11+
cc = meson.get_compiler('cpp')
12+
version = run_command('./determineVersion.sh', check: true).stdout().strip()
13+
14+
#######################################
15+
## Dependencies and flags definition ##
16+
#######################################
17+
# directories
18+
projectinc = [include_directories('.', 'src')]
19+
20+
# flags
21+
c_args = [
22+
'-DVERSION="' + version + '"'
23+
]
24+
25+
# dependencies
26+
thread_dep = dependency('threads', required: true)
27+
libpcap_dep = dependency('libpcap', required: true)
28+
project_deps = [
29+
thread_dep,
30+
libpcap_dep
31+
]
32+
33+
#############################
34+
## Code Compilation ##
35+
#############################
36+
subdir('src')
37+
38+
#############################
39+
## Pkgconfig definition ##
40+
#############################
41+
pkgconfig = import('pkgconfig')
42+
pkgconfig_install_dir = join_paths(get_option('libdir'), 'pkgconfig')
43+
pkgconfig.generate(libnethogs,
44+
requires: ['libpcap'],
45+
version: version
46+
)

meson_options.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
option('enable-libnethogs', type: 'feature', value: 'enabled', description: 'Enable libnethogs library')
2+
option('enable-nethogs-app', type: 'feature', value: 'enabled', description: 'Enable nethogs application')

src/meson.build

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#
2+
# See COPYING for more information about licensing
3+
#
4+
5+
sources = [
6+
files([
7+
'connection.cpp',
8+
'conninode.cpp',
9+
'decpcap.c',
10+
'devices.cpp',
11+
'inode2prog.cpp',
12+
'packet.cpp',
13+
'process.cpp',
14+
])
15+
]
16+
17+
# --- Executable Compilation ---
18+
19+
if get_option('enable-nethogs-app').enabled()
20+
app_sources = [
21+
files([
22+
'main.cpp',
23+
'cui.cpp',
24+
])
25+
]
26+
27+
cursespp_dep = dependency('ncurses++', required: true)
28+
curses_dep = dependency('ncurses', required: true)
29+
30+
executable('nethogs',
31+
[app_sources + sources],
32+
include_directories: [projectinc],
33+
cpp_args: c_args,
34+
c_args: c_args,
35+
install: true,
36+
dependencies : [project_deps, cursespp_dep, curses_dep]
37+
)
38+
endif
39+
40+
# --- Library Compilation ---
41+
42+
if get_option('enable-libnethogs').enabled()
43+
lib_sources = [
44+
files([
45+
'libnethogs.cpp',
46+
])
47+
]
48+
49+
libnethogs = shared_library('libnethogs' ,
50+
sources + lib_sources,
51+
cpp_args: c_args,
52+
c_args: c_args,
53+
install: true,
54+
soversion: meson.project_version(),
55+
include_directories: [projectinc],
56+
dependencies: [project_deps]
57+
)
58+
59+
libnethogs_dep = declare_dependency(link_with: libnethogs)
60+
61+
# --- Header Installation ---
62+
63+
lib_headers = [
64+
files('libnethogs.h'),
65+
]
66+
install_headers(lib_headers, subdir : 'libnethogs')
67+
endif

0 commit comments

Comments
 (0)