File: meson.build

package info (click to toggle)
libnvme 1.16.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,016 kB
  • sloc: ansic: 35,812; perl: 1,834; sh: 475; python: 194; cpp: 64; makefile: 55
file content (94 lines) | stat: -rw-r--r-- 2,378 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
mock_conf = configuration_data()

mock_conf.set(
    'HAVE_GLIBC_IOCTL',
    cc.compiles(
        '''#include <sys/ioctl.h>
        int ioctl(int fd, unsigned long request, ...);
        ''',
        name: 'ioctl has glibc-style prototype'
    ),
    description: 'Is ioctl the glibc interface (rather than POSIX)'
)

mock_ioctl = library(
    'mock-ioctl',
    ['mock.c', 'util.c'],
    include_directories: [incdir, internal_incdir],
    dependencies: [dl_dep],
    c_args: ['-DHAVE_GLIBC_IOCTL=' + (mock_conf.get('HAVE_GLIBC_IOCTL') ? '1' : '0')])

# Add mock-ioctl to the LD_PRELOAD path so it overrides libc.
# Append to LD_PRELOAD so existing libraries, e.g. libasan, are kept.
# If libasan isn't specified in the LD_PRELOAD path, ASAN warns about mock-ioctl
# being loaded first because its memory allocations might not get intercepted.
# But it appears this isn't a problem; ASAN errors in mock-ioctl are reported.
# This is likely because the executable still links with libasan before libc.
mock_ioctl_env = environment()
mock_ioctl_env.append('LD_PRELOAD', mock_ioctl.full_path())
mock_ioctl_env.set('ASAN_OPTIONS', 'verify_asan_link_order=0')

ana = executable(
    'test-ana',
    'ana.c',
    dependencies: libnvme_dep,
    include_directories: [incdir, internal_incdir],
    link_with: mock_ioctl,
)

test('ana', ana, env: mock_ioctl_env)

discovery = executable(
    'test-discovery',
    'discovery.c',
    dependencies: libnvme_dep,
    include_directories: [incdir, internal_incdir],
    link_with: mock_ioctl,
)

test('discovery', discovery, env: mock_ioctl_env)

features = executable(
    'test-features',
    'features.c',
    dependencies: libnvme_dep,
    link_with: mock_ioctl,
)

test('features', features, env: mock_ioctl_env)

identify = executable(
    'test-identify',
    'identify.c',
    dependencies: libnvme_dep,
    link_with: mock_ioctl,
)

test('identify', identify, env: mock_ioctl_env)

logs = executable(
    'test-logs',
    'logs.c',
    dependencies: libnvme_dep,
    link_with: mock_ioctl,
)

test('logs', logs, env: mock_ioctl_env)

zns = executable(
    'test-zns',
    'zns.c',
    dependencies: libnvme_dep,
    link_with: mock_ioctl,
)

test('zns', zns, env: mock_ioctl_env)

misc = executable(
    'test-misc',
    'misc.c',
    dependencies: libnvme_dep,
    link_with: mock_ioctl,
)

test('misc', misc, env: mock_ioctl_env)