aboutsummaryrefslogtreecommitdiffstats
path: root/lib/meson.build
blob: ead83c2337f09716c8c76f2ff11eab1233f0aac3 (plain) (blame)
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
)