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
95
96
97
98
99
100
|
# lib/meson.build
libfuse_sources = [
'fuse.c', 'fuse_i.h', 'fuse_loop.c', 'fuse_loop_mt.c',
'fuse_lowlevel.c', 'fuse_misc.h', 'fuse_opt.c',
'fuse_signals.c', 'buffer.c', 'cuse_lowlevel.c',
'helper.c', 'modules/subdir.c', 'mount_util.c',
'fuse_log.c', 'compat.c', 'util.c', 'util.h'
]
if host_machine.system().startswith('linux')
libfuse_sources += ['mount.c']
else
libfuse_sources += ['mount_bsd.c']
endif
# --- Abhängigkeiten einsammeln ---
deps = [ thread_dep ]
# iconv: Wenn Funktion vorhanden, Modul immer mitbauen.
# Externe libiconv nur hinzufügen, wenn sie existiert (auf Android meist nicht nötig).
if private_cfg.get('HAVE_ICONV')
libfuse_sources += ['modules/iconv.c']
endif
libiconv = cc.find_library('iconv', required: false)
if libiconv.found()
deps += [libiconv]
endif
# libdl optional (auf Android meist Teil von bionic)
libdl = cc.find_library('dl', required: false)
if libdl.found()
deps += [libdl]
endif
# librt optional (alte glibc; Android braucht das nicht)
librt = cc.find_library('rt', required: false)
if librt.found()
deps += [librt]
endif
# NetBSD-spezifisches
if host_machine.system().startswith('netbsd')
deps += [
cc.find_library('perfuse'),
cc.find_library('puffs'),
]
endif
# Pfad zu fusermount(3)
fusermount_path = join_paths(get_option('prefix'), get_option('bindir'))
libfuse = library(
'fuse3',
libfuse_sources,
version: base_version,
soversion: '4',
include_directories: include_dirs,
dependencies: deps,
install: true,
link_depends: 'fuse_versionscript',
c_args: [
'-DFUSE_USE_VERSION=317',
'-DFUSERMOUNT_DIR="@0@"'.format(fusermount_path),
],
link_args: [
'-Wl,--version-script,' + meson.current_source_dir() + '/fuse_versionscript',
],
)
# ---- pkg-config-Datei erzeugen ----
pc = import('pkgconfig')
pc_libs_public = [libfuse]
pc_libs_private = [thread_dep] # wird zu -pthread/-lpthread passend zur Plattform aufgelöst
if libdl.found()
pc_libs_private += [libdl]
endif
if librt.found()
pc_libs_private += [librt]
endif
if libiconv.found()
pc_libs_private += [libiconv]
endif
pc.generate(
libraries: pc_libs_public,
libraries_private: pc_libs_private,
version: meson.project_version(),
name: 'fuse3',
description: 'Filesystem in Userspace',
subdirs: 'fuse3',
)
libfuse_dep = declare_dependency(
include_directories: include_dirs,
link_with: libfuse,
dependencies: deps
)
|